家用风扇控制器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

家用风扇控制器设计
从哪一行开始出错,一些看不到错误的地方直接通过添加DELAY来减慢操作速度,这样便于查看仿真结果。

您也可以使用proteus中的框架逐步进入并查看效果。

此外,大多数由模拟错误引起的奇怪问题都可以在网上找到,只要你坚信在我之前一定有人遇到过这些问题~ ~
八、经验
通过本次课程设计任务,我加深了对汇编语言和各接口芯片用法的理解,并在实践中了解了各芯片的工作状态和用法。

我以前研究过8255和8253芯片的相关内容。

通过本课程的设计,通过设计和阅读,我终于对汇编程序结构、指令、调用等基础知识有了更深的理解和更深的理解。

在实践中,充分利用所学知识,结合实际情况,做出符合要求的设计。

在具体的调试过程中,我遇到了很多问题,通过查找各种数据解决了这些问题。

在此,我学习了proteus仿真和硬件调试中的一些常见问题及解决方法。

在软件设计中,我还学习了常见的逻辑错误及其解决方法。

能在实践中磨练自己的意志和动手操作能力,提高独立完成小系统设计任务的能力。

为今后大规模系统设计打下一定的基础知识和实际操作能力,并为自己积累了许多宝贵的经验和教训。

下面是对我在这个课程设计中的主要角色的简要介绍。

通过这一简短的课程设计,我不仅加深了对界面程序设计的理解,还进一步了解了界面各组成部分的工作原理,增强了我独立分析故障和
处理问题的能力。

八。

组件列表。

组件8255 a 8253 74 ls 138 741174 ls 32uln 2003 a led-红色
数量1 1 1 1 6 res 74 ls 273非步进电机8086 3 1 1 1 1
九.参考
[1]周鹤琴。

微机原理和接口技术。

合肥:中国科技大学出版社,2004.12。

[2]王淑英电气控制与可编程控制器应用:机械工业出版社,第4版[3]皇冠孙斌杨敏蒲川电路基金会华中科技大学出版社,第2版[4]模拟电路[5]数字电路[6]单片机
微机原理课程设计
主题:风机控制器设计(8)姓氏:# # #学号:2####### # #专业课:电气自动化讲师:皮达能刘军设计时间:2013年12月
内容
一、设计目标 (3)
二。

设计要求3
三。

总设计 (3)
四、硬件设计 (4)
V.软件设计 (6)
六.程序清单 (10)
七.遇到的问题及解决方法 (15)
八、经验 (16)
九.组件列表 (16)
X.参考 (17)
模拟家用风扇控制器的设计
一、设计目标
模拟家用风扇控制器的设计与制造。

二、设计要求
1.控制器面板由风速、类型、停止三个按钮和六个指示强、中、弱风速的指示灯组成,类型为睡眠、自然、正常。

2.电风扇处于静止状态时:所有指示灯不亮,只有按下“风速”键,风扇才会响应并进入初始工作状态;当风扇处于任何状态时,只需按停止键即可进入停止状态。

3、处于工作状态的有:
(1)初始状态为:风速-“弱”,类型-“正常”;
(2)按下“风速”键,其状态从“弱”→“中”→“强”→“弱”??往复循环变化,每按一次键变化一次;
(3)按下“类型”键,其状态从“正常”→“睡眠”→“自然”→“正常”??往复循环变化;
4.风速:弱、中、强风速对应电风扇的慢速到快速旋转。

5.风速类型的不同选择有:(1)正常电风扇连续运行;
(2)自然电风扇模拟自然风,即转动4秒,停止8秒;
(3)睡眠电风扇缓慢旋转产生微风,运行8秒,停止8秒;6.根据风速和类型的设置输出相应的控制信号。

三。

总设计
电风扇模拟自然风,即本课程的设计任务主要基于8086和各种接口核心。

该芯片结合汇编语言实现了家用风扇控制器的仿真。

我主要利用8086中央处理器结合汇编语言编写的软件,实现对各种信号的处理和转换,获得所需的控制信号,并利用接口芯片8255A实现信号的输出和接收。

在仿真中,各种控制信号通过开关输入,然后通过8255端口读取,8086通过软件对采集到的信号进行识别,并将其传递给相应的功能子程序,实现各种功能。

在各种功能的背后,通过8086驱动相应功能的硬件设备实现各种功能的切换。

对于具体的设计,我想用8255A接收开关信号,驱动风扇输出旋转信号,输出发光二极管灯的开/关信号,接收8253产生的控制信号。

8253主要用于实现各种风的控制信号,以获得自然风和睡眠风。

风扇控制停止后,当且仅当按下风速键时,控制器才能继续控制风扇的运行,实现控制器的循环控制。

硬件设计框图如图1所示。

8086中央处理器控制8253按下按键开/关信号,控制8255A驱动信号读取风扇(步进电机)
发光二极管图1硬件总体设计框图四。

硬件设计
?4.1硬件设计基本概要
根据设计要求和内容,利用可编程并行接口芯片8255A接收3个按键的状态(分别表示风速、类型和停止),以启动电风扇或设置相应的
工作状态。

这..
示例需要3个按钮,因此您可以使用3个按钮连接到8255端口。

这样,可以直接从8255端口读取密钥的状态,从而执行相应的操作。

要通过一个键控制两个以上的状态,可以使用键的数量来控制状态的数量。

例如,风速有三种状态(弱、中、强)。

一个键用于控制弱状态,两个键用于控制强状态,三个键用于控制强状态。

因此,一个键可以控制多分钟状态。

控制器的指示灯,我想用六个发光二极管灯来显示,分别显示六个不同风速、类型等的指示灯信号。

使用四相步进电机作为电风扇,可以通过改变其驱动电平的频率来改变其速度。

步进电机由四相四拍驱动,采用8255A低四位电脑端口。

风时间控制可以通过可编程计数器/定时器8253来实现。

可以从8253工作模式3中选择,这样,当中央处理器输入控制字时,输出会变高,写完计数值后计数器会立即自动对输入时钟CLK计数,当计数器减为1时,输出会变低,在模式2中8253可以不复位计数值继续工作,以保证计时的准确性。

?4.2 8255A设计
8255A的功率放大器工作在模式0的基本输入模式,作为控制信号的输入,并接收8253信号来控制步进电机的旋转和停止。

低四位在模式0的基本输入模式下工作,接收四个开关的开关信号,高四位在模式0的基本输出模式下工作,作为四相步进电机的四相电路输出电路,驱动步进电机旋转。

PB端口以模式0的基本输出模式工作,并
使用较低的六位来控制六个LED灯的开和关。

?4.3 8253设计
首先,将时钟除以通道0,以获得可以更好使用的时钟。

获得周期为4秒的方波,以准备自然和睡眠状态,从而产生8秒的高电平、4秒的低电平和16秒的方波。

通道2用于产生风类型的状态信号。

当自然风属于这种类型时,允许通道2在模式2下工作,以产生8秒的高水平和4秒的低水平。

使用高位时,驱动步进电机旋转,当低位返回继续检测,实现模拟自然风。

在睡眠模式下,通道2工作在模式3,产生一个16秒的方波,电平高时驱动步进电机旋转,电平低时返回继续检测,实现模拟睡眠风。

?4.4步进电机设计
步进电机可以接受数字控制信号(电脉冲信号),并将其转换成相应的信号。

角位移或线性位移,因此本身就是完成数模转换的执行元件。

此外,它可以进行开环位置控制,并输入脉冲信号以获得指定的位置增量。

本课程设计中使用的电机为四相步进电机,由单极DC电源供电。

只要步进电机的每相绕组按照适当的时间顺序通电,步进电机就可以逐步旋转。

步进电机的速度取决于脉冲频率、转子的齿数和拍数。

它的角速度与脉冲频率成正比,并在时间上与脉冲同步。

因此,在转子齿数和运行节拍数一定的情况下,只要控制脉冲频率,就可以获得所需的速度。

?4.5风机控制器系统硬件原理图
图2风机控制器系统硬件原理图
V.软件设计
硬件设计完成后,软件用汇编语言编写,通过8086中央处理器实现各种信号的输入输出和相关信号的处理,从而控制步进电机各种状态的转换控制。

主程序流程图如图3所示。

启动初始化8255A,8253通道1风速键按Y初始化风速:弱,类型:正常风机运行子模块风机控制子模块风速键按Y停止子模块N Y型键按N Y停止键按下类型控制子模块
图3:主程序流程图
注:此流程图对应程序中的主要功能和检查功能。

?5.1关键判断控制模块
这三个按钮连接到电脑端口的低三位,PC3接地。

如果按下风速键,开关信号为1H。

如果按下该类型,开关信号为2H。

如果按下停止键,开关信号为4H。

开关模块判断开关状态风速控制模块1?2?类型控制模块停止模块4?返回
?5.2风速模块切换过程
在风速切换中,在主函数中定义了一个变量FLAGL,将其初始化为0,并将其地址输入到SI中,在弱风和冲程模块中,将[SI]添加到1,在强风模块中,将其设置为0。

进入风速模块后,判断其大小;如果为零,切换到弱风模块;否则,进入笔画模块,依此类推。

风速模块判断[开关值点亮“弱”灯,[开关值增加一个,设定转速值,步进电机转动一次,按键判断控制模块0?弱风模块1?冲程模块2?强风模块
图4:风速切换模块
在弱风模块中,表示弱风的灯“弱”首先点亮,[信号]加1,通过改变驱动电平频率将DI设置为0FFFFH,调用运行功能使步进电机以弱速度转动,然后检测到开关信号,如果开关上没有新信号,弱风模块循环。

冲程模块类似于强风模块。

在中风的情况下,[SI]增加1,DI设置为0AFFH。

在强风的情况下,[设定为0,DI设定为05FFFH。

在类型控制中,切换过程类似于风速控制,这里不再描述。

将介绍以下课程
控制子模块。

?5.3类型控制子模块
类型控制子模块8253通道2初始化功率放大器端口是否高功率?步进电机旋转程序点亮灯,设置旋转速度值,并判断Y PA端口是否为步进电机旋转一周的高电平n键,以判断控制模块。

图5:类型控制子模块
进入类型控制子程序后,首先判断PA的PA0是否为高电平,即8253输出为
如果否为1,如果为高电平,则执行以打开灯,向变量添加一个或设置一个,并调用电机运行功能。

操作次数,然后检测此时的PA端口是否为高电平,如果是高电平,
循环上述操作,如果是低电平,则判断开关信号,开关没有新信号,返回执行型控制子模块。

因此,只有当功率放大器端口处于低电平时,即当电机在自然风或睡眠风中停止时,才检测到开关,按下开关是有效的。

正常风需要电机一直旋转,所以正常风模块不需要检测功率放大器端口,程序类似于风速旋转子模块。

?5.4停止控制模块
停止控制模块的按钮端口清零,灯完全关闭的电机停止子程序返回主程序的开始。

图6:停止控制模块
停止状态主要实现风机的暂时停止运行,只有按下风速键,风机才能继续运行。

此模块结束后,它将返回到启动状态,启动后,将重新分配已运行的风扇的所有状态,以确保它可以在再次运行后以初始状态运行。

六.程序清单
;8253端口地址
EQU·IOY1+00H * 4
EQU IOY1+01H * 4 EQU IOY1+02H * 4
EQU IOY1 8253+03H * 4
;8255端口地址
EQU IOY 0+00H * 4 IOB 8255 EQU IOY 0+01H * 4 IOC 8255 EQU IOY 0+02H * 4 IOCON 8255 EQU IOY 0+03H * 4
EQU 0C400H IOY1 EQU 0C440H
数据段标志数据库?弗拉格特数据库?标志数据库?邢蕾数据库0数据结束代码段主进程接近假设状态:代码,数据开始:MOV AX,数据MOV DX,AX
MOV国际,MOV国际,MOV国际,MOV国际,MOV国际,MOV 国际,移动国际,国际;8255初始化movdx,iocon 8255 moval,90houddx,al;8253通道0初始化线路8253: moval,00110111b movdx,iocon 8253 outdx,almoval,00hmovdx,io08253 outdx,almoval,04hmoutdx,al;判断风速键是否按下qd: movdx,ioc8255 in al,dx and al,0fhcmp al,1 je check _ rjmpqdcheck _ r:call check jmpqdmendp
在MOV DX附近进行检查,位置8255 IN AL,DX和AL,0FH CMP AL,1 JE速度_R JMP检查RET ENDP速度_R:呼叫速度JMP检查_R 类型_R:呼叫类型JMP检查_ R;风速控制子程序speedprocner pushaxcom:CMP BYTE ptr [si],0jel0cmpbyte ptr [si],1 JE L1化学机械抛光字节PTR[SI],2 JE L2 L0: MOV DX,IOB8255 MOV AL,01H OUT DX,AL;L0亮ll0: loopl0movbx,[si] addbx,1mov [si],bxrun _ 1: mov [di],0ffffhcallrun电机弱旋转检查_ 0: movdx,ioc8255 in al,dx和al,0fhcmp al,1jecomcmpal,2jestype _ rcmp al,4jeztjmprun _ 1zt: jmpting
L1: MOV DX,IOB8255 MOV,02H李良·奥特克斯,al ll1: loop l1movbx,[si] addbx,1mov [si],bxrun _ 2: mov [di],0afffh callrun电机转移检查_ 1: movdx,ioc8255 in al,dx and al,0fhcmp al,1jecomcmpal,2jestype _ rcmp al,4 JE ZT JMP RUN_2 L2: MOV DX,
IOB8255 MOV AL,04HL2布莱特奥特克斯,全部2:loop ll 2 mobv bl,0mov [di],blrun _ 3: mov [di],05fffhlrun电机强制旋转检查_ 2: movdx,ioc8255 in al,dx and al,0fhcmp al,1jezcmpal,2jezsccmpal,4 JE ZT JMP RUN _ 3 ZC:JMP COM ZS:JMP STYPE _ R POP AX RET SPEED ENDP STYPE PROC NEAR;类型控制子程序pushaxpar: cmpflagd,0jel3cmpflagd,1jel4cmpflagd,2 JE ZF ZF: JMP L5 L3: MOV 邢蕾,0 MOV DX,IOB8255 MOV AL,08H OUT DX,AL;L3liang ll3: loopl3moval,flaggadal,1movflagd,阿伦_ z: cmpbyte ptr [si],0jeyrz 正常风yrz: mov [di],0ffffhcmp字节ptr [si],1 jeyzz:MOV[DI],0affhcmp字节ptr [si],2 JE YQZ YQZ: MOV [DI],05FFFH调用运行检查_3: MOV DX,IOC8255 IN AL,DX AND AL,0FH CMP AL,2 JE L4 CMP AL,1 JE Z1 CMP AL,4 JE ZB JMP RUN _ Z1:JMP速度_R ZB: JMP ZT L4: MOVL4明亮输出DX,铝
LL4:环路LL4 MOV铝,标志添加铝,1 MOV标志,铝MOV铝,10110111B睡眠通道2初始化movdx、iocon 8253 outdx、almoval、04hmovdx、io28253 outdx、almoval、00hmoutdx。

运行编号:MOV DX、10a 8255 IN AL、DX和AL、1 CMP AL、1 JE RUN_R JMP CHECK_N UN_R: MOV [DI],0AFFFH调用运行MOV DX、10a 8255 IN AL、DX CMP AL、1 JE RUN _ R JMP CHECK _ N CHECK _ N:MOV DX、IOC8255检查al、dxand al、0fhcmp al、2jel5cmpal、1jez4cmpal、4 JE ZU JMP RUN _ S ZU:JMP ZT Z4:JMP SPEED _ R L5:MOV DX、IOB8255中的新债券。

自然风MOV,20HL5 bright outdx,all5:
loopll5moval,flagmoval,0movflagd,almoval,10110110101b。

自然通道2初始化movdx、iocon 8253 outdx、almov al、02hmov dx、io28253 outdx、almov al、00hmoutdx、al RUN _ 1:MOV dx、IOA8255 IN AL、DX和AL、1 CMP AL、1 JE RUN _ R2 JMP CHECK _ N2 RUN _ R2:MOV[DI)、0AFFFH调用RUN MOV DX、IOA8255 IN AL、DX CMP AL、1 JE RUN_R2 JMP CHECK_N2 CHECK检查al、dxand al、0fhcmp al、2jez3cmpal、1jez4cmpal、4中的新键
JE·ZD·JMP·朗日兹3:JMP·L3·ZD:JMP·ZS·波普艺术学院ENDP;电机旋转程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序运行程序。

判断是否按下了停止键检查:movdx、ioc8255 in al、dx和al、0fhcmp al、4jeting: movdx、iob8255 movax、0outdx、axcallruntjmpstart
运行程序附近;电机停止子程序pushcx pushdimovdx,ioc8255moval,00houddx,al calldelaymoveal,0houddx,AL CALL DELAY MOV AL,00H OUT DX,AL CALL DELAY MOV AL,0H OUT DX,Al calldelay jmpllpdlayp: movcx,[di]dalap:loopdalapretlp:popdi pop CX retrunterends endstart 7,遇到的问题和解决方法
在本课程设计中,遇到了各种各样的问题。

因为先前的基础太薄弱,起初
在设计和编写程序的两天里,我经常盯着屏幕,没有办法解决问题。

我经常花三四个小时在一个小问题上。

后来,我逐渐学会了一些解决
问题的想法和方法,并且步伐逐渐加快。

首先,这应该是步进电机的驱动问题。

起初,我根本不了解马达的驱动原理。

我看到了。

许多相关数据只知道一些理论性的东西,根本不知道如何使用它们。

大量数据的驱动电路也由大量与非门组成。

后来,我在proteus的SAMPLES中找到了一个简单的驱动电路,对它进行了研究,最后通过比较proteus和步进电机芯片在互联网上的数据,找到了如何使用它的方法。

因此,附在proteus上的参考资料实际上是非常实用的,他们可以通过很好地利用它们而不是在其他地方漫无目的地搜索它们来学习更多。

第二,逻辑问题。

在编写类型控制子模块时,程序是按照流程图编写的。

里面的子模块已经过测试,没有问题。

流程图的逻辑也应该没问题。

然而,每次电机在睡眠风状态下运行,它将旋转8秒钟,并在停止2秒钟后自动切换到自然风模块。

我考虑了很多可能性,比如开关问题,LED灯问题等等。

当我按照程序一个一个地写流程图时,我终于发现可能是RET最后没有工作,导致程序执行后无法返回检查,直接执行下一条指令。

还有写作的开始,写一盏灯,直接设置一个,然后什么也看不见
效果非常奇怪。

后来,我想到了中央处理器运行非常快的想法。

也许当它被点亮时,肉眼是看不到的。

需要推迟一段时间。

同样,按钮开关也需要延迟检测。

还有许多新手会遇到的问题。

当我第一次写它的时候,我在开头写了一个。

程序的大部分,然后什么结果都拿不出来,在调试的时候,没有办法调好,在学生的建议后,开始写程序,从一个小函数开始,先写一个灯,然后两个,然后循环,再添加其他函数。

像这样写作会给你成就感,让你坚持下去,否则当你遇到一个你无法开始的问题时,你很容易放弃。

因此,不管程序有多大,都必须有一个大的框架,然后一个接一个地实现小的功能。

当我以后遇到错误时,我通常会通过程序找出是否有任何可以看到的错误,然后程序开始检测,通过添加发光二极管来检测程序已经运行到哪一行。

相关文档
最新文档