8x8点阵LED显示键盘输入字母AF.docx
《8x8点阵LED显示键盘输入字母AF.docx》由会员分享,可在线阅读,更多相关《8x8点阵LED显示键盘输入字母AF.docx(21页珍藏版)》请在冰豆网上搜索。
8x8点阵LED显示键盘输入字母AF
课程设计报告
课程设计名称:
微机原理与接口技术
系别:
三系
学生姓名:
缪广东
班级:
10计本
(1)
学号:
20100303130
成绩:
指导教师:
巫宗宾
开课时间:
2012—2013学年1学期
1.设计题目
LED显示系统设计
2.主要内容
课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。
它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。
通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。
让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。
在课程设计时,1人一组,设计报告由学生独立完成,不得互相抄袭。
教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。
学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。
学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。
学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。
学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。
设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。
3.具体要求
从键盘输入数字A~F,通过8279芯片读取数据并由8255A芯片的A口与C口分别控制8*8点阵LED的行与列从而显示数字A~F。
四.进度安排
周四
周五
周一
周二
周三
讲课设内容,安排任务
查资料,确定硬件电路方案
画出程序流程图,写出程序清单
画出程序流程图,写出程序清单
写总结报告
五.成绩评定
考核方法:
现场验收(占50%),课程设计报告(占50%)。
考核内容:
学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。
成绩评定:
优,良,中,及格,不及格。
特别说明:
如发现抄袭,按照不及格处理。
正文
1.实验原理
1.8279芯片
8279是可编程的键盘、显示接口芯片。
它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。
8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64BRAM,键盘控制部分可控制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.18279引脚图
2.4*4键盘显示控制器
编程使得8位数码管初始显示-ABCDEF-,然后在小键盘上每按一个键,8位数码管上显示出相应字符,按9键返回。
下图为键盘显示控制器电路图:
图1.24*4键盘电路图
3.8255A芯片
8255A是一种可编程的I/O接口芯片,可以与MCS-51系统单片机以及外设直接相连,广泛用作外部并行I/O扩展接口。
8255A的内部结构
8255A内部由PA、PB、PC三个8位可编程双向I/O口,A组控制器和B组控制器,数据缓冲器及读写控制逻辑四部分电路组成。
图1.38255A结构框图和引脚图
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.48255A的方式控制字
4.8*8点阵LED双色显示器
LED点阵显示系统中各模块的显示方式
有静态和动态显示两种。
静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。
LED点阵显示器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号.如5x7点阵显示器用于显示西文字母.5×8点阵显示器用于显示中西文,8x8点阵用于显示中文文字,也可用于图形显示。
用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常通过微机或单片机控制驱动。
8X8 点阵LED工作原理
从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:
一根竖柱:
对应的列置1,而行则采用扫描的方法来实现。
一根横柱:
对应的行置0,而列则采用扫描的方法来实现。
图1.58*8点阵LED结构图
二、流程图
图2.1主程序流程图
图2.3显示子程序流程图
盘图2.2键显示子程序流程图
三、实验连线图
图3.1实验连线图
四、源程序
DATASEGMENT
PORTEQU0C400H-0280H
IO8255AEQUPORT+288H;8255端口A地址
IO8255BEQUPORT+289H;8255端口B地址
IO8255CEQUPORT+28AH;8255端口C地址
IO8255CTREQUPORT+28BH;8255控制端口地址
PORT0EQUPORT+2B0H;8279数据口
PORT1EQUPORT+2B1H;8279控制口
TABDB18H,24H,24H,24H,3CH,24H,24H,24H;字母A~F的编码
DB1CH,24H,24H,1CH,3CH,24H,24H,1CH
DB38H,7CH,06H,02H,02H,06H,7CH,38H
DB1EH,22H,42H,42H,42H,42H,22H,1EH
DB3CH,04H,04H,3CH,3CH,04H,04H,3CH
DB3CH,3CH,04H,3CH,3CH,04H,04H,04H
BUFFERDB0H
SEC1DB12H
SEC2DB0AH
SEC3DB0BH
SEC4DB0CH
SEC5DB0DH
SEC6DB0EH
SEC7DB0FH
SEC8DB12H
LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;LED显示0~7编码
DB7FH,6FH,77H,7CH,39h,5EH,79h,71H;LED显示8~F编码
DB73H,3EH,40H
KEYDATADB23H,2BH,33H,3BH,22H,2AH,32H,3AH
DB21H,29H,31H,39H,20H,28H,30H,38H
DATAENDS
STACKSSEGMENT
DB100DUP(?
)
STACKSENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKS,ES:
DATA
START:
MOVDX,IO8255CTR;写8255控制字,定义A,B,C口都为输出
MOVAL,80H
OUTDX,AL
CLI
MOVAX,DATA
MOVDS,AX
MOVDX,PORT1
MOVAL,00H
OUTDX,AL;设置8279方式字
MOVAL,2AH
OUTDX,AL;设置分频系数
MOVAL,0D0H
OUTDX,AL;清显示
MOVAL,90h
OUTDX,AL;设置从左边开始写入数据
TEST1:
INAL,DX;判断8279工作是否正常
ANDAL,80H
JNZTEST1
KEY1:
CALLKEY;调用键盘显示子程序
LP0:
MOVCX,08H
MOVSI,OFFSETSEC1
LP2:
MOV[SI],BH;键号存入显示缓冲单元
INCSI
LOOPLP2
CMPBH,09H;判断是9键吗?
JALP1
MOVAX,4C00H;是9键返回
INT21H
LP1:
CALLOFFLED;调用关8*8点阵LED显示子程序
MOVSI,0H;设置字库首地址
STR1:
MOVAL,08H;根据键号找到对应的字库编码地址
SUBBH,0AH
MULBH
ADDSI,AX
CALLDEL1;调用8*8点阵LED显示子程序
JMPKEY1
;--------------键盘扫描子程序-------------------------------
KEYPROCNEAR
MOVDX,PORT1;清显示
MOVAL,0D0H
OUTDX,AL
WREP:
CALLDISP;调用显示子程序
MOVDX,PORT1;判断是否有键输入
INAL,DX
ANDAL,07H
JZWREP;无键则返回WREP
MOVDX,PORT0;有键则读取键值
INAL,DX
MOVBL,AL;键值存入BL
MOVBH,0H;确定键号
MOVSI,OFFSETKEYDATA;取键值表首地址
KEY0:
MOVAL,[SI]
CMPAL,BL;比较是否相等
JNEKEY5;不相等则跳到KEY5
JMPKEY4;相等则跳到KEY4
KEY5:
ADDSI,01H;地址加一
ADDBH,01H;键号加一
CMPBH,10H;键号是否等于16
JNEKEY0;不等则返回KEY0
JMPKEY4;相等则跳KEY4
KEY4:
MOVBUFFER,0H;BUFFER置0
RET
KEYENDP
;---------LED显示子程序--------------------------------------------
DISPPROCNEAR
DISP0:
MOVDX,PORT1;判断8279工作是否正常
INAL,DX
ANDAL,80H
JNZDISP0
MOVSI,OFFSETSEC1;从显示缓冲区取数
MOVCX,8H
DISP1:
MOVBX,OFFSETLED;查字型代码
CLD;方向标志位清0
LODSB;把SI指向的内容送到AL,SI加一
XLAT;将BX为首地址的,偏移地址为AL的内容送给AL
MOVDX,PORT0;送8279显示
OUTDX,AL
LOOPDISP1;循环显示8个LED
RET
DISPENDP
;----------8*8点阵LED持续显示子程序------------------------------------
DEL1PROCNEAR
MOVCX,20H;设置每个数字显示时间间隔参数
DEL2:
PUSHCX
DEL3:
PUSHCX
DEL4:
PUSHSI
CALLDISPW0;调用显示第一个数字子程序
POPSI
LOOPDEL4;继续显示
POPCX
LOOPDEL3
POPCX
LOOPDEL2
RET
DEL1ENDP
;---------8*8点阵LED显示数字子程序---------------------------------
DISPW0PROCNEAR
PUSHCX;保存CX
MOVAH,0FEH
MOVCX,08H;设置循环次数
CLC
DAT1:
MOVDX,IO8255A
MOVAL,AH;开第一行
OUTDX,AL
MOVAL,TAB[SI];读字库,写入列
MOVDX,IO8255C
OUTDX,AL
CALLDELAY0;调用延时子程序
CALLOFFLED;调用重置子程序
INCSI;SI自增
ROLAH,01H;循环开下一行
LOOPDAT1;转DAT1
POPCX
RET
DISPW0ENDP
;---------软件延时子程序-------------------------------------
DELAY0PROCNEAR
PUSHCX
MOVCX,20H
DELAY:
PUSHCX
DELA2:
PUSHCX
DELA3:
LOOPDELA3
POPCX
LOOPDELA2
POPCX
LOOPDELAY
POPCX
RET
DELAY0ENDP
;-----重置所有列子程序--------------------------------------------
OFFLEDPROCNEAR
MOVDX,IO8255C
MOVAL,0H
OUTDX,AL
RET
OFFLEDENDP
;----------------------------------------------------------------
CODEENDS
ENDSTART
5、实验结果
图4.1初始化图4.2显示字母A
图4.3显示字母B图4.4显示字母C
图4.5显示字母D图4.6显示字母E
图4.7显示字母F
6、总结
本次课程设计中我主要结合了键盘显示和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.戴梅萼,史嘉权.微型计算机技术及应用.北京:
清华大学出版社