高中生
最后登录1970-1-1
在线时间 小时
注册时间2020-9-25
|
我按键KEY0明明是选择模式,按键KEY2减键,为什么KEY0和KEY2会混乱,变成KEY0可以减,KEY2可以选择模式???大佬们求指导?
#include "mode.h"
#include "sys.h"
#include "delay.h"
#include "AMG8833.h"
#include "oled.h"
#include "led.h"
#include "key.h"
#include "oled_i2c.h "
extern int mode,k;
extern float x;
float compare(float *c,u8 size)
{
int i;
float max = *c;
for(i=0;i<size;i++)
{
c++;
if( max>*c );
else max = *c;
}
return max;
}
/*温度显示模式*/
void mode1()
{
float a=100,b[64],c;
IIC_Init();
KEY_Init();
delay_init(); //延时初始化
OLED_Init();
OLED_Clear() ;
AMG8833_Init();
LED_Init();
OLED_ShowString(0,1,"loading.....",16);
delay_ms(30);
while(1)
{
amg88xx_readPixels(b,64); //读取温度
a=compare(b,64)+x; //显示温度a等于读取值+修正值
if(a>k) //温度超标,LED闪烁
{
GPIO_SetBits(GPIOA,GPIO_Pin_3);
delay_ms(3);
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
delay_ms(100);
GPIO_SetBits(GPIOA,GPIO_Pin_3);
// OLED_Clear();
//OLED_Showdecimal(20,6,a,8,16);
//OLED_ShowString(3,3,"fever!!",16);
}
OLED_ShowString(0,1,"temperature:",16);
OLED_Showdecimal(20,3,a,8,16);
OLED_ShowString(3,5,"T:",16);
OLED_ShowNum(20,6 ,k,9,16);
if (KEY0 == 0)
{
delay_us(200);
if (KEY0 == 0)
{
mode=2;break; //进入阈值调节模式
}
}
}
}
//阈值调节模式
void mode2()
{
OLED_Clear();
OLED_ShowString(0,1,"Threshold",16);
OLED_ShowString(0,3,"value",16);
OLED_ShowNum(20,6 ,k,9,16);
delay_ms(250);
while(1)
{
if(KEY1==0)
{
//delay_us(20);
// while(KEY1==0)
//{
delay_ms(20);
if(KEY1==0)
{
k++;
OLED_ShowNum(20,6 ,k,9,16);
}
//}
}
if(KEY2==0)
{
//delay_ms(2);
//while(KEY2==0)
//{
delay_ms(20);
if(KEY2==0)
{
k--;
OLED_ShowNum(20,6 ,k,9,16);
}
//}
}
if (KEY0 == 0)
{
delay_ms(20);
if (KEY0 == 0)
{
mode=1;break; //进入修正值调节模式
}
}
}
}
/*修正值调节模式*/
//void mode3()
//{
// OLED_Clear();
// OLED_ShowString(0,1,"corrected",16);
// OLED_ShowString(0,3,"value",16);
//
// OLED_Showdecimal(20,6 ,x,9,16);
// delay_ms(250);
// while(1)
// {
//
// if(KEY1==0)
// {
// delay_ms(10);
// if(KEY1==0)
// {
// x=x+0.5;
// OLED_Showdecimal(20,6 ,x,9,16);
// }
// }
//
//
// if(KEY2==0)
// {
// delay_ms(10);
// if(KEY2==0)
// {
// x=x-0.5;
//
// OLED_Showdecimal(20,6 ,x,9,16);
// }
// }
//
// if (KEY0 == 0)
// {
// delay_ms(2);
// if (KEY0 == 0)
// {
// mode=1;break; //返回温度显示模式
// }
// }
//
// }
//}
//
void menu(int t)
{
switch(t)
{
case 1:mode1();break;
case 2:mode2();break;
// case 3:mode3();break;
}
}
|
|