完整版微机原理毕业课程设计电风扇程序设计.docx
- 文档编号:9166653
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:22
- 大小:156.71KB
完整版微机原理毕业课程设计电风扇程序设计.docx
《完整版微机原理毕业课程设计电风扇程序设计.docx》由会员分享,可在线阅读,更多相关《完整版微机原理毕业课程设计电风扇程序设计.docx(22页珍藏版)》请在冰豆网上搜索。
完整版微机原理毕业课程设计电风扇程序设计
微机原理课程设计说明书
题目:
家用电风扇的控制设计
学院:
计算机与通信工程学院
专业:
姓名:
学号:
指导教师:
2012年8月24日
目 录
前言……………………………………………………………………………..1
1[注释清单说明]…....…………………………………………………………..2
2[芯片介绍]…………………………………………………………………....3
2.1[8253芯片]…………………………………………………………..3
2.2[8255芯片]………………....…………………………………....4
3[设计过程]..............................................................................................................6
3.1[总体设计].................................................................................................6
3.2[硬件设计]..................................................................................................6
3.3[软件设计]..................................................................................................6
3.3.1[风速设计].........................................................................7
3.3.2[类型设计].........................................................................7
3.3.3[转头设计]........................................................................7
4[硬件框图及说明].........................................................................................8
5[软件模块及流程说明]..................................................................................9
5.1[软件框图]......................................................................................9
5.2[程序代码]................................................................................................10
参考文献..............................................................................................................17
总结体会.................................................................................................................18
前言
随着物联网时代的到来,芯片越来越显示其重要的价值,而如何将物联网引入普通家庭,让普通老百姓感受到他们的实惠,针对这个问题我设计了一个简易的电风扇程序其概况如下:
一.课程设计的题目是家用风扇控制器,用微机中硬件与软件相结合的方法设计出一个电风扇的控制器.
二.控制器有四个按钮,分别为风速,类型,转头和停止键;三个LED指示灯用于指示风速强、中、弱;另外三个LED指示灯用于指示类型为睡眠、自然和正常,还有一个直流电机控制是否转头.功能如下:
1.电扇处于停转状态时,所有指示灯不亮,只有按下“风速”键时电扇才会旋转。
电扇在任何状态,只要按下“停止”键,则进入停转状态。
2.风速的强、中、弱分别对应于电扇转动的快速、中速和慢速.
3.初始状态为:
风速“弱”,类型“正常”.
4.按“风速”键,状态由“弱”“中”“强”“弱”……往复循环改变,每按一下按键改变一次状态;
5.按“类型”键,其状态由“正常”“睡眠”“自然”“正常”……往复循环改变;
1)正常电扇连续运转;
2)自然电扇模拟自然风,即转2s,停4s;
3)睡眠电扇慢转,产生轻柔的微风,运转2s,停转6s.
6.当按下K3摇头键的时候会摇头,再按会停止摇头,可以手动选择是否摇头.
1注释说明清单
下文中所表示的字母的意思如下:
K1:
风速键,用来控制风速,风速包括弱风,中风,强风三种.每按一次K1键风速就循环改变一次.
K2:
类型键,用来控制风的类型,类型包括正常风,睡眠风,自然风,每按一次K2键风种将会循环改变一次.
K3:
转头键,只要系统启动后按此键,风扇就会在转头与不转头之间切换.
K4:
停止键,一旦风扇运行按停止键就会关闭.
L1:
弱风指示灯
L2:
中风指示灯
L3:
强风指示灯
L5:
正常风指示灯
L6:
睡眠风指示灯
L7:
自然风指示灯
2芯片介绍
2.18253芯片
8253是Intel公司生产的可编程间隔定时器。
8253具有以下基本功能:
(1)有3个独立的16位计数器;
(2)每个计数器可按二进制或十进制(BCD)计数;
(3)每个计数器可编程工作于6种不同工作方式;
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz);
(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。
计数初值公式为n=fCLKi÷fOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。
图14-1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。
8254的工作方式如下述:
(1)方式0:
计数到0结束输出正跃变信号方式。
(2)方式1:
硬件可重触发单稳方式。
(3)方式2:
频率发生器方式。
(4)方式3:
方波发生器。
(5)方式4:
软件触发选通方式。
(6)方式5:
硬件触发选通方式。
图14-18254的内部接口和引脚
8253的控制字有两个:
一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。
这两个控制字共用一个地址,由标识位来区分。
控制字格式如表14-1所示。
读回控制字格式如表14-2所示。
当读回控制字的D4位为0时,由该读回控制字D1~D2位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。
状态字格式如表14-3所示。
表14-18253的方式控制字格式
D7
D6
D5
D4
D3
D2
D1
D0
计数器选择
读写格式选择
工作方式选择
计数码制选择
00-计数器0
01-计数器1
10-计数器2
11-读出控制字标志
00-锁存计数值
01-读写低8位
10-读写高8位
11-先读写低8位,再读写高8位
000-方式0
001-方式1
010-方式2
011-方式3
100-方式4
101-方式5
0-二进制数
1-十进制数
表14-28253读出控制字格式
D7
D6
D5
D4
D3
D2
D1
D0
1
1
0-锁存计数值
0-锁存状态信息
计数器选择(同方式控制字)
0
表14-38253状态字格式
D7
D6
D5
D4
D3
D2
D1
D0
OUT引脚现行状态
1-高电平2-低电平
计数初值是否装入
1-无效2-计数有效
计数器方式(同方式控制字)
2.28255芯片
8255可编程外围接口芯片是Intel公司生产的通用并行IO接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0—基本输入出方式;
方式1—选通输入出方式;
方式2—双向选通工作方式。
8255的内部结构及引脚如图12-1所示,8255工作方式控制字和C口按位置位复位控制字格式如图12-2所示。
图12-18255的内部结构及引脚
图12-28255控制字格式
3设计过程
3.1总体设计:
根据题目要求,其基本功能是用四个按键来控制风速、类型,转头以及停止这四个状态的变换。
当风速键按下时实现风速强、中、弱三种状态依次循环切换,由于电机控制芯片没找好,所以用三个LED指示灯来显示;当类型键按下时实现类型正常、睡眠、自然三种状态的依次循环切换,并用三个LED指示灯来显示。
题目中类型键要求自然状态转2秒,停4秒;睡眠状态转2秒,停转6秒,这个涉及到时间问题,可以通过硬件或者软件来实现,我们选择通过软件来实现。
综上所述,可以采用硬件与软件结合的设计方法来实现基本功能。
3.2硬件设计:
本次实验除利用了PC机本身资源外(如中断资源),还利用了平台上的8255并行接口单元,8253计数器,LED指示灯电路,直流电机,便构成家用风扇控制电路.
本次实验硬件部分主要是用可编程并行通信接口8255A来实现的。
四个按键是输入,用8255A的其中一个端口作为输入,这里选择用端口A作为输入;六个LED指示灯用作输出,这里选择用端口B和端口C作为输出。
8255A是有多种功能的可编程并行接口电路芯片,8255A分3个端口:
端口A、端口B和端口C,每个端口都是8位,共24个外设引脚,共三种输入输出工作方式。
1)方式0—基本输入输出方式,适用于无条件传送和查询方式的接口电路。
2)方式1—选通输入输出方式,适用于查询和中断方式的接口电路。
3)方式2—双向选通传送方式,适用于与双向传送数据的外设;适用于查询和中断方式的接口电路。
本次实验我们选择方式0,只实现基本的输入、输出即可。
8253A有3个计数器,这里我们选择计数器0进行计数,CLK0链接系统时钟信号,计数器0选择工作方式3工作,GATE0接PC0端口,然后将两路接入直流电机的正负极。
3.3软件设计:
本设计通过编程对8255A的端口A读入的键值进行判断,再转入到相应的子程序进行状态改变。
最后通过端口B进行输出显示。
控制系统分四个功能模块,主要包含风速设置、类型设置、默认状态显示和退出系统。
3.3.1风速设置
这个模块中风速的三个状态强、中、弱之间的循环切换是通过将端口A的键值逐次加1(初始值为0,每按下一次风速键寄存器值加1),然后对3求余,取其余数分别代表这三个状态来实现的。
由于对3求余的余数只有0、1、2三个值,分别代表强、中、弱,将其余数保存到寄存器中,根据寄存器中是0、1、2来判断强、中、弱风三个状态。
3.3.2类型设置
风的类型有:
正常、自然、睡眠三种。
a)正常电扇连续运转。
b)自然电扇模拟自然风,即转2s,停4s。
c)睡眠电扇慢转,产生轻柔的微风,运转2s,停转6s。
自然状态和睡眠状态时间的控制是通过调用延时子程序来实现的,由于一个机器周期是10-6秒,延时程序是通过循环来实现的,让指令执行106次来实现1秒。
不是很精确。
3.3.3转头设置
这个模块利用8255和8253来完成,该模块有两种状态即转头和不转头,8255的PC2端口实现状态的输入,PC0端口输出到8253的GATE0端口来控制8253工作,然后通过8253来控制直流电机工作。
用按的次数除以2取余数来判断是转头还是停止。
4硬件系统框图及说明
系统总线
5软件模块主要流程图及说明
由于要写出具体的试验程序逻辑复杂,就简要的写出了汇编程序的设计流程。
5.1软件框图
5.2程序代码
DATASSEGMENT
;此处输入数据段代码
T8255AEQU200H
T8255BEQU201H
T8255CEQU202H
COUNT0EQU204H
CONTROLEQU207H
T8255MODEEQU203H
TEMPK1DB0F8H
KEY1DB00H
KEY2DB00H
KEY3DB00H
KEY1_YUSHUDB00H
KEY2_YUSHUDB00H
KEY3_YUSHUDB00H
THREEDB03H
TWODB00H
FREE_STARTDB00H
SHANGCI_STARTDB00H
DANGQIAN_STARTDB00H
DATASENDS
STACKSSEGMENT
;此处输入堆栈段代码
DW100HDUO(0)
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX;此处输入代码段代码
;8253芯片初始化
MOVDX,CONTROL
OUTDX,AL
MOVDX,COUNT0;置初值1000H
MOVAL,00H
OUTDX,AL
MOVAH,10H;
OUTDX,AL
MOVDX,T8255MODE;模式字输入
MOVAL,90H;端口A作为输入,端口B作为输出
OUTDX,AL
MOVDX,T8255B;对灯清零
MOVAL,0FFH
OUTDX,AL
MOVDX,T8255C;对电机进行清零;
MOVAL,OFFH
OUTDX,AL
JMPL1
READ:
MOVDX,T8255A;读取端口A的键值
INAL,DX
MOVBX,00H
MOVBL,TEMPK1
MOVTEMPK1,AL
XORBL,AL
CMPBL,01H;判断风速键是否按下
JZADD_K1
CMPBL,02H;判断类型键是否按下
JZADD_K2
CMPBL,03H
JZADD_K3
CMPBL,04H;判断停止键是否按下
JZL10
MOVBL,SHANGCI_START;如果没有按键按下,判断上次状态
CMPBL,01H
JZL1
CMPBL,02H
JZL2
CMPBL,03H
JZL3
CMPBL,04H
JZL4
CMPBL,05H
JZL5
CMPBL,06H
JZL6
CMPBL,07H
JZL7
CMPBL,08H
JZL8
CMPBL,09H
JZL9
CMPBL,0AH
JZL10
ADD_K1:
INCKEY1
MOVAL,KEY1
MOVAH,00H
DIVTHREE
MOVKEY1_YUSHU,AH
JMPCONNEC
ADD_K2:
INCKEY2
MOVAL,KEY2
MOVAH,00H
DIVTHREE
MOVKEY2_YUSHU,AH
JMPCONNECT
ADD_K3:
INCKEY3
MOVAL,KEY3
MOVAH,00H
DIVTWO
MOVKEY3_YUSHU,AH
JMPCONNECT
CONNECT:
MOVCL,FREE_START
MOVAH,KEY1_YUSHU
MOVAL,KEY2_YUSHU
MOVBL,KEY3_YUSHU
CMPBL,00H
JZSTOP
CMPBL,01H
JZSTART
A1:
CMPAX,0000H
JZL1
CMPAX,0001H
JZL2
CMPAX,0002H
JZL3
CMPAX,0100H
JZL4
CMPAX,0101H
JZL5
CMPAX,0102H
JZL6
CMPAX,0200H
JZL7
CMPAX,0201H
JZL8
CMPAX,0202H
JZL9
STOP:
PUSHDX
PUSHAX
MOVDX,T8255C
MOVAL,00H
OUTDX,AL
POPAX
POPDX
JMPA1
START:
PUSHDX
PUSHAX
MOVDX,T8255C
MOVAL,01H
OUTDX,AL
POPAX
POPDX
JMPA1
L1:
MOVSHANGCI_START,01H
MOVAL,36H;弱风正常
JMPSHOW
L2:
MOVSHANGCI_START,02H
MOVAL,2EH;弱风睡眠
MOVFREE_START,CL
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
MOVAL,3EH
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
JMPREAD
L3:
MOVSHANGCI_START,03H
MOVAL,1EH;弱风自然
MOVFREE_START,CL
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
MOVAL,3EH
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
JMPREAD
L4:
MOVSHANGCI_START,04H
MOVAL,35H;中风正常
JMPSHOW
L5:
MOVSHANGCI_START,05H
MOVAL,2DH;中风睡眠
MOVFREE_START,CL
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
MOVAL,3DH
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
JMPREAD
L6:
MOVSHANGCI_START,06H
MOVAL,1DH;中风自然
MOVFREE_START,CL
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
MOVAL,3DH
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
JMPREAD
L7:
MOVSHANGCI_START,07H
MOVAL,33H;强风正常
JMPSHOW
L8:
MOVSHANGCI_START,08H
MOVAL,2BH;强风睡眠
MOVFREE_START,CL
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
MOVAL,3BH
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
JMPREAD
L9:
MOVSHANGCI_START,09H
MOVAL,1BH;强风自然
MOVFREE_START,CL
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
MOVAL,3BH
MOVDX,T8255B
OUTDX,AL
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
JMPREAD
L10:
MOVSHANGCI_START,0AH
MOVAL,0FFH;停止
MOVDX,T8255B
OUTDX,AL
JMPREAD
SHOW:
MOVFREE_START,CL
CALLDELAY
MOVDX,T8255B
OUTDX,AL
JMPREAD
QUIT:
MOVAX,4CH
INT21H
DELAYPROC
PUSHBX
PUSHCX
MOVCX,07FFH
D1:
MOVBX,0FFFFH
D2:
DECBX
JNZD2
LOOPD1
POPBX
POPCX
RET
DELAYENDP
DELAY6PROC
PUSHCX
PUSHAX
MOVCX,06H
D3:
CALLDELAY
LOOPD3
POPAX
POPCX
RET
DELAY6ENDP
CODESENDS
ENDSTART
参考文献
[1]权《微型计算机技术及应用(第四版)》清华大学出版社
[2]汪志宏江敏《微机原理与接口技术课程设计》机械工业出版社
[3]《微机原理与接口技术实验及课程设计》西南交通大学出版社
[4]王忠民,王钰,王小睫.《微型计算机原理》(第二版)西安电子科技大学出版社
设计总结
通过本次课程设计使我对实验的理解和汇编能力得到增强。
开始的时候遇到很多困难,在老师和同学的帮助下问题得到解决。
这次课程设计使我对理论和实践充分结合的重要性认识更加深刻。
这次课程设计中也可以反映出许多问题:
1、当停止键按下时只能让灯亮一会就又显示上一次状态,这时我们在程序里又多加了一次判断,即当按下停止键后不再按下其他键时,通过判断跳转又跳到全灭的状态(上一次状态),这个问题得到解决。
2、对风速键和类型键的状态组合,用一个16位的寄存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 微机 原理 毕业 课程设计 电风扇 程序设计