单片机按键扫描数码管显示C语言程序
按键扫描数码管显示程序共定义了6个键的功能K1K2K3K4以及K5K8组成的一对复合键其中K2K3为连击键K5为上档键在正常工作模式下按K1则切换至状态在设定模式下按K1键循环选择4个数码管中的某个被选中的数码管闪烁此时单按K2键显示数值加1常按K2显示数值以一定速度递增同时数码管停止闪烁当K2松开数码管恢复闪烁显示数值停留在K2松开前的值上K3完成的功能和K2类似其完成减操作这2个键只有在设定状态才有效可以有效防止误操作K4为确认键按下该键回到正常显示状态所有指示灯熄灭数码管显示刚刚设定的数值K5K8这对复合键执行复位操作任何情况下同时按下K5和K8或先按下K5再按下K8所有数码管的显示全为0指示灯全灭进入正常显示状态同时程序还对如下几个异常操作进行了处理12个或多个功能键同时按下2一个功能键按下未释放又按另一个功能键然后再松开其中一个功能键3先按下功能键再按下上档键4多个上档键和一个功能键同时按下此时不做处理等到松开其他上档键只剩下一个上5档键和一个功能键时才执行这对复合键或松开所有上档键处理单一功能键i
cludeiom8vhi
cludemacroshdefi
eucharu
sig
edchardefi
eui
tu
sig
edi
tdefi
edefi
edefi
edefi
edefi
edefi
edefi
edefi
edefi
edefi
edefi
edefi
edefi
edefi
edefi
edefi
eRCtrl0x20RCo
ti0xfeN2MaxRate50Mi
Rate20leddark83ledshow83decimal0x80KEY_DDRKEY_PORTOKEY_PORTIOUTINKeyValueLEDD_DDRLEDD_PORTODDRCPORTCPINC0x3f0xc00x3fDDRBPORTB定义上挡键第5键定义连击键第6键去抖年龄下限重复前的延迟值600ms重复速度240ms闪烁时灭时间1s闪烁时亮时间1s小数点的段数
fdefi
edefi
edefi
edefi
edefi
edefi
e
LEDS_DDRLEDS_PORTOLEDS_MASKLEDS_NUMTRUEFALSE
DDRDPORTD0xfc0x0610
定义键盘扫描程序返回数据类型typedefstructucharshiftc
t上档键的个数值ucharfu
c
t功能键的个数值ucharshiftval最后扫描到的上档键的值ucharfu
val最后扫描到的功能键的值keyret定义显示字符段码ucharco
stled_stroke1901234567890x3F0x060x5B0x4F0x660x6D0x7D0x070x7F0x6FabCdeFP0x770x7C0x390x5E0x790x710x73allo
alloff0xff0x00定义位选码ucharco
stled_csLEDS_NUM0xfb111110110xf7111101110xef111011110xdf110111110xbf101111110x7f01111111ucharled_bufLEDS_NUM0x730x810x820x830x840x85ucharpbled_buf1定义指向数码管数据r