4×4矩阵式键盘识别关键技术.docx

上传人:p** 文档编号:1017417 上传时间:2024-06-15 格式:DOCX 页数:17 大小:92.96KB
下载 相关 举报
4×4矩阵式键盘识别关键技术.docx_第1页
第1页 / 共17页
4×4矩阵式键盘识别关键技术.docx_第2页
第2页 / 共17页
4×4矩阵式键盘识别关键技术.docx_第3页
第3页 / 共17页
4×4矩阵式键盘识别关键技术.docx_第4页
第4页 / 共17页
4×4矩阵式键盘识别关键技术.docx_第5页
第5页 / 共17页
4×4矩阵式键盘识别关键技术.docx_第6页
第6页 / 共17页
4×4矩阵式键盘识别关键技术.docx_第7页
第7页 / 共17页
4×4矩阵式键盘识别关键技术.docx_第8页
第8页 / 共17页
4×4矩阵式键盘识别关键技术.docx_第9页
第9页 / 共17页
4×4矩阵式键盘识别关键技术.docx_第10页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《4×4矩阵式键盘识别关键技术.docx》由会员分享,可在线阅读,更多相关《4×4矩阵式键盘识别关键技术.docx(17页珍藏版)》请在第壹文秘上搜索。

1、14.4X4矩阵式键盘辨认技术1 .实验任务如图4.14.2所示,用AT89S51并行口Pl接4X4矩阵键盘,以P1.O-P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键“0-F”序号。相应按键序号排列如图4.14.1所示日口H图4.14.12 .硬件电路原理图.7R.Kn1A73 .系统板上硬件连线(1.把“单片机系统“区域中P3.0P3.7端口用8芯排线连接到“4X4行列式键盘”区域中Cl-C4R1-R4端口上;(2.把“单片机系统”区域中P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中任一种ah端口上;规定:P0.0/AD0相应着

2、a,PO.1/AD1相应着b,P0.7/AD7相应着h。4 .程序设计内容(1.4X4矩阵键盘辨认解决(2.每个按键有它行值和列值,行值和列值组合就是辨认这个按键编码。矩阵行线和列线分别通过两并行接口和CPU通信。每个按键状态同样需变成数字量“0”和“I”,开关一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现。键盘解决程序任务是:拟定有无键按下,判断哪一种键按下,键功能是什么;还要消除按键在闭合或断开时抖动。两个并行口中,一种输出扫描码,使按键逐行动态接地,另一种并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而辨认按键,通过软件查表,查出该键功能。5 .程序框图6 .汇

3、编源程序KEYBUFEQU3011ORGOOHSTART:MOVKEYBUK#2WAIT:MOVP3,#OFFHC1.RP3.4MOV,P3AN1.A,#0FHXR1.A,#0FHJZNOKEYl1.CA1.1.DelyiomsMOVA,P3AN1.A,#0FHXR1.A,#0FHJZNOKEYlMOVA,P3AN1.A,#0FHCJNEA,#OEH,NKlMOVKEYBUF,#01.JMPDKlNK1:CJNEA,#ODH,NK2MOVKEYBUF,#11.JMPDKlNK2:CJNEA,#OBH,NK3MOVKEYBUF,#21.JMPDKlNK3:CJNEA,#07H,NK4MOVKEY

4、BUF,#31.JMPDKlNK4:NOPDKl:MOV,KEYBUFMOVDPTR,#TAB1.EMOVC,A+DPTRMOVPO,ADKIA:MOVA,P3AN1.A,#0FHXR1.A,#0FHJNZDKlANOKEYl:MOVP3,#OFFHC1.RP3.5MOVA,P3AN1.A,#OFHXR1.A,#OFHJZN0KEY21.CA1.1.DelyiomsAN1.A,#OFHXR1.A,#0FHJZN0KEY2MOVA,P3AN1.A,#OFHCJNEA,#OEH,NK5MOVKEYBUF,#41.JMPDK2NK5:CJNEA,#ODH,NK6MOVKEYBUK#51.JMPDK2

5、NK6:CJNE,#OBH,NK7MOVKEYBUF,#61.JMPDK2NK7:CJNEA,#07H,NK8MOVKEYBUF,#71.JMPDK2NK8:NOPDK2:MOV,KEYBUFMOVDPTR,#TAB1.EMOVCA,A+DPTRMOVPO,AAN1.A,#0FHXR1.A,#0FHJNZDK2ANOKEY2:MOVP3,#0FFHC1.RP3.6MOVA,P3AN1.A,#0FHXR1.A,#0FHJZN0KEY31.CA1.1.DelyiomsMOV,P3AN1.A,#0FHXR1.A,#0FHJZN0KEY3MOV,P3AN1.A,#0FHCJNEA,#OEH,NK9MO

6、VKEYBUF,#81.JMPDK3NK9:CJNEA,#ODH,NKlOMOVKEYBUF,#91.JMPDK3NKIO:CJNEA,#OBH,NKll1.JMPDK3NKll:CJNEA,#0711,NK12MOVKEYBUF,#111.JMPDK3NK12:NOPDK3:MOVA,KEYBUFMOVDPTR,STAB1.EMOVCA,A+DPTRMOVPO,ADK3A:MOVA,P3AN1.A,#0FHXR1.A,#0FHJNZDK3AN0KEY3:MOVP3,#0FFHC1.RP3.7MOVA,P3AN1.A,#0FHXR1.A,#OFHJZN0KEY41.CA1.1.Delyioms

7、MOV,P3XR1.A,#0FHJZN0KEY4MOVA,P3AN1.A,#0FHCJNEA,#OEH,NK13MOVKEYBUF,#121.JMPDK4NK13:CJNEA,#ODH,NK14MOVKEYBUF,#131.JMPDK4NK14:CJNEA,#OBH,NK15MOVKEYBUF,#141.JMPDK4NK15:CJNE,#07H,NK16MOVKEYBUF,#151.JMPDK4NK16:NOPDK4:MOVA,KEYBUFMOVDPTR,STAB1.EMOVCA,A+DPTRMOVPO,ADK4A:MOVA,P3XR1.A,#OFHJNZDK4AN0KEY4:1.JMPWAI

8、TDE1.YIOMS:MOVR6,#10DI:MOVR7,#248DJNZR7,$DJNZR6,D1RETTAB1.E:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HEND7 .C语言源程序includeunsignedcharcodetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsignedchartemp;unsignedcharkey;unsignedchari,j;void

9、main(void)while(l)P3=0xff;P3_4=0;temp=P3;temp=temp&OxOf;if(temp!=OxOf)for(i=50;i0;i)for(j=200;j0;j);temp=P3;temp=temp&OxOf;if(temp!=0x0f)temp=P3;temp=temp&OxOf;switch(temp)case0x0e:key=7;break;case0x0d:key=8;break;caseOxOb:key=9;break;case0x07:key=10;break;)temp=P3;P1_O=P1_O;PO=tablekey;temp=temp&Ox

10、Of;whiIe(temp!=OxOf)(temp=P3;temp=temp&OxOf;)P3=0xff;P3_5=0;temp=P3;temp=temp&OxOf;if(temp!=OxOf)for(i=50;i0;i一)for(j=200;j0;j);temp=P3;temp=temp&OxOf;if(temp!=OxOf)(temp=P3;temp=temp&OxOf;switch(temp)caseOxOe:key=4;break;caseOxOd:key=5;break;caseOxOb:key=6;break;case0x07:key=ll;break;temp=P3;P1_O=P

11、1_O;PO=tablekey;temp=temp&OxOf;while(temp!=OxOf)(temp=P3;temp=temp&OxOf;)P3=0xff;P3_6=0;temp=P3;temp=temp&OxOf;if(temp!=OxOf)(for(i=50;i0;i-)for(j=200;j0;j);temp=P3;temp=temp&OxOf;if(temp!=OxOf)(temp=P3;temp=temp&OxOf;switch(temp)caseOxOe:key=l;break;caseOxOd:key=2;break;caseOxOb:key=3;break;case0x0

12、7:key=12;break;)temp=P3;P1.O=P10;PO=tablekey;temp=temp&OxOf;while(temp!=OxOf)(temp=P3;temp=temp&OxOf;P3=0xff;P3_7=0;temp=P3;temp=temp&OxOf;if(temp!=OxOf)(for(i=50;i0;i)for(j=200;j0;j-);temp=P3;temp=temp&OxOf;if(temp!=OxOf)temp=P3;temp=temp&OxOf;switch(temp)case0x0e:key=0;break;caseOxOd:key=13;break;caseOxOb:key=14;break;case0x07:key=15;break;)temp=P3;Pl_0=l_0;P0=tablekey;temp=temp&OxOf;whiIe(temp!=OxOf)(temp=P3;temp=temp&OxOf;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!