芙蓉学院家用电风扇控制器.docx
- 文档编号:10309973
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:27
- 大小:141.80KB
芙蓉学院家用电风扇控制器.docx
《芙蓉学院家用电风扇控制器.docx》由会员分享,可在线阅读,更多相关《芙蓉学院家用电风扇控制器.docx(27页珍藏版)》请在冰豆网上搜索。
芙蓉学院家用电风扇控制器
(芙蓉学院)
(芙蓉学院)
微机原理课程设计
课题:
家用风扇控制器设计
姓名:
罗文华
学号:
07120136
同组姓名:
孙勇
专业班级:
计科0701
指导教师:
杨红杰老师
设计时间:
2010-1-6
评阅意见:
评定成绩:
指导老师签名:
年月日
目录
一、设计目标...................................................................................2
二、设计要求……………………………………………………..2
三、总体设计...................................................................................2
四、硬件设计...................................................................................2
五、软件设计...................................................................................3
六、程序清单...................................................................................9
七、调试结果...................................................................................17
八、心得体会...................................................................................17
九、参考文献...................................................................................18
模拟家用风扇控制器的设计
一、设计目标
设计并制作一个模拟家用风扇控制器。
二、设计要求
1、控制器面板为:
按钮三个,分别为风速、类型和停止,LED指示灯六个,指示风速强、中、弱,类型为睡眠、自然和正常。
2、电扇处于停转状态时:
所有指示灯不亮,只有按下“风速”键时,才会响应,进入起始工作状态;电扇在任何状态,只要按停止键,则进入停转状态。
3、处于工作状态时有:
(1)初始状态为:
风速-“弱”,类型-“正常”;
(2)按“风速”键,其状态由“弱”→“中”→“强”→“弱”……往复循环改变,每按一下按键改变一次;
(3)按“类型”键,其状态由“正常”→“睡眠”→“自然”→“正常”……往复循环改变;
4、风速:
风速的弱、中、强对应于电扇的转动由慢到快。
5、风速类型的不同选择分别为:
(1)正常电扇连续运转;
(2)自然电扇模拟自然风,即转4s,停8s;
(3)睡眠电扇慢转,产生轻柔的微风,运转8s,停转8s;
6、按照风速与类型的设置输出相应的控制信号。
三、总体设计
1.8253定时/计数器通道0定时控制步进速度,通道2和3定时电机的转停时间,8255的PA0控制步进电机的转停。
2.8255的C口输出控制脉冲,经74452电路驱动电路。
B口输出控制LED显示风扇当前的状态。
四、硬件设计
由于本设计主要是用步进电机的控制来模拟家用风扇控制器,所以电路是在步进电机控制系统的电路作了一些修改。
除利用了PC机本身资源外(如中断资源),还利用了平台上的8253计数/定时器、8255并行接口单元,LED指示灯电路等,再加上电机的驱动电路,便构成以风扇电机控制电路。
硬件原理图如图1:
图1:
硬件原理图
五、软件设计
本设计通过软件编程使8253通道0输出定时信号申请中断,CPU发出命令由8255的下C口输出脉宽信号来控制步进电机的走步。
8253的定时时间决定了电机转动的快慢。
电机的转动和停止则是通过8255的PA0端子输出高低电平来继续或暂停8253通道0的计数从而控制中断申请来实现的。
用8253的通道1和2一起来定时控制电机转动和停止时间的长短。
1.总体设计思路
控制系统分四个功能模块,分别是风速设置、类型设置、默认状态运行、退出系统,在前四个功能块中都设置了ESC键来取消或暂停执行当前操作。
程序中同时提供三个操作界面,一个主菜单和两个子菜单界面,进行可视控制。
(1)风速设置
风速即为电机转速设置,风速分为强、中、弱三种,对应不同的电机转速。
根据赋给计数器的计数初值,我们可以计算出步进电机各相脉宽信号的频率和电机转速,也可以反过来根据对电机转速要求,计算并调整计算初值。
这里采用的是8253的0号计数器和方波产生方式,输入时钟为f=46875hz,设计数初值为n,要求转速为0.25转/秒,对四相步进电机而言即为5步/秒,则有:
f/n=5
n=f/5=46875/5=9375
反过来,当计数器初值确定时,决定了电机的转速,如计数初值为625时,有电机转速为1步每秒(本设计中的慢风速);当计数初值为125时,电机转速为375步每秒(本设计中的快快速)。
具体设置初值及风速见表1。
风速
步速
转速
计数初值
慢
75
3.75
625
中
125
6.25
375
快
375
18.75
125
表1:
风速设置初值
(2)风的类型设置
风的类型有:
正常、自然、睡眠三种。
风的类型的不同选择,用FLAG0来记录状态:
a)正常电扇连续运转。
FLAG0=2
b)自然电扇模拟自然风,即转4s,停8s。
FLAG0=0
c)睡眠电扇慢转,产生轻柔的微风,运转8s,停转8s。
FLAG0=1
电机的运转是通过让8255的A0口输出高电平到8253的GATE0使其0号计数器继续工作,并开放中断进入循环等待中断状态。
A0口为低电平使8253的0号计数器暂停计数,则无法产生中断信号,电机停止转动。
电扇的运转和停转的时间是由8253的通道1和通道2两个计数器一起来定时的。
通道1的输入时钟为f=46875hz,设计数初值为46875,则会产生1s的定时。
通道1的OUT1作为通道2的输入脉冲,输入的计数初值为N,则定时的时间为N秒。
我们需要的是定时4s和8s,定时中断到修改8255的A0口的输出的电平和下次计数的初值就可以实现风的不同类型。
风的类型为正常时,不用启用计数器2产生中断,让计数器0一直运行。
睡眠时,通道2的计数初值一直为8,不用修改。
如果是自然就得修改了。
(3)中断子程序1
在由8253定时器通道0产生的中断子程序1中,将值为11001100B的NUM内存单元循环左移或右移一位,通过8255的下C口输出低四位,控制步进电机的相序变化,从而使电机连续转动。
(4)中断子程序2
8253定时器通道2产生的中断子程序2中,修改输入到8255的A0口的电平值,控制电机的转停,令NUM1=0,每次求反,输出到8255的A口。
根据当前选择的风的类型FLAG0以及当前所处的状态,修改通道2的计数初值。
(5)菜单界面设置
利用DOS下的BIOS功能调用,设计出彩色的形象而又易于操作的界面.
使用类型10H中断,可以实现对屏幕的完整的控制。
常用的彩色文本功能的参数设置见表2。
AH=0
设置显示方式
AL=380×25彩色方案
AH=1
设置光标类型
CH=位4-0为光标起始行
CL=位4-0为光标结束行
AH=2
设置光标位置
DH=行DL=列
AH=9
在光标位置写属性/字符
CX=要写的字符数
AL=要写的字符
AH=11
选择彩色调色板
BH=调色板ID(0-127)
BL=调色板ID的颜色
AH=19
写字符串
ES:
BP=指向字符串
CX=字符串的长度
BH=页号
表2:
彩色文本功能的参数设置
2.对步进电机的控制
1、用8255并行接口控制A、B、C的通断。
8255A的CS端可接地址200~207H。
实验室中,用LED指示灯通断模拟步进电机绕组的通电情况。
8255A工作于方式0。
8255A内部结构图如图2。
端口A地址(00):
200H
端口A地址(01):
201H
端口A地址(10):
202H
控制端口地址(11):
203H
图2:
8255A的内部结构
8255与步进电机连接示意图如图3所示。
图3:
8255与步进电机连接
8255控制字如图4所示:
图4:
8255控制字
(1)、控制方法:
速度选择方式,可通过键盘、转换开关控制。
A口工作于输入方式,接受速度选择信号,B口工作于输出方式,控制A、B、C的通断。
用LED指示灯模拟步进电机的工作,输入为“0”时,LED指示灯点亮,;为“1”时熄灭。
(2)、设置8255A的方式控制字
MOVDX,203H
MOVAL,90H;A口为输入,B口为输出
MOVDX,AL;送控制字
3.步进电机的速度控制
调节步进电机绕组通电时间,即可调整速度(频率)。
(1).1ms(1KHZ)的软件延迟程序:
设系统的CPU的频率为8MHZ,则时钟节拍为:
0.125微秒。
执行PUSHF、POPF、LOOP指令需23个节拍。
延迟1秒要循环的次数:
DELAYPROCNEAR
PUSHCX
STAR20T:
MOVCX,347;送循环次数
LP1:
PUSHF;PUSHF、POPF、LOOP需23个节拍。
POPF
LOOPLP1
POPCX
RET
DELAYENDP
(2)、采用8253A定时器控制定时时间
4.程序流程图
(1)主程序流程图如图5
图5:
主程序流程图
(2)中断服务子程序一的框图如图6
图6:
中断服务子程序二
(3)中断服务子程序二框图如图7
图7:
中断服务子程序二
六、程序清单
DSEGSEGMENT
CLOCK0EQU290H
CLOCK1EQU291H
CLOCK2EQU292H
CLOCKCEQU293H
PA55EQU280H
PB55EQU281H
PC55EQU282H
P55CEQU283H
INTNUMDB0DH
MAMESDB0DH,0AH
DB"*************WELCOMETOFUNCONTROLSYSTEM*************",0DH,0AH,'$'
MAMUDB"1.SETUPSPEED",0DH,0AH
DB"2.ROTATINGWITHFIXEDSTEP",0DH,0AH
DB"3.CONTINUALROTATING",0DH,0AH
DB"4.EXIT",0DH,0AH
DB"*******************PLEASEINPUTCHOICE:
$"
MENU1DB0DH,0AH,0DH,0AH
DB"F6.ROTATINGSPEEDIS3.75R/S",0DH,0AH
DB"F7.ROTATINGSPEEDIS6.25R/S",0DH,0AH
DB"F8.ROTATINGSPEEDIS18.75R/S",0DH,0AH
DB"INTERESCTOEXIT",0DH,0AH
DB"*******************PLEASEINPUTCHOICE:
$"
MENU2DB0DH,0AH,0DH,0AH
DB"1.CLOCKWISE",0DH,0AH
DB"2.ANTI_CLOCKWISE",0DH,0AH
DB"INTERESCTOEXIT",0DH,0AH
DB"*******************PLEASEINPUTCHOICE:
$"
MENU3DB0DH,0AH,0DH,0AH
DB"PLEASEINPUTTHENUMBEROFSTEP:
$"
MENU4DB0DH,0AH,0DH,0AH
DB"CONTINUALROTATING!
",0DH,0AH
DB"INTERESCTOEXIT",0DH,0AH,'$'
EROMSDB0DH,0AH
DB"YOURCHOISEISINVALID!
PLEASECHOOSEAGAIN",'$'
F0DB0DH,0AH
DB"ROTATINGSPEEDIS:
$"
F6DB"3.75R/S",0DH,0AH,'$'
F7DB"6.25R/S",0DH,0AH,'$'
F8DB"18.75R/S",0DH,0AH,'$'
SPEDMDWF6,F7,F8
CLCMSDB0DH,0AH
DB"DIRECTIONISCLOCKWISE",0DH,0AH,'$'
ANTMSDB0DH,0AH
DB"DIRECTIONISANTI_CLOCKWISE",0DH,0AH,'$'
QUITMSDB"ENTERESCTOEXIT",0DH,0AH,'$'
INTSEGDW?
INTOFFDW?
MCHOCDWSTSED,STDIR,ROTFX,CTROT
SPEDNDW625,375,125
SPEEDDW46875
FLAG1DB0
FLAG0DB?
BUFFERDB4
DB?
DB4DUP(?
)
CW10DW10
INTIMRDB?
TURNDB11001100B
DSEGENDS
STACKSEGMENTPARASTACK'STACK'
DB100DUP(?
)
STACKENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,SS:
STACK
MAIN:
MOVAX,DSEG
MOVDS,AX
MOVAH,35H
MOVAL,0DH
INT21H
MOVINTSEG,ES
MOVINTOFF,BX
PUSHDS
MOVAX,CS
MOVDS,AX
MOVDX,OFFSETINTPROC
MOVAH,25H
MOVAL,0DH
INT21H
POPDS
INAL,21H
MOVINTIMR,AL
ANDAL,11011111B
OUT21H,AL
MOVDX,CLOCKC
MOVAL,00110110B
OUTDX,AL
MOVDX,P55C
MOVAL,10000000B
OUTDX,AL
STI
OMANU:
MOVDX,OFFSETMAMES
MOVAH,09H
INT21H
MOVDX,OFFSETMAMU
INT21H
MOVAH,01H
INT21H
CMPAL,'1'
JBERROR
CMPAL,'5'
JAERROR
JEEXIT
ANDAL,0FH
DECAL
MOVAH,00H
SHLAX,1
MOVBX,OFFSETMCHOC
ADDBX,AX
CALL[BX]
JMPOMANU
ERROR:
MOVDX,OFFSETEROMS
MOVAH,09H
INT21H
JMPOMANU
EXIT:
MOVAL,INTIMR
OUT21H,AL
PUSHDS
MOVDX,INTOFF
MOVAX,INTSEG
MOVDS,AX
MOVAH,25H
MOVAL,0DH
INT21H
POPDS
MOVAH,4CH
INT21H
STSEDPROCNEAR
PUSHAX
PUSHDX
PUSHBX
OMENU1:
MOVDX,OFFSETMENU1
MOVAH,09H
INT21H
MOVAH,00H
INT16H
CMPAL,1BH
JZEXIT1
CMPAH,59
JBERROR1
CMPAH,66
JAERROR1
SUBAH,59
MOVBH,0
MOVBL,AH
SHLBL,1
MOVAX,SPEDN[BX]
MOVSPEED,AX
MOVDX,OFFSETF0
MOVAH,09H
INT21H
MOVDX,SPEDM[BX]
INT21H
JMPEXIT1
ERROR1:
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
INT21H
MOVDX,OFFSETEROMS
MOVAH,09H
INT21H
JMPOMENU1
EXIT1:
POPBX
POPDX
POPAX
RET
STSEDENDP
STDIRPROCNEAR
PUSHDX
PUSHAX
OMENU2:
MOVDX,OFFSETMENU2
MOVAH,09H
INT21H
MOVAH,01H
INT21H
CMPAL,1BH
JEEXIT2
CMPAL,'1'
JECLFLG
CMPAL,'2'
JEANTFLG
MOVDX,OFFSETEROMS
MOVAH,09H
INT21H
JMPOMENU2
CLFLG:
MOVFLAG1,0
MOVDX,OFFSETCLCMS
MOVAH,09H
INT21H
JMPEXIT2
ANTFLG:
MOVFLAG1,1
MOVDX,OFFSETANTMS
MOVAH,02H
INT21H
JMPEXIT2
EXIT2:
POPAX
POPDX
RET
STDIRENDP
ROTFXPROCNEAR
PUSHDX
PUSHCX
PUSHBX
PUSHAX
PUSHSI
OMENU3:
MOVDX,OFFSETMENU3
MOVAH,09H
INT21H
MOVDX,OFFSETBUFFER
MOVAH,0AH
INT21H
MOVCL,BUFFER[1]
CMPCL,3
JAERROR3
LEASI,BUFFER
ADDSI,2
MOVCH,00H
MOVAX,00H
NEXT:
MULCW10
MOVBL,[SI]
ANDBX,000FH
ADDAX,BX
INCSI
LOOPNEXT
MOVCX,AX
MOVFLAG0,0
MOVDX,CLOCK0
MOVAX,SPEED
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,PA55
MOVAL,0FFH
OUTDX,AL
STI
AGAIN1:
CMPCX,00H
JEEXIT3
MOVAH,06H
MOVDL,0FFH
INT21H
CMPAL,1BH
JEEXIT3
CMPFLAG0,0
JEAGAIN1
DECCX
MOVFLAG0,0
JMPAGAIN1
ERROR3:
MOVDX,OFFSETEROMS
MOVAH,09H
INT21H
JMPOMENU3
EXIT3:
CLI
MOVDX,PA55
MOVAL,00H
OUTDX,AL
POPSI
POPAX
POPBX
POPCX
POPDX
RET
ROTFXENDP
CTROTPROCNEAR
PUSHDX
PUSHAX
MOVDX,OFFSETMENU4
MOVAH,09H
INT21H
MOVDX,CLOCK0
MOVAX,SPEED
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,PA55
MOVAL,0FFH
OUTDX,AL
STI
AGAIN2:
MOVAH,06H
MOVDL,0FFH
INT21H
CMPAL,1BH
JNEAGAIN2
CLI
MOVDX,PA55
MOVAL,00H
OUTDX,AL
POPAX
POPDX
RET
CTROTENDP
INTPROCPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDS
MOVAX,DSEG
MOVDS,AX
STI
MOVDX,PC55
MOVAL,TURN
OUTDX,AL
CMPFLAG1,0
JETNCLC
ROLAL,1
JMPEXITI
TNCLC:
RORAL,1
EXITI:
MOVTURN,AL
MOVFLAG0,1
CLI
MOVAL,20H
OUT20H,AL
POPDS
POPDX
POPCX
POPBX
POPAX
IRET
INTPROCENDP
CSEGENDS
ENDMAIN
个人负责部分(菜单设计)详细设计如下:
DSEGSEGMENT
CLOCK0EQU290H
CLOCK1EQU291H
CLOCK2EQU292H
CLOCKCEQU293H
PA55EQU280H
PB55EQU281H
PC55EQU282H
P55CEQU283H
INTNUMDB0DH
MAMESDB0DH,0AH
DB"*************WELCOMETOFUNCONTROLSYSTEM*************",0DH,0AH,'$'
MAMUDB"1.SETUPSPEED",0DH,0AH
DB"2.ROTATINGWITHFIXEDSTEP",0DH,0AH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 芙蓉 学院 家用 电风扇 控制器