基于AT89S51的4×4 矩阵键程序设计.doc

上传人:白大夫 文档编号:3409473 上传时间:2019-08-22 格式:DOC 页数:6 大小:27KB
返回 下载 相关 举报
基于AT89S51的4×4 矩阵键程序设计.doc_第1页
第1页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于AT89S51的4×4 矩阵键程序设计.doc》由会员分享,可在线阅读,更多相关《基于AT89S51的4×4 矩阵键程序设计.doc(6页珍藏版)》请在三一文库上搜索。

1、基于AT89S51的44 矩阵键程序设计用AT89S51 的并行口P1 接44 矩阵键盘,以P3.0P3.3作输入线,以P3.4P3.7 作输出线;在数码管上显示数字按键的09序号,其它按键显示0。原理分析:4X4矩阵键盘每个按键都有它的行值和列值,当每个按键的行值为低电平,列值为高电平时,按键为未按下状态。判断是否有按钮按下时,先让这一行通低电平,再通过扫描每一列来判断是否被按下(逐列使列值通高电平),如果被按下,那么这一列的电平此时会成为低电平;如果这一列在扫描时为低电平,说明这一列有按键被按下,而行值是每次在判断列值前就确定的,这样就能知道到底是哪一个按键被按下了。基本流程: 设置第一行

2、为低电平扫描每一列(设置为高电平),判断是否为0确定是否有按键按下设置第二行为低电平扫描第二列.(如此循环到第四行,再从第一行重新开始)编译环境:KEIL C51 V3仿真软件:proteus 7.4单片机类型:AT89C52数码管类型:7seg-mpx1-cc (cc共阴数码管)键盘类型:keypad-samllcalc单片机上的程序如下:#include reg52.hchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;sbit row1=P3;sbit row2=P3;sbit row3=P3;sbit ro

3、w4=P3;int temp;int key;/void delay500ms();void delay20ms();void main()P1=table0;while(1)P3=0xff;row1=0;temp=P3;temp=temp0x0f;if(temp!=0x0f)delay20ms();temp=P3;temp=temp0x0f;if(temp!=0x0f)switch(temp)case 0x0e:key=7;break;case 0x0d:key=8;break;case 0x0b:key=9;case 0x07:key=0;P1=tablekey;P3=0xff;row2=

4、0;temp=P3;temp=temp0x0f;if(temp!=0x0f)delay20ms();temp=P3;temp=temp0x0f;if(temp!=0x0f)switch(temp)case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=0;P1=tablekey;P3=0xff;row3=0;temp=P3;temp=temp0x0f;if(temp!=0x0f)delay20ms();temp=P3;temp=temp0x0f;if(temp!=0x0f)switch(te

5、mp)case 0x0e:key=1;break;case 0x0d:key=2;break;case 0x0b:key=3;break;case 0x07:key=0;break;P1=tablekey;P3=0xff;row4=0;temp=P3;temp=temp0x0f;if(temp!=0x0f)delay20ms();temp=P3;temp=temp0x0f;if(temp!=0x0f)switch(temp)case 0x0e:key=0;break;case 0x0d:key=0;break;case 0x0b:key=0;break;case 0x07:key=0;break;P1=tablekey;/*void delay500ms()int i,j,k;for( i=0;i10/2;i+)for(j=0;j180;j+)for(k=0;k200;k+) */void delay20ms()int i,j;for(i=0;i36;i+)for(j=0;j200;j+)电路图核心部分如下:

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

当前位置:首页 > 其他


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