Keil uvision4用2*3的矩阵按键控制八个led灯和一个数码管。第一个按键按下时,八个led灯呈现一种不断变化的花样(花样自己拟定),数码管显示1;第二个按键按下时,八个led灯呈现第二种花样,数码管显示2;第三个和第四个按键也是同样功能;第五个按键控制速度,按下时流水灯的速度会变快;第六个按键为系统复位键,按下后系统复位,所有的led灯熄灭,数码管显示0。
时间: 2023-05-25 22:03:08 浏览: 156
按键控制4*4led矩阵数码管显示程序
由于没有具体的硬件平台限制,本篇回答只提供基于Keil uvision4的程序设计思路。
首先,定义从8个LED灯的控制引脚到MCU引脚的映射关系和数码管的控制引脚与MCU引脚的映射关系,使用宏定义或者枚举类型等方式可以方便后续编程中的引脚控制。
然后,在主函数中通过while循环实现按键扫描和处理。为了保证按键的功能不会被多次执行和误执行,可以使用状态机的思路,将每个按键定义成一个状态,通过当前的状态和上一次扫描的状态是否一致来判断当前是否需要处理按钮按下的事件。这样可以避免一直按住某个按键导致程序一直执行该按键的功能。
在程序的按键处理部分,可以通过delay函数生成不同时间的延迟来实现流水灯变化速度的改变。同时,在每次更新LED显示之前,也需要将上一次的LED状态或数码管的显示清除。
最后,需要在主函数中添加一个死循环,保证程序一直运行。在系统复位键按下时,需要将所有LED灯关闭同时将数码管的显示重置为0。可以通过重新定义程序的按键状态来实现此功能。
阅读全文