家用电风扇程序设计

上传人:s9****2 文档编号:551632671 上传时间:2022-08-10 格式:DOC 页数:16 大小:181KB
返回 下载 相关 举报
家用电风扇程序设计_第1页
第1页 / 共16页
家用电风扇程序设计_第2页
第2页 / 共16页
家用电风扇程序设计_第3页
第3页 / 共16页
家用电风扇程序设计_第4页
第4页 / 共16页
家用电风扇程序设计_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《家用电风扇程序设计》由会员分享,可在线阅读,更多相关《家用电风扇程序设计(16页珍藏版)》请在金锄头文库上搜索。

1、课程设计任务书 弱 中 强正常 自然 睡眠 30分 60分风速风种定时停止家用电风扇程序设计一、设计要求设计一个操作面板如上图所示的电风扇,具有以下功能: 电风扇处于停转状态时,所有指示灯不亮,此时只有按“风速”键电扇才会响应,其初始工作状态为“风速”弱,“风种”正常,“定时”连续状态,且相应指示灯亮。 电扇一经启动后,再按动“风速”键可循环选择弱、中或强三种状态中的任意一种状态。弱、中、强对应电扇转速由慢到快。 按动风种键可循环选择正常、自然或睡眠三种状态中的某一种状态。“风种”在正常位置是指电扇连续运转,在“自然”位置,是表示电扇模拟产生自然风,即运转5秒,间断5秒;在:“睡眠”位置,是产

2、生轻柔的微风,此时风速被设为弱,电扇运转10秒,间断10秒。 按动定时键可循环选择连续、30分钟、60分钟、90分钟四种定时方式中的某一种。其两指示灯全灭表示连续状态;全亮表示90分钟定时。 在电扇任间工作状态下,按停止键,电扇停止工作,所有指示灯熄灭。二、总体方案根据设计要求和内容,用可编程并行接口芯片8255A 的PA口控制8个状态指示灯(即8个发光二极管),分别表示强、中、弱、正常、自然、睡眠、30分钟、60分钟。PB口接收4个按键(分别表示风速、风种、定时、停止)的状态以启动电扇或设置相应的工作状态。这样就需要4个按键,因此可以用实验箱上的某一列的4个按键,可以将此列的列选择线直接接为

3、低电平,4个行输入线接到8255的口。这样可以直接从8255的口读取按键的状态,从而执行相应的操作。要通过一个按键来控制2个以上的状态,可以通过按键的次数来控制第几种状态,比如风速有三种状态(弱、中、强),可以用按键1次控制弱,按键2次控制中,按键3次控制强,这样就可以实现一键控制多钟状态了。用实验箱上的直流电动机作为电风扇,其转速可有D/A转换芯片0832来产生不同的电压来控制电风扇。8位D/A转换器的输入数据与输出电压的关系为 U(-5V5V)=2Uref/256*N-5V(Uref为+5V)风种及定时的时间控制可由可编程计数器/定时器 8253来实现。可选用由8253工作方式2,在这种方

4、式下,当CPU输入控制字后,输出将为高,在写入计数值后计数器将立即自动对输入时钟CLK计数,计数器减为1时,输出将变低,方式2时8253不可用重新设置计数值就能连续工作,保证了定时的精确。可以将定时时间设为50ms。可将8253定时器的输出信号与8259中断控制器的中断请求信号相连,每个定时周期可产生一次中断响应作为风种和定时的时间基准。这样可在中断服务程序中设计计数单元,对此时间基准作为计数,以生成所需的定时时间。三、原理框图 流程图(二) 中断服务程序开始初始化8255、8255、8259设置风速为停止,风种为正常,定时为连续状态,所有输出清零风速键吗?设置8253的时间常数并启动定时器、

5、设置8259中断矢量有键按下吗?停止键吗?风扇运行控制子程序风种键吗?定时键吗?风种状态设置子程序定时状态设置子程序风速状态设置子程序 流程图(一) 主程序 流程图(三) 风扇运行控制程序四、系统模块详细设计与调试1四个键分别控制风速、风种、定时、停止 采用实验箱上的键盘上的一列的4个按键(A,B,C,E)分别表示风速、风种、定时、停止,将此列的列选择线直接接为低电平,4个行输入线分别接到8255PB口的PB7、PB6、PB5、PB4。这样在编程就可以实现用按键控制了。编写的程序中可以用TEST指令来判断,如果有某个键按下,就转到相应的状态设置程序,否着则继续执行下面的指令,如风速键的编程,用

6、TEST AL,80H来判断风速键是否按下,如果检测到风速键按下,就转到风速状态(即弱、中、强三种状态)设置子程序,以便能够通过风速键控制这三种状态(用三个二极管来显示)。如果没有检测到按下,则继续进行下面的风种键的检测。这样就可以实现四个键分别控制风速、风种、定时、停止。2风速、风种、定时状态设置 因为要实现风速、风种、定时3个按键对风速(弱、中、强)、风种(正常、自然、睡眠)、定时(30min、60min、90min、连续)共8个状态的控制,就需要对这8个状态进行设置,因为一个键所对应的设置方法大同小异,可以以风速状态做代表来说明设置方法,其设置方法如下:因为风速的3状态要保存,所以要在数

7、据段声请一个地址来存放。这里用风速键按下的次数来实现三种状态的变换,初始状态为按第一下表示弱状态,在按一次表示中状态(即使表示中状态的发光二极管亮),在按一次表示强状态,在按一次表示又返回到弱状态,这样依次循环下去。用编程是这样实现的,当转到风速风速状态设置子程序时,先把所声请数据段的地址内的内容变为01H并取出来放到AL中,用左移指令RCL,左移的次数等于风速键按下的次数,并存储到声请数据段的地址内。当AL中的内容是04H时,就要把它的内容变为01H。这样就可以通过风速键控制弱、中、强三中状态了。这里因为要用D/A转换器 0832来改变电压的大小来控制电动机的转速的快慢,所以还要在三种状态下

8、分别要有一个子程序来控制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。由于要定时30mi

9、n、60min、90min、5s、10s ,所以需要多次调用延时子程序,所以可以写成一个DELAY程序,每次调用的时候配合CALL和RET就能往返于子程序和主程序之间,之前把要记的数值放在SI寄存器中,就可以很方便的实现定多个时间了。4中断 中断要用8259。可将8253定时器的输出信号与8259中断控制器的中断请求信号相连,每个定时周期可产生一次中断响应作为风种和定时的时间基准。这样可在中断服务程序中设计计数单元,对此时间基准作为计数,以生成所需的定时时间。5调试根据本课程设计的要求编写程序,并在伟福6000实验系统上进行编译,待编译通过、产生可执行文件后,经USB接口将其下载至实验系统。将

10、各项硬件电路连接。完毕后,经老师检查连线正确后,运行可执行文件,依次按四个控制键,观察按每个键后的反映情况,应该和设计方案预期的结果一致。如果不一致,找出不一只致的地方,并分析出现状况的原因,然后检查出错地方对应的程序,找出错误并改正,然后在运行一遍,如果还不行,继续检查找错运行,直到正确为止。有些错误发现不出来的话,可以用单步执行找错或问老师。得到正确的结果后,应与本课程设计的各项要求进行对比,保证符合各项要求。五、设计总结1课程设计出现的问题及解决方法 (1)编程由于编程水平不够、对有些芯片(8259)的理解不够以及想不出把流程图用程序来实现等原因导致编不出程来。这时要看书本上的相关内容,

11、并思考如何编程。在怎样设计用风速键控制三种状态(弱、中、强),曾经很长时间不知道该怎么办,怎样编写程序。直到后来想到用逻辑左移指令和声请一个数据段用于保存。通过按下风速键的次数依次表示各个状态,这样就能用风速键来控制三种状态了。因为以前没有做过用芯片8259实现中断的实验,所以开始不会用8259。后来看完芯片8259实现中断的实验才初步学会应用芯片8259实现中断。 (2)连接硬件电路出现漏线、接错线的情况,应仔细检查线路,找出漏线、接错的线,并重新连接。 (3)调试在把编好的程序进行编译的过程出现了很多错误,要对显示出的程序错误进行一条一条指令的改正。在运行过程中,出现与预期效果不同的现象,

12、这是就要找出错误所对应的程序段进行检查改正。改正完在运行,如果还错,则继续检查改错,一直到显示与预期效果一致为止。程序完全正确,其他人已经模拟正确符合设计要求,而在我的实验箱上却模拟不出,换了好几个芯片,最后才确定是8253坏了。2心得和体会六、参考文献微机原理实验与课程设计指导书,陆红伟编,中国电力出版社,2006年8086微型计算机组成、原理及接口,顾滨,机械工业出版社,2001微型计算机原理及应用,吕淑萍等,哈尔滨工程大学出版社,2004年 微型计算机技术及应用,戴梅萼,清华大学出版社,2005七、附件材料 1.元器件清单 CPU 8086,D/A转换器 DAC0832,可编程计数器/定

13、时器 8253,可编程并行接口芯片8255A,可编程中断控制器8259A伟福6000实验箱直流电动机,键盘4MHz脉冲发生器,LED灯若干,开关若干,导线若干。 2程序清单 本程序用于微机原理课程设计-电风扇程序 程序如下:MODE EQU 082HPORTA EQU 8000HPORTB EQU 8001HPORTC EQU 8002HCADDR EQU 8003HCOUNT0 EQU 0A0HCOUNT1 EQU 0A2HADDRESS EQU 0A6HCS8259A EQU 09000HCS8259B EQU 09001HDA0832 EQU 07000HDATA SEGMENT SPEED DB 01H STYLE DB 01H TIME DB 01H SWITCH DB 00HDATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AL,082H; 8255初始化 MOV DX,CADDR OUT DX,AL MOV DX,ADDRESS ; 计数器0初始化 MOV AL,34H OUT DX,AL MOV DX,COUNT0 MOV AX,0FA0H OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,ADDRESS ; 计数器1初始化 MOV AL,70

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号