📄 w014.c
字号:
/* */
/*******************************************************************/
void Beep()
{
unsigned char y ;
for (y=0 ;y<100 ;y++)
{
Delay(60) ;
BEEP=!BEEP ; //BEEP取反
}
BEEP=1 ; //关闭蜂鸣器
Delayms(20) ;
}
/*******************************************************************/
/* */
/* 温度高于上限时显示 */
/* */
/*******************************************************************/
void DisplayTHMenu()
{
uchar code dis_code5[ ] = {" TEMP>TH C "} ;
uchar code dis_code6[ ] = {" TEMP: . C "} ;
LCD_DisplayLine(dis_code5,dis_code6);
LCD_WriteMytab() ; //自定义字符写入CGRAM
Delay(5) ; //显示自定义字符
LCD_DisplayPosit(0x0D) ;
LCD_WriteDate(0x00) ;
Delay(5) ;
LCD_DisplayPosit(0x4d) ;
LCD_WriteDate(0x00) ;
display_TH[0] = TH/10+0x30;
display_TH[1] = TH%10+0x30;
LCD_DisplayPosit(0x0B) ;
LCD_WriteDate(display_TH[0]) ;
LCD_DisplayPosit(0x0C) ;
LCD_WriteDate(display_TH[1]) ;
}
/*******************************************************************/
/* */
/* 温度低于下限时显示 */
/* */
/*******************************************************************/
void DisplayTLMenu()
{
uchar code dis_code5[ ] = {" TEMP<TL C "} ;
uchar code dis_code6[ ] = {" TEMP: . C "} ;
LCD_DisplayLine(dis_code5,dis_code6);
LCD_WriteMytab() ; //自定义字符写入CGRAM
Delay(5) ; //显示自定义字符
LCD_DisplayPosit(0x0D) ;
LCD_WriteDate(0x00) ;
Delay(5) ;
LCD_DisplayPosit(0x4d) ;
LCD_WriteDate(0x00) ;
display_TL[0] = TL/10+0x30;
display_TL[1] = TL%10+0x30;
LCD_DisplayPosit(0x0B) ;
LCD_WriteDate(display_TL[0]) ;
LCD_DisplayPosit(0x0C) ;
LCD_WriteDate(display_TL[1]) ;
}
/*******************************************************************/
/* */
/* 扫描设置键 */
/* */
/*******************************************************************/
void SetKeyScan()
{
if(S1==0)
{
Delay(1000);
if(S1==0)
{
Keyset_Flag = 1;
Delay(200);
}
}
}
/*******************************************************************/
/* */
/* 扫描处理键 */
/* */
/*******************************************************************/
unsigned char KeyworthScan()
{
unsigned char key_s;
key_s = 0x00;
key_s |= S1;
key_s <<= 1;
key_s |= S2;
key_s <<= 1;
key_s |= S3;
return key_s;
}
/*******************************************************************/
/* */
/* 温度上限设置界面上限值显示 */
/* */
/*******************************************************************/
void DisplayTH()
{
display_TH[0] = TH/10+0x30;
display_TH[1] = TH%10+0x30;
LCD_DisplayPosit(0x4b) ;
LCD_WriteDate(display_TH[0]) ;
LCD_DisplayPosit(0x4c) ;
LCD_WriteDate(display_TH[1]) ;
}
/*******************************************************************/
/* */
/* 温度上限设置界面显示 */
/* */
/*******************************************************************/
void SetTHMenu()
{
uchar code dis_code5[ ] = {" SET THE TH ? "} ;
uchar code dis_code6[ ] = {" NOW TH = C "} ;
LCD_DisplayLine(dis_code5,dis_code6);
LCD_WriteMytab() ;
Delay(10) ;
LCD_DisplayPosit(0x4d) ;
LCD_WriteDate(0x00) ;
}
/*******************************************************************/
/* */
/* 温度上限值设置时显示 */
/* */
/*******************************************************************/
void SetTH()
{
uchar key_v = 0x07;
uchar a = 1;
SetTHMenu();
DisplayTH();
while(a==1)
{
uchar key;
key = KeyworthScan();
if(key!=key_v)
{
Delayms(10);
key = KeyworthScan();
DisplayTH();
if(key!=key_v)
{
key_v = key;
if(key_v==0x05)
{
TH++;
if(TH>99)TH=99;
Keyset_Flag = 2;
}
else if(key_v==0x06)
{
TH--;
if(TH<0)TH=0;
Keyset_Flag = 2;
}
else if(key_v==0x03&&Keyset_Flag == 2)
{
a = 0;
}
}
}
}
}
/*******************************************************************/
/* */
/* 温度下限设置界面显示 */
/* */
/*******************************************************************/
void SetTLMenu()
{
uchar code dis_code5[ ] = {" SET THE TL ? "} ;
uchar code dis_code6[ ] = {" NOW TL = C "} ;
LCD_DisplayLine(dis_code5,dis_code6);
LCD_WriteMytab() ;
Delay(10) ;
LCD_DisplayPosit(0x4d) ;
LCD_WriteDate(0x00) ;
}
/*******************************************************************/
/* */
/* 温度下限设置界面下限值显示 */
/* */
/*******************************************************************/
void DisplayTL()
{
display_TL[0] = TL/10+0x30;
display_TL[1] = TL%10+0x30;
LCD_DisplayPosit(0x4b) ;
LCD_WriteDate(display_TL[0]) ;
LCD_DisplayPosit(0x4c) ;
LCD_WriteDate(display_TL[1]) ;
}
/*******************************************************************/
/* */
/* 温度下限值设置时显示 */
/* */
/*******************************************************************/
void SetTL()
{
uchar key_v = 0x07;
uchar a=1;
SetTLMenu();
DisplayTL();
while(a==1)
{
uchar key_s;
key_s = KeyworthScan();
if(key_s!=key_v)
{
Delayms(10);
key_s = KeyworthScan();
DisplayTL();
if(key_s!=key_v)
{
key_v = key_s;
if(key_v==0x05)
{
TL++;
if(TL>99)TL=99;
Keyset_Flag = 3;
}
else if(key_v==0x06)
{
TL--;
if(TL<0)TL=0;
Keyset_Flag = 3;
}
else if(key_v==0x03&&Keyset_Flag == 3)
{
a=0;
}
}
}
}
}
/*******************************************************************/
/* */
/* 温度上下限设置 */
/* */
/*******************************************************************/
void SetTH_TL()
{
SetTH();
Delay(100);
SetTL();
Keyset_Flag=0;
DS18B20_OkMenu();
}
/*******************************************************************/
/* */
/* 主函数 */
/* */
/*******************************************************************/
void main()
{
do
{
if((presence==0)&&(dis_data[4]<TH)&&(dis_data[4]>=TL)) //温度正常
{
DS18B20_OkMenu() ;
while((dis_data[4]<TH)&&(dis_data[4]>=TL))
{
ReadTemperature() ;
TemperatureDisplay() ;
BEEP_Flag=0;
RED_Light=1;
SetKeyScan();
if(Keyset_Flag==1)
{
SetTH_TL();
Delayms(500);
}
}
}
if((presence==0)&&(dis_data[4]>=TH)) //温度高于上限
{
DisplayTHMenu();
while(dis_data[4]>=TH)
{
ReadTemperature() ;
TemperatureDisplay() ;
if(BEEP_Flag==0)Beep();
BEEP_Flag=1;
RED_Light=0;
SetKeyScan();
if(Keyset_Flag==1)
{
SetTH_TL();
Delayms(500);
}
}
}
if((presence==0)&&(dis_data[4]<TL)) //温度低于下限
{
DisplayTLMenu();
while(dis_data[4]<TL)
{
ReadTemperature() ;
TemperatureDisplay() ;
if(BEEP_Flag==0)Beep();
BEEP_Flag=1;
RED_Light=0;
SetKeyScan();
if(Keyset_Flag==1)
{
SetTH_TL();
Delayms(500);
}
}
}
}
while(!presence);
DS18B20_ErrorMenu() ; //未检测到DS18B20
do
{
DS18B20_Init() ;
if(BEEP_Flag==0)Beep();
BEEP_Flag=1;
}
while(presence);
}
/*******************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -