数码管显示和键盘扫描实验资料_第1页
数码管显示和键盘扫描实验资料_第2页
数码管显示和键盘扫描实验资料_第3页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三 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

2、数码管和4 X 4矩阵键盘阵列电路原理图Ml-b I 1 II Ir=TDrrrLI“Ly川/ *2多位数码管动态显示方式02)说明4位共阴极LED动态显示3456数字的工作过程首先由I/O 口 1 送出数字3的段选码4FH即数据01001111到4个LED共同 的段选线上,接着由I/O 口 2送出位选XXXX 0111到位选线上,其中数据的高4位为 无效的X,唯有送入左边第一个 LED的COM端D3为低电平“0,因此只有该LED 的发光管因阳极接受到高电平 “ 1 的g、d、c、b、a段有电流流过而被点亮,也就是显示出数字 3,而其余3个LED因其COM端均为高电平“ 1而无法点亮;显示一定

3、时间后,再由I/O 口 1 送出数字4的段选码66H即01100110到段选线上,接着由I/O 口 2送出点亮左边第二个LED的位选码XXXX 1011到位选线上,此时只有该 LED的发光管因阳极接受到高电平 “ 1 的g、f、c、b段有电流流过因而被点亮,也 就是显示出数字4,而其余3位LED不亮;如此再依次送出第三个LED、第四个LED的段选与位选的扫描代码,就能一一 分别点亮各个LED,使4个LED从左至右依次显示3、4、5、6。3.4 X 4矩阵式按键扫描处理程序行扫描法又称逐行零扫描查询法,即逐行输出行扫描信号 “ 0 ,使各行依次为低电平,然后分别读入列数据,检查此低电平行中是否有

4、键按下。如果读得某列线为低电平,那么表示此低电平行线与此列线的交叉处有键按下,再对该键进行译 码计算岀键值,然后转入该键的功能子程序入口地址;如果没有任何一根列线为低电平,那么说明此低电平行没有键按下。接着进行下一行的“0行扫描与列读入,直到8行全部查完为止,假设无键按下那么返回。有时为了快速判断键盘中是否有键按下,也可先将全部行线同时置为低电平,然后检测列线的电平状态,假设所有列线均为高电平,那么说明键盘中无键按下,立即 返回;假设要有一列的电平为低,那么表示键盘中有键被控下,然后再如上那样进行逐 行扫描。四、实验设备和仪器PC机一台AT89S52单片机学习板、下载线一套五、实验步骤1 按时

5、实验要求编写源程序实验前写进行软件模拟调试。2 软件调试好,连接硬件电路。3 下载程序,进行硬件调试,观察数码管显示的情况,与设计的是否相同六、实验参考程序1.4位LED数码管动态显示扫描程序ORG 0000HMAIN:MOV 30H,#0;定义4个字节空间,放置待显示数字“1、2、3、4MOV 31H,#1MOV 32H,#2MOV 33H,#3MOV P0,#00HDISP:MOV R0,#30HMOV R1,#4MOV R2,#0FEH;把待显示数字首地址送给R0存放器;把R1作为显示数码管位数计数器;把首位数码管的位选码暂存在R2存放器中MOV DPTR,#TAB ;把段选码存储空间的

6、首地址给 DPTR LOOP1:MOV A,R0;把待显示数字的段选码提取出来MOVC A,A+DPTR;MOV P0,A;把段选码放在数据总线上SETB P1.1;段选码锁存器的锁存允许置位NOPCLR P1.1MOV P0, R2;把位选码放在数据总线上SETB P1.2;位选码锁存器的锁存允许置位NOPCLR P1.2RL A;下一位待显示数码管位选码预处理MOV R2,AINC R0ACALL DEL;调用延时子程序DJNZ R1,LOOP1;4 位没有显示完,转去显示下一位SJMP DISP ;4位显示完,再次进行新一轮的扫描/*定义段选码*/TAB:DB0C0H;0DB0F9H;1

7、DB0A4H;2DB0B0H;3DB099H;4DB092H;5DB082H;6DB0F8H;7DB080H;8DB090H;9/*延时5ms子程序*/DEL:MOV R7,#10LOOP2:MOV R6,#250DJNZ R6,$DJNZ R7,LOOP2RETEND2.键盘扫描及数码管动态显示程序ORG 0000HMAIN:MOV 30H,#10;定义4个字节空间,放置待显示数字MOV 31H,#10MOV 32H,#10MOV 33H,#10MOV P0,#00HMOV 40H,#0FFH;定义1个字节空间,放置键值KEY: ACALL KEYSCAN ; 调用键盘全扫描子程序JNC L

8、K1ACALL DISPLAYAJMP KBZ;有按键按下,转去延时去抖;无按键按下,调用显示子程序;送无键按下标志LK1:ACALL DISPLAY;两次调用显示,实现延时功能ACALL DISPLAYACALL KEYSCAN1;延时去抖后,再次调用键盘全扫描子程序JNZ LK2;确实有按键按下,转入逐行扫描AJMP KBZ;抖动,无按键/*逐行扫描程序模块*/LK2:MOV R7,#0EFH ;第一行行线置为0MOV R6,#00H;行数存放器COL0: MOV P3,R7;第一行行线置为0MOV A,P3;读入列线状态JB ACC.O,COL1 ;假设不是第一列按键按下,转查第二列MO

9、V A,#01H ;假设是第一列按键按下,那么记以下值为1AJMP LKP;转去计算键值COL1: JB ACC.1,COL2;假设不是第二列按键按下,转查第二列MOV A,#02H;假设是第二列按键按下,那么记以下值为2AJMP LKP;转去计算键值COL2: JB ACC.2,COL3;假设不是第三列按键按下,转查第四列MOV A,#03H ;假设是第三列按键按下,那么记以下值为 3AJMP LKP;转去计算键值C0L3: JB ACC.3,NEXTR ;假设不是第四列按键按下,转去扫描下一行MOV A,#04HAJMP LKP;假设是第四列按键按下,那么记以下值为4;转去计算键值/*键值

10、计算程序键值=行值X 4 +列值*/LKP:MOV R5,A;MOV A,R6MOV B,#04HMUL ABADD A,R5MOV 40H,AMOV A,40HMOV B,#10 ;DIV ABMOV 32H,AMOV 33H,BACALL DISPLAY ;AJMP KEY/*下一行扫描值预处理*/NEXTR: INC R6;MOV A,R7 ;JNB ACC.7,KBZ ;RLA ;MOV R7,AFF表示键值AJMP COL0KBZ:MOV 40H,#0FFH;假设无按键按下,那么用AJMP KEY/*键盘全扫描子程序*/KEYSCAN:MOV P3,#0FH ;NOPMOV P3,#0FH;MOV A,P3CPL AANL A,#0FHRET/*LED数码管显示键值子程序 */DISPLAY:MOV R0,#30H;MOV R1,#4;MOV R2,#0FEH;MOV DPTR,#TAB;LOOP1:MOV A,R0;把待显示数字的段选码提取出来MOVC A,A+DPTR;MOV P0,A;把段选码放在数据总线上SETB P1.1;锁存器的锁存允许置位NOPCLR P1.1MOV A,R2;把段选码放在数据总线上MOV P0,ASETB P1.2;NOPCLR P1.2RL AMOV R2,AINC R0ACALL DELDJNZ R1,LOOP1RET/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论