ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:15.97KB ,
资源ID:11858447      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11858447.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机矩阵键盘设计方案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机矩阵键盘设计方案.docx

1、单片机矩阵键盘设计方案1、设计原理(1)如图14.2所示,用单片机的并行口P3连接44矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键 “0-F”的序号。(2)键盘中对应按键的序号排列如图14.1所示。2、参考电路图14.2 44矩阵式键盘识别电路原理图3、电路硬件说明(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“44行列式键盘”区域中的M1-M4,N1-N4端口上。(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a

2、-h端口上;要求:P0.0对应着a,P0.1对应着b,P0.7对应着h。4、程序设计内容(1)44矩阵键盘识别处理 。(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。5、程序流程图(如图14.3

3、所示)6、汇编源程序;定义单元;COUNT EQU 30H;入口地址;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;主程序入口;ORG 0100HSTART: LCALL CHUSHIHUALCALL PANDUANLCALL XIANSHILJMP START;初始化程序;CHUSHIHUA: MOV COUNT,#00HRET;判断哪个按键按下程序;PANDUAN: MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FH

4、XRL A,#0FHJZ SW1LCALL DELAY10MSJZ SW1MOV A,P3ANL A,#0FHCJNE A,#0EH,K1MOV COUNT,#0LJMP DKK1: CJNE A,#0DH,K2MOV COUNT,#4LJMP DKK2: CJNE A,#0BH,K3MOV COUNT,#8LJMP DKK3: CJNE A,#07H,K4MOV COUNT,#12K4: NOPLJMP DKSW1: MOV P3,#0FFHCLR P3.5MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW2LCALL DELAY10MSJZ SW2MOV A,P3ANL A

5、,#0FHCJNE A,#0EH,K5MOV COUNT,#1LJMP DKK5: CJNE A,#0DH,K6MOV COUNT,#5LJMP DKK6: CJNE A,#0BH,K7MOV COUNT,#9LJMP DKK7: CJNE A,#07H,K8MOV COUNT,#13K8: NOPLJMP DKSW2: MOV P3,#0FFHCLR P3.6MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW3LCALL DELAY10MSJZ SW3MOV A,P3ANL A,#0FHCJNE A,#0EH,K9MOV COUNT,#2LJMP DKK9: CJNE A,#

6、0DH,KAMOV COUNT,#6LJMP DKKA: CJNE A,#0BH,KBMOV COUNT,#10LJMP DKKB: CJNE A,#07H,KCMOV COUNT,#14KC: NOPLJMP DKSW3: MOV P3,#0FFHCLR P3.7MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW4LCALL DELAY10MSJZ SW4MOV A,P3ANL A,#0FHCJNE A,#0EH,KDMOV COUNT,#3LJMP DKKD: CJNE A,#0DH,KEMOV COUNT,#7LJMP DKKE: CJNE A,#0BH,KFMOV CO

7、UNT,#11LJMP DKKF: CJNE A,#07H,KGMOV COUNT,#15KG: NOPLJMP DKSW4: LJMP PANDUANDK: RET;显示程序;XIANSHI: MOV A,COUNTMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,ALCALL DELAYSK: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ SKRET;10ms延时程序;DELAY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET;200ms延时程序;DELAY: MOV R5,#20LOOP: L

8、CALL DELAY10MSDJNZ R5,LOOPRET;共阴码表;TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;结束标志;END7、C语言源程序#includeunsigned char code table=0x3f,0x66,0x7f,0x39,0x06,0x6d,0x6f,0x5e,0x5b,0x7d,0x77,0x79,0x4f,0x07,0x7c,0x71;void main(void) unsigned char i,j,k,key;while(1) P3=0xff; /给

9、P3口置1/P3_4=0; /给P3.4这条线送入0/i=P3;i=i&0x0f; /屏蔽低四位/if(i!=0x0f) /看是否有按键按下/ for(j=50;j0;j-) /延时/for(k=200;k0;k-);if(i!=0x0f) /再次判断按键是否按下/ switch(i) /看是和P3.4相连的四个按键中的哪个/ case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;P0=tablekey; /送数到P0口显示/P3=0xff;P3_5=0; /读P3.5这条

10、线/i=P3;i=i&0x0f; /屏蔽P3口的低四位/if(i!=0x0f) /读P3.5这条线上看是否有按键按下/ for(j=50;j0;j-) /延时/for(k=200;k0;k-);i=P3; /再看是否有按键真的按下/i=i&0x0f;if(i!=0x0f) switch(i) /如果有,显示相应的按键/ case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;P0=tablekey; /送入P0口显示/P3=0xff;P3_6=0; /读P3.6这条线上是否有

11、按键按下/i=P3;i=i&0x0f;if(i!=0x0f) for(j=50;j0;j-)for(k=200;k0;k-);i=P3;i=i&0x0f;if(i!=0x0f) switch(i) case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;P0=tablekey;P3=0xff;P3_7=0; /读P3.7这条线上是否有按键按下/i=P3;i=i&0x0f;if(i!=0x0f) for(j=50;j0;j-)for(k=200;k0;k-);i=P3;i=i&0x0f;if(i!=0x0f) switch(i) case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;P0=tablekey;8、注意事项在硬件电路中,要把8联拨动拨码开关JP2拨下,把8联拨动拨码开关JP3拨上去。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1