基于AT89S52的矩阵键盘.doc

上传人:公**** 文档编号:562063017 上传时间:2023-08-06 格式:DOC 页数:8 大小:30KB
返回 下载 相关 举报
基于AT89S52的矩阵键盘.doc_第1页
第1页 / 共8页
基于AT89S52的矩阵键盘.doc_第2页
第2页 / 共8页
基于AT89S52的矩阵键盘.doc_第3页
第3页 / 共8页
基于AT89S52的矩阵键盘.doc_第4页
第4页 / 共8页
基于AT89S52的矩阵键盘.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《基于AT89S52的矩阵键盘.doc》由会员分享,可在线阅读,更多相关《基于AT89S52的矩阵键盘.doc(8页珍藏版)》请在金锄头文库上搜索。

1、基于AT89S52的矩阵键盘/* 功能:矩阵键盘 (按相应的按键,数码管从0F的显示)单片机:AT89S52 */ #include #define uint unsigned int #define uchar unsigned char sbit DAT=P03;sbit CLK=P02; uchar temp,h; void delay(uint); /延迟程序void sendbyte(uchar); /数码管显示void keyscan(); /按键扫描uchar code tab= 0xed,0x09,0xbc,0x9d,0x59,0xd5, 0xf5,0x0d,0xfd,0xdd

2、,0x7d,0xf1, 0xe4,0xb9,0xf4,0x74,0x00 ; /0-F, 全灭void main (void) sendbyte(16); /初始时数码管无显示 while(1) keyscan(); /按键扫描 void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=100;y0;y-); void sendbyte(uchar byte) uchar num,c; num=tabbyte; for(c=0;c=1; /右移位赋值 void keyscan() /*第一行按键的扫描*/ P2=0xfe; /确定第一行的按键有效 te

3、mp=P2; /将其赋给一个变量(处理I/O口时,一般先赋值给一个变量,然后通过处理变量来处理I/O口) temp=temp&0xf0; /用于检测第一行的哪个按键按下 while(temp!=0xf0) /*这个部分只要是用来消除按下抖动的*/ delay(5); temp=P2; temp=temp&0xf0; while(temp!=0xf0) /这个地方,已经消除了按下抖动,P2口的值已经确定 temp=P2; /将P2口得值赋给变量 switch(temp) /这个switch语句,用来确定哪一个按键按下时,数码管的显示值 case 0x7e:h=0; break; /这个break

4、很重要,表示如果有匹配的值,就跳出switch语句,防止程序跳不出来。 case 0xbe:h=1; break; case 0xde:h=2; break; case 0xee:h=3; break; default : h=16; break; while(temp!=0xf0) /*这个部分只要是用来消除释放抖动的*/ temp=P2; temp=temp&0xf0; sendbyte(h); /送给数码管显示 /*第二行按键的扫描*/ P2=0xfd; temp=P2; temp=temp&0xf0; while(temp!=0xf0) delay(5); temp=P2; temp=

5、temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0x7d:h=4; break; case 0xbd:h=5; break; case 0xdd:h=6; break; case 0xed:h=7; break; default : h=16; break; while(temp!=0xf0) temp=P2; temp=temp&0xf0; sendbyte(h); /*第三行按键的扫描*/ P2=0xfb; temp=P2; temp=temp&0xf0; while(temp!=0xf0) delay(5); temp=P2

6、; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0x7b:h=8; break; case 0xbb:h=9; break; case 0xdb:h=10; break; case 0xeb:h=11; break; default : h=16; break; while(temp!=0xf0) temp=P2; temp=temp&0xf0; sendbyte(h); /*第四行按键的扫描*/ P2=0xf7; temp=P2; temp=temp&0xf0; while(temp!=0xf0) delay(5); temp=P2; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0x77:h=12; break; case 0xb7:h=13; break; case 0xd7:h=14; break; case 0xe7:h=15; break; default : h=16; break; while(temp!=0xf0) temp=P2; temp=temp&0xf0; sendbyte(h);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号