电子魂
在别的地方搬了一个程序 ,有点地方不明白,希望大佬能给我解释一下 不明白的地方已经标注红色了
`以下为程序:/*反转法矩阵键盘的应用,我认为这是一个编程简便又容易理解的矩阵键盘编程应用,因此拿来与大家共享*//*殷传东对此程序拥有独家版权,仅可用于研究学习,严禁用于商业目的,欢迎喜爱单片机的大虾小虾皮皮虾联系交流QQ:77329961*/#include<reg52.h> //头文件#define uchar unsigned char //宏定义#define uint unsigned intuchar key,n; //定义变量uchar code table[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; //反转法矩阵键盘的各个按键的计算值uchar code yin[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴极数码管显示0~Fvoid delay(uint i) //延时函数{ while(i--);}void keyscan(){ uchar l,h,i; //定义局部变量,用l得出低4位的值,用h得出高4位的值 P1=0x0f; //给P1赋值00001111 l=P1&0x0f; if(l!=0x0f) { delay(100); if(l!=0x0f) l=P1&0x0f; //若有键按下,得出低四位的值 } P1=0xf0; //给P1赋值11110000 h=P1&0xf0; if(h!=0xf0) { delay(100); if(h!=0xf0) h=P1&0xf0; //若有键按下,得出高4位的值 } key=l+h; //高4位的值与低4位的值相加 for(i=0;i<16;i++) { if(key==table) //通过查表得出n的值 n=i; }}void main(){ while(1) { keyscan(); P0=yin[n]; //在数码管上显示相应的键值 }}`
版块: 单片机/MCU论坛
2022/02/11 01:29
全部评论