当前位置:文档之家› 家用电风扇控制器

家用电风扇控制器

新余学院毕业设计课题: 家用风扇控制器设计姓名:夏喜学号:1101030139同组姓名:孟杭专业班级:11机制专1指导教师:李耐根设计时间:2013-9-22目录一、设计目标 (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 = 5n=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=2b)自然电扇模拟自然风,即转4s,停8s。

FLAG0=0c)睡眠电扇慢转,产生轻柔的微风,运转 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)中断子程序28253定时器通道2产生的中断子程序2中,修改输入到8255的A0口的电平值,控制电机的转停,令NUM1=0,每次求反,输出到8255的A 口。

根据当前选择的风的类型FLAG0以及当前所处的状态,修改通道2的计数初值。

(5)菜单界面设置利用DOS 下的BIOS 功能调用,设计出彩色的形象而又易于操作的界面. 使用类型10H 中断,可以实现对屏幕的完整的控制。

常用的彩色文本功能的参数设置见表2。

表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所示。

8255控制字如图4所示:(1)、控制方法:速度选择方式,可通过键盘、转换开关控制。

A 口工作于输入方式,接受速度选择信号,B 口工作于输出方式,控制A 、B 、C 的通断。

用LED 指示灯模拟步进电机的工作,输入为“0”时,LED 指示灯点亮,;为“1”时熄灭。

(2)、设置8255A 的方式控制字 MOV DX ,203HMOV AL ,90H ;A 口为输入,B 口为输出 MOV DX ,AL ;送控制字3.步进电机的速度控制图3:8255与步进电机连接图4:8255控制字调节步进电机绕组通电时间,即可调整速度(频率)。

(1).1ms(1KHZ)的软件延迟程序:设系统的CPU 的频率为8MHZ ,则时钟节拍为:0.125微秒。

执行PUSHF 、POPF 、LOOP 指令需23个节拍。

延迟1秒要循环的次数:DELAY PROC NEAR PUSH CXSTAR20T : MOV CX ,347 ;送循环次数LP1: PUSHF ;PUSHF 、POPF 、LOOP 需23个节拍。

POPF LOOP LP1 POP CX RETDELAY ENDP(2)、采用8253A 定时器控制定时时间 4.程序流程图(1)主程序流程图如图5图5: 主程序流程图347125.0231=⨯==smsX μ一次循环时间延迟时间(2)中断服务子程序一的框图如图6图6:中断服务子程序二(3)中断服务子程序二框图如图7图7:中断服务子程序二六、程序清单DSEG SEGMENTCLOCK0 EQU 290HCLOCK1 EQU 291HCLOCK2 EQU 292HCLOCKC EQU 293HPA55 EQU 280HPB55 EQU 281HPC55 EQU 282HP55C EQU 283HINTNUM DB 0DHMAMES DB 0DH,0AHDB"*************WELCOME TO FUN CONTROL SYSTEM*************",0DH,0AH,'$' MAMU DB "1.SET UP SPEED",0DH,0AHDB "2.ROTATING WITH FIXED STEP",0DH,0AHDB "3.CONTINUAL ROTATING",0DH,0AHDB "4.EXIT",0DH,0AHDB "*******************PLEASE INPUT CHOICE:$"MENU1 DB 0DH,0AH,0DH,0AHDB "F6.ROTATING SPEED IS 3.75R/S",0DH,0AHDB "F7.ROTATING SPEED IS 6.25R/S",0DH,0AHDB "F8.ROTATING SPEED IS 18.75R/S",0DH,0AHDB "INTER ESC TO EXIT",0DH,0AHDB "*******************PLEASE INPUT CHOICE:$"MENU2 DB 0DH,0AH,0DH,0AHDB "1.CLOCKWISE",0DH,0AHDB "2.ANTI_CLOCKWISE",0DH,0AHDB "INTER ESC TO EXIT",0DH,0AHDB "*******************PLEASE INPUT CHOICE:$"MENU3 DB 0DH,0AH,0DH,0AHDB "PLEASE INPUT THE NUMBER OF STEP:$"MENU4 DB 0DH,0AH,0DH,0AHDB "CONTINUAL ROTATING!",0DH,0AHDB "INTER ESC TO EXIT",0DH,0AH,'$'EROMS DB 0DH,0AHDB "YOUR CHOISE IS INVALID! PLEASE CHOOSE AGAIN",'$'F0 DB 0DH,0AHDB "ROTATING SPEED IS:$"F6 DB "3.75R/S",0DH,0AH,'$'F7 DB "6.25R/S",0DH,0AH,'$'F8 DB "18.75R/S",0DH,0AH,'$'SPEDM DW F6,F7,F8CLCMS DB 0DH,0AHDB "DIRECTION IS CLOCKWISE",0DH,0AH,'$'ANTMS DB 0DH,0AHDB "DIRECTION IS ANTI_CLOCKWISE",0DH,0AH,'$'QUITMS DB "ENTER ESC TO EXIT",0DH,0AH,'$' INTSEG DW ?INTOFF DW ?MCHOC DW STSED,STDIR,ROTFX,CTROT SPEDN DW 625,375,125SPEED DW 46875FLAG1 DB 0FLAG0 DB ?BUFFER DB 4DB ?DB 4 DUP(?)CW10 DW 10INTIMR DB ?TURN DB 11001100BDSEG ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:STACK MAIN: MOV AX,DSEGMOV DS,AXMOV AH,35HMOV AL,0DHINT 21HMOV INTSEG,ESMOV INTOFF,BXPUSH DSMOV AX,CSMOV DS,AXMOV DX,OFFSET INTPROCMOV AH,25HMOV AL,0DHINT 21HPOP DSIN AL,21HMOV INTIMR,ALAND AL,11011111BOUT 21H,ALMOV DX,CLOCKCMOV AL,00110110BOUT DX,ALMOV DX,P55CMOV AL,10000000BOUT DX,ALSTIOMANU: MOV DX,OFFSET MAMESMOV DX,OFFSET MAMUINT 21HMOV AH,01HINT 21HCMP AL,'1'JB ERRORCMP AL,'5'JA ERRORJE EXITAND AL,0FHDEC ALMOV AH,00HSHL AX,1MOV BX,OFFSET MCHOCADD BX,AXCALL [BX]JMP OMANU ERROR: MOV DX,OFFSET EROMS MOV AH,09HINT 21HJMP OMANUEXIT: MOV AL,INTIMROUT 21H,ALPUSH DSMOV DX,INTOFFMOV AX,INTSEGMOV DS,AXMOV AH,25HMOV AL,0DHINT 21HPOP DSMOV AH,4CHINT 21HSTSED PROC NEARPUSH AXPUSH DXPUSH BXOMENU1: MOV DX,OFFSET MENU1 MOV AH,09HINT 21HMOV AH,00HINT 16HCMP AL,1BHJZ EXIT1CMP AH,59JA ERROR1SUB AH,59MOV BH,0MOV BL,AHSHL BL,1MOV AX,SPEDN[BX]MOV SPEED,AXMOV DX,OFFSET F0MOV AH,09HINT 21HMOV DX,SPEDM[BX]INT 21HJMP EXIT1ERROR1: MOV DL,0AHMOV AH,02HINT 21HMOV DL,0DHINT 21HMOV DX,OFFSET EROMSMOV AH,09HINT 21HJMP OMENU1EXIT1: POP BXPOP DXPOP AXRETSTSED ENDPSTDIR PROC NEARPUSH DXPUSH AXOMENU2: MOV DX,OFFSET MENU2 MOV AH,09HINT 21HMOV AH,01HINT 21HCMP AL,1BHJE EXIT2CMP AL,'1'JE CLFLGCMP AL,'2'JE ANTFLGMOV DX,OFFSET EROMSMOV AH,09HINT 21HJMP OMENU2MOV DX,OFFSET CLCMSMOV AH,09HINT 21HJMP EXIT2 ANTFLG: MOV FLAG1,1MOV DX,OFFSET ANTMSMOV AH,02HINT 21HJMP EXIT2EXIT2: POP AXPOP DXRETSTDIR ENDPROTFX PROC NEARPUSH DXPUSH CXPUSH BXPUSH AXPUSH SIOMENU3: MOV DX,OFFSET MENU3 MOV AH,09HINT 21HMOV DX,OFFSET BUFFERMOV AH,0AHINT 21HMOV CL,BUFFER[1]CMP CL,3JA ERROR3LEA SI,BUFFERADD SI,2MOV CH,00HMOV AX,00HNEXT: MUL CW10MOV BL,[SI]AND BX,000FHADD AX,BXINC SILOOP NEXTMOV CX,AXMOV FLAG0,0MOV DX,CLOCK0MOV AX,SPEEDOUT DX,ALMOV AL,AHOUT DX,ALMOV AL,0FFHOUT DX,ALSTIAGAIN1: CMP CX,00HJE EXIT3MOV AH,06HMOV DL,0FFHINT 21HCMP AL,1BHJE EXIT3CMP FLAG0,0JE AGAIN1DEC CXMOV FLAG0,0JMP AGAIN1 ERROR3: MOV DX,OFFSET EROMS MOV AH,09HINT 21HJMP OMENU3EXIT3: CLIMOV DX,PA55MOV AL,00HOUT DX,ALPOP SIPOP AXPOP BXPOP CXPOP DXRETROTFX ENDPCTROT PROC NEARPUSH DXPUSH AXMOV DX,OFFSET MENU4MOV AH,09HINT 21HMOV DX,CLOCK0MOV AX,SPEEDOUT DX,ALMOV AL,AHOUT DX,ALMOV DX,PA55MOV AL,0FFHOUT DX,ALSTIAGAIN2: MOV AH,06HINT 21HCMP AL,1BHJNE AGAIN2CLIMOV DX,PA55MOV AL,00HOUT DX,ALPOP AXPOP DXRETCTROT ENDPINTPROC PROCPUSH AXPUSH BXPUSH CXPUSH DXPUSH DSMOV AX,DSEGMOV DS,AXSTIMOV DX,PC55MOV AL,TURNOUT DX,ALCMP FLAG1,0JE TNCLCROL AL,1JMP EXITITNCLC: ROR AL,1EXITI: MOV TURN,ALMOV FLAG0,1CLIMOV AL,20HOUT 20H,ALPOP DSPOP DXPOP CXPOP BXPOP AXIRETINTPROC ENDPCSEG ENDSEND MAIN个人负责部分(菜单设计)详细设计如下:DSEG SEGMENTCLOCK0 EQU 290HCLOCK1 EQU 291HCLOCK2 EQU 292HCLOCKC EQU 293HPA55 EQU 280HPB55 EQU 281HPC55 EQU 282HP55C EQU 283HINTNUM DB 0DHMAMES DB 0DH,0AHDB"*************WELCOME TO FUN CONTROL SYSTEM*************",0DH,0AH,'$' MAMU DB "1.SET UP SPEED",0DH,0AHDB "2.ROTATING WITH FIXED STEP",0DH,0AHDB "3.CONTINUAL ROTATING",0DH,0AHDB "4.EXIT",0DH,0AHDB "*******************PLEASE INPUT CHOICE:$"MENU1 DB 0DH,0AH,0DH,0AHDB "F6.ROTATING SPEED IS 3.75R/S",0DH,0AHDB "F7.ROTATING SPEED IS 6.25R/S",0DH,0AHDB "F8.ROTATING SPEED IS 18.75R/S",0DH,0AHDB "INTER ESC TO EXIT",0DH,0AHDB "*******************PLEASE INPUT CHOICE:$"MENU2 DB 0DH,0AH,0DH,0AHDB "1.CLOCKWISE",0DH,0AHDB "2.ANTI_CLOCKWISE",0DH,0AHDB "INTER ESC TO EXIT",0DH,0AHDB "*******************PLEASE INPUT CHOICE:$"MENU3 DB 0DH,0AH,0DH,0AHDB "PLEASE INPUT THE NUMBER OF STEP:$"MENU4 DB 0DH,0AH,0DH,0AHDB "CONTINUAL ROTATING!",0DH,0AHDB "INTER ESC TO EXIT",0DH,0AH,'$'EROMS DB 0DH,0AHDB "YOUR CHOISE IS INVALID! PLEASE CHOOSE AGAIN",'$' F0 DB 0DH,0AHDB "ROTATING SPEED IS:$"F6 DB "3.75R/S",0DH,0AH,'$'F7 DB "6.25R/S",0DH,0AH,'$'F8 DB "18.75R/S",0DH,0AH,'$'SPEDM DW F6,F7,F8CLCMS DB 0DH,0AHDB "DIRECTION IS CLOCKWISE",0DH,0AH,'$'ANTMS DB 0DH,0AHDB "DIRECTION IS ANTI_CLOCKWISE",0DH,0AH,'$'QUITMS DB "ENTER ESC TO EXIT",0DH,0AH,'$'INTSEG DW ?INTOFF DW ?MCHOC DW STSED,STDIR,ROTFX,CTROTSPEDN DW 625,375,125SPEED DW 46875FLAG1 DB 0FLAG0 DB ?BUFFER DB 4DB ?DB 4 DUP(?)CW10 DW 10INTIMR DB ?TURN DB 11001100BDSEG ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:STACK七、调试结果1、当程序运行时,进入DOS状态下控制器面板的菜单选项:按钮为三个,分别为“风速”、“类型”和“停止”,LED指示灯共六个,分别指示风速“强”、“中”、“弱”,类型分别为“睡眠”、“自然”和“正常”。

相关主题