矩阵按键控制LED状态和实现LED显示二进制
一、控制LED状态
1.要控制状态我们要实现就是在按下按键没松手之前LED灯不亮。
2.又因为矩阵按键构造原因,会产生一定的抖动,所以我们也要通过编程去除抖动影响。原理如下图。
3.通过if语句,当按下K1按键时(也就是P27==0时),Delay前20ms和后20ms,中间加入while循环。(while循环的意义在于只要不松手就一直在while循环)。
4.P00默认值为1,LED灯一开始不亮,松开后P00取反,赋值为0,LED亮起。再按下同上赋值为1,LED熄灭。
二、实现LED显示二进制
1.为了方便我们可以定义一个unsigned int xms,并且为了防止nop报错(找不到函数原型missing function prototype),要include一个INTRINS.H。
并把原来软件延时生成的代码中的循环搬进新建的while(xms--)中,在循环后在减。目的是方便延时,void函数不用返回值,更方便。
2.如果在最后的if语句中直接用P0++,P0取反,在烧录程序后,LED灯是完全不亮的。因为那样P0相当于一直是1111 1111。需要再定义一个unsigned char LEDNum(都是8个字节很方便),再用LEDNum++和与P0取反,就能实现LED二进制闪烁。
|