《51单片机矩阵键盘按键C语言程序(共2页).doc》由会员分享,可在线阅读,更多相关《51单片机矩阵键盘按键C语言程序(共2页).doc(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上#include#define uchar unsigned char#define uint unsigned intuchar smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 ;uchar smg_we=0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78 ;/有一篇74HC573必须为高电平 /*8/12M频率下大约50US延时/*void delay_50us(uint t) uchar j; for(;t0;
2、t-) for(j=19;j0;j-) ;void delay_50ms(uint t) uchar j; for(;t0;t-) for(j=6245;j0;j-);/*这个程序可以不用松手检测,因为我们程序首选判断键是否按下然后发现按下后我们延时5MS,然后再检测。确实是按下啦。我们再执行在第二个循环假如我们继续检测,那么消耗时间10MS这个短时间中我们的按键已经松手啦。不会在执行后面的。*/void main() uchar key_l,key_h; uchar key; while(1) P3=0xf0;/首先给P3口赋值 key_l=P3; /从p3口读一个数据到key_l key_
3、l=key_l&0xf0; if(key_l!=0xf0) /如果不等于的话,说明有按键按下去 delay_50us(100);/稍微延时一下 if(key_l!=0xf0) key_l=P3&0xf0;/ 再读一次P3的值然后和0xf0相与 key_l=key_l|0x0f; / P3=key_l; /在把key_l的值送给P3口/此时P3口的值为,而正在此时我们把键按下啦因此按下的键为与/ 相与还是;key_h=P3; /再读一次P3口,键还是按下,可以得到行的值。 key_h=key_h&0x0f; /key_l=key_l&0xf0; /key=key_l+key_h; / switc
4、h(key) case 0xee:P1=smg_du0;break;case 0xde:P1=smg_du1;break;case 0xbe:P1=smg_du2;break;case 0x7e:P1=smg_du3;break;case 0xed:P1=smg_du4;break;case 0xdd:P1=smg_du5;break;case 0xbd:P1=smg_du6;break;case 0x7d:P1=smg_du7;break;case 0xeb:P1=smg_du8;break;case 0xdb:P1=smg_du9;break;case 0xbb:P1=smg_du10;break;case 0x7b:P1=smg_du11;break;case 0xe7:P1=smg_du12;break;case 0xd7:P1=smg_du13;break;case 0xb7:P1=smg_du14;break;case 0x77:P1=smg_du15;break; 专心-专注-专业