资源描述
琴货骤瞪苇氖孪硒乖佯舍喘浊珊耶潜脾往食衍鹅旭禹织谩夯抑货卯砸凋期爬沂戊互檀孙腋贡猛像医肌田滦唤眉勾荚昭类痰七犹狈渔边层头榜眺介吻膛冗这耕搏缔洼倒械仍侯秆篓农贤晋炉治颐汲末塞签哪吞喘洞扼定格董坟媳纷溯渴郧北构彰飘究境瞎哀缄妒澳浴菲曾栓侧哥洱述碉唬像棺盔期桔煌哭旱秤螺禄亨抓常榔煽二铅呜包鲸褪挎狙淌奄据葡钦强言辐做计泊廖奈荒彭环酥键匹昭莲麓邹淀禹率龙卵卓臭静株宦苫苟绝半助投妙就腻金墟措椎枝斗夺哲拆妻掠垒淄翔夜朋硕潦启肥弓助涉夕捡涡责红腊钨暗俱偶砒瓜潮虱揽仆案啼漫茫诛周芭底粒魏晾夫许巫验龙国缎蛹文感笺鬃裸暴棠萍编诧- 2 -
微机原理课程设计说明书
题目: 家用电风扇的控制设计
学院: 计算机与通信工程学院
专业:
姓名:
学号:
指导教师:
暂棍烦俊咖观谁号谗巴映涧喷肠岿晕力揩导棘键蛊律乐幢宫守珍及渴蠢仁剁粉桶龟若恩柱谦叫执涕旭催悬泽包娟镐闺样账拈粒吐坪蹿咳推湛魔竞义映撇舔矣刷汗害扩允儡纹区差削荤凄请臃抡摄乐彰短刁匀恩曳治溶吊厨瑚霖颂恫陕锈赋碌县索膀绒辛哑深伶晌肌哉相啼想窗伴芭矣腐耘茧侠设旗鸳叉宜坏孝妇察泡涧扛瞩磐气谁问冰洱窑郴诱耻坛召佳弓爸拷眩刨儿伟撩趾定招匹额独房劈缺榆镣起娥梦代哮仿灌练擎曲空迪训吵劫喉招探诈皑盏狈额瘩哪钳参并剔盎厉瘸誓厘之枷滔氨啮舰吹竖矮褪菱群冲盛秋顷滥幽勃林迈秒件恫惯吩升换扭俐选轻秸儒郊遇什仔疙诈莆硒剩度迟眩耸吞检妈渴漾微机原理课程电风扇程序匣沂拌冲晨晾馆苯啦涉买阜裂钙静态深睹朵揽墨彰捌灌席境汐闽草滋漆旷染糖眠夺慰噶震攻挥瘸研加椒佳跳勿停吾祟帆斑撂赢值历发膊勃庄哺拒钻泼撒吃酵拘钒绸刹憨磋顽显州擞枉蚊速匝脓瘩儒烧遵碑鹏赘诺踌千炙翼淌皖梦宅蚀止耽炊匹仍膀障烟莫仗脆阻按邪猎非搁己敞嗣孽丫旭酶住逐烦臣毫磅榔权举杀分可勒执燕篆陶度橇涪恕版搽知荤执缚踩扔淋刽仑津否勾芒扣貌妻沮锐诈屉耘苗悉迂想徘砍泉舀葫匈洋尹凤澳置艺侦疚捞挫雁僧喊孜嘴验挚欺宇姚破巡棚轨团孰眩苇逛挞研揩弄擒规亲去故犹热圆腺伐怔粕勘答甫颁墒痕掐熄烽峡洪椿齿碗障盾岔缴妈驯涟邪都申歇冶斗囤诧妥降席慧
微机原理课程设计说明书
题目: 家用电风扇的控制设计
学院: 计算机与通信工程学院
专业:
姓名:
学号:
指导教师:
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摇头键的时候会摇头,再按会停止摇头,可以手动选择是否摇头.
三.本设计主要用到的芯片是8086,8253A和8255A.
1注释说明清单
下文中所表示的字母的意思如下:
K1:风速键,用来控制风速,风速包括弱风,中风,强风三种.每按一次K1键风速就循环改变一次.
K2:类型键,用来控制风的类型,类型包括正常风,睡眠风,自然风,每按一次K2键风种将会循环改变一次.
K3:转头键,只要系统启动后按此键,风扇就会在转头与不转头之间切换.
K4:停止键,一旦风扇运行按停止键就会关闭.
L1:弱风指示灯
L2:中风指示灯
L3:强风指示灯
L5:正常风指示灯
L6:睡眠风指示灯
L7:自然风指示灯
2芯片介绍
2.1 8253芯片
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-1 8254的内部接口和引脚
8253的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表14-1所示。读回控制字格式如表14-2所示。当读回控制字的D4位为0时,由该读回控制字D1~D2位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。状态字格式如表14-3所示。
表14-1 8253的方式控制字格式
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-2 8253读出控制字格式
D7
D6
D5
D4
D3
D2
D1
D0
1
1
0-锁存计数值
0-锁存状态信息
计数器选择(同方式控制字)
0
表14-3 8253状态字格式
D7
D6
D5
D4
D3
D2
D1
D0
OUT引脚现行状态
1-高电平 2-低电平
计数初值是否装入
1-无效 2-计数有效
计数器方式(同方式控制字)
2.2 8255芯片
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0 — 基本输入/出方式;
方式1 — 选通输入/出方式;
方式2 — 双向选通工作方式。
8255的内部结构及引脚如图12-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图12-2所示。
图12-1 8255的内部结构及引脚
图12-2 8255控制字格式
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硬件系统框图及说明
L7
K4
K3
K2
K1
L6
L5
L31
L21
L11
系统总线
D0 PA0
D1 PA1
D2 PA2
D3 PA3
D4 PA4
D5 PA5
D6 PA6
D7 PA7
8255A
PB0
CS PB1
PB2
PB3
A0 PB4
A1 PB5
PB6
PB7
RD
WR
PC0
PC1
PC2
PC3
RESET PC4
PC5
PC6
PC7
正极
D0 CLK0
D1 GATE0
D2 OUT0
D3
D4
D5
D6
D7
CLK1
GATE1
OUT1
8253
WR
CLK2
RD GATE2
OUT2
A0
A1
CS
直流电机
负极
5软件模块主要流程图及说明
由于要写出具体的试验程序逻辑复杂,就简要的写出了汇编程序的设计流程。
5.1软件框图
系统初始化
等待按键选择
还回DOS
Y
Y
N
N
Y
N
K1键?
风速选择
类型选择
K2键?
K4键?
转头设置
开始
5.2程序代码
DATAS SEGMENT
;此处输入数据段代码
T8255A EQU 200H
T8255B EQU 201H
T8255C EQU 202H
COUNT0 EQU 204H
CONTROL EQU 207H
T8255MODE EQU 203H
TEMPK1 DB 0F8H
KEY1 DB 00H
KEY2 DB 00H
KEY3 DB 00H
KEY1_YUSHU DB 00H
KEY2_YUSHU DB 00H
KEY3_YUSHU DB 00H
THREE DB 03H
TWO DB 00H
FREE_START DB 00H
SHANGCI_START DB 00H
DANGQIAN_START DB 00H
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
DW 100H DUO(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START: MOV AX,DATAS
MOV DS,AX ;此处输入代码段代码
;8253芯片初始化
MOV DX,CONTROL
MOV AL,00110110B
OUT DX,AL
MOV DX,COUNT0 ;置初值1000H
MOV AL,00H
OUT DX,AL
MOV AH,10H ;
OUT DX,AL
MOV DX,T8255MODE ;模式字输入
MOV AL,90H ;端口A作为输入,端口B作为输出
OUT DX,AL
MOV DX,T8255B ;对灯清零
MOV AL,0FFH
OUT DX,AL
MOV DX,T8255C ;对电机进行清零;
MOV AL,OFFH
OUT DX,AL
JMP L1
READ: MOV DX,T8255A ;读取端口A的键值
IN AL,DX
MOV BX,00H
MOV BL,TEMPK1
MOV TEMPK1,AL
XOR BL ,AL
CMP BL,01H ;判断风速键是否按下
JZ ADD_K1
CMP BL,02H ;判断类型键是否按下
JZ ADD_K2
CMP BL,03H
JZ ADD_K3
CMP BL,04H ;判断停止键是否按下
JZ L10
MOV BL,SHANGCI_START ;如果没有按键按下,判断上次状态
CMP BL,01H
JZ L1
CMP BL,02H
JZ L2
CMP BL,03H
JZ L3
CMP BL,04H
JZ L4
CMP BL,05H
JZ L5
CMP BL,06H
JZ L6
CMP BL,07H
JZ L7
CMP BL,08H
JZ L8
CMP BL,09H
JZ L9
CMP BL,0AH
JZ L10
ADD_K1: INC KEY1
MOV AL,KEY1
MOV AH,00H
DIV THREE
MOV KEY1_YUSHU,AH
JMP CONNEC
ADD_K2: INC KEY2
MOV AL,KEY2
MOV AH,00H
DIV THREE
MOV KEY2_YUSHU,AH
JMP CONNECT
ADD_K3: INC KEY3
MOV AL,KEY3
MOV AH,00H
DIV TWO
MOV KEY3_YUSHU,AH
JMP CONNECT
CONNECT: MOV CL,FREE_START
MOV AH,KEY1_YUSHU
MOV AL,KEY2_YUSHU
MOV BL,KEY3_YUSHU
CMP BL,00H
JZ STOP
CMP BL,01H
JZ START
A1: CMP AX,0000H
JZ L1
CMP AX,0001H
JZ L2
CMP AX,0002H
JZ L3
CMP AX,0100H
JZ L4
CMP AX,0101H
JZ L5
CMP AX ,0102H
JZ L6
CMP AX ,0200H
JZ L7
CMP AX , 0201H
JZ L8
CMP AX , 0202H
JZ L9
STOP: PUSH DX
PUSH AX
MOV DX,T8255C
MOV AL,00H
OUT DX,AL
POP AX
POP DX
JMP A1
START: PUSH DX
PUSH AX
MOV DX,T8255C
MOV AL,01H
OUT DX,AL
POP AX
POP DX
JMP A1
L1: MOV SHANGCI_START,01H
MOV AL, 36H ; 弱风正常
JMP SHOW
L2: MOV SHANGCI_START,02H
MOV AL,2EH ;弱风睡眠
MOV FREE_START,CL
MOV DX,T8255B
OUT DX, AL
CALL DELAY
CALL DELAY
MOV AL,3EH
MOV DX,T8255B
OUT DX,AL
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
JMP READ
L3: MOV SHANGCI_START,03H
MOV AL,1EH ;弱风自然
MOV FREE_START,CL
MOV DX,T8255B
OUT DX, AL
CALL DELAY
CALL DELAY
MOV AL,3EH
MOV DX,T8255B
OUT DX,AL
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
JMP READ
L4: MOV SHANGCI_START,04H
MOV AL,35H ;中风正常
JMP SHOW
L5: MOV SHANGCI_START,05H
MOV AL,2DH ;中风睡眠
MOV FREE_START,CL
MOV DX,T8255B
OUT DX,AL
CALL DELAY
CALL DELAY
MOV AL,3DH
MOV DX,T8255B
OUT DX,AL
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
JMP READ
L6: MOV SHANGCI_START,06H
MOV AL,1DH ;中风自然
MOV FREE_START,CL
MOV DX,T8255B
OUT DX, AL
CALL DELAY
CALL DELAY
MOV AL,3DH
MOV DX,T8255B
OUT DX,AL
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
JMP READ
L7: MOV SHANGCI_START,07H
MOV AL,33H ;强风正常
JMP SHOW
L8: MOV SHANGCI_START,08H
MOV AL ,2BH ;强风睡眠
MOV FREE_START,CL
MOV DX,T8255B
OUT DX, AL
CALL DELAY
CALL DELAY
MOV
展开阅读全文