STC89C52单片机入门第四课

时间:2024-10-12 11:51:35

1、首先要了解,什么是矩阵键盘,像一般按键,一个按键,则需占用1个I/O口这样的话,按键多的情况下,很浪费I/O口,矩阵键盘,就是用较少的I/O口来做更多的按键。

STC89C52单片机入门第四课

3、下面开始写程序,开头的那些就不再细说了,包含头文件、写上主函数写上1个1MS(1毫秒)的延时函数(不懂可以参照上节课)在主函数内,定义2个变量unsigned char key,num;这2个变量是unsigned char型,也就是无符号整形,0到256

STC89C52单片机入门第四课

5、检测key!=0x0f也就是说,key不等于0x0f,那么表示有按召堡厥熠键按下也可能是因为抖动引起的误判的,所以,这里需要再延时一些再把P1赋值0x0f,把key等于P1结果就是(key=00001111)如果按键按下时,(通俗的说0会把1吃掉),那么key也就不等于00001111了这时候,就应该判断,到底按下了哪个按键(通俗的说,看看哪个1被吃掉)key=P1&0x0f这个指令是逻辑与的意思也就是把P1跟0x0f进行逻辑与比较,结果放在key

6、这里说明下switch()这个判断语句switch(key)则是判断中括号内的变量,或者语句,是等于什么后面case 0x07: num=4; break;意思是,如果key等于0x07那么num赋值4如果不是,则判断下一个case,如果全都不是,则执行default: break;这里先不详细说明switch,免得新手迷糊,先懂就可以了

7、逻辑与的意思:必须都为1,否则即为0比方:1&1=1;1&0=0;0&0=0;0&1=0;假设P1是0000 11010x0f 也是0000 1111它们与完的结果则是 0000 1101十六进制是0x0d那则表示,在P1.1所在的那一行有按键按下把目标锁定在P1.1所在行的4个按键

STC89C52单片机入门第四课

9、然后再判断key,如果key等于0x70,那么就是0111 0000也就是说在P1.1这行,第1个按键S5按下那给num这个变量不变 如果是0xb0;那就是1011 0000也就是P1.1这行,第二个按键按下,则num+4那么结果就是按S1按键num=1 按S2按键,num=5按S5按键num=2 按S6按键num=6按S9按键num=3 按S10按键num=7按S13按键num=4按S14按键num=8竖立键盘,当然要改成横的也不难,但这个留给新手朋友去练习吧最后,加上1个循环,等待按键松手,以及让LED灯显示

STC89C52单片机入门第四课
© 阿力知识库