普中精灵红外地址
#define LEV_ADD 0X90
#define LEV_MIN 0XA8
#define LEV_EQ 0XE0
#define LEV_STOP 0XA2
#define LEV_MODE 0X62
#define LEV_MU 0XE2
#define LEV_RIGHTENG 0XF9
#define LEV_LEFT 0X02
#define LEV_RIGHT 0XC2
#define LEV_0 0X68
#define LEV_RRT 0X98
#define LEV_U_SD 0X60
#define LEV_1 0X30
#define LEV_2 0X18
#define LEV_3 0X7A
#define LEV_4 0X10
#define LEV_5 0X38
#define LEV_6 0X9A
#define LEV_7 0X42
#define LEV_8 0X4A
#define LEV_9 0X52
蜂鸣器手动关停(红外静音键)
void BEEP_Alarm(u8 times,u8 us)
{
while(times--)
{
BEEP=!BEEP;
delay_us(us);
if(sys_ctrl.code==LEV_MU)break;
}
}
设置模式(按键矩阵)s12独立按键加减,s13红外数字设置,s14模式切换,s15数码管显示当前温度,s16数码管显示温度上下限。
void msgset(void)
{u8 key1=0;
u8 buf[8];
key1=KEY_Matrix_Scan();
switch(key1)
{
case 1: break;//??????
case 2:break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9: break;
case 10:break;
case 11:break;
case 12:Myflag.n=0;break;
case 13:Myflag.n=1;break;//??????(S13)
case 15:Myflag.c=0;break;//??????(S15)
case 16:Myflag.c=1;break;
case 14:Myflag.Timeflag++;
if(Myflag.Timeflag>2)Myflag.Timeflag=1;
break;//??????(S14)
//????????????????(S16)
}
数字设置(红外)
注:目前只设置了1,其他数字同1的代码!!!!
void numset(void)
{u8 w=0;
int a,b;
if(sys_ctrl.code==LEV_MODE){
Myflag.Timeflag++;
if(Myflag.Timeflag>2)Myflag.Timeflag=1;
}
if(Myflag.Timeflag==1){
a=Myflag.h/10%10;
b=Myflag.h%10;
}
if(Myflag.Timeflag==2){
a=Myflag.l/10%10;
b=Myflag.l%10;
}
if(Myflag.Timeflag!=0){
if(sys_ctrl.code==LEV_ADD){
b++;
if(b>9){a++;b=0;if(a==10)a=0;}
}
else if(sys_ctrl.code==LEV_MIN){
b--;
if(b<0){a--;b=9;if(a==0)a=9;}
}
}
else if(sys_ctrl.code==LEV_EQ){
switch(Myflag.Timeflag){
case 1:Myflag.h=a*10+b;
break;
case 2:Myflag.l=a*10+b;
break;
}
Myflag.Timeflag=0;
}
else if(sys_ctrl.code==LEV_LEFT){
w++;
if(w>1)w=0;
}
else if(sys_ctrl.code==LEV_LEFT){
w++;
if(w>1)w=0;
}
else if(sys_ctrl.code==LEV_1){
if(w==1)a=1*pow(10,w);
if(w==0)b=1*pow(10,w);
}
}
数字设置(矩阵按键)类似于红外,在设置模式函数中进行修改,见之后的完整的代码!!!!