单片机按键扫描数码管显示C 语言程序 按键扫描数码管显示程序共定义了6个键的功能:K1、K2、K3、K4以及 K5、K8组成的一对复合键,其中 K2,K3为连击键,K5为上档键
在正常工作模式下按K1则切换至状态,在设定模式下按K1键循环选择 4个数码管中的某个,被选中的数码管闪烁,此时单按K2键显示数值加 1;常按K2显示数值以一定速度递增,同时数码管停止闪烁,当 K2松开,数码管恢复闪烁,显示数值停留在 K2松开前的值上
K3完成的功能和 K2类似
其完成减操作
这 2个键只有在设定状态才有效,可以有效防止误操作
K4为确认键,按下该键回到正常显示状态,所有指示灯熄灭,数码管显示刚刚设定的数值
K5+K8这对复合键执行复位操作,任何情况下同时按下 K5和 K8或先按下 K5再按下 K8,所有数码管的显示全为 0,指示灯全灭,进入正常显示状态
同时程序还对如下几个异常操作进行了处理: 1
2个或多个功能键同时按下 2
一个功能键按下未释放,又按另一个功能键,然后再松开其中一个功能键 3
先按下功能键再按下上档键 4
多个上档键和一个功能键同时按下,此时不做处理
等到松开其他上档键,只剩下一个上 5
档键和一个功能键时才执行这对复合键;或松开所有上档键,处理单一功能键
/*******************************************************************************/ #include #include #define uchar unsigned char #define uint unsigned int #define RCtrl 0x20 //定义上挡键 第 5键 #define RConti 0xfe //定义连击键 第 6键 #define N 2 //去抖年龄下限 #define Max