8x8点阵LED显示键盘输入字母A~F

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

课程设计报告
课程设计名称:微机原理与接口技术系别:三系
学生姓名:缪广东
班级:10计本(1)
学号:20100303130
成绩:
指导教师:巫宗宾
开课时间:2012—2013 学年 1 学期
一.设计题目
LED显示系统设计
二.主要内容
课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。

它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。

通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。

让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。

通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。

通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。

在课程设计时,1人一组,设计报告由学生独立完成,不得互相抄袭。

教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。

学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。

学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。

学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。

学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。

设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。

三.具体要求
从键盘输入数字A~F,通过8279芯片读取数据并由8255A芯片的A口与C 口分别控制8*8点阵LED的行与列从而显示数字A~F。

四.进度安排
五.成绩评定
考核方法:现场验收(占50%),课程设计报告(占50%)。

考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。

成绩评定:优,良,中,及格,不及格。

特别说明:如发现抄袭,按照不及格处理。

正文
一.实验原理
1.8279芯片
8279是可编程的键盘、显示接口芯片。

它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。

8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64B RAM,键盘控制部分可控制8*8=64个按键或8*8阵列方式的传感器。

该芯片能自动消抖并具有双键锁定保护功能。

显示RAM 容量为16*8,即显示器最大配置可达16位LED数码显示。

8279采用单±5V电源供电,40脚封装。

DB0~DB7:双向数据总线,用来传送8279与CPU之间的数据和命令。

CLK:时钟输入线,用以产生内部定时的时钟脉冲。

RESET:复位输入线,8279复位后被置为字符显示左端输入,二键闭锁的触点回弹型式,程序
时钟前置分频器被置为31,RESET信号为高电平有效。

CS:片选输入线,低电平有效,单片机在CS端为低时可以对8279读/写操作。

A0:缓冲器低位地址,当A0为高电平时,表示数据总线上为命令或状态,当为低电平时,表示数据总线上为数据。

RD:读信号输入线,低电平有效,将缓冲器读出,数据送往外部总线。

图1.1 8279引脚图
2.4*4键盘显示控制器
3.8255A芯片
8255A是一种可编程的I/O接口芯片,可以与MCS-51系统单片机以及外设直接相连,广泛用作外部并行I/O扩展接口。

①8255A的内部结构
8255A内部由PA、PB、PC三个8位可编程双向I/O口,A组控制器和B组控制器,数据缓冲器及读写控制逻辑四部分电路组成。

图1.3 8255A结构框图和引脚图
②8255A的引脚功能
数据总线(8条):D0~D7,用于传送CPU和8255A间的数据、命令和状态字。

控制总线(6条):RESET:复位线,高电平有效。

/CS:片选线,低电平有效。

/RD、/WR:读命令线,写命令线,皆为低电平有效。

A0、A1:地址输入线:用于选中PA、PB、PC口和控制寄存器中哪一个工作。

并行I/O总线(24条):用于和外设相连,共分三组
③8255A控制字
方式控制字用于设定8255A三个端口工作于什么方式,是输入还是输出方式。

本实验中,A口,B口,C口都是方式0输出,故方式控制字为10000000B=80H
图1.4 8255A的方式控制字
4. 8*8点阵LED双色显示器
①LED点阵显示系统中各模块的显示方式
有静态和动态显示两种。

静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。

LED点阵显示器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号.如5 x 7点阵显示器用于显示西文字母.5×8点阵显示器用于显示中西文,8 x 8点阵用于显示中文文字,也可用于图形显示。

用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常通过微机或单片机控制驱动。

②8X8 点阵LED工作原理
从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。

一根横柱:对应的行置0,而列则采用扫描的方法来实现。

图1.5 8*8点阵LED结构图
二、流程图
图2.1 主程序流程图
三、实验连线图
图3.1 实验连线图
盘图2.2键显示子程序流
程图
图2.3显示子程序流程图
四、源程序
DA TA SEGMENT
PORT EQU 0C400H-0280H
IO8255A EQU PORT+288H ;8255端口A地址
IO8255B EQU PORT+289H ;8255端口B地址
IO8255C EQU PORT+28AH ;8255端口C地址
IO8255CTR EQU PORT+28BH ;8255控制端口地址
PORT0 EQU PORT+2B0H ;8279数据口
PORT1 EQU PORT+2B1H ;8279控制口
TAB DB 18H,24H,24H,24H,3CH,24H,24H,24H ;字母A~F的编码
DB 1CH,24H,24H,1CH,3CH,24H,24H,1CH
DB 38H,7CH,06H,02H,02H,06H,7CH,38H
DB 1EH,22H,42H,42H,42H,42H,22H,1EH
DB 3CH,04H,04H,3CH,3CH,04H,04H,3CH
DB 3CH,3CH,04H,3CH,3CH,04H,04H,04H
BUFFER DB 0H
SEC1 DB 12H
SEC2 DB 0AH
SEC3 DB 0BH
SEC4 DB 0CH
SEC5 DB 0DH
SEC6 DB 0EH
SEC7 DB 0FH
SEC8 DB 12H
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;LED显示0~7编码DB 7FH,6FH,77H,7CH,39h,5EH,79h,71H ;LED显示8~F编码
DB 73H,3EH,40H
KEYDATA DB 23H,2BH,33H,3BH,22H,2AH,32H,3AH
DB 21H,29H,31H,39H,20H,28H,30H,38H
DA TA ENDS
STACKS SEGMENT
DB 100 DUP(?)
STACKS ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STACKS,ES:DATA
START:MOV DX,IO8255CTR ;写8255控制字,定义A,B,C口都为输出MOV AL,80H
OUT DX,AL
CLI
MOV AX,DA TA
MOV DS,AX
MOV DX,PORT1
MOV AL,00H
OUT DX,AL ;设置8279方式字
MOV AL,2AH
OUT DX,AL ;设置分频系数
MOV AL,0D0H
OUT DX,AL ;清显示
MOV AL,90h
OUT DX,AL ;设置从左边开始写入数据
TEST1:IN AL,DX ;判断8279工作是否正常
AND AL,80H
JNZ TEST1
KEY1:CALL KEY ;调用键盘显示子程序
LP0:MOV CX,08H
MOV SI,OFFSET SEC1
LP2:MOV [SI],BH ;键号存入显示缓冲单元
INC SI
LOOP LP2
CMP BH,09H ;判断是9键吗?
JA LP1
MOV AX,4C00H ;是9键返回
INT 21H
LP1:CALL OFFLED ;调用关8*8点阵LED显示子程序MOV SI,0H ;设置字库首地址
STR1:MOV AL,08H ;根据键号找到对应的字库编码地址SUB BH,0AH
MUL BH
ADD SI,AX
CALL DEL1 ;调用8*8点阵LED显示子程序
JMP KEY1
;--------------键盘扫描子程序-------------------------------
KEY PROC NEAR
MOV DX,PORT1 ;清显示
MOV AL,0D0H
OUT DX,AL
WREP:CALL DISP ;调用显示子程序
MOV DX,PORT1 ;判断是否有键输入
IN AL,DX
AND AL,07H
JZ WREP ;无键则返回WREP
MOV DX,PORT0 ;有键则读取键值
IN AL,DX
MOV BL,AL ;键值存入BL
MOV BH,0H ;确定键号
MOV SI,OFFSET KEYDATA ;取键值表首地址
KEY0:MOV AL,[SI]
CMP AL,BL ;比较是否相等
JNE KEY5 ;不相等则跳到KEY5
JMP KEY4 ;相等则跳到KEY4
KEY5:ADD SI,01H ;地址加一
ADD BH,01H ;键号加一
CMP BH,10H ;键号是否等于16
JNE KEY0 ;不等则返回KEY0
JMP KEY4 ;相等则跳KEY4
KEY4:MOV BUFFER,0H ;BUFFER置0
RET
KEY ENDP
;---------LED显示子程序--------------------------------------------
DISP PROC NEAR
DISP0:MOV DX,PORT1 ;判断8279工作是否正常
IN AL,DX
AND AL,80H
JNZ DISP0
MOV SI,OFFSET SEC1 ;从显示缓冲区取数
MOV CX,8H
DISP1:MOV BX,OFFSET LED ;查字型代码
CLD ;方向标志位清0
LODSB ;把SI指向的内容送到AL,SI加一
XLAT ;将BX为首地址的,偏移地址为AL的内容送给AL
MOV DX,PORT0 ;送8279显示
OUT DX,AL
LOOP DISP1 ;循环显示8个LED
RET
DISP ENDP
;----------8*8点阵LED持续显示子程序------------------------------------
DEL1 PROC NEAR
MOV CX,20H ;设置每个数字显示时间间隔参数
DEL2:PUSH CX
DEL3:PUSH CX
DEL4:PUSH SI
CALL DISPW0 ;调用显示第一个数字子程序
POP SI
LOOP DEL4 ;继续显示
POP CX
LOOP DEL3
POP CX
LOOP DEL2
RET
DEL1 ENDP
;---------8*8点阵LED显示数字子程序--------------------------------- DISPW0 PROC NEAR
PUSH CX ;保存CX
MOV AH,0FEH
MOV CX,08H ;设置循环次数
CLC
DAT1:MOV DX,IO8255A
MOV AL,AH ;开第一行
OUT DX,AL
MOV AL,TAB[SI] ;读字库,写入列
MOV DX,IO8255C
OUT DX,AL
CALL DELAY0 ;调用延时子程序
CALL OFFLED ;调用重置子程序
INC SI ;SI自增
ROL AH,01H ;循环开下一行
LOOP DAT1 ;转DAT1
POP CX
RET
DISPW0 ENDP
;---------软件延时子程序-------------------------------------
DELAY0 PROC NEAR
PUSH CX
MOV CX,20H
DELAY:PUSH CX
DELA2:PUSH CX
DELA3:LOOP DELA3
POP CX
LOOP DELA2
POP CX
LOOP DELAY
POP CX
RET
DELAY0 ENDP
;-----重置所有列子程序--------------------------------------------
OFFLED PROC NEAR
MOV DX,IO8255C
MOV AL,0H
OUT DX,AL
RET
OFFLED ENDP
;----------------------------------------------------------------
CODE ENDS
END START
五、实验结果
图4.1 初始化图4.2 显示字母A
图4.3 显示字母B 图4.4 显示字母C
图4.5 显示字母D 图4.6 显示字母E
图4.7 显示字母F
六、总结
本次课程设计中我主要结合了键盘显示和8*8点阵LED显示两次实验的思想,加以结合及修改,最终完成了字母A~F的显示。

设计步骤:
1.编程使得8位数码管初始显示-ABCDEF-,然后在小键盘上每按一个健,6位数码管上显示出相应字符,按9键返回。

2.读取键盘按下的键号,使用I/O接口芯片8255的A口[0:7]和C口[0:7]分别控制LED点阵的行H[0:7]和列L[0:7]。

编制程序,使点阵LED显示对应的字母。

3.通过本次课程设计,我学会了8279芯片以及8255A芯片的功能,学会了点阵LED 的显示编码设计。

为以后的硬件学习打下了基础。

七、参考资料
1.周明德.微型计算机系统原理及应用.北京:清华大学出版社
2.张弥左,王兆月,邢立军等.微型计算机接口技术.北京:机械工业出版社
3.戴梅萼,史嘉权.微型计算机技术及应用.北京:清华大学出版社。

相关文档
最新文档