📄 xianshi.h
字号:
uchar keym;
uchar flag;
uchar pid;
uchar tzw;
uchar tdata;
uchar fixs;
uchar gnszbit;//进入功能还是设置标志
uchar dd[2];//保存设置模式下的断点信息
uchar gbwdbj=0;//打开关闭温度报警功能标志
uchar gbgdbj=0;//打开关闭高度报警功能标志
uchar qfbit;//取反显示标志
void qufanpd(uchar addry,uchar addrx)//取反判断程序
{if(pid==2&&gnszbit==1)//在第二层且是功能表选项
{if((tzw==9||tzw==6||tzw==3)&&addry==0x40)
{qfbit=2;}
else if((tzw==8||tzw==5||tzw==2)&&addry==0x43)
{qfbit=1;}
else if((tzw==7||tzw==4||tzw==1)&&addry==0x43)
{qfbit=2;}
else
{qfbit=0;}
}
else if(pid==2&&gnszbit==2)//在第二层且是设置选项
{if((tzw==7||tzw==4||tzw==1)&&addry==0x40)
{qfbit=2;}
else if((tzw==6||tzw==3)&&addry==0x43)
{qfbit=1;}
else if((tzw==5||tzw==2)&&addry==0x43)
{qfbit=2;}
else
{qfbit=0;}
}
else if(pid==3)//在设置选项的第三层
{switch(dd[0])
{case 7://时间设置时位取反
if(tzw==6&&addry==0x43&&addrx==0x86)
{qfbit=1;}
else if(tzw==5&&addry==0x43&&addrx==0x8c)
{qfbit=1;}
else if(tzw==4&&addry==0x43&&addrx==0x98)
{qfbit=1;}
else if(tzw==3&&addry==0x43&&addrx==0x9e)
{qfbit=1;}
else if(tzw==2&&addry==0x43&&addrx==0xaa)
{qfbit=1;}
else if(tzw==1&&addry==0x43&&addrx==0xb0)
{qfbit=1;}
else if(tzw==13&&addry==0x42&&addrx==0x86)
{qfbit=1;}
else if(tzw==12&&addry==0x42&&addrx==0x8c)
{qfbit=1;}
else if(tzw==11&&addry==0x42&&addrx==0x98)
{qfbit=1;}
else if(tzw==10&&addry==0x42&&addrx==0x9e)
{qfbit=1;}
else if(tzw==9&&addry==0x42&&addrx==0xaa)
{qfbit=1;}
else if(tzw==8&&addry==0x42&&addrx==0xb0)
{qfbit=1;}
else if(tzw==7&&addry==0x42&&addrx==0xc2)
{qfbit=1;}
else
{qfbit=0;}
break;
///////////////////////////////////////////
case 6://温度设置时位取反
if(tzw==6&&addry==0x42&&addrx==0x80)
{qfbit=1;}
else if(tzw==5&&addry==0x43&&addrx==0x98)
{qfbit=1;}
else if(tzw==4&&addry==0x43&&addrx==0x9e)
{qfbit=1;}
else if(tzw==3&&addry==0x43&&addrx==0xa4)
{qfbit=1;}
else if(tzw==2&&addry==0x43&&addrx==0xaa)
{qfbit=1;}
else if(tzw==1&&addry==0x43&&addrx==0xb6)
{qfbit=1;}
else
{qfbit=0;}
break;
/////////////////////////////////////
case 5://高度设置时取反程序
if(tzw==6&&addry==0x43&&addrx==0x98)
{qfbit=1;}
else if(tzw==5&&addry==0x43&&addrx==0x9e)
{qfbit=1;}
else if(tzw==4&&addry==0x43&&addrx==0xa4)
{qfbit=1;}
else if(tzw==3&&addry==0x43&&addrx==0xaa)
{qfbit=1;}
else if(tzw==2&&addry==0x43&&addrx==0xb0)
{qfbit=1;}
else if(tzw==1&&addry==0x43&&addrx==0xb6)
{qfbit=1;}
else
{qfbit=0;}
break;
//////////////
case 4://闹钟设置时
if(tzw==8&&addry==0x42&&(addrx==0x80||addrx==0x8c))
{qfbit=1;}
else if(tzw==7&&addry==0x43&&addrx==0x98)
{qfbit=1;}
else if(tzw==6&&addry==0x43&&addrx==0x9e)
{qfbit=1;}
else if(tzw==5&&addry==0x43&&addrx==0xaa)
{qfbit=1;}
else if(tzw==4&&addry==0x43&&addrx==0xb0)
{qfbit=1;}
else if(tzw==3&&addry==0x43&&addrx==0xbc)
{qfbit=1;}
else if(tzw==2&&addry==0x43&&addrx==0xc2)
{qfbit=1;}
else if(tzw==1&&addry==0x44&&addrx==0x9e)
{qfbit=1;}
else
{qfbit=0;}
break;
//////
case 3://时区设置时
if(tzw==1&&addry==0x43&&addrx==0xaa)
{qfbit=1;}
else if(tzw==2&&addry==0x43&&addrx==0xa4)
{qfbit=1;}
else if(tzw==3&&addry==0x42&&addrx==0x98)
{qfbit=1;}
else
{qfbit=0;}
break;
///////
case 2://日历查询时
if(tzw==6&&addry==0x42&&addrx==0x80)
{qfbit=1;}
else if(tzw==5&&addry==0x42&&addrx==0x86)
{qfbit=1;}
else if(tzw==4&&addry==0x42&&addrx==0x92)
{qfbit=1;}
else if(tzw==3&&addry==0x42&&addrx==0x98)
{qfbit=1;}
else if(tzw==2&&addry==0x42&&addrx==0xa4)
{qfbit=1;}
else if(tzw==1&&addry==0x42&&addrx==0xaa)
{qfbit=1;}
else
{qfbit=0;}
break;
//////////////
case 1://位置设置时
if(tzw==8&&addry==0x42&&(addrx==0x80||addrx==0x8c))
{qfbit=1;}
else if(tzw==7&&addry==0x43&&addrx==0x98)
{qfbit=1;}
else if(tzw==6&&addry==0x43&&addrx==0x9e)
{qfbit=1;}
else if(tzw==5&&addry==0x43&&addrx==0xa4)
{qfbit=1;}
else if(tzw==4&&addry==0x43&&addrx==0xb0)
{qfbit=1;}
else if(tzw==3&&addry==0x43&&addrx==0xb6)
{qfbit=1;}
else if(tzw==2&&addry==0x43&&addrx==0xc2)
{qfbit=1;}
else if(tzw==1&&addry==0x43&&addrx==0xc8)
{qfbit=1;}
else
{qfbit=0;}
break;
}
}
else
{qfbit=0;}
}
/*********显示程序开始************************/
void LCD_write_byte(uchar dat,uchar command)
{uchar i;
P2OUT &= ~BIT1;// 把CE拉高
if (command == 0)
{P2OUT &= ~BIT2;}//把DC=0;
else
{P2OUT |= BIT2;}//DC=1;
for(i=0;i<8;i++)
{if(dat&0x80)
{P2OUT |= BIT3;}//DIN输出1;
else
{P2OUT &= ~BIT3;}//DIN输出0;
P2OUT &= ~BIT4;//产生时钟上升沿
dat = dat << 1;//
P2OUT |= BIT4;
}
P2OUT |= BIT1;//把CE拉低
}
void LCD_init(void)
{P2DIR |=0x1f;//把P2.0~4定义为输出
P2OUT &= ~BIT0;//复位RST
delay_us(1);
P2OUT |= BIT0;
LCD_write_byte(0x21,0); // 使用扩展命令设置LCD模式
LCD_write_byte(0xc8,0); // 设置偏置电压
LCD_write_byte(0x06,0); // 温度校正
LCD_write_byte(0x13,0); // 1:48
LCD_write_byte(0x20,0); // 使用基本命令
LCD_write_byte(0x0c,0); // 设定显示模式,正常显示
}
void LCD_clear(void)
{unsigned int i;
LCD_write_byte(0x0c, 0);
LCD_write_byte(0x80, 0);
for (i=0; i<504; i++)
LCD_write_byte(0, 1);
}
void LCD_write_addrdata(uchar addry,uchar addrx,uchar wdata)//向某一地址写一个数据
{uchar j;
uchar xsddata[6];
qufanpd(addry,addrx);//调用取反判断程序
LCD_write_byte(addry,0);
LCD_write_byte(addrx,0);
for(j=0;j<6;j++)
{xsddata[j]=flashRead_data((wdata*6+j));
if(qfbit==1)//要取反
{xsddata[j]=~xsddata[j];}
LCD_write_byte(xsddata[j],1);
}
}
void LCD_write_addrdata1(uchar addry,uchar addrx,uchar wdata,uchar wdata1,uchar hdata)//向某一地址写2个数据和一个汉字
{uchar j;
uchar xsddata[6],xsddata1[6],xsddata2[6],xsddata3[6];
uchar xshdata1[24],xshdata[12];
for(j=0;j<6;j++)
{xsddata[j]=(flashRead_data((wdata*6+j))<<4)&0xf0;
xsddata1[j]=(flashRead_data((wdata*6+j))>>4)&0x0f;
xsddata2[j]=(flashRead_data((wdata1*6+j))<<4)&0xf0;
xsddata3[j]=(flashRead_data((wdata1*6+j))>>4)&0x0f;
}
for(j=0;j<12;j++)
{xshdata1[j]=(flashRead_data((200+hdata*24+j))<<4)&0xf0;
xshdata[j]=(flashRead_data((200+hdata*24+j))>>4)&0x0f;
}
for(j=0;j<6;j++)
{xshdata1[j]=xshdata1[j]|xsddata1[j];}
for(j=6;j<12;j++)
{xshdata1[j]=xshdata1[j]|xsddata3[j-6];}
for(j=12;j<24;j++)
{xshdata1[j]=(flashRead_data((200+hdata*24+j))<<4)&0xf0;
xshdata1[j]=xshdata1[j]|xshdata[j-12];
}
LCD_write_byte(addry,0);
LCD_write_byte(addrx,0);
for(j=0;j<6;j++)
{LCD_write_byte(xsddata[j],1);}
for(j=0;j<6;j++)
{LCD_write_byte(xsddata2[j],1);}
LCD_write_byte(++addry,0);
LCD_write_byte(addrx,0);
for(j=0;j<12;j++)
{LCD_write_byte(xshdata1[j],1);}
LCD_write_byte(++addry,0);
LCD_write_byte(addrx,0);
for(j=12;j<24;j++)
{LCD_write_byte(xshdata1[j],1);}
}
void LCD_write_addrhan(uchar addry,uchar addrx,uchar hdata)
{uchar j;
uchar xshdata[24];
qufanpd(addry,addrx);//调用取反判断程序
LCD_write_byte(addry,0);
LCD_write_byte(addrx,0);
for(j=0;j<12;j++)
{xshdata[j]=flashRead_data((200+hdata*24+j));
if(qfbit==1)//要取反
{xshdata[j]=~xshdata[j];}
LCD_write_byte(xshdata[j],1);
}
LCD_write_byte(++addry,0);
LCD_write_byte(addrx,0);
for(j=12;j<24;j++)
{xshdata[j]=flashRead_data((200+hdata*24+j));
if(qfbit==1)//要取反
{xshdata[j]=~xshdata[j];}
LCD_write_byte(xshdata[j],1);
}
}
void LCD_write_addrhan1(uchar addry,uchar addrx,uchar hdata1)//向某一地址写1个汉字2
{uchar j;
uchar xshdata1[24];
uchar xshdata[12];
uchar xshdata3[12];
qufanpd(addry,addrx);//调用取反判断程序
for(j=0;j<12;j++)
{xshdata1[j]=flashRead_data((200+hdata1*24+j))<<4;
xshdata[j]=flashRead_data((200+hdata1*24+j))>>4;
if(qfbit==1)//要取反
{xshdata1[j]=(~xshdata1[j])&0xf0;
xshdata[j]=(~xshdata[j])&0x0f;
}
}
for(j=12;j<24;j++)
{xshdata3[j-12]=flashRead_data((200+hdata1*24+j))<<4;
if(qfbit==1)//要取反
{xshdata3[j-12]=(~xshdata3[j-12])&0xf0;}
xshdata1[j]=xshdata3[j-12]|xshdata[j-12];
}
LCD_write_byte(addry,0);
LCD_write_byte(addrx,0);
for(j=0;j<12;j++)
{LCD_write_byte(xshdata1[j],1);}
LCD_write_byte(++addry,0);
LCD_write_byte(addrx,0);
for(j=12;j<24;j++)
{LCD_write_byte(xshdata1[j],1);}
}
void LCD_write_addrhan2(uchar addry,uchar addrx,uchar hdata1,uchar hdata2)//向某一地址写2汉字
{uchar j;
uchar xshdata1[24],xshdata2[24];
uchar xshdata[12];
uchar xshdata3[12];
qufanpd(addry,addrx);//调用取反判断程序
for(j=0;j<12;j++)
{xshdata1[j]=flashRead_data((200+hdata1*24+j));
xshdata[j]=flashRead_data((200+hdata2*24+j))<<4;
if(qfbit==1)//要取反
{xshdata1[j]=~xshdata1[j];}
if(qfbit==2)//要取反
{xshdata[j]=(~xshdata[j])&0xf0;}
}
for(j=12;j<24;j++)
{xshdata3[j-12]=flashRead_data((200+hdata1*24+j));
if(qfbit==1)//要取反
{xshdata3[j-12]=~xshdata3[j-12];
xshdata3[j-12]=xshdata3[j-12]&0x0f;
}
xshdata1[j]=xshdata3[j-12]|xshdata[j-12];
}
////////////////////
LCD_write_byte(addry,0);
LCD_write_byte(addrx,0);
for(j=0;j<12;j++)
{LCD_write_byte(xshdata1[j],1);}
LCD_write_byte(++addry,0);
LCD_write_byte(addrx,0);
for(j=12;j<24;j++)
{LCD_write_byte(xshdata1[j],1);}
/////////////////////
for(j=0;j<12;j++)
{xshdata[j]=(flashRead_data((200+hdata2*24+j))>>4)&0x0f;
}
for(j=12;j<24;j++)
{xshdata2[j]=(flashRead_data((200+hdata2*24+j))<<4)|xshdata[j-12];
}
LCD_write_byte(++addry,0);
LCD_write_byte(addrx,0);
if(qfbit==2)//要取反
{for(j=12;j<24;j++)
{xshdata2[j]=~xshdata2[j];}
}
for(j=12;j<24;j++)
{LCD_write_byte(xshdata2[j],1);}
}
void znanzhtu(uchar addry,uchar addrx,uchar tudata)
{uchar j;
LCD_write_byte(addry,0);
LCD_write_byte(addrx,0);
for(j=0;j<27;j++)
{LCD_write_byte(flashRead_data((3000+tudata*27+j)),1);}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -