第十章显示键盘扩展方法08重点解析.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.1 MCS-51单片机与LED显示器的接口技术 LED显示器从外观可分为 “8”字形的七段数码管、米字形数码管、点阵块、矩形平面显示器、数字笔划显示器等。 三、LED数码管的显示方式 1)静态显示方式 例1:单片机P1、P2口实现动态显示 例2:单片机P1口实现动态显示电路 例3: 8255/8155实现动态显示电路的接口 静态显示方式优缺点 静态显示方式的各数码管在显示过程中持续得到送显信号,与各数码管接口的I/O口线是专用的。其特点是显示稳定,无闪烁,用元器件多,占I/O线多,无须扫描。系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,节省CPU时间,提高CPU的工作效率,编程简单。 小结 利用单片机的并行端口,配合软件编程可以方便的实现多位数的数码管动态显示。 如果单片机的端口资源有限时,可以通过使用8155/8255扩展电路实现动态显示。 由于采用动态显示,所以电路简化,显示功耗低。但动态显示占用个单片机大量的资源,使单片机不得不把大量的时间用于动态扫描上。 解决上面问题的方法之一是使用专用的“动态键盘扫描/显示芯片”8279,利用8279内部的时序电路完成动态显示的操作。这样将单片机解放出来,只要用一条指令将要显示的数据送入8279的内部“显示RAM”中,剩下由8279进行动态扫描/ 显示。 在设计键盘接口时,解决以下几个问题: ?1、 开关状态的可靠输入 硬件去抖动电路 软件去抖动 2、键盘状态的监测方法 中断方式 查询方式 3、键盘编码方法 4、键盘控制程序的编制 检测有无按键按下,并采取硬件或软件措施去抖动 有可靠的逻辑处理办法,每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序 准确输出按键值(或键号),以满足跳转指令要求 键盘扫描原理(获取键值): 1、判断是否有按键( P1.3~P1.0 =1111B)。若读回的列值≠1111B时,则有按键; 2、防抖后从行线开始扫描,即P1.7~P1.4逐一输出高电平,并从列线读取列值,当读回的列值≠1111B时,即捕捉到按键; 3、将此时的行值(0001B)和列值(1101B)进行组合得关键=1DH 4、将此关键字送A查表,则查表的次数减一便是键值。 思考题:按照下图的键盘定义构造关键字表 例:由8155/8255构成的键盘扫描电路 【是否有按键操作】: 由8155的B口输出6位全“1”行扫描信号,经反向器输出变为低电平送到6条行线上,再从C口输入5位的列值。 ①当没有按键操作时,C口输入将是1FH(不考虑高三位)。②如果C口输入的数据≠1FH则表明有按键操作。 MOV A,#3FH ;准备从C口输出 MOV DPTR,#8155B ;选择8155的B口 MOVX @DPTR,A ;从C口输出3FH MOV DPTR,#8155C ;选择8155的C口 MOVX A,@DPTR ;从C口读入列值 ANL A,#1FH ;屏蔽高三位 CJNE A,1FH,NEXT1 ;有按键转NEXT1 SJMP NEXT4 ;无按键转NEXT4 【按键的防抖和窜键处理】: 任何一个机械按键在操作时都有抖动,消除的方法主要是靠延时解决,一般延时20ms即可; “窜键”是指同时按下两个或两个以上的键。当发生窜键时,退出键盘扫描程序。 使用一个寄存器(R2=00H)来作为窜键标志,在进行6条行扫描的完整周期中,每当检出有按键就将R2+1。这样如果无窜键时,R2=0或=1,否则退出整个程序。 ACALL DS20ms ;调20ms延时子程序 MOV R2,#00H ;窜键标志原始清零 【按键的行值和列值的读取】:从8155的B口逐行对键盘扫描,若从8155的C口读到的列值不等于1FH时,此时的行值和列值就是按键所处的位置。结果,行值送R3,列值送R4 。 MOV R1,#01H ;行扫描初值送R1 LOOP: MOV DPTR,#8155B ;选8155的B口 MOV A,R1 ;行扫描值送A MOVX @DPTR,A ;从B口输出行值 MOV DPTR,#8155C ;选8155的C口 MOVX A,@DPTR ;从C口读入列值 ANL A,#1FH ;屏蔽

文档评论(0)

我是兰花草 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档