中级会员
 
- 积分
- 367
- 金钱
- 367
- 注册时间
- 2016-9-27
- 在线时间
- 53 小时
|
1金钱
#define Key_Poewr GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define KEY0 ((adc>424)&&(adc<824))
#define KEY1 ((adc>1011)&&(adc<1411))
#define KEY2 ((adc>1645)&&(adc<2045))
#define KEY3 ((adc>2257)&&(adc<2657))
#define KEY4 ((adc>2872)&&(adc<3272))
#define KEY5 ((adc>3523)&&(adc<3923))
//#define Key_Poewr //KEY0°′ÏÂ
#define Key_Enter 1 //KEY1°′ÏÂ
#define Key_Measure 2
#define Key_Set 3
#define Key_Return 4
#define Key_Up 5
#define Key_Down 6
uint8_t Get_Key(uint8_t mode);
void gman_key_init(void);
以上为.h文件
****************************************************/
uint16_t adc = 0;
uint8_t Get_Key(uint8_t mode)
{
static u8 key_up=1;//°′¼ü°′Ëé¿a±êÖ¾
if(mode)key_up=1; //Ö§3Öᬰ′
adc=Get_Adc_Average(ADC_Channel_5,10);
if(key_up&&(adc>424&&adc<3923))
{
gman_delay_ms(50);//襶¶¶ˉ
key_up=0;
if(KEY0)return Key_Enter;
else if(KEY1)return Key_Measure;
else if(KEY2)return Key_Set;
else if(KEY3)return Key_Return;
else if(KEY4)return Key_Up;
else if(KEY5)return Key_Down; ;
}else if(adc<424&&adc>3923)key_up=1;
return 0;// ÎT°′¼ü°′ÏÂ
}
ad采集到按键值进行判断,为什么按键模式不能使用不连续模式,只能使用连按,不使用连按,按键按下没有反应,这是为什么??
while(1)
{
if(Get_Key(1)==Key_Up)
{
if(ClockNum>120)
{
ClockNum=0;
}
ClockNum+=5;
LCD_ShowNum(90,228,ClockNum/10,2,12,0,WHITE,SAFFRON);
LCD_ShowString(106,228,6,12,12, ".",0,WHITE,SAFFRON);
LCD_ShowNum(112,228,ClockNum%10,1,12,0,WHITE,SAFFRON);
}
else if(Get_Key(1)==Key_Down)
{
if(ClockNum<5)
{
ClockNum=125;
}
ClockNum-=5;
LCD_ShowNum(90,228,ClockNum/10,2,12,0,WHITE,SAFFRON);
LCD_ShowString(106,228,6,12,12, ".",0,WHITE,SAFFRON);
LCD_ShowNum(112,228,ClockNum%10,1,12,0,WHITE,SAFFRON);
}
而且使用连按模式,在这个程序中触发的特别快,别的地方都是按一下,数据加1或减1,但是在这个程序中会出现,按一下,数据增加减少的频率特别快,这是什么情况??本来想使用不连续模式,结果该模式不能使用,哪位大神能指点一二???,谢谢了!!!
|
|