谁能帮其找找错误啊 检查好几遍了 都没检查出来 求指导
#include<reg52.h>#include "LCD_drive.h" //包含LCD驱动程序软件包
#include "DS18B20_drive.h" //DS18B20驱动程序软件包
#define uchar unsigned char
#define uint unsigned int
sbit SPEAK=P2^4; //蜂鸣器
sbit RELAY=P3^6; //继电器
sbit K1=P3^2; //按键K1
sbit K2=P3^3; //按键K2
sbit K3=P3^4; //按键K3
sbit K4=P3^5; //按键K4
bit temp_flag ; //判断DS18B20是否正常标志位,正常时为1,不正常时为0
bit K1_flag=0 ; //K1键按下时,该标志位为1,因为K1是一个双功能键,需要设置标志位进行区分
uchar count_50ms=0; //50ms定时器计数器
bit flag_500ms=0; //500ms标志位,满500ms时该位置1,用来控制小喇叭的闪烁频率
bit key_up; //按键加1减1标志位,用来控制K1键进行加1和减1的切换
uchar disp_buf[8]={0}; //显示缓冲
uchar TH_buf[]={0}; //报警高位缓冲
uchar TL_buf[]={0}; //报警低位缓冲
uchar temp_comp; //用来存放比较温度值(即温度值的整数部分),以便和报警值进行比较
uchar temp_data[2] = {0x00,0x00}; //用来存放温度数据的高位和低位
uchar code speaker[8] = {0x01,0x1b,0x1d,0x19,0x1d,0x1b,0x01,0x00}; //小喇叭的LCD点阵数据
uchar temp_TH=38; //高温报警温度初始值
uchar temp_TL=37; //低温报警温度初始值
uchar code line1_data[] = " DS18B20 OK "; //DS18B20正常时第1行显示的信息
uchar code line2_data[] = " TEMP: "; //DS18B20正常时第2行显示的信息
uchar code menu1_error[] = " DS18B20 ERR "; //DS18B20出错时第1行显示的信息
uchar code menu2_error[] = " TEMP: ---- "; //DS18B20出错时第2行显示的信息
uchar code menu1_set[] =" SET TH: "; //设置菜单第1行温度设置信息
uchar code menu2_set[] =" SET TL: "; //设置菜单第2行温度设置信息
uchar code menu2_H[] = ">H "; //温度过高时,第2行显示高温报警符号
uchar code menu2_L[] ="<L"; //温度度过低时,第2行显示低温报警符号
/********以下是函数声明,由于本例采用的函数较多,应加入函数声明部分********/
void timer0_init(); //定时器T0初始化函数声明
void SpeakerFlash(); //小喇叭符号闪烁函数声明
void lcd_write_CGRAM(); //写CGRAM函数声明
void TempDisp(); //温度值显示函数声明
void SPEAK(); //蜂鸣器响一声函数声明
void MenuError(); //DS18B20出错菜单函数声明
void MenuOk(); //DS18B20正常菜单函数声明
void THTL_Disp(); //报警温度值显示函数声明
void GetTemperture(); //读取温度值函数声明
void TempConv(); //温度值转换函数声明
void Write_THTL() ; //报警值写入函数声明(写入DS18B20的RAM和EEPROM)
void ScanKey(); //按键扫描函数声明
void SetTHTL(); //报警温度值设置函数声明
void TempComp(); //温度比较函数声明
/********以下是温度值显示函数,负责将测量温度值显示在LCD上********/
void TempDisp()
{
lcd_wcmd(0x46 | 0x80); //从第2行第6列开始显示温度值
lcd_wdat(disp_buf[3]); //百位数显示
lcd_wdat(disp_buf[2]); //十位数显示
lcd_wdat(disp_buf[1]); //个位数显示
lcd_wdat('.'); //显示小数点
lcd_wdat(disp_buf[0]); //小数位数显示
lcd_wdat(0xdf); //0xdf是圆圈°的代码,以便和下面的C配合成温度符号℃
lcd_wdat('C'); //显示C
}
/*********以下是蜂鸣器响一声函数********/
void SPEAK()
{
SPEAK =0; //蜂鸣器响
Delay_ms(100);
SPEAK =1; //关闭蜂鸣器
Delay_ms(100);
}