写一个2*4的矩阵式按键的检测程序,方便移植
计算机表面5 1 线8 7 7 A计算机表面没有源代码4 ×4 矩阵键盘识别技术实验任务图4 .1 4 .2 显示8 9 S5 1 平行端口P1 连接到4 ×4 矩阵键盘P1 .0-P1 .3 ,因为您可以是硬件电路的图。系统区域P3 .0-P3 .7 端口连接到4 x4 键盘键盘范围C1 -C4 R1 -R4 端口; 。
行列线通信CPU通信每个密钥状态需要更改相同的数字01 关闭端(列连接VCC上的列),以将程序连接到输入号码0,以实现任务键盘任务程序:确定哪些键键键以确定哪个键按钮函数; 在并行门中输入扫描代码,以便将键连接到并行端口中的键入口状态。
hxrla,#0fhjznokey1 lcalldeldy1 0msmova,p3 anla,#0fhxrla,#0fhjznokey1 mova1 mova,p3 anla,#0fhcjnea,#0eh,#0eh,nk1 movkeybuf,nk1 movkeybuf,#0ljmpdk1 nk1 nk1 :cjnea:cjnea,cjnea,cjnea,cjnea,cjnea,#0dne,cjnea,#0ddnea,#0dne,#0. 0. 0. 0. 0. 0. 0. 0. NK2 MOVBUF,#1 LJMPK,#cjnea,#0bh, nkkey, #leplje,#leplje,#0BHYNYN KEYBUF,#3 LJMPDK1 NK1 NK4 : NOPDK1 : MOVA, KEYBUFMOVDPTTR,#TABLMOVCA,#tabovca, p3 anla,#0fhxrla,#0fhjnzdk1 anokey1 :movp3 ,#0ffhclrp3 .5 mova,p3 anla,#0fhxrla, #fhjznokey2 lcalldely1 0msmovalanokonolonolononononononononononononononononolonolonolononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononolonolonolonolonolonolonolonolonololonololonololonololonolonololonololonololonololova。
,p3 anla,#0fhcjnea,#0EH,nk5 movkeybuf,#4 ljmpdk2 n cjnea,#07 H,nop,@@ ykeybuf,#7 ljmpdk2 nk8 :trmovp0,adk2 a:mova,p3 anla,#0fhxrla,#0fhjnzdk2 anokey2 :mov p3 ,#0ffhclrp3 .6 mov。
p3 anla,#0fhxrla,#0fhjznonkey3 lcalldeldeldeldeldeldely1 0mova,p3 anla,#0fhxrla,nea,nea,#0dh,nk1 0movkeybuf,#9 ljmpdk3 nk1 0 CJNEA,#07 H,NK1 2 MOVKEYBUF,#1 1 LJMPDK3 NK1 2 :NOPDK3 :MOVA,KEYBEBMOVDDTR#MOVA,MOVA,@DPTRMOVP0,ADK3 A:MOVA:MOVA:MOVA:MOVA@MOVA@DPTRMOVP0,DPTRMOVP0,adk3 a,adk3 a,adk3 a,adk3 a,adk3 a,adk3 a,adk3 a,adk3 a,ada,ada,ada, A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A,ADK3 A。
movp3 ,#0ffhclrp3 .7 mova,p3 anla,#0fhxrla,#0fhjznokey4 lcally1 0msmova,p3 anla,#0fhxrla,#0fhjznokeyy4 mova,p3 anla,p3 anla,p3 anla,p3 anla,p3 anla,p3 anla,p3 anla,#0fhcjea,#0fhcjea,nk1 3 mow,nk1 3 mow,nk1 3 mow,nk1 3 mow,nk1 3 mow,nk1 3 mow, Niljmd4 nk1 3 : CJNEA,#0DH, NJMDK4 NK1 3 : CJNEA,#0DH, Nepy4 NK4 NK1 3 : CJNEA,#0BH, NK1 5 MOVKEKYBUF,#1 4 LJMPDK4 NK1 5 : CJNEA, NKJNEA, NKJNEA,#07 H #1 5 ljmpdk4 nk1 6 :nopdk4 :mova,keybufmovdpttt,#tablemovca,@a+dptrmovp0,adk4 a:mova,p3 anla,#0fhxrla,#0fhjnzdk4 anchuyy4 :#0fhjnzdk4 anchuyy4 : LJMPWAITDAWAWAWN0L2 0DYCDYCDKDKDKDKDKDKDYDOOCEYY4 :LJMPWAITDPEPAPAWAWALL2 ,MOVAL0。
$ djnzr6 ,d1 retable:db3 fh,06 h,5 bh,4 fh,6 6 h,6 6 h,6 dh,7 dh,07 hdb7 fh,6 fh,6 fh,7 7 h,7 h,7 ch,3 9 h,3 9 h,5 h,5 h,7 9 h,7 9 h,7 9 h,7 9 h,7 1 hendc Language source source programs Programs Programs x5 E x5 E,0x7 .0x7 .0x7 .0x7 .0 x7 .0x7 .0x7 .0 x7 1 1 }; Usignertchartemp; UsignertCharkey; Jusigncharri,J; voidmain(void){while(1 ){p3 = 0xff; p3 _4 = 0; temp = p3 ; temp = temp&0x0f; if(temp!= 0x0f){for(i = 5 0; i> 0; tem = p 3 ; temp = temp&0x0f; switch(temp){case0x0e:key = 7 ; bre ak; case0x0d:key = 8 ; key = 8 ; breks0b:breks = 9 ; tast = 9 ; case0x07 ; case0x07 :key; key; key; p1 _0 = 〜p1 _0; 0x0f){temp = case = break = key = key = key = key = key = key = key = key = key = key = key = key = break = key = key = brea = break = break = key = break = break = break = break = case = case = key = key = key = key = key = key = key = key = break = break = key = key = key = key = key = key = break = key = key = bey = break; break; = p1 _0 = 〜p1 _0; p0 = temp = temp&0x0f temp = temp = temp&0x0f; p! = 0x0f){temp = p3 ; temp = temp&0x0f; switch(temp){case0x0e:key = 1 ; 休息; case0x0d:key = 2 ; 休息; case0x0b:key = 3 ; 休息; case0x07 :key = 1 2 ; break;} temp = p1 _ p1 _0 = 〜〜 iSe(temp!= =0x0f){temp = p3 ; temp = temp&0x0f;}}}} p3 = 0xff; p3 _7 = 0; temp = p3 ; temp = temp&0x0f; if(temp!= 0x0f){for(i =。
temp = temp&0x0f; switch(temp){c ase0x0e:key = 0; break; break; case0x0d:case0x0d:key = 1 3 ; break; break; case0x0b; case0x0b; case = 1 4 ; case0x07 ; case0x07 :case0x07 :key = 1 5 ; p1 _0; pe0 = table [key];
单片机中的4×4矩阵键盘的键值怎么求?
MicroController书籍中应该有一些,请检查更多信息。由于它是4 x4 ,即4 行和4 列,总共需要8 个i/o端口,并且有8 个数据(例如,四个高四个是行,低四个列是列是列,而4 件是列的零件):xxxxxxxxxx。
您还需要组合程序以编码键值。
与按键相对应的键值代码为0x2 1 当然,为了使用密钥按下的编码后,可以分配一个值。
示例://获取键值编码。
按{delay(1 00); // debounce if(cord_h!= 0x0f){cord_h = p3 &0x0f; //读取列线值p3 = cord_h | 0xf0; //输出当前列线值cord_l = p3 &0xf0; // les行线值返回{case0x7 e:keyVal = 0; 休息; // 0按相应的键显示相应的代码值C ase0x7 d:keyVal = 1 ; 休息; // 1 case0x7 b:keyVal = 2 ; 休息; // 2 case0x7 7 :keyVal = 3 ; 休息; // 3 case0xbe:keyVal = 4 ; XDE:keyVal = 8 break; // 8 case0xdd:keyVal = 9 ; 休息; // 9 case0xdb:keyVal = 1 0; 休息; // acase0xd7 :keyVal = 1 1 ; 休息; // bcase0xee:keyVal = 1 2 ; keysesy = case0xed:keyVal = 1 3 ; 休息; // dase0xeb:key0xed:keyval = 1 3 ; f}
单片机4*4矩阵键盘两位数码管显示0—16
步骤如下:1 将4 x4 矩阵键盘连接到微控制器,然后将数字管连接到微控制器。2 编写程序以进行键盘扫描和数字管屏幕。
3 使用行扫描方法识别键盘条目。
将行高度放置并逐步扫描列线。
4 使用两位数的数字管显示0-1 6 的值。
将数字管段选择线连接到微控制器GPIO引脚,然后将BIT选择线连接到另一个GPIO PIN。
5 为了消除抖动密钥的影响,可以将Dejitter的逻辑添加到程序中。