100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 51单片机c语言按键扫描程序 单片机按键扫描数码管显示C语言程序

51单片机c语言按键扫描程序 单片机按键扫描数码管显示C语言程序

时间:2023-01-28 00:17:09

相关推荐

51单片机c语言按键扫描程序 单片机按键扫描数码管显示C语言程序

电子科学与技术

单片机按键扫描数码管显示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 MaxRate 50 //重复前的延迟值 600ms

#define MinRate 20 //重复速度 240ms

#define leddark 83 //闪烁时灭时间1s

#define ledshow 83 //闪烁时亮时间1s

#define decimal 0x80 //小数点的段数

#define KEY_DDR DDRC

#define KEY_PORTO PORTC

#define KEY_PORTI PINC

#define OUT 0x3f

#define IN 0xc0

#define KeyValue 0x3f

#define LEDD_DDR DDRB

#define LEDD_PORTO PORTB

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。