HD7279键盘显示的应用设计.docx
《HD7279键盘显示的应用设计.docx》由会员分享,可在线阅读,更多相关《HD7279键盘显示的应用设计.docx(18页珍藏版)》请在冰豆网上搜索。
HD7279键盘显示的应用设计
(HD7279键盘显示的应用设计)
课程设计说明书
一、设计内容及要求
利用HD7279键盘显示芯片实现8位数字显示,通过2个按键实现显示内容的加减,并能通过4个按键实现任意位的设置。
二、设计原始资料
单片机原理及应用教程范立南2006年1月
单片机原理及应用教程刘瑞新2003年07月
三、设计完成后提交的文件和图表
1.计算说明书部分
1)方案论证报告打印版或手写版
2)程序流程图
3)具体程序
2.图纸部分:
具体电路原理图打印版
四、进程安排
教学内容学时地点
资料查阅与学习讨论1天单片机实验室
分散设计5天单片机实验室
编写报告3天单片机实验室
成果验收1天单片机实验室
五、主要参考资料
《电子设计自动化技术基础》马建国、孟宪元编清华大学出版2004年4月
《实用电子系统设计基础》姜威2008年1月
《单片机系统的PROTEUS设计与仿真》张靖武2007年4月
指导老师成绩
答辩小组成绩
总成绩
摘 要
摘 要:
编码键盘接口芯片74922与单片机AT89C51及相关译码器构成多键盘、多位数显示接口电路(以4×4键盘,8位数显示接口)。
本电路克服了以往并行接口设计中占用较多I/O口且键盘控制编程较繁的缺点,在构成多按键和多数字显示的较大规模单片机应用系统中有参考和实用价值。
键盘、显示接口是单片机应用系统中最常用的基本接口电路。
因单片机自身体积小,引脚少,在设计单片机系统时,如系统所需的按键较多,需显示的十进制位数较多,单片机自身的引脚不够用,并且此时串行口又要用作它用时,在以往的设计中,往往以总线方式外接8255或8155芯片,以便扩展并行口。
这种方法因使用的芯片的体积大,引脚多,而使硬件系统较为庞大。
另一种方法是将键盘和显示接口直接与单片机的I/O引脚相接,但这种方法将占用较多有限的I/O口。
为了使有限的I/O口用于实现更多的系统功能,同时系统的硬件设计和软件设计尽可能简洁,我们在单片机多键盘、多位数显示接口的应用系统设计电路中,选用了片内有4KBFlash存储器的AT89C51单片机,接口采用非总线结构。
在显示部分通过译码器(7447集成电路译码器)控制段码和位线,尽量减少I/O口的使用。
在键盘部分,键盘的扫描交给74922集成芯片来完成,使CPU减轻用软件去扫描键盘的负担,提高CPU的利用率,较好地完成了设计
任务。
关键词:
AT89C51单片机;编码键盘;74922集成芯片,7447集成电路译码器
目录
第1章概述9
第2章系统总体方案设计9
2.1 74922芯片内部结构、原理9
2.274922芯片(16键IC)的引脚排列10
2.3电路设计思想10
2.4BCD七段译码器744711
2.5747中LT、RBI、与BI/RBO之控制角12
第3章硬件电路设计14
3.1.理论分析与计算14
3.1.1设计思想14
3.1.2.程序设计流程15
3.2.电路与程序设计15
3.2.3.程序设计17
3.3.结果分析20
第四章.总结(经验教训)22
第1章概述
随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。
单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。
本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。
到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。
本设计是74922芯片键盘显示设计方案,根据要求,给出了该单片机键盘显示的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。
第2章系统总体方案设计
采用一种是用以AT89C51为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的键盘显示功能,还能添加任意数加减、闪烁功能。
其原理如图1所示
图1设计模块图
2.1 74922芯片内部结构、原理
74922芯片是专用编码键盘接口芯片,当按下某一按键时,该芯片能自动给出相应的编码信息,并可自动消除抖动,从而可使设计者免除一部分软件编程。
74922芯片有16键IC和20键IC,图2所示为4×4(16键)扫描式编码键盘原理图。
图2 扫描式编码键盘
这种键盘的按键排成矩阵形式,以减少按键联线。
如图中有16个键,排列成4行4列,仅需8根引线。
时钟发生器的输出送给4位计数器进行计数,计数器的低2位经译码后作为行扫描,高2位经译码后作为列扫描。
若没有检出有键闭合,则计数器周而复始反复计数,即反复进行扫描,一旦检出有键闭合,就发出一个脉冲使时钟振荡器停振,计数器随即停止计数。
单片机通过读取计数器的计数值来获取闭合键所在的行列位置,然后从ROM中查表
得到按键读数。
如果有两个键同时按下,则扫描到第一个闭合键时就停止扫描,把该键当作有效按键进行处理。
2.274922芯片(16键IC)的引脚排列
如图2所示:
X1~X4:
列线。
Y1~Y4:
行线。
OSC:
接振荡电容0.1μ,以便扫描矩阵键盘KM:
键盘消除抖动电路,并发出两种信号
(1)内部计数器停止计数。
(2)若有键按下,使DA脚由未按键时的低电平变为高电平,若按键未放开则一直保持高电平,当按键放开时,才转为低电平。
此引脚外接一个电容是OSC所接电容的10倍。
图2 74922(16键)引脚排列图
DA:
数据有效信号。
若无键按下,保持低电平。
若有键按下,变为高电平,直到键放开,才转为低电平。
/OE:
输出使能。
D~A:
按键值输出,按BCD码输出。
2.3电路设计思想
在设计单片机系统时,为了实现系统所需的多按键,多位十进制数显示的和节约I/O口资源,简化硬件电路要求,在串行口被用于其它用途的情况下,我们选用了一种新型的键盘、显示接口电路。
其设计思想为:
在显示部分:
用7根I/O线通过七段译码器(7447)和at89c51外接了8个LED数码管即可完成动态显示。
其中,段码采用硬件译码,单片机读到的键盘值送到P0口的低4位,经7447七段译码器译成段码送数码管。
而位线由P2口的P2.0~P2.78位控制。
在键盘部分:
键盘扫描由74922芯片来完成。
设计中用了5个I/O线于74922芯片相接。
其中4根I/O线(P1.0~P1.3)接74922的A、B、C、D引脚,向单片机传送键值的BCD码。
P1.4接74922的DA引脚,作为是否有键按下和按键是否放开的识别端。
程序中只要检测DA脚由低电平→高电平(有键按下)、高电平→低电平(键放开),就将74922的D、C、B、A(键值的BCD码)读入AT89C51。
这个键值再由P0口的低4位送给七段译码器7447,硬件译码后的段码送给数码管显示。
使得键盘控制程序相当简单,减轻了CPU用软件去扫描键盘,读取键值的负担,从而提高了CPU的利用率。
2.4BCD七段译码器7447
7447有4个BCD码输入端A、B、C和D,其中D为最高有效位,A为最低有效位,它们分别与输出端口中的4位相连。
7447的7个输出引脚a~g直接与LED的相应引脚相连,每个段中都串接一个限流电阻,其阻值为100Ω。
当灭灯输入/动态灭灯输出(BI/RBO)开路或为高电平而试灯输入为低电平,则所有输出端都为1。
BI/RBO是线与逻辑,作灭灯输入(BI)或动态灭灯(RBO)之用,或者兼为二者之用。
图3
图3为7447集成电路译码器之引脚图与真值表如表1。
在正常操作时,当输入DCBA=0010则输出abcdefg=0010010。
故使显示器显示"2"。
当输入DCBA=0110时,输出abcdeg=1100000,显示器显示"6"。
2.5747中LT、RBI、与BI/RBO之控制角
在7447中尚有LT、RBI与BI/RBO之控制脚,其功能分述如下:
该电路是由与非门、输入缓冲器和7个与或非门组成的BCD-7段译码器/驱动器。
通常是低电平有效,高的灌入电流的输出可直接驱动显示器。
7个与非门和一个驱动器成对连接,以产生可用的BCD数据及其补码至7个与或非译码门。
剩下的与非门和3个输入缓冲器作为试灯输入(LT)端、灭灯输入/动态灭灯输出(BI/RBO)端及动态灭灯输入(RBI)端。
该电路接受4位二进制编码—十进制数(BCD)输入并借助于辅助输入端状态将输入数据译码后去驱动一个七段显示器。
输出结构设计成能承受7段显示所需要的相当高的电压。
驱动显示器各段所需的高达24mA的电流可以由其高性能的输出晶体管来直接提供。
BCD输入计数9以上的显示图案是鉴定输入条件的唯一信号。
该电路有自动前、后沿灭零控制(RBI和RBO)。
试灯(LT)可在端处在高电
平的任何时刻去进行,该电路还含有一个灭灯输入(BI),它用来控制灯的亮度或禁止输出。
该电路在应用中可以驱动共阳极的发光二极管或直接驱动白炽灯指示器。
7447之输出系为驱动器设计,其逻辑0之吸入电流高达40mA,故在使用必须加 入330Ω左右电阻加以限流,以免过大电流流经LED而烧毁显示器,如图5所示。
图4DM7447A引脚功能图
图5
表1
[1].要求0—15时,灭灯输入(BI)必须开路或保持高电平,如果不要灭十进制数零,则动态灭灯输入(RBI)必须开路或为高电平。
[2].将一低电平直接输入BI端,则不管其他输入为何电平,所有的输出端均输出为低电平。
[3].当动态灭灯输入(RBI)和A,B,C,D输入为低电平而试灯输入为高电平时,所有各段输出都为0,并且动态灭灯输出(RBO)为低电平(响应条件)。
[4].当灭灯输入/动态灭灯输出(BI/RBO)开路或为高电平而试灯输入为低电平,则所有输出端都为1。
表中1=高电平,0=低电平。
BI/RBO是线与逻辑,作灭灯输入(BI)或动态灭灯(RBO)之用,或者兼为二者之用。
第3章硬件电路设计
3.1.理论分析与计算
3.1.1设计思想
在设计单片机系统时,为了实现系统所需的多按键多位十进制数显示的和节约I/O口资源,简化硬件电路要求,在串行口被用于其它用途的情况下,我们选用了一种新型的键盘、显示接口电路。
其设计思想为:
在显示部分:
用7根I/O线通过七段译码器(7447)和3-8线译码器(74LS138)外接了8个LE数码管即可完成动态显示。
其中,段码采用硬件译码,单片机读到的键盘值送到P0口的低4位,经7447七段译码器译成段码送数码管。
而位线由P0口的P0.4~P0.6三位经4LS138译码器控制。
在键盘部分:
键盘扫描由74922芯片来完成。
设计中用了5个I/O线于74922芯片相接。
其中根I/O线(P1.0~P1.3)接74922的A、B、C、D引脚,向单片机传送键值的BCD码。
P1.4接74922的DA引脚,作为是否有键按下和按键是否放开的识别端。
程序中只要检测D脚由低电平→高电平(有键按下)、高电平→低电平(键放开),就将74922的D、C、B、A(键值的BCD码)读入T89C51。
这个键值再由P0口的低4位送给七段译码器7447,硬件译码后的段码送给数码管显示。
使得键盘控制程序相当简单,减轻了CPU用软件去扫描键盘,读取键值的负担,从而提高了CPU的利用率。
3.1.2.程序设计流程
3.2.电路与程序设计
3.2.1.键盘、显示硬件电路如图6所示。
图6 键盘、显示接口电路
本电路的特点是:
不采用通常的总线接口方式,而是采用了非总线结构。
其优点在于减少了扩展I/O口部分的芯片使用,用单片机的I/O线直接与外部芯片连接,使
得硬件设计和软件编程相对简单。
同时在外部芯片的选用中,采用硬件译码和硬件编码键盘控制芯片,实现了用尽可能少的I/O线设计出尽可能大的键盘显示接口电路。
电路中,在4×4键盘中每个按键的值是固定的,具体位置如图4所示,所以编程时只要建立一个TABLE表,就可根据需要设计各种键盘。
3.2.2程序设计应用
设显示器缓冲区为40H~47H单元,起始时均已清零。
每次按键后读取的键值,放在40H单元,而原40H单元的内容(即前一次按键得值)移到47H单元,以此类推。
显示子程序对47H~40H单元的内容进行动态显示。
由此得出针对该硬件电路的键盘显示程序。
START:
JBP1.4,KEY;检测74922的DA脚=1?
DA=1,表示有键按下
acalldelay;调用显示子程序
KEY:
JBP1.4,$;按键放开否?
MOVA,P1;已放开,则读入74922的按键值
ANLA,#0FH;取低4位(74922的A~D)
MOVDPTR,#TABLE;到TABLE表中取码
MOVCA,@A+DPTR
xcha,47h;现按键值存入(47H)
3.2.3.程序设计
;*********************
;主程序
;**********************
ORG0000H
AJMPMAIN
ORG0003H
AJMPLOOP1
ORG0030H
MAIN:
MOVTCON,#00H
MOVIE,#85H
MOVP3,#0FFH
JBP1.4,KEY
AJMPMAIN
KEY:
JBP1.4$
MOVP2,#00H
MOVA,P1
ANLA,#0FH
MOVDPTR,#TABLE
MOVCA,@A+DPTR
;*********************
;显示子程序
;**********************
A0:
CJNEA,#00H,A1
SETBP2.0
MOVP0,A
JBP1.4,KEY
JNBP0.4,AA0
CLRP2.0
ACALLD_1S
SETBP2.0
ACALLD_1S
AA0:
SJMPA0
A1:
CJNEA,#01H,A2
SETBP2.1
MOVP0,A
JBP1.4,KEY
SJMPA1
A2:
CJNEA,#02H,A3
SETBP2.2
MOVP0,A
JBP1.4,KEY
SJMPA2
A3:
CJNEA,#03H,A4
SETBP2.3
MOVP0,A
JBP1.4,KEY
SJMPA3
A4:
CJNEA,#04H,A5
SETBP2.4
MOVP0,A
JBP1.4,KEY
SJMPA4
A5:
CJNEA,#05H,A6
SETBP2.5
MOVP0,A
JBP1.4,KEY
SJMPA5
A6:
CJNEA,#06H,A7
SETBP2.6
MOVP0,A
JBP1.4,KEY
SJMPA6
A7:
CJNEA,#07H,A8
SETBP2.7
MOVP0,A
JBP1.4,KEY
SJMPA7
TABLE:
;查表
DB00H,01H,02H,03H
DB04H,05H,06H,07H
DB08H,09H
;**********************
;加法和减法中断子程序
;**********************
LOOP1:
JNBP3.0,AAA
JNBP3.1,BBB
SJMPLOOP2
BBB:
DECA
MOVP0,A
ACALLD_1S
LOOP2:
JBP1.4,NEG
JNBP3.1,BBB
SJMPLOOP1
AAA:
INCA
A8:
MOVP0,A
ACALLD_1S
JNBP3.0,AAA
SJMPLOOP1
NEG:
RETI
;*****************
;延时子程序
;*****************
D_1S:
MOVR6,#100
D10:
CALLD10MS
DJNZR6,D10
RET
D10MS:
MOVR5,#10
D1MS:
MOVR4,#249
DL:
NOP
NOP
DJNZR4,DL
DJNZR5,D1MS
RET
END
*****************
闪烁子程序
;;*****************
第一位数字闪烁
jbp1.4,key
jnbp0.4,aa0
clrp2.0
acallD_1s
setbp2.0
acallD_1s
第二位数字闪烁
jbp1.4,key
jnbp0.4,aa1
clrp2.1
acallD_1s
setbp2.1
acallD_1s
第三位数字闪烁
jbp1.4,key
jnbp0.4,aa1
clrp2.2
acallD_1s
setbp2.2
acallD_1s
一直到第八位数字闪烁
jbp1.4,key
jnbp0.4,aa1
clrp2.7
acallD_1s
setbp2.7
acallD_1s
3.3.结果分析
4*4键盘控制数码管的显示,0—7可通过按键查表分别显示在数码管上,且数码管只能显示一位,即该系统只能实现1个按键按下时的显示。
当有按键按下时,数码管上显示出来,此时若开启P3.2口的中断,通过P3.0口按键(加1)和P3.1口按键(减1)来实现显示数字的加减。
没有中断时,P0.4口的按键按下,通过设置延时,可以实现显示数字的消隐与现实从而实现显示数字的闪烁
八位显示一个数字
。
中断加1显示
第四章.总结(经验教训)
单片机的功能真的很广泛,在拿到题目的一瞬间里我根本不知道从何下手,在通过到图书馆查阅资料,上网搜索材料,再加上在老师的耐心辅导和引导下我渐渐的摸清了思路,有了一个大概的系统思维,其实一个复杂的程序是由很多简单的子程序叠加而成的,通过查阅资料找到相关的芯片资料,特别是芯片的接口技术原理,慢慢的弄懂就可以连线画电路图,在写陈程序的过程中老师给了我很大的帮助,不懂的地反老师会提醒我,特别是在我的设计过程中遇到了很棘手的问题,我改换了芯片来做设计,在图书馆查了查,找到了功能相同的芯片74922和7499两芯片合起来实现hd7279的键盘显示功能。
经过老师的允许和指导,我终于顺利的做完了我的课程设计而且功能全部实现了,并且额外实现了按键闪烁功能,在设计闪烁时我们遇到了一个问题,在设计后几位显示闪烁程序出现错误,后来我们上网搜索知道是jnb跳转不过去,我们又加了个LJMP实现了长跳转。
课程设计虽然老师很严格,但正是老师的这种严格让我们的动手能力大大增强,我们都很理解老师的用心良苦,我很感谢有这次机会能够学到很多知识,也感谢老师的孜孜不倦,课程设计结束了,这次的经验和知识我是不会忘记的,感谢老师。
参考文献:
《AT89系列单片机原理与接口技术》王幸之、钟爱琴、王蕾、王闪编著北京航空航天大学出版2004年5月第一版
《电子设计自动化技术基础》马建国、孟宪元编清华大学出版2004年4月
《实用电子系统设计基础》姜威2008年1月
《单片机系统的PROTEUS设计与仿真》张靖武2007年4月