1、 微机原理微机原理课程设计课程设计 报报 告告 书书 课课 题题 名名 花式跑马灯花式跑马灯 班班 级级_ _ 姓姓 名名_ _ 指导教师指导教师 日日 期期 一设计目的 1.培养和锻炼学生解决实际工程设计和应用问题的能力。熟悉和掌握微机系 统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训 练,熟练应用 8086 汇编语言编写应用程序和实际设计中的硬软件调试方法和步 骤,熟悉微机系统的硬软件开发工具的使用方法。 2.进一步了解微机原理的结构编程并学习试验箱的使用。 3.实现 LED 灯不同方式的闪烁。 4.学会使用 8255 芯片。 二设计内容 要求自行设计电路并连线,实
2、现具有 5 种以上花式的跑马灯。 (开关选择 ) (按键选择 ) (带定时按键选择 ) (利用 8259 芯片实现触发式控制 ) 三设计原理及方案 设计使用键盘扫描的方法,将 8255 的 C 口作为键盘的输入输出口,B 口作 为 LED 灯的输出口,先将 pc7-pc4 送全零,再读取 pc0-pc3,若全为“1”,这 表示无键闭合。若有键闭合,则进行键扫描。键扫描的方法如下:使 pc4 为零, pc5-pc7 为高电平,读取 pc0-pc3,如果全是“1”,表示该列无键闭合;否则闭 合键在该列上,在进一步判断读取的数据中那一为为零,从而确定闭合键。得到 键值后用来判断是那种方式来跑。 四汇
3、编源程序代码 DATA SEGMENT DFG DB 1 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DX,0206H ;8255 初始化 MOV AL,91H OUT DX,AL MOV DX,0202H MOV AL,0FFH OUT DX,AL KS1: MOV DX,0204H ;读取按键 MOV AL,0FH OUT DX,AL IN AL,DX AND AL,0FH CMP AL,0FH ;判断有无键闭合 JZ KS1 ;若无键闭合则循环等待 KS2: PUSH BX ;
4、循环消除抖动 PUSH CX MOV BX,1 DEL1: MOV CX,2009 DEL2: LOOP DEL2 DEC BX JNZ DEL1 POP CX POP BX MOV DX,0204H ;再次判断有无键闭合 MOV AL,0FH OUT DX,AL IN AL,DX AND AL,0FH CMP AL,0FH JZ KS1 MOV BL,0EFH ;初始化列码 MOV BH,0 ;初始化列计数器 AGAIN:MOV DX,0204H MOV AL,BL OUT DX,AL ;输出列码读取行码 IN AL,DX AND AL,0FH CMP AL,0FH JZ TONEXT ;该
5、列无键闭合,准备下一列扫描 CMP AL,0EH ;判断该列是否第一个键按下 JNZ TWO MOV DFG,0 JMP FREE TONEXT:JMP NEXT TWO: CMP AL,0DH ;判断该列是否第二个键按下 JNZ THREE MOV DFG,4 JMP FREE THREE:CMP AL,0BH ;判断该列是否第三个键按下 JNZ FOUR MOV AL,8 JMP FREE FOUR:CMP AL,07H ;判断该列是否第四个键按下 JNZ NEXT MOV AL,0CH FREE: PUSH AX WAIT1: MOV DX,0204H ; 键未释放则等待 MOV AL,0FH OUT DX,AL IN AL,DX AND AL,0FH CMP AL,0FH JNZ WAIT1 POP AX MOV AL,DFG ADD AL,BH ;按键值=扫描键值+列计数器 CMP AL,0 ;判断是否一键按下,并实现第一种方式 JNZ TOTWO2 PUSH BX MOV BL,1 TWO1: ROR BL,1 MOV AL,BL MOV DX,0202H OUT DX,AL MOV DX,0204H MOV AL,0FH OUT DX,AL IN AL,DX AND AL,0FH CMP AL,0FH