- 1、本文档共198页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2) 行列式键盘接口及工作原理 为了减少键盘与单片机接口时所占用I/O线的数目,在键数较多时,通常都将键盘排列成行列矩阵形式,如图9-6所示。 以图9-6所示的4×4键盘为例,说明行扫描法识别哪一个按键被按下的工作原理。 首先判别键盘中有无键按下,由单片机I/O口向键盘送(输出)全扫描字,然后读入(输入)列线状态来判断。方法是: 向行线(图中水平线)输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根列线电平被拉至低电平,从而使列输入不全为1。 判断键盘中哪一个键被按下是通过将行线逐行置低电平后,检查列输入状态实现的。方法是: 依次给行线送低电平,然后查所有列线状态,称行扫描。如果全为1,则所按下的键不在此行;如果不全为1,则所按下的键必在此行,而且是在与零电平列线相交的交点上的那个键。 (1) 行扫描法识别键号(值)的原理 行扫描法识别键号的工作原理如下: 将第0行变为低电平,其余行为高电平时,输出编码为1110。然后读取列的电平,判别第0行是否有键按下。在第0行上若有某一按键按下,则相应的列被拉到低电平,则表示第0行和此列相交的位置上有按键按下。若没有任一条列线为低电平,则说明0行上无键按下。 将第1行变为低电平,其余行为高电平时,输出编码为1101。然后通过输入口读取各列的电平。检测其中是否有变为低电平的列线。若有键按下,则进而判别哪一列有键按下,确定按键位置。 将第2行变为低电平,其余行为高电平时,输出编码为1011。判别是否有哪一列键按下的方法同上。 将第3行变为低电平,其余行为高电平时,输出编码为0111。判别是否有哪一列键按下的方法同上。 在扫描过程中,当发现某行有键按下,也就是输入的列线中有一位为0时,便可判别闭合按键所在列的位置,根据行线位置和列线位置就能判断按键在矩阵中的位置,知道是哪一个键按下。 (2) 键盘扫描工作过程 按键扫描的工作过程如下: ① 判断键盘中是否有键按下; ② 进行行扫描,判断是哪一个键按下,若有键按下,则调用延时子程序去抖动; ③ 读取按键的位置码; ④ 将按键的位置码转换为键值(键的顺序号)0、1、2…、F。 图9-7所示为4×4键盘扫描流程图。 键的位置码及键值的译码过程 上述行扫描过程结束后得到的行号存放在R0中,列号存放在R2中. 键值(号)的获得(译码)通常采用计数译码法。这种方法根据矩阵键盘的结构特点,每个按键的键值 键值=行号×每行的按键个数+列号, 即键号(值)= 行首键号+列号 第0行的键值为: 0行×4+列号(0~3)为0、1、2、3; 第1行的键值为: 1行×4+列号(0~3)为4、5、6、7; 第2行的键值为: 2行×4+列号(0~3)为8、9、A、B; 第3行的键值为: 3行×4+列号(0~3)为C、D、E、F。 4×4键盘行首键号为0、4、8、C,列号为0,1,2,3。 所以键值译码子程序为DECODE,该子程序出口: 键值在A中。 (3) 键盘扫描子程序(参见图9-7) (3) 键盘扫描子程序(参见图9-7) 例9-2 设计一个2×2行列式键盘,并编写键盘扫描子程序。 解: 原理如图9-8所示。 ① 判断是否有键按下: 将列线P1.0、P1.1送全0,查P0.0、P0.1是否为0。 ② 判断哪一个键按下: 逐列送0电平信号,再逐行扫描是否为0。 ③ 键号=行首键号+列号 2. 中断扫描方式 为了提高CPU的效率,可以采用中断扫描工作方式,即只有在键盘有键按下时才产生中断申请;CPU响应中断,进入中断服务程序进行键盘扫描,并做相应处理。中断扫描工作方式的键盘接口如图9-9所示。 P1.4~P1.7作键输出线,P1.0~P1.3作扫描输入线。 扫描时,使P1.4~P1.7位清0。 当有键按下时,INT1端为低电平,向CPU发出中断申请。若CPU开放外部中断,则响应中断请求,进入中断服务程序。 3. 键操作及功能处理 若图9-6中为4×8的32键,设0、1、2、…、E、F共16个键为数字键;其他16个键为功能键,键值为16~31,即10H~1FH,各功能键入口程序地址标号分别为AAA、BBB、…、PPP。 当对键盘进行扫描并求得键值后,还必须做进一步处理。方法是首先判别其是功能键还是数字键。若为数字键,则送显示缓冲区进行显示;若为功能键,则由散转指令“JMP 三. LED显示器与89C51接口及显示子程序 图9-14图中,P0口输出段选码,P1口输出位选码,位选码占用输出口的线数决定于显示器位数,比如6位就要占6条。 75452(或7406)是反相驱动器(30 V高电压,OC门),这是因为89C51 P1口正逻辑输出的位控与共阴极LED要求的低电平点亮正好相反,即当P1口位控线
文档评论(0)