教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

矩阵式键盘程序设计

来源:网络收集 时间:2026-09-28
导读: 矩阵式键盘程序设计 (1)定义字型码表和10ms延时程序设计。4X4矩阵键盘的16个键分别对应0~9、A~F十六个字符,由于数码管显示使用共阴极LED数码管,所以字型码采用共阴极字型码。定义字型码表和软件去抖的10ms延时程序如下: #include /*定义0~9,A~F十六

矩阵式键盘程序设计

(1)定义字型码表和10ms延时程序设计。4X4矩阵键盘的16个键分别对应0~9、A~F十六个字符,由于数码管显示使用共阴极LED数码管,所以字型码采用共阴极字型码。定义字型码表和软件去抖的10ms延时程序如下:

#include

/*定义0~9,A~F十六个字符的字型码表*/ unsigned char table[]=

{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; /*10ms延时程序*/

void delay10ms(void) {

unsigned char i,j; for(i=20;i>0;i--)

for(j=248;j>0;j--); }

(2)矩阵式键盘主程序设计。4X4矩阵键盘的各行接P0口的P0.0~P0.3,矩阵键盘的各列接P0口的P0.4~P0.7,P1口的P1.0~P1.7接数码管的各段。矩阵式键盘主程序如下:

void main() {

char k=0;

unsigned char tmp,key; P1=0x00;

P0=0x0f; // P0口低四位做输入口,先输出全1 tmp=P0; while(1) {

while(tmp==0x0f) //循环判断是否有键按下 {

P0=0x0f; //所有列输出低电平

tmp=P0; //读行信号 }

delay10ms(); //延时10ms去抖

P0=0x0f; //所有列输出低电平 tmp=P0; //再次读键盘状态

if(tmp==0x0f) continue; //如果无键按下则认为是按键抖动,重新扫描键盘 key=scan_key( ); //有键按下,调用键盘扫描程序,并把键值送key while(k!=-1)

{delay10ms();k=scan_key();}

P1=table[key]; //查表或字型编码送P1口,数码管显示闭合按键的编码 }

(3)矩阵式键盘扫描程序设计

unsigned char scan_key(void) //键盘扫描子程序 {

unsigned char n,scan,col,rol,tmp;

bit flag=0; //设有键按下标志位 scan=0xef;

P0=0x0f; //P0口低四位做输入口,先输出全1 for(n=0;n<4;n++) //循环扫描4列,从0列开始 {

P0=scan; //逐列送出低电平 tmp=~P0; //读行值,并取反 tmp=tmp&0x0f;

col=n; //保存列号到col flag=1;

/*判断哪一行有键按下,并保存行号到rol*/ if(tmp==0x01)

{ rol=0; break;} //第0行有键按下 else if(tmp==0x02)

{ rol=1; break;} //第1行有键按下 else if(tmp==0x04)

{ rol=2; break;} //第2行有键按下 else if(tmp==0x08)

{ rol=3; break;} //第3行有键按下 else

flag=0;

scan=(scan<<1)+1; }

if(flag==0)

return -1; else

return(rol*4+col); }

矩阵式键盘程序设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/612359.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)