家用电风扇程序设计.docx
- 文档编号:751777
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:21
- 大小:137.60KB
家用电风扇程序设计.docx
《家用电风扇程序设计.docx》由会员分享,可在线阅读,更多相关《家用电风扇程序设计.docx(21页珍藏版)》请在冰豆网上搜索。
家用电风扇程序设计
课程设计任务书
家用电风扇程序设计
一、设计要求
设计一个操作面板如上图所示的电风扇,具有以下功能:
✧电风扇处于停转状态时,所有指示灯不亮,此时只有按“风速”键电扇才会响应,其初始工作状态为“风速”——弱,“风种”——正常,“定时”——连续状态,且相应指示灯亮。
✧电扇一经启动后,再按动“风速”键可循环选择弱、中或强三种状态中的任意一种状态。
弱、中、强对应电扇转速由慢到快。
✧按动风种键可循环选择正常、自然或睡眠三种状态中的某一种状态。
“风种”在正常位置是指电扇连续运转,在“自然”位置,是表示电扇模拟产生自然风,即运转5秒,间断5秒;在:
“睡眠”位置,是产生轻柔的微风,此时风速被设为弱,电扇运转10秒,间断10秒。
✧按动定时键可循环选择连续、30分钟、60分钟、90分钟四种定时方式中的某一种。
其两指示灯全灭表示连续状态;全亮表示90分钟定时。
✧在电扇任间工作状态下,按停止键,电扇停止工作,所有指示灯熄灭。
二、总体方案
根据设计要求和内容,用可编程并行接口芯片8255A的PA口控制8个状态指示灯(即8个发光二极管),分别表示强、中、弱、正常、自然、睡眠、30分钟、60分钟。
PB口接收4个按键(分别表示风速、风种、定时、停止)的状态以启动电扇或设置相应的工作状态。
这样就需要4个按键,因此可以用实验箱上的某一列的4个按键,可以将此列的列选择线直接接为低电平,4个行输入线接到8255的口。
这样可以直接从8255的口读取按键的状态,从而执行相应的操作。
要通过一个按键来控制2个以上的状态,可以通过按键的次数来控制第几种状态,比如风速有三种状态(弱、中、强),可以用按键1次控制弱,按键2次控制中,按键3次控制强,这样就可以实现一键控制多钟状态了。
用实验箱上的直流电动机作为电风扇,其转速可有D/A转换芯片0832来产生不同的电压来控制电风扇。
8位D/A转换器的输入数据与输出电压的关系为
U(-5V~5V)=2Uref/256*N-5V(Uref为+5V)
风种及定时的时间控制可由可编程计数器/定时器8253来实现。
可选用由8253工作方式2,在这种方式下,当CPU输入控制字后,输出将为高,在写入计数值后计数器将立即自动对输入时钟CLK计数,计数器减为1时,输出将变低,方式2时8253不可用重新设置计数值就能连续工作,保证了定时的精确。
可以将定时时间设为50ms。
可将8253定时器的输出信号与8259中断控制器的中断请求信号相连,每个定时周期可产生一次中断响应作为风种和定时的时间基准。
这样可在中断服务程序中设计计数单元,对此时间基准作为计数,以生成所需的定时时间。
三、原理框图
流程图
(二)
中断服务程序
流程图
(一)
主程序
流程图(三)
风扇运行控制程序
四、系统模块详细设计与调试
1.四个键分别控制风速、风种、定时、停止
采用实验箱上的键盘上的一列的4个按键(A,B,C,E)分别表示风速、风种、定时、停止,将此列的列选择线直接接为低电平,4个行输入线分别接到8255PB口的PB7、PB6、PB5、PB4。
这样在编程就可以实现用按键控制了。
编写的程序中可以用TEST指令来判断,如果有某个键按下,就转到相应的状态设置程序,否着则继续执行下面的指令,如风速键的编程,用TESTAL,80H来判断风速键是否按下,如果检测到风速键按下,就转到风速状态(即弱、中、强三种状态)设置子程序,以便能够通过风速键控制这三种状态(用三个二极管来显示)。
如果没有检测到按下,则继续进行下面的风种键的检测。
这样就可以实现四个键分别控制风速、风种、定时、停止。
2.风速、风种、定时状态设置
因为要实现风速、风种、定时3个按键对风速(弱、中、强)、风种(正常、自然、睡眠)、定时(30min、60min、90min、连续)共8个状态的控制,就需要对这8个状态进行设置,因为一个键所对应的设置方法大同小异,可以以风速状态做代表来说明设置方法,其设置方法如下:
因为风速的3状态要保存,所以要在数据段声请一个地址来存放。
这里用风速键按下的次数来实现三种状态的变换,初始状态为按第一下表示弱状态,在按一次表示中状态(即使表示中状态的发光二极管亮),在按一次表示强状态,在按一次表示又返回到弱状态,这样依次循环下去。
用编程是这样实现的,当转到风速风速状态设置子程序时,先把所声请数据段的地址内的内容变为01H并取出来放到AL中,用左移指令RCL,左移的次数等于风速键按下的次数,并存储到声请数据段的地址内。
当AL中的内容是04H时,就要把它的内容变为01H。
这样就可以通过风速键控制弱、中、强三中状态了。
这里因为要用D/A转换器0832来改变电压的大小来控制电动机的转速的快慢,所以还要在三种状态下分别要有一个子程序来控制D/A转换器0832。
3.时间的控制
风种及定时的时间控制可由可编程计数器/定时器8253来实现。
因为实验箱上的时钟为1MHZ,可以将定时时间设为50ms。
用由8253的0计数器和1计数器,使0计数器为工作方式0,把1MHZ的时钟变为1KHZ,通过OUTO输出到CLK1,使1计数器为工作方式2,使1计数器的定时系数为32H,在这种方式下,当CPU输入控制字后,输出将为高,在写入计数值后计数器将立即自动对输入时钟CLK计数,计数器减为1时,输出将变低,方式2时8253不可用重新设置计数值就能连续工作,保证了定时的精确。
这样就可以将定时时间设为50ms。
由于要定时30min、60min、90min、5s、10s,所以需要多次调用延时子程序,所以可以写成一个DELAY程序,每次调用的时候配合CALL和RET就能往返于子程序和主程序之间,之前把要记的数值放在SI寄存器中,就可以很方便的实现定多个时间了。
4.中断
中断要用8259。
可将8253定时器的输出信号与8259中断控制器的中断请求信号相连,每个定时周期可产生一次中断响应作为风种和定时的时间基准。
这样可在中断服务程序中设计计数单元,对此时间基准作为计数,以生成所需的定时时间。
5.调试
根据本课程设计的要求编写程序,并在伟福6000实验系统上进行编译,待编译通过、产生可执行文件后,经USB接口将其下载至实验系统。
将各项硬件电路连接。
完毕后,经老师检查连线正确后,运行可执行文件,依次按四个控制键,观察按每个键后的反映情况,应该和设计方案预期的结果一致。
如果不一致,找出不一只致的地方,并分析出现状况的原因,然后检查出错地方对应的程序,找出错误并改正,然后在运行一遍,如果还不行,继续检查找错运行,直到正确为止。
有些错误发现不出来的话,可以用单步执行找错或问老师。
得到正确的结果后,应与本课程设计的各项要求进行对比,保证符合各项要求。
五、设计总结
1.课程设计出现的问题及解决方法
(1)编程 由于编程水平不够、对有些芯片(8259)的理解不够以及想不出把流程图用程序来实现等原因导致编不出程来。
这时要看书本上的相关内容,并思考如何编程。
在怎样设计用风速键控制三种状态(弱、中、强),曾经很长时间不知道该怎么办,怎样编写程序。
直到后来想到用逻辑左移指令和声请一个数据段用于保存。
通过按下风速键的次数依次表示各个状态,这样就能用风速键来控制三种状态了。
因为以前没有做过用芯片8259实现中断的实验,所以开始不会用8259。
后来看完芯片8259实现中断的实验才初步学会应用芯片8259实现中断。
(2)连接硬件电路 出现漏线、接错线的情况,应仔细检查线路,找出漏线、接错的线,并重新连接。
(3)调试 在把编好的程序进行编译的过程出现了很多错误,要对显示出的程序错误进行一条一条指令的改正。
在运行过程中,出现与预期效果不同的现象,这是就要找出错误所对应的程序段进行检查改正。
改正完在运行,如果还错,则继续检查改错,一直到显示与预期效果一致为止。
程序完全正确,其他人已经模拟正确符合设计要求,而在我的实验箱上却模拟不出,换了好几个芯片,最后才确定是8253坏了。
2.心得和体会
六、参考文献
《微机原理实验与课程设计指导书》,陆红伟编,中国电力出版社,2006年
《8086微型计算机组成、原理及接口》,顾滨,机械工业出版社,2001
《微型计算机原理及应用》,吕淑萍等,哈尔滨工程大学出版社,2004年
《微型计算机技术及应用》,戴梅萼,清华大学出版社,2005
七、附件材料
1.元器件清单
CPU8086,
D/A转换器DAC0832,
可编程计数器/定时器8253,
可编程并行接口芯片8255A,
可编程中断控制器8259A
伟福6000实验箱
直流电动机,
键盘
4MHz脉冲发生器,
LED灯若干,
开关若干,
导线若干。
2.程序清单
本程序用于微机原理课程设计---电风扇程序
程序如下:
MODE EQU 082H
PORTA EQU 8000H
PORTBEQU8001H
PORTCEQU8002H
CADDREQU8003H
COUNT0EQU0A0H
COUNT1EQU0A2H
ADDRESSEQU0A6H
CS8259AEQU09000H
CS8259BEQU09001H
DA0832EQU07000H
DATASEGMENT
SPEEDDB01H
STYLEDB01H
TIMEDB01H
SWITCHDB00H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAL,082H ;8255初始化
MOVDX,CADDR
OUTDX,AL
MOVDX,ADDRESS ;计数器0初始化
MOVAL,34H
OUTDX,AL
MOVDX,COUNT0
MOVAX,0FA0H
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,ADDRESS;计数器1初始化
MOVAL,70H
OUTDX,AL
MOVDX,COUNT1
MOVAL,32H
OUTDX,AL
IINITPROCNEAR
MOVDX,CS8259A;8259初始化
MOVAL,13H
OUTDX,AL
MOVDX,CS8259B
MOVAL,20H
OUTDX,AL
MOVAL,01H
OUTDX,AL
MOVAL,
OUTDX,AL
RET
IINITENDP
MOVDX,PORTB
MOVAL,00H
BUTTON:
MOVDX,PORTB;按键设置
INAL,DX
ORAL,00H
JNZSWITCH
CALLCONTROL
SWITCH:
TESTAL,10H
JZCONTROL
TESTAL,80H
JZSPEED
TESTAL,40H
JZSTYLE
TESTAL,20H
JZTIME
CALLBUTTON
SPEEDPROCNEAR;风速设置子程序
MOVAL,SPEED
ROLAL,1
TESTAL,08H
JZNEXT0
TESTAL,01H
JZRUO
TESTAL,02H
JZZHONG
TESTAL,04H
JZQIANG
MOVSPEED,AL
MOVDX,PORTA
OUTDX,AL
JMPBUTTON
NEXT0:
MOVSPEED,01H;弱状态
RUO:
PROC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 家用 电风扇 程序设计