《微机原理课程设计》 简易全自动洗衣机设计

更新时间:2023-08-30 19:34:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

《微机原理课程设计》

姓名:学号: __ 班级: 专业: 电气工程及其自动化 学院: 电气与信息工程学院

江苏科技大学

2013年9月

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

目录

一、课程设计内容 ................................................ 1 二、系统功能要求 ................................................ 1

2.1 基本功能要求............................................. 1 2.2 附件功能要求............................................. 1 三、系统方案论证 ................................................ 1 四、系统硬件设计 ................................................ 2

4.1 系统硬件原理............................................. 2 4.2 功能模块设计............................................. 6 4.3 遇到问题及解决措施....................................... 7 五、系统软件设计 ................................................ 8

5.1 总体设计思想............................................. 8 5.2 功能模块设计........................................... 10 5.3 遇到问题及解决措施...................................... 11 六、总结 ....................................................... 11 七、附录 ....................................................... 13

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

简易全自动洗衣机设计

一、课程设计内容

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时; (2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器; (3)利用8259A芯片,设置按键或开关中断控制功能;

(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。

二、系统功能要求

2.1 基本功能要求

(1)能够实现洗衣机换挡功能,比如设置“1挡键”、“2挡键”等不同挡位; (2)能够实现电机的正转功能;比如设置电机正转3圈,反转3圈,循环工作; (3)能够实现洗衣机按键控制,比如设置“启动键”、“暂停键”或“停止键” (4)能够实现按键或开关控制洗衣机的暂停,比如按下“暂停键”,正在旋转的 电机停止工作,再按一下“启动键”,洗衣机又继续工作;

(5)能够实现洗涤、甩干连续自动功能,甩干后,洗衣机会通过蜂鸣器发出报 警声音; 2.2 附件功能要求

(1)能够实现洗衣机单独甩干功能,此时电机旋转速度很快;

(2)能够实现洗衣机进水、排水或者洗涤、漂洗、甩干等不同功能使用不同颜 色的指示灯;

(3)能够实现洗涤、漂洗、甩干全过程自动化;

(4)能够实现洗衣机甩干后,发出优美的音乐,音乐一直响直到人为关掉或者 音乐响一定时间后自动关闭。 (5)自己设计的其他有特色的功能。

三、系统方案论证

3.1 方案一

输入设备主要有启动按钮、暂停按钮、档位选择、排水按钮、及脱水按钮。输出设备主要有电源指示灯、数码管、步进电机、蜂鸣器等。

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

首先构思系统的总体结构,根据设计要求确定好系统大致的硬件组成及其结构,其次根据系统的各个功能把软件分成几个不同的模块,依次实现各个模块的功能,最后把各个模块组合起来完成整个系统的功能。 3.2 方案二

根据任务的要求,选择了4个数码管作为信号输出,以状态输入开关作为输入信号,都连接至8255A芯片上。步进电动机由8255PC4-PC7口驱动,其中洗衣过程漂洗过程排水过程的时间都由8254提供定时信号,实现在预定时间状态的转换。

在对芯片进行初始化之后,先判断输入信号的状态,根据输入状态的不同调用不同的子程序,鉴于定时程序在很多子程序里调用到,多次编写加长了程序的长度,所以每次在调用之前先将计数值读入一个寄存器中,在延时程序中读取此寄存器中的数值即可。

当按照输入状态运行完之后,最后检测到已完成的时候就启动蜂鸣报警,洗衣过程完成。 3.3 方案比较

方案一相对来说刚开始容易,但是后续工作麻烦,不容易将每个模块有机的整合起来,会出现接口冲突,而方案二在设计初就从全局出发,充分分配好各个端口的配置及用途,避免了方案一中的冲突,所以方案二更优越。

四、系统硬件设计

4.1 系统硬件原理 (1)8255A芯片

8255A是一个通用的可编程的并行接口芯片,内部有2个8位I/O口(A、B),两个4位I/O口(PC7~4、PC3~0).通过编程可设置3种工作方式,可适用于CPU与I/O设备之间的多种数据传送方式的要求。C口可作为数据口,可作为信号线( CPU与I/O设备之间的应答信号),可作为状态口,可按位置位/复位。

8255A的内部结构如图1所示:

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

图1 8255的内部结构图

8255的引脚分配:

(1)D0~D7:8位,双向,三态数据线,用来与系统数据总线相连; (2)端口A、B、C:PA0~PA7( A组数据信号,用来连接外设); PB0~PB7( B组数据信号,用来连接外设);PC0~PC7(C组数据信号,用来连接外设或者作为控制信号)。

(3)CS、RESET、WR、RD、A1、A0(内部4个端口)。 (4)VCC、GND。

8255A有三种工作方式,用户可以通过编程来设置。方式0――简单输入/输出――查询方式;A,B,C三个端口均可。方式1――选通输入/输出――中断方式;A ,B,两个端口均可。方式2――双向输入/输出――中断方式。只有A端口才有。工作方式的选择可通过向控制端口写入控制字来实现。 (2)芯片8254

8254是可编程计数器/定时器。它的引脚及功能示意图如图2所示。数据总线缓冲器是8254与CPU之间的数据接口,它是一个8位双向三态缓冲器。读/写控制逻辑接受CPU送来的读/写控制信号,并加以组合完成对8254内部操作的控制。8254内部包含三个独立的结构功能完全相同的16位可预置的递减计数器。控制字寄存器用来存放由CPU写入8254的方式选择控制字,以确定计数器的操作方式。

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

(3)8259芯片

8259A,可编程中断控制器芯片。它的引脚图如图3所示。

它是可以用程序控制的中断控制芯片。单个的8259A能管理8级向量优先级中断。在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。8259A有多种工作方式,能用于各种系统。各种工作方式的设定是在初始化时通过软件进行的。 在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态,编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

江苏科技大学

《微机原理课程设计》

的状态。 (4)0809芯片 ADC0809是8位逐次逼近型 A/D 转换器。它由一个八路模拟开关,一个地址 译码器,一个 A/D 转换器和一个三态输出所存器组成,多路开关可选通8个模拟 通道,允许8路模拟量分时输入,共用 A/D 转换器进行转换,三态输出用于锁存 A/D 转换完的数据,当 OE 端为高电平时,才可以从三态输出锁存器取走转换完 成的数据。IN0-IN7:8条模拟量输入通道 ADC0809对输入模拟量要求:信号单 极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程 中应该保持不变,如若模拟量变化太快,则需在输入端前加采样保持电路。地址 输入和控制线:4条 ALE 为地址锁存允许输入线,高电平有效,当 ALE 线为高 电平时, 地址锁存与译码器将 A,B,C 三条地址线的地址信号进行锁存, 经译码后 被选中的通道模拟量通过转换器进行转换。A,B 和 C 为地址输入线,用于选通 IN0-IN7上的一路模拟量输入。通道选择表如下表一所示。表1 0809通道选择表 C B A 选择的通 道 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7

数字量输出及控制线:11条 ST 为转换启动信号。当 ST 上跳沿时,所有内部寄 存器清零; 下跳沿时, 开始进行 A/D 转换; 在跳转期间, 应保持低电平, ST EOC 为转换结束信号,当 EOC 为高电平时,表明转换结束;否则表明正在进行 A/D 转换,OE 为输出允许信号,用于控制三条输出锁存器想单片机输出转换得到的

5

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

数据,OE=1,输出转换得到的数据 OE=0输出数据线呈高阻状态。D7-D0为数字量输出线CLK

为时钟输入信号线,因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常频率为500KHZ。VREF(+),VREF(-)为参考电压输入。 4.2 功能模块设计

图4 硬件功能图

图4硬件功能图中,系统总体功能模块在具体实践中,因硬件资源的限制有所调整,比如有些电路采用其他电路来模拟,进水部分有电位器来模拟,电机驱动用直流系统来模拟。

其接线图如图5所示:

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

图5 系统接线图

4.3 遇到问题及解决措施

问题1: 当把所有线路按照设计要求连接好过后,发现芯片8254没有输出时钟信号。

解决方法:芯片8254没有输出时钟信号,这表示8254没有起作用,原以为是芯片坏了,换了好几个新品牌还是一样不起作用,后来经过不断排查是由于采用了12V供电电压,实际要求是5V。

问题2:当把所有的线路按照设计要求连接好之后,发现电机不能运转。 解决方法:经检查是连接到电机驱动电路上的接线出现断路,换根接线就把问题解决了

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

五、系统软件设计

5.1 总体设计思想

程序首先要用伪指令定义一下。然后是8255、8254与8259的初始化,如: MOV DX,CADDR ;8255初始化 MOV AL,MODE OUT DX,AL

MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;计数器0,方式3 OUT DX,AL

MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1 MOV AL,1BH ;边沿触发、单片8259、需要ICW4 OUT DX,AL

MOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2 MOV AL,08H OUT DX,AL

MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4 MOV AL,01H ;非自动结束EOI OUT DX,AL

MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1 MOV AL,0FCH ;打开IR0和IR1的屏蔽位 OUT DX,AL

然后按照原先设计好的原理框图的步骤设计检测洗衣机开/停信号,如; CHECK: MOV DX,PORTB IN AL,DX TEST AL,80H JZ CHECK

还有接下来的点亮运行指示灯等程序。在设计中用到了子程序调用、循环、测试等程序。

在编程时按照设计好的原理框图,结合微机课程上所学的具有一定功能的程

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

序一一编出来,然后在计算机上进行调试,发现错误后再进行修改。在编程过程中要注意程序的嵌套使用,即有些程序按照前面流程图设计好了但在后面的程序中然要用,所以就要注意调用。

软件可分为10个模块:主程序、键盘扫描子程序、参数设置子程序、延时子程序、显示子程序、自检程序、甩干子程序、暂停子程序、蜂鸣器子程序。

系统的总体流程图如图6所示:

图6 整体流程方框图

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

5.2 功能模块设计 (1)延时功能模块设计

根据机箱上给出的芯片我们选用了8254作为定时计数器,在延时程序中计时,在加水过程中计量加水的量。 由于需要多次调用延时子程序,所以把他写成一个DALLY程序,每次调用的时候配合CALL和RET就能往返于子程序和主程序之间,之前把要记的数值放在SI寄存器中,在子程序中读取该寄存器就可以知道要记的数是多少而不必每次都重新给计数器赋值,减少了程序的步骤也使得更易读。

(2)洗衣功能模块设计

洗衣子程序中是一个不停的在正传反转间循环的过程,期间每次正转或者反转都调用了延时子程序,定时3S,在完成5次循环过后,洗衣过程完成。 (3)脱水功能模块设计

脱水子程序中只需调用上面做好的延时程序,并在该延时之前打开或关闭相应的指示灯即可。然后用8086的片选信号加给0832控制电动机正转反转,根据公式 : V0= -NVREF/256计算得到要使电动机保持不转的时候要输入给80H,而正转则取最大值FFH,反转取最小值00H,由于这样得到的V0不相同,所以引起了正传反转时候的速度有些差异,最后等延时子程序执行完毕后,关闭相应指示灯即可完成。脱水、延时、加水等子程序后面都要加上RET,否则将无法跳回主程序MAIN。当时在前几次通电试验的时候每次都出现在排水的时候加水指示灯亮起,需要加水后才能熄灭,后检查发现就是少了一个RET导致的,执行完排水程序后没返回而是接下去执行了加水程序。 (4)甩干、报警功能模块设计

甩干子程序是一个不停的在正转的过程,甩干可以分为快甩和慢甩两种档位,甩干子程序还可以通过按键直接跳过洗衣进行调用。当甩干程序运行结束后,8254会产生一个时钟信号给蜂鸣器从而让蜂鸣器报警,表示洗衣过程结束。 (5)加水子程序设计

加水是这个总程序中很重要的部分,特别是如何将水位信号读取和比较,最终还要输出到8253进行计数。首先打开加水指示灯,将水位信号扫描到寄存器AL中。然后根据与设定好的数据进行比较确定水位信号是什么,假如检测到的

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

是高水位的话,跳转到LEVEL,否则给AL置为3,高水位的时候将控制字写给计数器0,继续执行下去直到给BL加上1,当加到与原来保存的水位信号数值相等的时候,由PC7口将信号传递给8253,告之加水计数程序完成,跳出加水程序,然后关闭加水指示灯,执行下面的程序。 5.3 遇到问题及解决措施

问题1.通过中断实现数码管计时显示与步进电机延时相互冲突,导致步进电机不能正常运转。

解决方法:经过很长时间调试,还是不能成功,由于时间有限,所以最后只好通过步进电机正反转次数来计时。

问题2.报警功能实现后不知道如何使它停止下来。

解决办法:在进入报警子程序前加变量判断,通过按键控制变量的取反改变,停止报警。

六、总结

这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。

其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,通过网络和与同学的讨论基本上得到解决,提高了自己解决和分析问题的能力。

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

七、附录

洗衣机程序

;****************根据查看端口资源修改下列符号值******************* IOY1 EQU 3040H

IOY0 EQU 3000H ;片选IOY0对应的端口始地址 ;*****************************************************************

MY8255_A EQU IOY0+00H*4 ;8255的A口地址 MY8255_B EQU IOY0+01H*4 ;8255的B口地址 MY8255_C EQU IOY0+02H*4 ;8255的C口地址 MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址

MY8254_COUNT0 EQU IOY1+00H*4 ;8254计数器0端口地址 MY8254_COUNT1 EQU IOY1+01H*4 ;8254计数器1端口地址 MY8254_COUNT2 EQU IOY1+02H*4 ;8254计数器2端口地址 MY8254_MODE EQU IOY1+03H*4 ;8254控制寄存器端口地址 IOY2 EQU 3080H ;片选IOY0对应的端口始地址 ;***************************************************************** MY8259_ICW1 EQU IOY2+00H ;实验系统中8259的ICW1端口地址 MY8259_ICW2 EQU IOY2+04H ;实验系统中8259的ICW2端口地址 MY8259_ICW3 EQU IOY2+04H ;实验系统中8259的ICW3端口地址 MY8259_ICW4 EQU IOY2+04H ;实验系统中8259的ICW4端口地址 MY8259_OCW1 EQU IOY2+04H ;实验系统中8259的OCW1端口地址

MY8259_OCW2 EQU IOY2+00H ;实验系统中8259的OCW2端口地址

MY8259_OCW3 EQU IOY2+00H ;实验系统中8259的OCW3端口地址

STACK1 SEGMENT STACK

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

DW 256 DUP(?) STACK1 ENDS DATA

SEGMENT

DTABLE1 DB 06H,3FH,73H,77H,39H,06H,5BH,4FH,66H,80H DTABLE3 DB 10H,30H,20H,60H,40H,0C0H,80H,90H DTABLE

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H TIME1 DB 05H TIME2 DB 05H TIME3 DB 0FH

MES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$'

FREQ_LIST DW 371,495,495,495,624,556,495,556,624 ;频率表 DW 495,495,624,742,833,833,833,742,624 DW 624,495,556,495,556,624,495,416,416,371 DW 495,833,742,624,624,495,556,495,556,833 DW 742,624,624,742,833,990,742,624,624,495 DW 556,495,556,624,495,416,416,371,495,0

TIME_LIST DB 4, 6, 2, 4, 4, 6, 2, 4, 4 ;时间表 DB 6, 2, 4, 4, 12, 1, 3, 6, 2 DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 12, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 6, 2, 4, 4, 12 DATA

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

ENDS

DB

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;计数器0,方式3 OUT DX,AL

MOV DX,MY8254_COUNT0 ;装入计数初值 MOV AL,00H ;18432分频 OUT DX,AL MOV AL,48H OUT DX,AL

MOV DX,MY8254_MODE MOV AL,050H OUT DX,AL

MOV DX,MY8254_COUNT1 MOV AL,03H OUT DX,AL MOV AL,00H OUT DX,AL

MOV DX,MY8254_MODE MOV AL,0B6H OUT DX,AL

MOV DX,MY8254_COUNT2 MOV AL,00H OUT DX,AL MOV AL,05H OUT DX,AL

MOV DX,MY8259_ICW1 MOV AL,1BH OUT DX,AL

MOV DX,MY8259_ICW2 MOV AL,08H

;初始化8254工作方式 ;计数器2,方式0 ;装入计数初值 ;18432分频 ;初始化8254工作方式 ;计数器2,方式3 ;装入计数初值 ;18432分频 ;初始化实验系统中8259的ICW1 ;边沿触发、单片8259、需要ICW4 ;初始化实验系统中8259的ICW2

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

OUT DX,AL

MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4 MOV AL,01H ;非自动结束EOI OUT DX,AL

MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1 MOV AL,0FCH ;打开IR0和IR1的屏蔽位 OUT DX,AL MOV SI,3000H

MOV [SI],00H MOV [SI+02H],05H MOV [SI+04H],01H MOV [SI+06H],01H MOV [SI+08H],01H MOV [SI+0AH],02H MOV [SI+0CH],02H MOV [SI+0EH],01H MOV DX,MY8255_MODE MOV AL,81H OUT DX,AL

KAISHI:

MOV SI,3000H MOV DH,[SI+8] CMP DH,8 JA ZHI1 CMP DH,1 JB ZHI8 JMP JIXU

ZHI1: MOV [SI+8],01H JMP JIXU ZHI8: MOV [SI+8],08H

;数码管显示1 ;数码管显示2 ;洗涤,甩干判断变量 ;电机速度档位

;电机输入节拍倒转判断变量 ;电机方向控制变量

;判断是否进入电机运行程序的变量 ;警报器关闭判断变量 ;初始化8255工作方式

;方式0,A口、B口输出,C口低4

位输入

;读取变量首地址

;跳转到节拍1开始转动

;跳转到节拍8开始转动

(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。 附上详细的程序

JIXU: CALL KEYSCAN ;键盘扫描 CMP [SI+0EH],02H JNZ C

MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,0F6H ;计数器2,方式3 OUT DX,AL MOV AX,0000H

MOV DX,MY8254_COUNT2 OUT DX,AL MOV AL,AH OUT DX,AL

C: MOV AH,1 INT 16H

JZ SFRUN QUIT: MOV AX,4C00H INT 21H

SFRUN: MOV SI,3000H MOV DH,[SI+0CH] CMP DH,01H JNZ JIXU MOV DH,[SI+0AH] CMP DH,01H JNZ ZIJIAN

INC [SI+08H]

JMP RUN

KAISHI1: JMP KAISHI

ZIJIAN: DEC [SI+8] RUN: MOV AL,[SI+8] MOV BX,OFFSET DTABLE3

AND AX,00FFH ;装入计数初值 ;判断是否有按键按下 ;无按键则跳回继续循环,有则退出 ;结束程序退出 ;读取变量首地址

;判断变量[SI+0CH] ;不相等跳转到JIXU ;判断电机运行方向 ;正向节拍加1 ;反向节拍减一 ;将变量与节拍表对应

本文来源:https://www.bwwdw.com/article/65ti.html

Top