版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书 弱 中 强正常 自然 睡眠 30分 60分风速风种定时停止家用电风扇程序设计一、设计要求设计一个操作面板如上图所示的电风扇,具有以下功能:² 电风扇处于停转状态时,所有指示灯不亮,此时只有按“风速”键电扇才会响应,其初始工作状态为“风速”弱,“风种”正常,“定时”连续状态,且相应指示灯亮。² 电扇一经启动后,再按动“风速”键可循环选择弱、中或强三种状态中的任意一种状态。弱、中、强对应电扇转速由慢到快。² 按动风种键可循环选择正常、自然或睡眠三种状态中的某一种状态。“风种”在正常位置是指电扇连续运转,在“自然”位置,是表示电扇模拟产生自然风,即运转5
2、秒,间断5秒;在:“睡眠”位置,是产生轻柔的微风,此时风速被设为弱,电扇运转10秒,间断10秒。² 按动定时键可循环选择连续、30分钟、60分钟、90分钟四种定时方式中的某一种。其两指示灯全灭表示连续状态;全亮表示90分钟定时。² 在电扇任间工作状态下,按停止键,电扇停止工作,所有指示灯熄灭。二、总体方案根据设计要求和内容,用可编程并行接口芯片8255a 的pa口控制8个状态指示灯(即8个发光二极管),分别表示强、中、弱、正常、自然、睡眠、30分钟、60分钟。pb口接收4个按键(分别表示风速、风种、定时、停止)的状态以启动电扇或设置相应的工作状态。这样就需要4个按键,因此可
3、以用实验箱上的某一列的4个按键,可以将此列的列选择线直接接为低电平,4个行输入线接到8255的口。这样可以直接从8255的口读取按键的状态,从而执行相应的操作。要通过一个按键来控制2个以上的状态,可以通过按键的次数来控制第几种状态,比如风速有三种状态(弱、中、强),可以用按键1次控制弱,按键2次控制中,按键3次控制强,这样就可以实现一键控制多钟状态了。用实验箱上的直流电动机作为电风扇,其转速可有d/a转换芯片0832来产生不同的电压来控制电风扇。8位d/a转换器的输入数据与输出电压的关系为 u(-5v5v)=2uref/256*n-5v(uref为+5v)风种及定时的时间控制可由可编程计数器/
4、定时器 8253来实现。可选用由8253工作方式2,在这种方式下,当cpu输入控制字后,输出将为高,在写入计数值后计数器将立即自动对输入时钟clk计数,计数器减为1时,输出将变低,方式2时8253不可用重新设置计数值就能连续工作,保证了定时的精确。可以将定时时间设为50ms。可将8253定时器的输出信号与8259中断控制器的中断请求信号相连,每个定时周期可产生一次中断响应作为风种和定时的时间基准。这样可在中断服务程序中设计计数单元,对此时间基准作为计数,以生成所需的定时时间。三、原理框图 流程图(二) 中断服务程序开始初始化8255、8255、8259设置风速为停止,风种为正常,定时为连续状态
5、,所有输出清零风速键吗?设置8253的时间常数并启动定时器、设置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个状态进行设置,因为一个键所对应的设置方法大同小异,可以以风速状态做代表来说明
7、设置方法,其设置方法如下:因为风速的3状态要保存,所以要在数据段声请一个地址来存放。这里用风速键按下的次数来实现三种状态的变换,初始状态为按第一下表示弱状态,在按一次表示中状态(即使表示中状态的发光二极管亮),在按一次表示强状态,在按一次表示又返回到弱状态,这样依次循环下去。用编程是这样实现的,当转到风速风速状态设置子程序时,先把所声请数据段的地址内的内容变为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不可用重新设置计数值就能连续工作,保证了定时
9、的精确。这样就可以将定时时间设为50ms。由于要定时30min、60min、90min、5s、10s ,所以需要多次调用延时子程序,所以可以写成一个delay程序,每次调用的时候配合call和ret就能往返于子程序和主程序之间,之前把要记的数值放在si寄存器中,就可以很方便的实现定多个时间了。4中断 中断要用8259。可将8253定时器的输出信号与8259中断控制器的中断请求信号相连,每个定时周期可产生一次中断响应作为风种和定时的时间基准。这样可在中断服务程序中设计计数单元,对此时间基准作为计数,以生成所需的定时时间。5调试根据本课程设计的要求编写程序,并在伟福6000实验系统上进行编译,待编
10、译通过、产生可执行文件后,经usb接口将其下载至实验系统。将各项硬件电路连接。完毕后,经老师检查连线正确后,运行可执行文件,依次按四个控制键,观察按每个键后的反映情况,应该和设计方案预期的结果一致。如果不一致,找出不一只致的地方,并分析出现状况的原因,然后检查出错地方对应的程序,找出错误并改正,然后在运行一遍,如果还不行,继续检查找错运行,直到正确为止。有些错误发现不出来的话,可以用单步执行找错或问老师。得到正确的结果后,应与本课程设计的各项要求进行对比,保证符合各项要求。五、设计总结1课程设计出现的问题及解决方法 (1)编程由于编程水平不够、对有些芯片(8259)的理解不够以及想不出把流程图
11、用程序来实现等原因导致编不出程来。这时要看书本上的相关内容,并思考如何编程。在怎样设计用风速键控制三种状态(弱、中、强),曾经很长时间不知道该怎么办,怎样编写程序。直到后来想到用逻辑左移指令和声请一个数据段用于保存。通过按下风速键的次数依次表示各个状态,这样就能用风速键来控制三种状态了。因为以前没有做过用芯片8259实现中断的实验,所以开始不会用8259。后来看完芯片8259实现中断的实验才初步学会应用芯片8259实现中断。 (2)连接硬件电路出现漏线、接错线的情况,应仔细检查线路,找出漏线、接错的线,并重新连接。 (3)调试在把编好的程序进行编译的过程出现了很多错误,要对显示出的程序错误进行
12、一条一条指令的改正。在运行过程中,出现与预期效果不同的现象,这是就要找出错误所对应的程序段进行检查改正。改正完在运行,如果还错,则继续检查改错,一直到显示与预期效果一致为止。程序完全正确,其他人已经模拟正确符合设计要求,而在我的实验箱上却模拟不出,换了好几个芯片,最后才确定是8253坏了。2心得和体会六、参考文献微机原理实验与课程设计指导书,陆红伟编,中国电力出版社,2006年8086微型计算机组成、原理及接口,顾滨,机械工业出版社,2001微型计算机原理及应用,吕淑萍等,哈尔滨工程大学出版社,2004年 微型计算机技术及应用,戴梅萼,清华大学出版社,2005七、附件材料 1.元器件清单 cp
13、u 8086,d/a转换器 dac0832,可编程计数器/定时器 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 09001hda0
14、832 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初始
15、化 mov al,70h out dx,al mov dx,count1 mov al,32h out dx,aliinit proc near mov dx,cs8259a ; 8259初始化 mov al,13h out dx,al mov dx,cs8259b mov al,20h out dx,al mov al,01h out dx,al mov al, out dx,al retiinit endp mov dx,portb mov al,00hbutton: mov dx,portb ; 按键设置 in al,dx or al,00h jnz switch call contro
16、lswitch: test al,10h jz control test al,80h jz speed test al,40h jz style test al,20h jz time call buttonspeed proc near ;风速设置子程序 mov al,speed rol al,1 test al,08h jz next0 test al,01h jz ruo test al,02h jz zhong test al,04h jz qiang mov speed,al mov dx,porta out dx,al jmp buttonnext0: mov speed,01h
17、 ;弱状态ruo: proc near mov speed,al mov dx,porta out dx,al mov al,a0h mov dx,da0832 out dx,al retruo endp zhong proc near ;中状态 mov speed,al mov dx,porta out dx,al mov dx,d0h mov dx,da0832 out dx,al retzhong endpqiang proc near ;强状态 mov speed,al mov dx,porta out dx,al mov dx,ffh mov dx,da0832 out dx,al
18、ret qiang endpstyle proc near ;风种设置子程序 mov al,style rol al,1 test al,08h jz next1 test al,01h jz normal test al,02h jz nature test al,04h jz sleep mov style,al mov dx,porta out dx,alnext1: mov style,01hnature proc near ;自然begin: mov al,speed test al,01h mov bl,0a0h jnz next2 test al,02h mov al,0d0h
19、jnz next mov bl,0ffhnext2: mov al,bl mov dx,da0832 out dx,al mov si,100 call delay mov al,80h mov dx,da0832 out dx,al mov si,100 call delay jmp begin ret endpdelay proc nearb: mov dx,portb jn al,dx test al,10h jz off mov dx,count mov al,40h out dx,al mov al,9ch out dx,alh: mov dx,portc in al,dx test
20、 al,10h jz hl: mov dx,portc in al,dx test al,10h jnz l dec si jnz b retdelay endp sleep proc near ;睡眠begin: mov al,speed test al,01h mov bl,0a0h jnz next3 test al,02h mov al,0d0h jnz next mov bl,0ffhnext3: mov al,bl mov dx,da0832 out dx,al mov si,2oo call delay mov al,80h mov dx,da0832 out dx,al mov
21、 si,200 call delay jmp begin ret endpdelay proc nearb: mov dx,portb jn al,dx test al,10h jz off mov dx,count mov al,40h out dx,al mov al,9ch out dx,alh: mov dx,portc in al,dx test al,10h jz hl: mov dx,portc in al,dx test al,10h jnz l dec si jnz b retdelay endp time proc near ;定时设置子程序 mov al,time rol
22、 al,1 test al,10h jz next4 test al,08h jz normal test al,04h jz sanshi test al,02h jz liushi test al,01h jz jiushi mov time,al mov dx,porta out dx,al jmp button next4: mov time,01hnormal proc near 正常 mov al,offh mov dx ,da0832 out dx,al mov si 1000000 call delay mov al,080h mov dx,da0832 out dx,asan
23、shi proc near ;三十分钟定时 mov al,offh mov dx ,da0832 out dx,al mov si 36000 call delay mov al,080h mov dx,da0832 out dx,alliushi proc near ;六十分钟定时 mov al,offh mov dx ,da0832 out dx,al mov si 72000 call delay mov al,080h mov dx,da0832 out dx,aljiushi proc near ;九十分钟定时 mov al,offh mov dx ,da0832 out dx,al mov si 108000 call delay mov al,080h mov dx,da0832
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁学院《科技文献检索与论文写作》2021-2022学年第一学期期末试卷
- 汽车改装技术 课件 4.2加装迎宾踏板和休闲踏板
- 2024年度旅游业务合作与运营合同协议2篇
- 手术室专科护士培训演讲
- xxx智慧停车场建设项目可行性研究报告
- 2024年办公室内勤年终工作总结范文
- 电工培训课件
- 肝病合并糖尿病的诊治
- 管理软件推广活动方案
- 银行培训公开课
- 图解八四柱八字ppt课件
- 国家公务员制度课件
- 银行业信息科技风险监管现场检查手册
- PSC检查英语口语
- xx旅行社与xx汽车公司合作协议
- 违规代客理财及同机操作的案例介绍
- 生化知识点整理(特别全)
- 装配钳工培训教学大纲
- 工作票(第一种、第二种)样本
- 《读中国》朗诵稿
- 人教版 九年级 道德与法治下册(教学设计 教案)第五课 少年的担当第2课时 少年当自强
评论
0/150
提交评论