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

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数码管显示和键盘扫描实验资料

实验三 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.多位数码管动态显示方式 说明4位共阴极LED动态显示3456数字的工作过程 首先由I/O口(1)送出数字3的段选码4FH即数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即段选线上,接着由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

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档