网站大量收购闲置独家精品文档,联系QQ:2885784924

单片机原理与应用设计(C51编程+Proteus仿真)(第4版)课件 第5章 开关、键盘与显示接口设计.ppt

单片机原理与应用设计(C51编程+Proteus仿真)(第4版)课件 第5章 开关、键盘与显示接口设计.ppt

  1. 1、本文档共147页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

下面介绍查询方式的矩阵式键盘程序设计。【例5-13】对图5-26矩阵式键盘,编写查询式的键盘处理程序。先判有无键按下,即把所有行线P1.0~P1.3均置为低,然后检测各列线状态,若列线不全为高电平,则表示键盘中有键被按下;若所有列线列均为高电平,说明键盘中无键按下。在确认有键按下后,即可查找具体闭合键位置,其方法是依次将行线置为低电平,再逐行检查各列线的电平状态。若某列为低,则该列线与行线交叉处键就是闭合键。判断有无键按下,以及获取键值的参考程序如下: *#includereg51.h#voiddelay10ms(void) //延时函数 { unsignedchari; for(i=0;i200;i++){}}?unsignedcharkey_scan(void) //键盘扫描函数{ unsignedcharcode_h; //行扫描值 unsignedcharcode_l; //列扫描值 P1=0xf0; //P1.0~P1.3行线输出都为0,准备读列状态 if((P10xf0)!=0xf0) //如果P1.4~P1.7不全为1,则可能有键按下 { delay10ms(); //延时消抖 if((P10xf0)!=0xf0)//重读P1.4~P1.7,若还是不全为1,则一定有键按下*{ code_h=0xfe; //P1.0行线置为0,开始行扫描 while((code_h0xf0)!=0xf0)//判是否扫描到最后一行,若不是,则继续扫描{ P1=code_h; //P1口输出行扫描值 code_l=P1; if((code_l0xf0)!=0xf0) //如果P1.4~P1.7不全为1,则该行中有键按下{ code_l=~code_l; switch(code_l){ case0x11:return(0); case0x12:return(1); case0x14:return(2); case0x18:return(3); case0x21:return(4); case0x22:return(5); * case0x24:return(6); case0x28:return(7); case0x41:return(8); case0x42:return(9); case0x44:return(10); case0x48:return(11); case0x81:return(12); case0x82:return(13); case0x84:return(14); case0x88:return(15); default:return(0xff); }} else //该行无键按下,往下执行 code_h=(code_h1)|0x01; //行扫描值左移,准备扫描下一行}}}* return(0xff); //无键按下,返回0x0ff}?voidmain(void){ unsignedcharkey; while(1){ key=keyscan(); //调用键盘扫描函数,返回的键值送变量key delay(); //延时}}*【例5-14】数码管显示4×4矩阵键盘键号。单片机的P1口的P1.0~P1.7连接4×4矩阵键盘,矩阵中各键编号见图5-27。数码管显示由P0口控制,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应键号。例如,1号键按下时,数码管显示“1”;E键按下时,数码管显示“E”等等。*图5-27数码管显示4×4矩阵键盘键号的原理电路参考程序如下:#includereg51.h#defineucharunsignedcharsbitL1=P1^0; //定义列sbitL2=P1^1;sbitL3=P1^2;sbitL4=P1^3;uchardis[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档