![[工学]微机原理之风扇报告.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/18/d14f01e4-fb81-4e37-806b-90b6b7514a29/d14f01e4-fb81-4e37-806b-90b6b7514a291.gif)
![[工学]微机原理之风扇报告.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/18/d14f01e4-fb81-4e37-806b-90b6b7514a29/d14f01e4-fb81-4e37-806b-90b6b7514a292.gif)
![[工学]微机原理之风扇报告.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/18/d14f01e4-fb81-4e37-806b-90b6b7514a29/d14f01e4-fb81-4e37-806b-90b6b7514a293.gif)
![[工学]微机原理之风扇报告.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/18/d14f01e4-fb81-4e37-806b-90b6b7514a29/d14f01e4-fb81-4e37-806b-90b6b7514a294.gif)
![[工学]微机原理之风扇报告.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/18/d14f01e4-fb81-4e37-806b-90b6b7514a29/d14f01e4-fb81-4e37-806b-90b6b7514a295.gif)
已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章微机应用系统课程设计的目的意义1.1 课程在教学计划中的地位和作用微机应用系统设计与综合实验课程是测控技术专业本科生必修的一门技术基础课程。本课程设计任务是继微型计算机原理与接口技术这门课程后的一个实践环节。是在学生基本学完该课程时的一次集中式的综合设计,它对于学生深刻理解微机原理和接口技术起着重要的作用。在微型计算机原理与接口技术这门课程联系较多的是数字逻辑与计数、译码、信号缓冲、锁存、总线驱动扩展等内容,且着重应用微机系统的组成、时序、中断、接口技术与汇编语言程序设计。而通过该课程设计的学习使学生对微机系统有一个全面的了解、掌握常规芯片的使用方法、掌握简单微型计算机应用系统软硬的设计方法。1.2 设计任务的目的与意义充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。通过课程设计进一步锻炼同学们在微型计算机应用方面的实际工作能力。计算机科学在应用上得到飞速发展,因此,学习这方面的知识必须紧密联系实际:掌握这方面的知识更要强调解决实际问题的能力。同学们要着重学会面对一个实际问题,如何去自己收集资料,如何自己去学习新的知识,如何自己去制定解决问题的方案并通过实践不断地去分析和解决前进道路上的一切问题,最终到达胜利的彼岸。本设计的目的在于全面消化已学的相关课程内容。深刻理解微机原理与接口技术课程的内涵。为此,主要应完成的任务是:从硬件的角度掌握微机的组成,接口部件的结构和彼此之间的联系,从软件的角度理解和应用微机系统的运行机制。第二章家用风扇控制器的设计任务2.1 家用风扇控制器设计要求1.设计内容设计一个家用风扇控制器。控制器面板为:按钮三个,分别为风速、类型和停止,led指示灯六个,指示风速强、中、弱,类型为睡眠、自然和正常。电扇处于停转状态时,所有指示灯不亮,只有按下“风速”键时,才会响应,进入起始工作状态;电扇在任何状态,只要按停止键,则进入停转状态。电扇处于工作状态时,有:(1) 初始状态为:风速-“弱”,类型-“正常”;(2) 按“风速”键,其状态由“弱”“中”“强” “弱” 往复循环改变,每按一下按键改变一次;(3) 按“类型”键,其状态由“正常”“睡眠”“自然”“正常” 往复循环改变;风扇风速的弱、中、强对应于电扇的转动由慢到快。风扇类型的不同选择,分别为:(1) 正常电扇连续运转;(2) 自然电扇模拟自然风,即转4s,停8s;(3) 睡眠电扇慢转,产生轻柔的微风,运转 8s,停转8s;按照风速与类型的设置输出相应的控制信号。2.设计要求设计出电路原理图,说明工作原理,编写程序及程序流程图。并能在实验平台上进行运行模拟,能实现任务的功能要求的。2.2 课题任务的认识本次课程设计任务主要模拟家用风扇的各种功能,设计一种控制器能实现对各种功能的控制,在风扇任意时刻运行时都对其实现各种功能的切换,充分体现其的可控制性。在基本的弱电环境下的各种芯片实现对强电的控制的一种典型实例。利用汇编语言与硬件结合,在各种基本的接口芯片实时通信,接收对应的按键信号,再基于硬件的基础用汇编语言实现各种逻辑关系转换而输出相应的控制信号从而实现各种功能的控制与转换。2.3 总体设计思想本次课程设计任务主要基于8086以及各种接口芯片结合汇编语言实现对家用风扇的控制器的模拟。我主要运用8086cpu结合汇编语言编写的软件来实现各种信号的处理与变换,以得到想要的控制信号,并用接口芯片8255a实现信号的输出与接收。在模拟中通过开关来实现各种控制信号的输入,再通过8255的端口进行读取,再由8086通过软件的对采入的信号进行辨别进而转入到相应的功能子程序中以实现各种功能。在各种功能的背后,通过8086驱动相应功能的硬件设备实现各种功能的切换。具体设计设计,我想采用8255a来接收开关信号,驱动风扇的转动信号输出,并接收8253产生的控制信号。8253主要来实现各种风种的控制信号,以得到自然、睡眠的类型风。硬件设计框图如图2-1所示。2.4 功能扩展此任务控制器已基本实现所有风扇控制功能,而现在几乎所有的风扇都能实现定时功能,故可以扩展定时功能在控制器的设计中以达到全面的控制。在风扇控制的停止后,后续状态任务上未作要求,我在对其在设计上,能在停止后处在等待状态,当且仅当有风速键按下后,控制器可恢复继续控制风扇的运行,实现控制器的循环控制。 8086cpu82538255a风扇驱动信号读取控制控制信号按键开关图 2-1 硬件设计框图第三章 预备知识3.1 风扇速度控制方法脉宽调制法(pwm) 脉冲宽度调制法(pwm)是将风扇电源的开关频率设为固定值,通过改变其占空比来调节风扇速度的方法。占空比越大,风扇速度越快。这种控制方式的关键在于选择合适的开关频率,如果频率太低,风扇速度将会随pwm周期而振荡。相反,如果频率过高,风扇内部的换向整流电路会断开风扇加速/减速电路的电源而导致风扇停转。一般的频率范围是20hz160hz。另外,pwm的上升和下降时间要足够慢,以保证风扇的长期稳定。pwm控制方式的优点是驱动电路简单,有很好的启动特性,晶体管热量耗散小等。缺点是增加了风扇的应力,不便使用速度报警传感器,而速度报警传感器与电机使用同一电源供电,如电机电源以20hz160hz频率接通或断开,则传感器也会随之关断或开启,从而失去应有的检测功能。在pwm控制方法中,风扇的电压为额定值(例如12v风扇中的12v电源)或零电压,但由于风扇没有满负荷运转,因而它的反向电动势就会减少,这将导致pwm导通期间的电流可能会大于正常值。虽然风扇的设计使共能够处理较大的电池,但在风扇启动阶段,电流将每秒增加30倍,这将对风扇的可靠性产生很大影响。尽管如此,pwm仍然是低成本应用的理想选择。3.2 步进电机的控制原理1.步进电机的速度控制及运动规划步进电机区别于其他控制用途电机的最大特点是,它可接受数字控制信号(电脉冲信号)并转化成与之相对应的角位移或直线位移,因而本身就是一个完成数字模拟转化的执行元件。而且它能进行开环位置控制,输入一个脉冲信号就得到一个规定的位置增量。这样的增量位置控制系统与传统的直流伺服系统相比,其成本明显降低,几乎不必进行系统调整。因此,步进电机广泛应用于数控机床、机器人、遥控、航天等领域,特别是微型计算机和微电子技术的发展,使步进电机获得更为广泛的应用。2. 步进电机的工作原理该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图3-1是该四相反应式步进电机工作原理示意图。图 3-1步进电机开始时,开关sb接通电源,sa、sc、sd断开,b相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和c、d相绕组磁极产生错齿,2、5号齿就和d、a相绕组磁极产生错齿。当开关sc接通电源,sb、sa、sd断开时,由于c相绕组的磁力线和1、4号齿 之间磁力线的作用,使转子转动,1、4号齿和c相绕组的磁极对齐。而0、3号齿和a、b相绕组产生错齿,2、5号齿就和a、d相绕组磁极产生错齿。依次类 推,a、b、c、d四相绕组轮流供电,则转子会沿着a、b、c、d方向转动。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图3-2中a、b、c所示。a. 单四拍 b. 双四拍 c八拍图3-2 步进电机工作时序波形图3.步进电机的速度特性步进电机的转速取决于脉冲频率、转子齿数和拍数。其角速度与脉冲频率成正比,而且在时间上与脉冲同步。因而在转子齿数和运行拍数一定的情况下,只要控制脉冲频率即可获得所需速度。由于步进电机是借助它的同步转矩而启动的,为了不发生失步,启动频率是不高的。特别是随着功率的增加,转子直径增大,惯量增大,启动频率和最高运行频率可能相差10倍之多。为了充分发挥电机的快速性能,通常使电机在低于启动频率下启动,然后逐步增加脉冲频率直到所希望的速度,所选择的变化速率要保证电机不发生失步,并尽量缩短启动加速时间。为了保证电机的定位精度,在停止以前必须使电机从最高速度逐步减小脉冲率降到能够停止的速度(等于或稍大于启动速度)。因此,步进电机拖动负载高速移动一定距离并精确定位时,一般来说都应包括“启动加速高速运行(匀速)减速停止”五个阶段,速度特性通常为梯形,如果移动的距离很短则为三角形速度特性,如图3-3所示。图3-3 步进电机的速度曲线3.3 所用到的芯片及其各自功能说明这个任务主要是实现开关信号的处理以及对相应功能信号的输出控制,软件编程稍微占主要的设计部分,故而芯片用的较少。芯片合部分硬件设备如下表3-1所示。表 3-1 芯片和部分硬件设备列表型号或名称数量intel 80861片8255a1片82531片步进电机1个开关4个步进电机驱动电路1套3.3.1 8086功能简介1. 概述intel 8086是一个由intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。8086 cpu有20条地址线,可直接寻址1mb的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。为了便于对存储器进行存取操作,每一个存储单元都有一个惟一的地址与之对应,其地址范围用十进制表示为01048575,用十六进制表示为00000hfffffh。intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64k 8 位元的输出输入(或32k 16 位单元),以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个。 intel 8086有四个内存区段(segment) 寄存器,可以从索引寄存器来设定。区段寄存器可以让 cpu 利用特殊的方式存取1 mb内存。8086 把段地址左移 4 位然后把它加上偏移地址。大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。尽管这样对组合语言而言大部分被接受(也甚至有用),可以完全地控制分段,使在编程中使用指针 (如c 编程语言) 变得困难。它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。更坏的是,这种方式产生要让内存扩充到大于 1 mb 的困难。而 8086 的寻址方式改变让内存扩充较有效率。 8086处理器的时钟频率介于4.77mhz(在原先的ibm pc)和10 mhz之间。 8086 没有包含浮点指令部分(fpu),但是可以通过外接数学辅助处理器来增强浮点计算能力。8086cpu有一组强有力的指令系统,内部有硬件乘除指令及串处理指令,可对多种数据类型进行处理。8086cpu与8位cpu8080向上兼容。处理能力比8080高十倍以上,而相同任务程序代码长度可缩短20%。8086cpu可与8087协处理器及8089输入/输出处理器构成多机系统,以提高数据处理及输入/输出能力。2. cpu工作于最小模式中部分引脚信号定义(1) ad15 ad0(address data bus):地址/数据总线,双向,三态。 这是一组采用分时的方法传送地址或数据的复用引脚。根据不同时钟周期的要求,决定当前是传送要访问的存储单元或i/o端口的低16位地址,还是传送16位数据,或是处于高阻状态。(2) (read)读选通信号,三态,输出,低电平有效信号低电平有效时,表示cpu正在进行读存储器或读i/o端口的操作(3) (write)写选通信号,三态,输出,低电平有效信号有效时,表明cpu正在执行写总线周期,同时由信号决定是对存储器还是对i/o端口执行写操作(4) (memory/input and output)存储器或i/o端口控制信号,三态,输出信号为高电平时,表示cpu正在访问存储器,为低电平时,表示cpu正在访问i/o端口。(5) intr(interrupt request)可屏蔽中断请求信号,输入,电平触发或边沿触发,高电平有效cpu在每条指令周期的最后一个时钟周期检测此信号,一旦检测到此信号有效,并且中断允许标志位if=1时,cpu在当前指令执行完后,转入中断处理程序。用sti指令,可使中断允许信号标志位if置“1”,用cli指令可使if置“0”,从而可实现中断屏蔽。3. 8086指令系统按功能分类,8086的指令共有六大类,它们是:数据传送指令、算术运算指令、逻辑运算和移位指令、字符串处理指令、控制转移指令以及处理器控制指令。常用指令简介:(1) mov 传送指令(move)指令格式: mov目的,源指令功能:将源操作数(一个字或一个字节)传送到目的操作数(2) in输入指令(input)指令格式: in al,端口地址或 in ax,端口地址 in al,dx ;端口地址存放在dx寄存器中或 in al,dx指令功能:输入指令用来从指定的外设寄存器取信息送入累加器。(3) out输出指令(output)指令格式: out al,端口地址或 out ax,端口地址 out al,dx ;端口地址存放在dx寄存器中或 out al,dx指令功能:输出指令用来把累加器的内容送往指定的外设存储器当端口地址大于ffh时,必须使用第二种寻址方式,即先将端口号送入dx寄存器,再执行操作。(4) cmp比较指令(compare)指令格式:cmp目的,源指令功能:两个操作数相减,不产生运算结果,仅影响标志,接着可用条件跳转指令决定程序去向(5)jmp无条件转移指令指令格式:jmp目的指令功能:使程序无条件的转移到指定的地址去执行3.3.2 8255a功能简介 1. 8255特性一个并行输入/输出的lsi芯片,多功能的i/o器件,可作为cpu总线与外围的接口。具有24个可编程设置的i/o口,即使3组8位的i/o口为pa口,pb口和pc口。它们又可分为两组12位的i/o口,a组包括a口及c口(高4位,pc4pc7),b组包括b口及c口(低4位,pc0pc3)。a组可设置为基本的i/o口,闪控(strobe)的i/o闪控式,双向i/o3种模式;b组只能设置为基本i/o或闪控式i/o两种模式,而这些操作模式完全由控制寄存器的控制字决定。a0,a1为地址选择线,用来选择8255的pa口、pb口、pc口和控制寄存器。当a0=0,a1=0时,pa口被选择;当a0=0,a1=1时,pb口被选择;当a0=1,a1=0时,pc口被选择;当a0=1,a1=1时,控制寄存器被选择。2. 8255a的控制字8255a 有两类控制字:一类控制字用于定义个端口的工作方式,称为方式选择控制字;另一类控制子用于c端口的任意一位进行置位或复位操作,称为置位复位控制字。(1) 方式选择控制字8255a具有三种基本工作方式,在对8255a进行初始化编程时,应向控制字寄存器写入方式悬着控制字,用来规定8255a各端口的工作方式。方式0基本输入输出方式方式1选通输入输出方式方式2双向总线i/o方式 a口:可工作于方式0,1,2任何一种b口:只能工作于方式0,1(不能为方式2)c口:分成双4位,可基本i/o,还可输出a,b口控制信号,输入a,b的状态。 方式选择控制字的格式如图3-4所示。d7 d6 d5 d4 d3 d2 d1 d0c口低四位i/o1 输入0 输出b口i/o1 输入0 输出c口高四位i/o1 输入0 输出a口i/o1 输入0 输出b口方式0 方式01 方式1a口方式0 方式01 方式1d7=1标志位图 3-4 8255a方式选择控制字的格式(2) 置位复位控制字c口的数位常用来产生控制信号(如应答式数据传送中断请求信号)或其他应答信号,可通过置位复位控制字来使端口c的任一位引脚的输出单独置“1”或置“0”。置位复位控制字的格式如图3-5所示。d7 d6 d5 d4 d3 d2 d1 d0位选择000 选中pc0001 选中pc1.111 选中pc7d7=0标志位任意值1 置位0 复位图 3-5 8255a置位复位控制字的格式3.3.3 8253功能简介1. 基本原理概述 8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端clk,一个为门控信号输入端gate,另一个为输出端out。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器cr、一个计数执行部件ce和一个输出锁存器ol。执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(bcd码)计数。采用二进制计数时,最大计数值是ffffh, 采用bcd码计数时。 最大计数值是9999。与此计数器相对应, 每个通道内设有一个16位计数值锁存器。必要时可用来锁存计数值。2. 8253的控制字8253有六种工作方式简介如表3-2所示。表 3-2 8253方式简介方式0计数结束中断方式方式1可编程单稳态输出方式方式2比率发生器(分频器)方式3方波发生器(输出对称方波)方式4软件触发选通方式5硬件触发选通每个通道都可独立进行这六种工作方式互不影响,用8253时需对所用8253的通道进行初始化编程以确定气的工作方式。初始化编程通过控制字来确定其的工作方式。控制字格式如图3-6所示。sc1 sc0 rl1 rl0 m2 m1 m0 bcdd7 d6 d3 d4 d3 d2 d1 d0通道选择:读/写操作:工作方式选择:00 通道001 通道110 通道211 无效00 计数器锁存,供cpu读01 只读/写计数器低字节10 只读/写计数器高字节11 先读/写计数器低字节, 后读/写高字节000 方式0001 方式1*10 方式2*11 方式3100 方式4101 方式51 bcd计数0 2进制计数图 3-6 8253控制字格式第四章硬件设计4.1 硬件设计基本概要根据设计要求和内容,用可编程并行接口芯片8255a pc口低四位接收4个按键(分别表示风速、风种、定时、停止)的状态以启动电扇或设置相应的工作状态。这样就需要4个按键,因此可以用实验箱上的某一列的4个按键,可以将此列的列选择线直接接为低电平,4个行输入线接到8255的口。这样可以直接从8255的口读取按键的状态,从而执行相应的操作。要通过一个按键来控制2个以上的状态,可以通过按键的次数来控制第几种状态,比如风速有三种状态(弱、中、强),可以用按键1次控制弱,按键2次控制中,按键3次控制强,这样就可以实现一键控制多钟状态了。控制器的指示灯,利用3个七段字符显示器进行显示,分别显示风速、类型、定时三个指示信号。显示模块代码状态表示如下表4-1所示。表4-1 显示模块代码状态表示按键状态相应七段字符显示器显示的代码风速弱1中2强3类型正常1自然2睡眠3定时定时8秒1定时16秒2定时32秒3用实验箱上的四相步进电动机作为电风扇,其转速可用pwm控制方法,通过改变其驱动电平的频率来改变步进电机的速度。利用8255a的pb口对步进电机进行四相四拍驱动。风种及定时的时间控制可由可编程计数器/定时器 8253来实现。可选用由8253工作方式3,在这种方式下,当cpu输入控制字后,输出将为高,在写入计数值后计数器将立即自动对输入时钟clk计数,计数器减为1时,输出将变低,方式2时8253不可用重新设置计数值就能连续工作,保证了定时的精确。4.2 8255a设计8255a的pc口的低四位工作在方式0的基本输出方式,作为8253的门控信号来控制8253是否需要计数,pc0控制8253通道0的门控信号,pc1控制8253通道1的门控信号, pc2控制8253通道2的门控信号。高四位工作在方式0的基本输入方式用来接收四个开关的开关信号,pb口作为四相步进电机的四相线路输出电路用来驱动步进电机的转动,工作在方式0的基本输出方式。8255a的pa口工作在方式0的基本输入方式作为控制信号的输入,接收8253的信号来控制步进电机的转动与停止。4.3 8253设计首先利用通道0对时钟进行分频,已获得可较好利用的时钟,得到周期为八秒的方波为后面能自然和睡眠的状态产生四秒高电平八秒低电平以及周期为十六秒的方波做准备。通道1用来产生类型风的状态信号,在自然风类型时,让其工作在方式2产生四秒高电平八秒低电平,让8255a的pa口pa0接收,当高电平时驱动步进电机转动,低电平则停止以实现自然风的模拟;在睡眠的类型时,通道1工作在方式3产生周期为十六秒的方波,让8255a的pa口pa0接收,当高电平时驱动步进电机转动,低电平则停止以实现睡眠风的模拟。通道2用来实现定时的功能,在定时的功能时初始化其工作在方式4,在计数的时候为高电平,当计数完后,输出一负脉冲结束定时停止风扇转动,让8255a的pa口pa1接收,当高电平时驱动步进电机转动,低电平则停止,可通过改变其的计数初值来实现不同时间长度的定时。4.4 风扇控制器系统硬件原理图如图4-1所示。图4-1 风扇控制器系统硬件原理图第五章 软件设计 硬件的设计完成后,运用汇编语言编写软件部分通过8086cpu实现各种信号的输入/输出以及相关信号的处理,从而控制步进电机的各种转态的转换控制。软件设计主体流程图如图5-1所示。开始初始化8255a ,8253是否有风速键按下n初始化风速-“弱”,类型-“正常”风扇运行控制模块是否有键按下n是风速键按下风速控制模块序是类型键按下类型控制模块序是定时键按下定时控制模块序yyyyn是停止键按下停止控制模块序ynnny图5-1风扇控制器软件总流程图5.1 风扇运行控制模块 此模块主要控制步进电机的转动以及住转速,亦是整个控制器的主控部分。实现风扇各种功能的“cpu”。其中主要部分是驱动电机转动的子程序,每次依次对四相电路驱动一次,由于8086处理速度非常快在肉眼看不来电机有微停抖动的情况,步进电机就是在连续的转动。对步进电机转动需要判断两个控制信号,一个是类型信号pa0另一个是定时信号pa1,当两者都是高电平时才去驱动步进电机转动。风扇运行控制模块流程图如图5-2所示:pa0是高电平pa1是高电平驱动步进电机显示当前状态nnyy停止控制模块风扇运行模块子程序子程序返回图5-2 风扇运行控制模块流程图5.2 按键判断控制模块常用风扇开关是弹簧式,但平台上是单刀单掷的开关,若用常用方法判断其是高电平(或低电平)每次拨完开关后需对开关拨回原来的状态下次才能正常拨动开关,相当不方便。我采用另一种判断方法,每次有按键按下后后保存他们的开关状态当下次有开关状态变化时就可以知道有按键按下进行按键判断。首先判断上一次的开关状态与此次检测的状态是否相同,不同则分别判断四个开关状态是否变化,若有就转入相应的子模块中。 按键判断控制模块流程图如图5-3所示。开关状态是否变化保存此次开关状态风速开关状态变化停止开关状态变化定时开关状态变化类型开关状态变化nnnnny风速控制模块yyy类型控制模块定时控制模块停止控制模块开关模块子程序y子程序返回图 5-3 按键控制模流程图5.3 风速控制模块 此次任务中家用风扇我用了步进电机进行模拟,步进电机的速度控制运用pwm方法,通过改变频率来实现速度控制。在软件编程中,通过8255a的pb口输出驱动步进电机,通过改变单拍输出的延时时间来改变速度,延时越短速度越快。在设计中,置一数据buf1单元保存延时时间,不同的速度选择时,置不同数据来改变延时的长短从而实现速度的控制。另置一数据单元buf2保存当前风速状态,buf2在1、2、3之间循环,分别代表弱、中、强并作为状态数据显示。风速控制模块流程图如图5-4所示。buf2为弱风状态buf2加1buf2为中速状态buf2为强风状态buf1置弱风延时时间数据buf1置中风延时时间数据buf1置强风延时时间数据 buf2清零yyynnn风速控制模块子程序子程序返回图5-4风速控制模块流程图5.4 类型控制模块类型的控制主要运用8253来产生各种状态波形信号,通过检测信号的高低电平来控制步进电机的运转。此模块主要来初始化8253通道1的工作状态。在数据段中置一数据单元buf3来存储类型的状态数据,buf3在1、2、3之间循环分别代表类型中的正常、自然以及睡眠三种类型并作为状态数据显示。类型控制模块流程图如图5-5所示。buf3为正常状态buf3加1buf3为自然状态buf3为睡眠状态pc0、pc1、pc2输出0 ,8253所有通道门控置0pc0、pc1输出1通道2初始化工作在方式2pc0、pc1输出1通道2初始化工作在方式3 buf3清零yyynnn类型控制模块子程序子程序返回图5-5类型控制模块流程图5.5 定时控制模块定时也是通过8253产生控制信号来控制,通过8253的通道2工作在方式4实现定时,在定时完后会在风扇运行控制模块中转到停止模块中。在数据段中置一数据单元buf4来存储定时类型的状态数据,buf4在1、2、3之间循环分别代表类型中的8秒、16秒以及32秒三种类型并作为状态数据显示。定时控制模块流程图如图5-6所示。buf4为8s状态buf4加1buf4为16s状态buf4为32s状态pc5输出1 ,初始化通道38s的计数初值pc5输出1 ,初始化通道316s的计数初值pc5输出1 ,初始化通道332s的计数初值buf4清零yyynnn定时控制模块子程序子程序返回图5-6定时控制模块流程图5.6 停止控制模块停止状态主要实现风扇暂时性的停止运行,在某个键按下后又能继续运转。按要求只有在风速键按下才能继续运行。此模块主要对已运行的风扇停止后所有状态进行清零,以保证再次运行后能按初始状态运行。停止模块流程图如图5-7所示。buf1、buf2、buf3、buf4清零pc0、pc1、pc2输出为08253所有通道门控清零停止模块子程序子程序返回图5-7停止控制模块流程图5.7 源程序及说明 课程设计的运行是在dvcc实验平台上实现,由于dvcc试验平台的部分限制,如8253只有两个通道,8255只有b口和c口,故在实际设计运行的时候对原方案做了微小的改动。在定时功能上只有正常类型风的定时,并作为一单独风扇控制模块。类型模块做为另一单独风扇运行控制模块。说明:ds:077ah存储延时时间控制步进电机速度data0存储当前状态显示数据data存储当前状态类型数据源程序:35codes segment assume cs:codes;8253端口地址iocon8253 equ 43h io08253 equ 40h 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,10000011b mov dx,iocon8255 out dx,al;按键状态数据 mov word ptr ds:077ah,09ffh;控制器启动程序;判断是否是风速按键按下qd: mov dx,ioc8255 in al,dx cmp al,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 bl,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 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:data1,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_go: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:data2,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: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 jmp 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,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,00110111b mov dx,iocon8253 out dx,al mov al,00 mov dx,io08253 out dx,al mov al,10 out dx,alret;自然风通道2初始化format8253_natural: mov al,10110111b 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,10110111b mov dx,iocon8253 out dx,al mov al,00 mov dx,io28253 out dx,al mov al,20 out dx,alret;8秒定时通道2初始化format8253_time1: mov al,10110001b 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,101100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《第02节 热力学第一定律》教学设计
- 2025年金融市场与投资理财知识考试题及答案
- 2025年经济学原理与应用实例知识试题及答案
- 2025年境外投资顾问职业考试试卷及答案
- 2019年全国高中数学联赛B卷加试解答
- 商场专厅拆除合同协议
- 正规旅游出境合同协议
- 微水泥合同协议
- 商场广告协议书范本
- 商品经销合同补充协议
- (高清版)DB12∕T 934-2020 公路工程资料管理技术规程
- 面部筋膜培训课件
- ISO17025(2017中文清晰版本)
- 《Python与数据分析应用》课件-第10章 数据分析工具Pandas
- 春季如何预防过敏
- 人教版高中英语选择性必修二单词表
- GB/T 24091-2024适应气候变化脆弱性、影响和风险评估指南
- 中国肿瘤相关贫血诊治专家共识2023版解读课件
- 湖北武汉市2025届高三第一次调研测试数学试卷含解析
- 科研项目保密协议承诺书
- 军工项目招投标操作手册
评论
0/150
提交评论