2024年5月11日发(作者:)

#include

//宏定义

#define uchar unsigned char

#define uint unsigned int

#define LcdData P0

//引脚定义

sbit RS=P2^0;//1602LCD RS

sbit RW=P2^1;//1602LCD RW

sbit E=P2^2;//1602LCD E

sbit RLED=P2^3;//Red LED

sbit GLED=P2^4;//Green LED

sbit BUZZER=P2^5;//蜂鸣器

sbit DQ=P2^6;//DS18B20 DQ

sbit MAX=P1^0;//+

sbit MIN=P1^1;//--

sbit ZHUAN=P1^2;//转换

//全局变量定义

bit Temp_Flag;//正负温度标志:温度为正Temp_Flag=0,否则为1

uint Temp=25;//温度值

uint max=300;//温度值

uint min=250,z=0;//温度值

//函数申明

void Delayms(uint xms);//ms级延时函数

void WriteLcd(uchar Dat,bit x);//写1602LCD指令、数据函数

void InitLCD(void);//初始化1602LCD函数

void RledBlink(void);//Red LED闪烁函数

void GledBlink(void);//Green LED闪烁函数

void Delayus(uchar xus);//us级延时函数

bit Init_DS18B20(void);//初始化DS18B20函数

uchar Read_DS18B20(void);//读DS18B20函数

void Write_DS18B20(uchar Dat);//写DS18B20函数

void GetTemp();//取温度函数

void CalcTestTemp();//温度处理函数

void InitT0(void);//初始化定时器T0

uchar FirstLine[16]={""};//用于1602LCD第2行显示的数组

uchar SecondLine[16]={"shang xian xia"};//用于1602LCD第1行显示的数组

//ms级延时函数

void Delayms(uint xms)//1ms左右延时

{

uint i,j;

for(i=xms; i>0; i--)

for(j=110; j>0; j--);

}

//写1602LCD指令、数据函数

void WriteLcd(uchar Dat,bit x)//写指令时x=0,写数据时x=1

{

E=0;

LcdData=Dat;

RS=x;

RW=0;

E=1;

Delayms(1);

E=0;

}

//初始化1602LCD函数

void InitLcd(void)

{

WriteLcd(0x38,0);//功能设定(38H)

WriteLcd(0x0C,0);//显示开、关设定(0CH)

WriteLcd(0x06,0);//输入模式设定(06H)

WriteLcd(0x01,0);//清除显示(01H)

}