微机原理 电风扇控制器设计概要.docx
- 文档编号:29502956
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:22
- 大小:1.45MB
微机原理 电风扇控制器设计概要.docx
《微机原理 电风扇控制器设计概要.docx》由会员分享,可在线阅读,更多相关《微机原理 电风扇控制器设计概要.docx(22页珍藏版)》请在冰豆网上搜索。
微机原理电风扇控制器设计概要
摘要
《电风扇控制器》课程设计中主要应用了芯片8086、8255、8254、DAC0832。
8086为控制系统的核心。
8255A口输入,检测开关的状态;B口输出,控制数码管,显示开关状态;C口输出,控制发光二极管LED,指示各开关状态。
8254起定时作用,计数器0输出周期为50ms的方波信号;计数器2数定时4秒输出一个高电平信号。
DAC0832控制电机的转速。
最终在各芯片共同作用下实现对电风扇的控制。
关键字:
8255;8254;DAC0832;定时
第1章小组成员及分工
小组成员及分工见表2.1
表2.1小组成员及分工
第2章设计题目及要求
2.1、设计的题目
1、设计家用电风扇控制器,实现电风扇的启停控制、风速控制和类型选择功能,所有操作由发光二极管LED指示,编制相应的汇编语言源程序并进行系统调试。
2、控制器面板包括:
风速、类型和启停键,发光二极管LED指示灯。
风速分强、中、弱。
类型为睡眠、自然和正常。
3、电风扇处于停转状态时,所有指示灯不点亮,只有按下“风速”键时,才会进入起始工作状态。
不论电风扇处于何种状态,只要按下停止键,电风扇就进入停转状态。
2.2、设计要求
1、初始状态:
风速为“弱”,类型为“正常”。
2、按“风速”键,其状态由“弱”→“中”→“强”→“弱”…往复循环改变,按每一下键,状态改变一次。
3、按“类型”键,其状态由“正常”→“睡眠”→“自然”→“正常”…往复循环改变。
4、风速的弱,中,强对应于电风扇转动的慢快。
5、类型的不同选择,分别对应如下情况。
①正常:
电风扇连续转动。
②自然:
电风扇模拟自然风,转动8秒,停止8秒。
③睡眠:
电风扇慢转,产生轻柔的微风,转动4秒,停止8秒。
6、按照风速与类型的设置输出相应的控制信号,点亮或熄灭相应的指示灯。
第3章所需芯片功能简介3.1、8255功能简介
1、8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚。
其各口功能可由软件选择,使用灵活,通用性强。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
2、8255在使用前要写入一个方式控制字,设置三个端口A、B、C的工作方式。
共三种。
方式0:
基本输入/输出方式,其特点信号时与外设传送数据时,不需要设置专用的联络信号,可以无条件的直接进行I/O传送。
A,B,C3个端口都可以工作在方式0.A口和B口工作在方式0时,只设置以8位数据格式输入/输出;C口工作在方式0时,可以高4位和低4位分别设置为数据输入或数据输出方式。
方式0常用于与外设无条件数据传送或查询方式数据传送。
方式1:
单向选通输入/输出方式,方式1是一种带选通信号的单方向输入/输出工作方式,其特点是:
与外设传送数据时,需要联络信号进行协调,允许用查询或中断方式传送数据。
由于C口的0PC,1PC和2PC定义为B口工作在方式1的联络信号线,3PC,4PC和5PC定义为A口工作方式1的联络信号,因此只允许A口和B口工作在方式1.方式2:
双向选通输入/输出方式,是方式1输入和输出的组合,即同一端口的信号线既可以输入又可以输出。
由于C口的7PC~3PC定义为A口工作在方式2时的联络信号线,因此只允许A口工作在方式。
3.2、8254功能简介
8254芯片是一款使用十分广泛的可编程定时,计数芯片,其主要功能是定时和计数的功能。
8254芯片主要由四部分组成:
1、数据总线缓冲器
数据总线缓冲器是一个三态、双向8位寄存器主要作用是与cpu进行数据交换,8位数据线D7~D0与CPU的系统数据总线连接,构成CPU和8254
之间信息传送的通道,CPU通过数据总线缓冲器向8254写入控制命令、计数初始值或读取计数值。
2、读写逻辑
读写逻辑是芯片的控制部分,编程人员通过控制信号的选择来选择芯片的工作方式。
读/写控制逻辑用来接收CPU系统总线的读、写控制信号和端口选择信号,用于控制8254内部寄存器的读/写操作。
3、控制字寄存器
控制寄存器是一个只能写不能读的8位寄存器,系统通过指令将控制字写入控制寄存器,设定8254的不同工作方式。
4、计数器
8254内部有三个结构完全相同而又相互独立的16位减“1”计数器,每个计数器有六种工作方式,各自可按照编程设定的方式工作。
8254芯片的工作方式
8254芯片共有六种工作方式,分别对应与六种不同的用途。
(1方式0:
计数结束产生中断
方式0时序如图3.2.1所示。
图3.2.1方式0时序
在写入控制字CW后,OUT引脚初始电平为低电平,写入计数初始值N之后的第一个CLK的下降沿将N装入计数执行部件,待下一个CLK的下降沿到来且门控信号GATE为高电平时,开始启动减“1”计数,随后每一个CLK的下降沿,计数器减1。
在计数过程中,OUT引脚一直保持低电平,直到计数为“0”时,OUT引脚输出由低电平变为高电平,并且保持高电平。
方式0的特点:
计数初始值无自动装入功能,若要继续计数,则需要重新写入计数初始值。
门控信号GATE用来控制CE,当GATE为高电平时,允许计数;当GATE为低电平时,禁止计数。
当GATE重新为高电平时,计数器接着当前的计数值继续计数。
计数期间给计数器装入新值,则会在写入计数初始值后重新开始计数过程。
由于方式0在计数结束后,OUT引脚输出一个由低电平到高电平的跳变信号,因此可以用它作为计数结束的中断请求信号。
(2方式1:
可重复触发的单稳态触发器,方式1时序如图3.2.2所示。
图3.2.2方式1时序
方式1的特点:
硬件启动计数,即由门控信号GATE的上升沿触发计数。
在计数过程中,CPU可改变计数值,但是对计数过程没有影响。
计数为“0”,OUT引脚输出高电平,若再次触发,则计数器将按新输入的计数初始值进行计数。
(3方式2:
分频器,方式2时序如图3.2.3所示,
图3.2.3方式2时序
控制字CW写入之后,OUT引脚初始电平为高,在写入计数值N之后第一个CLK的下降沿将N装入计数执行单元CE,待下一个CLK的下降沿到来且门控信号GATE为高电平时,启动计数。
在计数过程中,OUT引脚始终保持高电平,直到CE减到“1”时,OUT引脚变为低电平,维持一个时钟周期后,又恢复为高电平,同时自动将计数值N加载到CE,重新启动计数,形成循环计数过程,OUT引脚连续输出负脉冲。
方式2的特点:
计数初始值有自动装入功能,不用重新写入计数值,计数过程可由GATE信号控制。
当GATE为低电平时,暂停计数;在GATE变为高电平后的下一个CLK脉冲使计数器恢复计数初始值,重新开始计数。
(4方式3:
方波发生器,方式3时序如图3.2.4所示,
图3.2.4方式3时序
工作原理与方式2类似,有自动重复计数功能,但OUT引脚输出的波形不
同。
当计数值N为偶数时,OUT输出对称的方波信号,正负脉冲的宽度为2
N个时钟周期;当计数值N为奇数时,OUT输出不对称的方波信号,正脉冲宽度为2
1+N。
个时钟周期,负脉冲宽度为2
1-N个时钟周期(5方式4:
软件触发计数,方式4时序如图3.2.5所示,
图3.2.5方式时4序
写入控制字CW后,OUT初始电平为高,在写入计数初始值N之后的第一个CLK的下降沿将N装入计数执行单元CE,待下一个计数脉冲信号CLK到来且门控信号GATE为高电平时(即软件启动,开始计数。
当计数为“0”时,OUT引脚由高电平变为低电平,维持一个时钟周期,OUT引脚由低电平变为高电平。
一次计数过程结束后,OUT引脚输出宽度为一个时钟周期的负脉冲信号.
方式4的特点:
无自动重复计数功能,只有在输入新的计数值后,才能开始新的计数。
若设置的计数值为N,则在写入计数值N个时钟脉冲之后,才使OUT引脚产生一个负脉冲信号。
(6方式5:
硬件触发计数,方式5时序如图3.2.6所示。
图3.2.6方式时5序
写入控制字CW后,OUT引脚初始电平为高,在写入计数值N后,计数器并不开始计数,只有GATE信号出现由低到高的上升沿(即硬件启动之后的第一个CLK的下降沿,将N装入计数执行单元CE,待下一个CLK的下降沿才开始计数。
当计数为“0”后,OUT引脚由高电平变为低电平,维持一个时钟周期,OUT引脚由低电平变为高电平。
一次计数过程结束后,OUT引脚输出宽度为一个时钟周期的负脉冲信号。
方式5输出波形与方式4相同。
两种工作方式的区别是:
方式4为软件启动计数,即GATE=1,写入计数初始值时启动计数;方式5为硬件启动计数,即先写入计数初始值,由GATE的上升沿触发,启动计数。
在设置8254的工作方式时,需要注意上述六种工作方式的一些特点:
方式0,1,4,5的计数初始值无自动加载功能,当一次计数结束后,若要继续计数,需要再次编程写入计数值;方式2和方式3的计数初始值有自动加载功能,只要写入一次计数值,就可以连续进行重复计数。
方式2,4,5的输出波形虽然相同,即都是宽度为一个时钟周期的负脉冲,但方式2可以连续自动工作,方式4由软件触发启动,方式5由硬件触发启动。
8254的六种工作方式的特点及其功能见表3.2。
表3.28254的六种工作方式的特点及其功能
注:
GATE高电平触发方式也称为软件触发方式,GATA上升沿触发方式也称为硬件触发方式。
3.3、DAC0832功能简介
DAC0832是NS公司生产的内部带有数据输入寄存器和R—2RT型电阻解码网络的8位D/A转换器。
主要特性:
①电流输出型D/A转换器。
②数字量输入有双缓冲、单缓冲或直通三种方式。
③与所有微处理器可直接连接。
④输入数据的逻辑电平满足TTL电平规范。
⑤分辨率为8位。
⑥满量程误差为±1LSB。
⑦转换时间(建立时间1ms。
⑧增益温度系数为20×10-6/℃。
⑨参考电压±10V。
⑩单电源+5V~+15V。
第4章硬件连接图
4.1、硬件实验整体连线图
如图4.1所示
图4.1硬件实验整体连线图4.2、Proteus仿真整体连接图
如图4.2所示
图4.2Proteus仿真整体连接图4.3、Proteus仿真8255连接图
如图4.3所示
图4.3Proteus仿真8255连接图4.4、Proteus仿真8254连接图
如图4.4所示
图4.4Proteus仿真8254连接图4.5、Proteus仿真DAC0832连接图
如图4.5所示
图4.5Proteus仿真DAC0832连接图
第5章工作原理及流程图
5.1、工作原理
8254计数器/定时器0和2作为定时器,定时器0的输入端CLK0连1MHZ脉冲频率,产生周期为50ms的方波信号。
OUT0作为定时器2的输入,与CLK2相连,定时4s输出一个高电平信号。
OUT2与8255A的PA7相连。
8255A的端口A0~A7读入7个开关状态;PA
7与8254的OUT
2
相连,检测OUT2
输出的高电平,起定时作用;B0~B6与七段数码管相连,显示正在运行的状态;C0~C6与LED灯相连,指示各开关的状态。
DAC0832控制电机的转速。
通过设置延时时间常数,控制高电平、低电平输出时间比,从而控制电机的转速。
5.2、程序流程图
电风扇控制器流程图如图5.2.1所示
(a定时子程序
(b主程序
图5.2.1电风扇控制器程序流图
第6章实验结果
实验结果图如图6.1所示
图6.1实验结果
第7章实验总结及问题分析
7.1问题分析
问题一:
在读入开关状态后,需要与预设置的状态相比较,之前我选择了TEST指令,但硬件实验调试时一直不能按实验程序走。
解决方法:
多次调试不成功后,我认真学习比较了TEST指令与CMP指令。
TEST指令TEST指令完成的操作、操作数的约定,以及对标志位的影响同AND指令,只是TEST指令不回送结果到目标操作数。
使用TEST指令,通常是在不希望改变原有操作数的情况下,检测某一位或某几位的状态。
所以常被用于条件转移指令之前,根据测试的结果令程序发生跳转。
CMP指令的操作功能、操作数的规定以及影响标志位的情况类似于SUB指令,惟一不同的是CMP指令不保存相减以后的结果(差,即该指令执行后,两个操作数原先的内容不会改变,只是根据相减操作的结果设置标志位。
CMP指令通常用在分支程序结构中比较两个数的大小,在该指令之后经常安排一条条件转移指令,根据比较的结果让程序转移到相应的分支去执行。
他们的区别为:
需要用到TEST指令处,一般是与源操作数为n2的倍数的数
相比较。
CMP指令则没有要求。
由于我预设置的状态不是n2的倍数,所以不能简
单的运用TEST指令。
在将TEST指令修改为CMP指令后,调试成功。
问题二:
硬件调试时,改变开关的状态,但结果始终为初始驱动时的状态
解决方法:
在认真检查程序后,检查出跳转指令跳转的位置不正确。
跳转指令跳转的位置未使8255一直检测开关的状态。
修改后,调试成功。
7.2课程设计感想
赵贤成的感想:
感想一:
这次课程设计,总的来说完成的还比较顺利。
在原来软件实验和硬件实验的基础上更进一步学习了汇编语言编写程序的设计方法和硬件调试的技巧。
提高了运用现有的资源解决问题的能力,增强了对知识融会贯通的能力。
在实验中,通过与老师、同学的讨论,在网上查找资料,更加深刻的理解了8255,、8254、DAC0832芯片功能的应用。
通过实践,进一步的熟悉了教材有关类容(比如汇编语言指令。
通过对各模块的分布设计,并调试,最终实现了对电风扇的控制。
感想二:
这次实验我也学会了灵活应对实验中的一些错误和故障(比如死循环、接线错误、符号格式不正确等等,始终应该冷静的分析问题和排除出现错误的各种原因。
通过这次实践学习,我再次认识到,不管学习什么,都必须重视实践操作,自己要多动手操作,才能更好的理解理论知识、增长在实践中的经验。
朱杭天的感想:
这次微机原理的课程设计,让我学到很多,从开始选题,设计,到理论联系到实际,我们花了很多时间和心血,毕竟对于做课设设计,我们也是刚开始接触,所以做起来比较生疏也比较辛苦,做课程设计不仅可以巩固以前所学的知识,而且学到了很多书本上没有的东西。
通过这次课程设计,我懂得理论必须和实际相结合,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
设计过程碰到了许多问题,可以说得上是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,程序逻辑上的设计老是出现问题,总体的结构在开始的时候也显得有点混乱。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在马老师的辛勤指导下,终于迎刃而解。
同时,在马老师的身上我学得到很多实用的知识,在此我表示感谢!
同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!
参考文献
[1]马春燕.微机原理与接口技术.北京:
电子工业出版社,2010
[2]马春燕.微机原理与接口技术实验与学习辅导.北京:
电子工业出版社.,2007
[3]《微机应用系统设计与综合应用实验》.
[4]《模拟电风扇动作》.
[5]《微机原理.电子时钟课程设计》.
附录
参考程序
DATASEGMENT
IOPORTEQU0D880H-280H
IO0832AEQUIOPORT+2A0H
IO8255AEQUIOPORT+280H
IO8255BEQUIOPORT+281H
IO8255CEQUIOPORT+282H
IO8255TEQUIOPORT+283H
IO8254KEQUIOPORT+28BH
IO82542EQUIOPORT+28AH
IO82541EQUIOPORT+289H
IO82540EQUIOPORT+288H
BUF1DW0
BUF2DW0
ZHT1DB'ZHENGCHANDRUO',0DH,0AH,'$'
ZHT2DB'ZHENGCHANDZHONG',0DH,0AH,'$'ZHT3DB'ZHENGCHANDQIANG',0DH,0AH,'$'ZHT4DB'ZIRAN',0DH,0AH,'$'
ZHT5DB'SHUIMIAN',0DH,0AH,'$'
ZHT6DB'TINGZHI',0DH,0AH,'$'
DATAENDS
STACKSSEGMENT
DB100DUP(?
STACKSENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKS,ES:
DATASTART:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,STACKS
MOVSS,AX
MOVDX,IO8254K
MOVAL,36H;00110110,计数器0,方式3,先读低8位,再读高8位OUTDX,AL
MOVDX,IO82540
MOVAX,50000;初值50000,产输出周期为50ms的方波信号
OUTDX,AL
NOP
NOP
MOVAL,AH
OUTDX,AL
KSH:
MOVDX,IO8255T
MOVAL,90H;10010000,工作方式0,A口输入,B口、C口输出
OUTDX,AL
MOVDX,IO8255A
INAL,DX;A口输入,检测开关的状态
ANDAL,7FH;A口输入,最高位清零
CMPAL,49H;正常弱,开关状态若为01001001则跳转到ZHR
JZZHR
CMPAL,4AH;正常中,开关状态若为01001010则跳转到ZHZH
JZZHZH
CMPAL,4CH;正常强,开关状态若为01001100则跳转到ZHQ
JZZHQ
CMPAL,60H;自然,开关状态若为01100000则跳转到ZR
JZZR
CMPAL,50H;睡眠,开关状态若为01010000则跳转到SHM
JZSHM
MOVAH,06H
MOVDL,0FFH
INT21H
JNZPPP;有键按下退出
JMPTZH;没键按下且开关的为其他状态则跳转到TZH
PPP:
MOVAH,4CH
INT21H
TZH:
MOVDX,OFFSETZHT6;显示ZHT6中的类容
MOVAH,09H
INT21H
MOVDX,IO8255B;B口输出,数码管显示6
MOVAL,7DH
OUTDX,AL
MOVDX,IO8255C;00000000全部灯熄灭
MOVAL,00H
OUTDX,AL
MOVAL,80H;0832输出0V低电压
MOVDX,IO0832A
OUTDX,AL
JMPKSH;继续检测开关的状态
ZHR:
MOVDX,OFFSETZHT1;显示ZHT1中的类容
MOVAH,09H
INT21H
MOVDX,IO8255B;数码管显示1
MOVAL,06H
OUTDX,AL
MOVDX,IO8255C;01001001,开关K6,K3,K0对应的LED灯亮其,其他灯熄灭
MOVAL,49H
OUTDX,AL
MOVBUF1,0FFFFH;设置延时常数
MOVBUF2,0090H
DELAY:
MOVCX,BUF1
DELAY1:
LOOPDELAY1;LOOP延时
MOVAL,0FFH;0832输出+5V高电平
MOVDX,IO0832A
OUTDX,AL
MOVCX,BUF2
DELAY2:
LOOPDELAY2;LOOP延时
JMPKSH;继续检测开关的状态
ZHZH:
MOVDX,OFFSETZHT2;显示ZHT2中的类容
MOVAH,09H
INT21H
MOVDX,IO8255B;数码管显示2
MOVAL,5BH;状态2
OUTDX,AL
MOVDX,IO8255C;01001010,开关K6,K3,K1对应的LED灯亮其,其他灯熄灭
MOVAL,4AH
OUTDX,AL
MOVBUF1,0FFFFH;设置延时常数
MOVBUF2,0900H
JMPDELAY;跳转到DELAY
ZHQ:
MOVDX,OFFSETZHT3;显示ZHT3中的类容
MOVAH,09H
INT21H
MOVDX,IO8255B;数码管显示3
MOVAL,4FH;状态3
OUTDX,AL
MOVDX,IO8255C;01001100,开关K6,K3,K1对应的LED灯亮其,其他灯熄灭
MOVAL,4CHOUTDX,ALMOVBUF1,0FFFFH;设置延时常数MOVBUF2,1000HJMPDELAY;跳转到DELAYZR:
MOVDX,OFFSETZHT4;显示ZHT4中的类容MOVAH,09HINT21HMOVDX,IO8255B;MOVAL,66H;状态4OUTDX,ALMOVDX,IO8255C;01100000,开关K6,K5,对应的LED灯亮其,其他灯熄灭MOVAL,60HOUTDX,ALK0:
MOVBUF1,0FFFFH;设置延时常数MOVBUF2,0090HMOVCX,BUF1K1:
LOOPK1;LOOP延时MOVAL,0FFH;0832输出+5V高电平MOVDX,IO0832AOUTDX,ALMOVCX,BUF2K2:
LOOPK2;LOOP延时CALLDELAY3;8254定时4秒数码管显示4MOVAL,80H;0832输出0V高电平21
MOVDX,IO0832AOUTDX,ALCALLDELAY3;8254定时4秒JMPKSH;继续检测开关的状态SHM:
MOVDX,OFFSETZHT5;显示ZHT5中的类容MOVAH,09HINT21HMOVDX,IO8255B;MOVAL,6DH;状态5OUTDX,ALMOVDX,IO8255C;01010000,开关K6,K4,对应的LED灯亮其,其他灯熄灭MOVAL,50HOUTDX,ALL0:
MOVBUF1,0FFFFH;设置延时常数MOVBUF2,0100HMOVCX,BUF1L1:
LOOPL1;LOOP延时MOVAL,0FFH;0832输出+5V高电平MOVDX,IO0832
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理 电风扇控制器设计概要 微机 原理 电风扇 控制器 设计 概要