多路流水灯的控制程序设计

  • 格式:doc
  • 大小:906.50 KB
  • 文档页数:20

微机原理课程设计报告书 课题名称 多路流水灯控制程序的设计 姓 名 ** 学 号 ********* 院、系、部 物理与电信工程系 专 业 通信工程 指导教师 ***

2011年 7 月4 日

※※※※※※※※※ ※※ ※※ ※※ ※※※※※※※※※

2009级学生微机原理 课程设计 一、 设计任务及要求

1.以8086CPU为核心、并行接口芯片8255A和3个逻辑电平开关设计——多路流水灯控制程序; 2.该多路流水灯控制程序能实现模拟水滴下落、左向移动流水灯和右向移动流水灯三种不同的模拟流水形式; 3. 该多路流水灯控制程序在输入有效代码时才能产生所需的流水形式,否则,小灯全灭。

指导教师签名: 2011年 6 月 20 日

二、指导教师评语

指导教师签名: 2011年 7 月 4 日

三、成绩

验收盖章 2011年 7 月 4 日 多路流水灯控制程序的设计 ***********

1、设计目的 1.1 了解各种各种小灯循环点亮和渐变效果的产生原理。 1.2 掌握并行接口芯片8255A逻辑功能及使用方法。 1.3 掌握一定的汇编语言知识,培养自己的动手操作能力。 1.4 学习程序设计的基本思路和方法。

2、设计要求 2.1 以8086CPU为核心、并行接口芯片8255A和3个逻辑电平开关设计——多路流水灯控制程序; 2.2 该多路流水灯控制程序能实现模拟水滴下落、左向移动流水灯和右向移动流水灯三种不同的模拟流水形式; 2.3 该多路流水灯控制程序在输入有效代码时才能产生所需的流水形式,否则,小灯全灭。

3、设计思路 总体方案设计分析 在本实验中要求用8255A的B口做为输出,接8个发光二极管,从而实现8位流水灯的显示效果,故基本的接线可以如下面图2所示。在C口的低三位接3个开关,实现3个扩展功能的控制,在PC0-PC7口分别对应的接八个发光二极管。 3.1模拟水滴下落 (1) 现象 模拟水滴下落分为两个过程:其一,水滴形成(渐变效果),即最左位的小灯的亮度逐渐增强;其二,水滴掉下(加速与拖尾效果),即小灯移动的速度逐渐加快以及渐隐效果。 (2) 原理 水滴形成是在一个周期内,我们可以调节亮和灭的时间,达到调节亮度的目的。因为一次亮灭为一个周期,由于人眼对时间的分辨率有限,变化较快的的闪烁频率无法识别,只要周期够短,人眼就看不出闪烁了。因此利用此原理,亮的时间长一点,灭的时间短一点,看起来就亮一些,否则就暗一些从而实现渐变的效果及水滴的形成,给人的感觉是D0位小灯的亮度逐渐增大。 水滴掉下过程是首先定义一些时间数组,然后通过数组所定义的时间的逐渐变化来使硬件产生小灯的加速移动的效果。 拖尾效果是首先定义一些时间数组,然后通过数组所定义的时间的逐渐变化来使硬件产生小灯的渐隐的效果。 3.2左向移动流水灯 (1) 现象 左向移动流水灯的实验现象是首先最左边的灯亮,然后是最左边的灯灭,此时左起第二个灯亮,依次轮流亮,直到第八个灯亮。然后循环上述过程。 (2) 原理 左向移动流水灯是根据发光二极管的显示原理,首先点亮最右的二极管,然后进位置一,通过带进位的循环左移指令编写程序以实现模拟流水灯的左向移动。 3.3右向移动流水灯 (1) 现象 右向移动流水灯的实验现象是首先最右边的灯亮,然后是最右边的灯灭,此时右起第二个灯亮,依次轮流亮,直到第八个灯亮。然后循环上述过程。 (2) 原理 右向移动流水灯是根据发光二极管的显示原理,首先点亮最左的二极管,然后进位置一,通过带进位的循环右移指令编写程序以实现模拟流水灯的右向移动。 4、电路及连线设计 图4.2 系统硬件连接图 8086CPU处理 PB0-PB7 8255A 输入 PC0-PC2

LED显示

K0—K2

图4.1 系统逻辑框图 图4.3 8255A与8086CPU连接及外部接线图

图4.4 8255A与LED及开关的连接及外部接线图 5、程序设计 5.1主程序流程

图5.1 主程序流程图 5.2子程序流程图 (1)模拟水滴子程序 水滴形成(渐变效果):

开始 设置8255A的工作方式(81H) 读C口低三位 模拟水滴下落

输出00H 右向流水灯 左向流水灯 结束 无有效按键时输出 Y N Y Y N Y K2是否被按下 N N K3是否被按下 K1是否被按下 图5.2 水滴形成过程子程序图 水滴掉下(加速与拖尾效果):

保护现场 N Y Y N

N

Y BX=0吗 DL加1

Y Y 恢复现场 CX等于0吗

N CX等于0吗

CX等于0吗 N 恢复现场

开始 初始化寄存器 保护现场 BX模4

保护现场 B口输出7FH, BX加1

恢复现场 Y B口输出FFH

BX=DX吗 图5.3 水滴掉下过程子程序图 Y N

N

Y

Y N

[SI+2]的内容通过AX给[SI+4] ,DL加1 CX等于0吗 CX等于0吗 Y N CX等于0吗

判断是否满足程序所给的条件,输出相应结果

恢复现场 Y

N BL=AL吗

CX等于0吗 恢复现场

初始化寄存器 保护现场 保护现场

保护现场 保护现场

恢复现场

结束 恢复现场 (2)左向移动流水灯 图5.4 左向移动流水灯子程序图 (3)右向移动流水灯

图5.5 左向移动流水灯子程序图 开始 CF置1,07FH→AL B口输出 AL带进位循环右移一位 延时

开始 CF置1,0FEH→AL B口输出 AL带进位循环左移一位 延时 5.3源程序设计(见附录) 5.4仿真实物连接图

图5.6 硬件仿真图 6、设计总结 这次微机原理课程设计我学到了很多在书本上所没有学到过的知识。以前在上课的时候对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以及当寄存器不够用时如何用存储单元代替寄存器、怎么去使用循环嵌套、怎么去正确使用8255芯片等方面都有了很大程度的提高。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,但总的来说还是圆满的 7、参考文献 [1] 楼顺天,周佳社. 微机原理与接口技术[M]. 北京:科学出版社,2006:25-71,163-164,295-305 [2]周明德.微机原理与接口技术[M].北京:人民邮电出版社,2007.225-243

附录: CODE SEGMENT ASSUME CS:CODE ORG 11e0H START: JMP START0 IOCONPT EQU 0FF2BH IOAPT EQU 0FF28H IOBPT EQU 0FF29H IOCPT EQU 0FF2AH BUF DB ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? DATA0: DB 00H,01H,02H,04H,06H,10H,20H,40H ;亮度数组以实现拖尾效果 DATA1: DB 00H,22H,30H,3BH,44H,4CH,54H,5BH,61H,67H,6AH,72H,77H,7BH,7EH;时间数组 以实现加速效果 DATA2: DB 7H,6H,5H,4H,3H,2EH,1H,00H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FH START0:

MOV AL,81H ;写8255A方式控制字 MOV DX,IOCONPT OUT DX,AL MO: MOV DX,IOCPT ;检测开关信号 IN AL,DX CMP AL,01H ;检测按键1是否被按下 JZ K1 CMP AL,02H ;检测按键2是否被按下 JZ K2 CMP AL,04H ;检测按键3是否被按下 JZ K3 JMP THEEND ;检测是否按键1,2,3均未被按下 K1: JMP L1 K2: JMP L2 K3: JMP L3

L1: MOV DX,IOBPT MOV AL,0FFH OUT DX,AL LL1: XOR DX,DX XOR BX,BX MOV CX,0FDH L1_0: ;水滴形成(渐变效果) PUSH AX ;嵌套循环来控制灯亮灭的时间 PUSH DX ;使实现模拟水滴形成的渐变效果 MOV DL,4 ;即感觉D0位小灯的亮度逐渐增大 MOV AX,BX DIV DL