《单片机的矩阵键盘程序(6页).doc》由会员分享,可在线阅读,更多相关《单片机的矩阵键盘程序(6页).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-单片机的矩阵键盘程序-第 6 页#include#define uint unsigned int#define uchar unsigned charuchar code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff;/数码管段选sbit shu1=P30;/数码管位选sbit shu2=P31;/数码管位选uchar num;void delay(uint z)/延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);uchar keyscan();/键盘扫描函数void main
2、()num=17;while(1)keyscan(); /键盘扫描if(num=17)/如果没有键按下P2=table10;/数码管什么也不显示else /有键按下 shu1=1;/打开数码管P2=table(num-1)/10; / 显示十位delay(7);/延时显示shu1=0;/关闭数码管shu2=1; /打开数码管P2=table(num-1)%10; / 显示个位delay(7);/延时显示shu2=0; /关闭数码管uchar keyscan()/键盘扫描P1=0xfe;while(P1!=0xfe) /第一行有键按下delay(5);/延时消抖while(P1!=0xfe)/确
3、实有键按下switch(P1)/检测是哪个键按下case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:num=4;break;while(P1!=0xfe);/松手检测P1=0xfd;while(P1!=0xfd)/第二行有键按下delay(5);/延时消抖while(P1!=0xfd)/确实有键按下switch(P1)/检测是哪个键按下case 0xed:num=5;break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8
4、;break;while(P1!=0xfd) ;/松手检测P1=0xfb;while(P1!=0xfb)/第三行有键按下delay(5);/延时消抖while(P1!=0xfb)/确实有键按下switch(P1)/检测是哪个键按下case 0xeb:num=9;break;case 0xdb:num=10;break;case 0xbb:num=11;break;case 0x7b:num=12;break;while(P1!=0xfb);/松手检测P1=0xf7;while(P1!=0xf7)/第四行有键按下delay(5);/延时消抖while(P1!=0xf7)/确实有键按下switch(P1)/检测是哪个键按下case 0xe7:num=13;break;case 0xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break;while(P1!=0xf7);/松手检测return num;