数码管显示和键盘扫描实验资料

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

实验三LED数码管动态显示及4 X4 键盘控制实验

一、实验目的

1.巩固多位数码管动态显示方法。

2.掌握行扫描法矩阵式按键的处理方法。

3.熟练应用AT89S52学习板实验装置,进一步掌握keil C51的使用方法。二、实验内容

使用AT89S52学习板上的4位LED数码管和4 X 4矩阵键盘阵列做多位数码管动态显示及行扫描法键盘处理功能实验。用P0口做数据输出,利用P1做锁存器74HC573的锁存允许控制,编写程序使4位LED数码管按照动态显示方式显示一定的数字;按照行扫描法编写程序对4 X 4矩阵键盘阵列进行定期扫描,计算键值并在数码管上显示。

三、实验系统组成及工作原理

1.4位LED数码管和4 X 4矩阵键盘阵列电路原理图

2.多位数码管动态显示方式

a b c d e f g dp com a b c d e f g dp

com

a b c d e f g dp

com

a b c d e f g dp

com

D0

IO(2)

IO(1)

说明4位共阴极LED动态显示3456数字的工作过程

首先由I/O口(1)送出数字3的段选码4FH即数据01001111到4个LED共同的段选线上,

接着由I/O口(2)送出位选码××××0111到位选线上,其中数据的高4位为无效的×,唯有送入左边第一个LED的COM端D3为低电平“0”,因此只有该LED的发光管因阳极接受到高电平“1”的g、d、c、b、a段有电流流过而被点亮,

也就是显示出数字3,而其余3个LED因其COM端均为高电平“1”而无法点亮;显示一定时间后,

再由I/O口(1)送出数字4的段选码66H即01100110到段选线上,接着由I/O 口(2)送出点亮左边第二个LED的位选码××××1011到位选线上,此时只有该LED的发光管因阳极接受到高电平“1”的g、f、c、b段有电流流过因而被点亮,也就是显示出数字4,而其余3位LED不亮;

如此再依次送出第三个LED、第四个LED的段选与位选的扫描代码,就能一一分别点亮各个LED,使4个LED从左至右依次显示3、4、5、6。

3.4 X 4 矩阵式按键扫描处理程序

行扫描法又称逐行零扫描查询法,即逐行输出行扫描信号“0”,使各行依次为低电平,然后分别读入列数据,检查此(低电平)行中是否有键按下。如果读得某列线为低电平,则表示此(低电平)行线与此列线的交叉处有键按下,再对该键进行译码计算出键值,然后转入该键的功能子程序入口地址;如果没有任何一根列线为低电平,则说明此(低电平)行没有键按下。接着进行下一行的“0”行扫描与列读入,直到8行全部查完为止,若无键按下则返回。

有时为了快速判断键盘中是否有键按下,也可先将全部行线同时置为低电平,然后检测列线的电平状态,若所有列线均为高电平,则说明键盘中无键按下,立即返回;若要有一列的电平为低,则表示键盘中有键被控下,然后再如上那样进行逐行扫描。

四、实验设备和仪器

PC机一台

AT89S52单片机学习板、下载线一套

五、实验步骤

1.按时实验要求编写源程序(实验前写)进行软件模拟调试。

2.软件调试好,连接硬件电路。

3.下载程序,进行硬件调试,观察数码管显示的情况,与设计的是否相同。

六、实验参考程序

1. 4位LED数码管动态显示扫描程序

ORG 0000H

MAIN:

MOV 30H,#0 ;定义4个字节空间,放置待显示数字“1、2、3、4”

MOV 31H,#1

MOV 32H,#2

MOV 33H,#3

MOV P0,#00H

DISP:

MOV R0,#30H ;把待显示数字首地址送给R0寄存器

MOV R1,#4 ;把R1作为显示数码管位数计数器

MOV R2,#0FEH ;把首位数码管的位选码暂存在R2寄存器中

MOV DPTR,#TAB ;把段选码存储空间的首地址给DPTR

LOOP1:

MOV A,@R0 ;把待显示数字的段选码提取出来

MOVC A,@A+DPTR;

MOV P0,A ;把段选码放在数据总线上

SETB P1.1 ;段选码锁存器的锁存允许置位

NOP

CLR P1.1

MOV P0, R2 ;把位选码放在数据总线上

SETB P1.2 ;位选码锁存器的锁存允许置位

NOP

CLR P1.2

RL A ;下一位待显示数码管位选码预处理

MOV R2,A

INC R0

ACALL DEL ;调用延时子程序

DJNZ R1,LOOP1;4位没有显示完,转去显示下一位

SJMP DISP ;4位显示完,再次进行新一轮的扫描/*定义段选码*/

TAB:

DB 0C0H;0

DB 0F9H;1

DB 0A4H;2

DB 0B0H;3

DB 099H;4

DB 092H;5

DB 082H;6

DB 0F8H;7

DB 080H;8

DB 090H;9

/*延时5ms子程序*/

DEL:

MOV R7,#10

LOOP2:

MOV R6,#250

DJNZ R6,$

DJNZ R7,LOOP2

RET

END

2. 键盘扫描及数码管动态显示程序

ORG 0000H

MAIN:

MOV 30H,#10 ;定义4个字节空间,放置待显示数字

MOV 31H,#10

MOV 32H,#10

MOV 33H,#10

MOV P0,#00H

MOV 40H,#0FFH;定义1个字节空间,放置键值

相关文档
最新文档