中级会员
- 积分
- 423
- 金钱
- 423
- 注册时间
- 2019-5-12
- 在线时间
- 168 小时
|
1金钱
本帖最后由 hejun96 于 2019-9-6 21:49 编辑
用ht1621b驱动LCD亮,但是在按键按下前LCD已经是亮的状态了,这个问题如何去解?我的做法是在电源按键按下1s作为一个定时器的标志位
Out_timer.timer_run_flag来判断这个定时器是否运行了?如果运行了定时器的cnt就计时1s,但是我编译运行后按键并没有起到作用,而是上电后直接就亮
static bool isShine=0;
static uint8_t flag = 0,state = 0x00,flag1 = 0;
uint16_t Dval = 0;//暂时没用到
static char turn_on_pwrkey = 0;
switch (state)
{
case 0x01: //电源按键
if(key_type == PowerKey)
{
POWER_KEY_ON;//电源按键PE5的GPIO口打开,电源按键电平置高
Key_timer.timer_run_flag = TIMER_RUN;//
if(Key_timer.cnt > 1000)//按下时间大于1s
{
if(turn_on_pwrkey)
{
delay_ms(10);//10ms防抖动
POWER_KEY_OFF;//IO口置低,代表脉冲输出
LED_BG_ON;//背光灯打开
/*蜂鸣器响*/
BEEP_ON;
delay_ms(500);//蜂鸣器延时500ms,这个时间足够响1声
BEEP_OFF;
/***********/
SystemStatus.led_state = 1;
Key_timer.timer_run_flag = TIMER_END;
//UART1_SendString("0x00 cool_key/n");
}
else if(!turn_on_pwrkey)
{
delay_ms(10);//防抖动
LED_BG_OFF;//背光灯关闭
/*蜂鸣器响*/
BEEP_ON;
delay_ms(500);//蜂鸣器延时500ms,这个时间足够响1声
BEEP_OFF;
/***********/
SystemStatus.led_state = 0;
Key_timer.timer_run_flag = TIMER_END;
}
}
|
|