《风扇自动程序控制器设计.doc》由会员分享,可在线阅读,更多相关《风扇自动程序控制器设计.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 课 程 设 计 -电风扇自动程序控制器设计 学生姓名: 邱震海 学 院: 信息工程学院 班 级: 12应用电子技术 学 号: 指导教师: 邓鸿甫 日 期: 2014 年 12 月 目 录摘 要.11 总体设计思想.22 硬件设计.3 2.1硬件设计基本概要.3 2.2 8255A的设计.4 2.3 8253的设计.4 2.4步进电机的设计.5 2.5硬件系统原理图.53 软件设计.6 3.1风扇运行控制模块.7 3.2按键判断控制模块.7 3.3风速控制模块.9 3.4类型控制模块.10 3.5定时控制模块.10 3.6停止控制模块.114 系统调试及仿真.125 心得与体会.14参考文献.
2、15附录 源程序及其说明.16 1 总体设计思想本次课程设计任务主要基于8086以及各种接口芯片结合汇编语言实现对家用风扇控制器的模拟,运用8086CPU结合汇编语言编写的软件来实现各种信号的处理与变换,以得到想要的控制信号。8255A接收开关信号,驱动风扇的转动信号输出,并接收8253产生的控制信号。8253主要实现各种风种的控制信号,从而得到自然、睡眠的类型风。在模拟中通过开关来实现各种控制信号的输入,再通过8255的端口进行读取,再由8086通过软件对采入的信号进行辨别进而转入到相应的功能子程序中以实现各种功能。在各种功能的背后,通过8086驱动相应功能的硬件设备实现各种功能的切换。 图
3、1-1 硬件设计框图 此任务控制器已基本实现所有风扇控制功能,而现在几乎所有的风扇都能实现定时功能,故可以在控制器的设计中扩展定时功能以达到全面控制的目的。风扇控制停止后,后续状态任务书上未作要求,现设计其能在停止后处于等待状态,当且仅当有风速键按下后,控制器可恢复继续控制风扇的运行,实现控制器的循环控制。2 硬件设计2.1 硬件设计基本概要根据设计要求和内容,用可编程并行接口芯片8255APC口低四位接收4个按键(分别表示风速、风种、定时、停止)的状态以启动电扇或设置相应的工作状态。这样就需要4个按键,因此可以用实验箱上的某一列的4个按键,可以将此列的列选择线直接接为低电平,4个行输入线接到
4、8255的C口。这样可以直接从8255的口读取按键的状态,从而执行相应的操作。要通过一个按键来控制2个以上的状态,可以通过按键的次数来控制第几种状态,比如风速有三种状态(弱、中、强),可以用按键1次控制弱,按键2次控制中,按键3次控制强,这样就可以实现一键控制多钟状态了。控制器的指示灯,使用六个LED灯进行显示,分别显示不同风速、类型等6个指示信号。显示模块状态表示如下表2-1所示。用四相步进电动机作为电风扇,其转速可通过改变其驱动电平的频率来改变步进电机的速度。利用8255A的PC口高四位对步进电机进行四相四拍驱动。风种时间控制可由可编程计数器/定时器 8253来实现。可选用8253工作在方
5、式3。在这种方式下,当CPU输入控制字后,输出将为高,在写入计数值后计数器将立即自动对输入时钟CLK计数,计数器减为1时,输出将变低,方式2时8253不可用重新设置计数值就能连续工作,保证了定时的精确。 表2-1 显示模块代码状态表示按键状态 相应LED灯显示器风速弱1中2强3类型正常4自然5睡眠62.2 8255A的设计8255A的PA工作在方式0的基本输入方式作为控制信号的输入,接收8253的信号来控制步进电机的转动与停止。PC低四位工作在方式0的基本输入方式,用来接收四个开关的开关信号,高四位工作在方式0的基本输出方式作为四相步进电机的四相线路输出电路用来驱动步进电机的转动。PB口工作在
6、方式0的基本输出方式,用低六位来控制六个LED灯的亮和灭。2.3 8253的设计 先利用通道0对时钟进行分频,已获得可较好利用的时钟,得到周期为四秒的方波为后面能自然和睡眠的状态产生八秒高电平四秒低电平以及周期为十六秒的方波做准备。使用通道2用来产生类型风的状态信号,在自然风类型时,让其工作在方式2产生八秒高电平四秒低电平,当高电平时驱动步进电机转动,低电平则返回继续检测,以实现自然风的模拟;在睡眠的类型时,通道2工作在方式3产生周期为十六秒的方波,当高电平时驱动步进电机转动,低电平则返回继续检测,以实现睡眠风的模拟。2.4 步进电机的设计步进电机可接受数字控制信号(电脉冲信号)并转化成与之相
7、对应的角位移或直线位移,因而本身就是一个完成数字模拟转化的执行元件。而且它能进行开环位置控制,输入一个脉冲信号就得到一个规定的位置增量。本次课程设计使用的电机为四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。步进电机的转速取决于脉冲频率、转子齿数和拍数。其角速度与脉冲频率成正比,而且在时间上与脉冲同步。因而在转子齿数和运行拍数一定的情况下,只要控制脉冲频率即可获得所需速度。2.5 系统硬件原理图 图2-1 系统硬件原理图3 软件设计 硬件的设计完成后,运用汇编语言编写软件部分通过8086CPU实现各种信号的输入/输出以及相关信号的处理,从
8、而控制步进电机的各种转态的转换控制。软件设计主体流程图如图3-1所示。Y开始初始化8255A,8253通道1风速键是否按下初始化风速:弱,类型:正常风扇运行子模块风速键是否按下下类型键是否按下停止键是否按下风扇控制子模块类型控制子模块停止子模块YNYNY图3-1风扇控制器软件总流程图3.1 风扇运行控制模块 此模块主要控制步进电机的转动以及转速,亦是整个控制器的主控部分。实现风扇各种功能的“CPU”。其中主要部分是驱动电机转动的子程序,每次依次对四相电路驱动一次,由于8086处理速度非常快在肉眼看来电机没有微停抖动的情况,步进电机就是在连续的转动。步进电机转动需要判断两个控制信号,一个是类型信
9、号PA0另一个是定时信号PA1,当两者都是高电平时才去驱动步进电机转动。风扇运行控制模块流程图如图3-2所示:PA0是高电平PA1是高电平驱动步进电机显示当前状态NNYY停止控制模块风扇运行模块子程序子程序返回图3-2风扇运行控制模块流程图3.2 按键判断控制模块常用风扇开关是弹簧式,但平台上是单刀单掷的开关,若用常用方法判断其是高电平(或低电平)每次拨完开关后需对开关拨回原来的状态下次才能正常拨动开关,相当不方便。我采用另一种判断方法,每次有按键按下后后保存他们的开关状态当下次有开关状态变化时就可以知道有按键按下进行按键判断。首先判断上一次的开关状态与此次检测的状态是否相同,不同则分别判断四
10、个开关状态是否变化,若有就转入相应的子模块中。按键判断控制模块图如图3-3所示。开关状态是否变化保存此次开关状态风速开关状态变化停止开关状态变化定时开关状态变化类型开关状态变化NNNNNY风速控制模块YYY类型控制模块定时控制模块停止控制模块开关模块子程序Y子程序返回 图3-3按键控制模流程图3.3 风速控制模块此次任务中使用步进电机进行模拟,步进电机的速度控制运用PWM方法,通过改变频率来实现速度控制。在软件编程中,通过8255A的PB口输出驱动步进电机,通过改变单拍输出的延时时间来改变速度,延时越短速度越快。在设计中,置一数据BUF1单元保存延时时间,不同的速度选择时,置不同数据来改变延时
11、的长短从而实现速度的控制。另置一数据单元BUF2保存当前风速状态,BUF2在1、2、3之间循环,分别代表弱、中、强并作为状态数据显示。风速控制模块流程图如图3-4所示。BUF2为弱风状态BUF2加1BUF2为中速状态BUF2为强风状态BUF1置弱风延时时间数据BUF1置中风延时时间数据BUF1置强风延时时间数据 BUF2清零YYYNNN风速控制模块子程序子程序返回图3-4风速控制模块流程图3.4 类型控制模块类型的控制主要运用8253来产生各种状态波形信号,通过检测信号的高低电平来控制步进电机的运转。此模块主要来初始化8253通道1的工作状态。在数据段中置一数据单元BUF3来存储类型的状态数据
12、,BUF3在1、2、3之间循环分别代表类型中的正常、自然以及睡眠三种类型并作为状态数据显示。类型控制模块流程图如图3-5所示。BUF3为正常状态BUF3加1BUF3为自然状态BUF3为睡眠状态PC0、PC1、PC2输出0 ,8253所有通道门控置0PC0、PC1输出1通道2初始化工作在方式2PC0、PC1输出1通道2初始化工作在方式3 BUF3清零YYYNNN类型控制模块子程序子程序返回图3-5类型控制模块流程图3.5 定时控制模块定时也是通过8253产生控制信号来控制,通过8253的通道2工作在方式4实现定时,在定时完后会在风扇运行控制模块中转到停止模块中。在数据段中置一数据单元BUF4来存
13、储定时类型的状态数据,BUF4在1、2、3之间循环分别代表类型中的8秒、16秒以及32秒三种类型并作为状态数据显示。定时控制模块流程图如图3-6所示。BUF4为8S状态BUF4加1BUF4为16S状态BUF4为32S状态PC5输出1 ,初始化通道38S的计数初值PC5输出1 ,初始化通道316S的计数初值PC5输出1 ,初始化通道332S的计数初值BUF4清零YYYNNN定时控制模块子程序子程序返回图3-6定时控制模块流程图3.6 停止控制模块停止状态主要实现风扇暂时性的停止运行,在某个键按下后又能继续运转。按要求只有在风速键按下才能继续运行。此模块主要对已运行的风扇停止后所有状态进行清零,以
14、保证再次运行后能按初始状态运行。停止模块流程图如图3-7所示。BUF1、BUF2、BUF3、BUF4清零PC0、PC1、PC2输出为08253所有通道门控清零停止模块子程序子程序返回图3-7停止控制模块流程图4 系统调试及仿真1、当程序运行时,进入DOS状态下控制器面板的菜单选项:按钮为三个,分别为“风速”、“类型”和“停止”,LED指示灯共六个,分别指示风速“强”、“中”、“弱”,类型分别为“睡眠”、“自然”和“正常”。2、电扇处于停转状态时:所有指示灯不亮,只有按下“风速”键时,其状态由“弱” “中” “强” “弱” 往复循环改变,每按一下按键改变一次;按“类型”键时,其状态由“正常” “
15、睡眠” “自然” “正常” 往复循环改变;电扇在任何状态,只要按停止键,则进入停转状态。系统利用proteus进行仿真,仿真图详见下图4-1 图4-1 系统仿真图5. 实验结果实验结果图如图6.1所示图 5.1 实验结果5 心得与体会通过此次的课程设计任务,我加深了自己对汇编语言以及各接口芯片使用方法的理解,在实践中体会到各芯片的工作的状态及使用方法。本学期学习过的8255A和8253芯片的相关内容,通过这次课程设计,通过设计,看书,也有了比较深刻地了解。与此同时还加深了对汇编程序结构,指令,调用等基础知识的认识。在实践中充分利用所学知识结合实际情况作出符合要求的设计。在具体的调试过程中遇到了
16、很多问题,我们小组通过查找各方面资料解决了这些问题。在这我学到了部分proteus仿真中及硬件调试方面常出现的问题及解决方法。而在软件设计方面我也学到常见逻辑错误及其解决方法。能在实践中磨砺自己的意志以及锻炼自己的动手操作能力,提升自己独立完成小型系统的设计任务能力。为以后在大型系统设计中能奠定一定的基础知识及实际操作能力,并为自己积累了许多宝贵的经验教训。通过这次短暂的课程设计,不仅使我加深了对接口程序设计的认识,对接口各部件的工作原理也有了进一步的了解,也增强了分析故障以及独立处理问题的能力。 参考文献1 彭虎. 微机原理与接口技术. 机械工业出版社,2001年3月2 雷丽文. 微机原理与
17、接口技术. 电子工业出版社 1999年第一版3 韩海编著. 汇编语言程序设计. 西安:西安电子科技大学出版社,20004 胡寿松. 自动控制原理. 科学出版社,1999 5 刘乐善. 微型计算机接口技术及应用. 武汉:华中科技大学出版社,20046 沈美明. IBM PC机汇编语言程序设计. 清华大学出版社,1991年第一版附录 源程序及其说明说明:DS:077AH存储延时时间控制步进电机速度DATA0存储当前状态显示数据DATA存储当前状态类型数据源程序:CODES SEGMENT ASSUME CS:CODES;8253端口地址IOCON8253 EQU 43H IO08253 EQU 4
18、0H IO18253 EQU 41H IO28253 EQU 42H ;8255端口地址IOCON8255 EQU 0FF2BH IOB8255 EQU 0FF29H IOC8255 EQU 0FF2AH ORG 1000HSTART: MOV CS:DATA0,0H MOV CS:DATA01,0H MOV CS:DATA02,0H;8255初始化MOV AL,B MOV DX,IOCON8255 OUT DX,AL;按键状态数据 MOV WORD PTR DS:077AH,09FFH;控制器启动程序;判断是否是风速按键按下QD: MOV DX,IOC8255 IN AL,DX CMP AL
19、,01 JNE QD MOV BYTE PTR DS:077CH,01H JMP STYLEPRO;检查是否有键键入CHECK: MOV DX,IOC8255 IN AL,DX AND AL,0FH CMP AL,BYTE PTR DS:077CH;没有则跳出返回JZ CHECKOUT ;判断输入键的类型MOV AH,AL MOV BL,BYTE PTR DS:077CH MOV BYTE PTR DS:077CH,AL MOV BH,BL AND BL,01H AND AL,01H XOR AL,BL;风速选择键键入JNZ SPEEDPRO MOV AL,AH MOV BL,BH AND B
20、L,02H AND AL,02H XOR AL,BL;风类型选择键键入JNZ STYLEPRO MOV AL,AH MOV BL,BH AND BL,04H AND AL,04H XOR AL,BL;定时选择键键入JNZ L1 MOV AL,AH MOV BL,BH AND BL,08H AND AL,08H XOR AL,BL;停止键键入JNZ L2 L1: JMP TIMEPRO L2: JMP PAUSEPRO CHECKOUT: RET;风速选择程序模块SPEEDPRO: MOV AL,CS:DATA ADD AL,1 MOV CS:DATA,AL MOV AL,CS:DATA CMP
21、 AL,1 JZ L CMP AL,2 JZ MID ;强风MOV CS:DATA,0MOV WORDPTRDS:077AH,00FFHMOV CS:DATA0,03HJMP BACK;弱风 L:MOV WORD PTR DS:077AH,09FFH MOV CS:DATA0,01H JMP BACK;中风MID:MOVWORD PTR DS:077AH,04FFH MOV CS:DATA0,02H JMP BACK BACK:JMP CHECKOUT;类型选择程序模块STYLEPRO: MOV CS:DATA02,0H MOV AL,CS:DATA1 ADD AL,1 MOV CS:DATA
22、1,AL MOV AL,CS:DATA1 CMP AL,1 JZ NORMAL CMP AL,2 JZ NATURAL MOV CS:DATA1,0 JMP SLEEP ;正常NORMAL: MOV CS:DATA01,01H NORMAL_R: CALL DISP CALL RUN CALL CHECK JMP NORMAL_R ;自然NATURAL: CALL FORMAT8253_NATURAL MOV CS:DATA01,02H NATURAL_R: CALL DISP MOV DX,IOB8255 IN AL,DX TEST AL,1 JNZ N_GO JMP N_CHECK N_G
23、O:CALL RUN N_CHECK: CALL CHECK JMP NATURAL_R ;睡眠SLEEP: CALL FORMAT8253_SLEEP MOV CS:DATA01,03H SLEEP_R: CALL DISP MOV DX,IOB8255 IN AL,DX TEST AL,1 JNZ S_GO JMP S_CHECK S_GO:CALL RUN S_CHECK: CALL CHECK JMP SLEEP_R;定时选择程序模块TIMEPRO: CALL FORMAT8253 MOV CS:DATA01,0H MOV AL,CS:DATA2 ADD AL,1 MOV CS:DAT
24、A2,AL CMP AL,1 JZ TIME1 MOV AL,CS:DATA2 CMP AL,2 JE TIME2 MOV CS:DATA2,0 JMP TIME3 ;8秒定时TIME1: CALL FORMAT8253_TIME1 MOV CS:DATA02,01H TIME1_R: CALL DISP MOV DX,IOB8255 IN AL,DX NOT AL TEST AL,01 JNZ T1_GO JMP PAUSEPRO T1_GO: CALL RUN CALL CHECK JMP TIME1_R ;16秒定时TIME2: CALL FORMAT8253_TIME2 MOV CS:
25、DATA02,02H TIME2_R: CALL DISP MOV DX,IOB8255 IN AL,DX NOT AL TEST AL,01 JNZ T2_GO JMP PAUSEPRO T2_GO: CALL RUN CALL CHECK JMP TIME2_R ;32秒定时TIME3: CALL FORMAT8253_TIME3 MOV CS:DATA02,03H TIME3_R: CALL DISP MOV DX,IOB8255 IN AL,DX NOT AL TEST AL,01 JNZ T3_GO JMP PAUSEPRO T3_GO: CALL RUN CALL CHECK JM
26、P TIME3_R ;停止控制模块PAUSEPRO: PCHECK: MOV DX,IOC8255 IN AL,DX AND AL,0FH CMP AL,BYTE PTR DS:077CHJZ PCHECK;是否为风速键 MOV AH,AL MOV BL,BYTE PTR DS:077CH MOV BYTE PTR DS:077CH,AL MOV BH,BL AND BL,01H AND AL,01H XOR AL,BL JZ PCHECK ;状态清零MOV CS:DATA,0H MOV CS:DATA1,0H MOV WORD PTR DS:077AH,3FFFH MOV CS:DATA0,
27、0H MOV CS:DATA01,0H MOV CS:DATA02,0H JMP STYLEPRO;步进电机驱动转动模块RUN: MOV DX,IOC8255 MOV AL,30HOUT DX,ALCALL DELAYMOV AL,60HOUT DX,ALCALL DELAYMOV AL,0C0HOUT DX,ALCALL DELAYMOV AL,90HOUT DX,ALCALL DELAYRET ;延时控速DELAY: MOV CX,WORD PTR DS:077AH DELA:LOOP DELA RET ;通道0初始化FORMAT8253: MOV AL,B MOV DX,IOCON825
28、3 OUT DX,AL MOV AL,00 MOV DX,IO08253 OUT DX,AL MOV AL,10 OUT DX,ALRET;自然风通道2初始化FORMAT8253_NATURAL: MOV AL,B MOV DX,IOCON8253 OUT DX,AL MOV AL,00 MOV DX,IO28253 OUT DX,AL MOV AL,10 OUT DX,ALRET;睡眠风通道2初始化FORMAT8253_SLEEP: MOV AL,B MOV DX,IOCON8253 OUT DX,AL MOV AL,00 MOV DX,IO28253 OUT DX,AL MOV AL,20
29、 OUT DX,ALRET;8秒定时通道2初始化FORMAT8253_TIME1: MOV AL,B MOV DX,IOCON8253 OUT DX,AL MOV AL,00 MOV DX,IO28253 OUT DX,AL MOV AL,20 OUT DX,ALRET;16秒定时通道2初始化FORMAT8253_TIME2: MOV AL,B MOV DX,IOCON8253 OUT DX,AL MOV AL,00 MOV DX,IO28253 OUT DX,AL MOV AL,40 OUT DX,ALRET;32秒定时通道2初始化FORMAT8253_TIME3: MOV AL,B MOV
30、 DX,IOCON8253 OUT DX,AL MOV AL,00 MOV DX,IO28253 OUT DX,AL MOV AL,80 OUT DX,AL RET;状态显示模块DISP: mov DX,OFFSET DATA0 mov ah,04h DISP0:MOV cx,00ffh mov bx,dx mov bl,CS:bx mov bh,0h push dx mov dx,0ff22h mov al,cs:DATA1bx OUT DX,AL mov dx,0ff21h mov al,ah OUT DX,AL DISP1:loop disp1 pop dx INC dx shr ah,01h jnz DISP0 mov dx,0ff22h mov al,0ffh OUT DX,AL retDATA1 DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90H,88HDB 83H,0C6H,0AH,86H,8EHDB 0FFH,0CH,89H,0DEH,0C7HDB 8CH,0F3H,0BFHDATA0 DB 0H,0H,0H ;显示类型数据DATA DB 0H,0H,0H ;类型数据CODES ENDSEND START