1.新建项目导入AT24C02、Key、Delay、LCD1602、DS18B02相关文件
2.编写main.c函数
#include <REGX52.H>
#include "LCD1602.h"
#include "Delay.h"
#include "Key.h"
#include "AT24C02.h"
#include "DS18B02.h"
float T=0,Tshow=0;
unsigned char t_low=0,t_high=0;
void main()
{
unsigned char keynum;
LCD_Init();
while(1)
{
//读取阈值部分
t_high = AT24C02_ReadByte(0);
t_low = AT24C02_ReadByte(1);
if(t_high>125 || t_low<-55 || t_high <= t_low)
{//如果阈值非法,则设为默认值
t_high=20;
t_low=15;
}
t_Trans();
T=t_Read();
Tshow=T;
if(Tshow<0)
{
LCD_ShowChar(1,1,'-');
Tshow=-Tshow;
}
else
{
LCD_ShowChar(1,1,'+');
}
LCD_ShowNum(1,2,Tshow,3);
LCD_ShowChar(1,5,'.');
LCD_ShowNum(1,6,(unsigned long)(Tshow*10000)%10000,3);
//阈值调整
keynum=Key();
if(keynum==1)
{
if(t_high<125)
t_high++;
}
if(keynum==2)
{
if(t_high-1==t_low||t_high-1==-56)t_high++;
else t_high--;
}
if(keynum==3)
{
if(t_low<t_high)
t_low++;
}
if(keynum==4)
{
if(t_low>-55&&t_low<t_high)
t_low--;
}
//显示超过阈值部分
if(Tshow<t_low)
{
LCD_ShowString(1,10,"lower");
}
else if(Tshow>t_high)
{
LCD_ShowString(1,10,"higher");
}
else
{
LCD_ShowString(1,10," ");
}
LCD_ShowNum(2,1,t_high,4);
LCD_ShowNum(2,7,t_low,4);
AT24C02_WriteByte(0,t_high);
Delay(5);
AT24C02_WriteByte(1,t_low);
Delay(5);
}
}
3.效果展示
DS18B02按键控制模块实现效果