小白跟做江科大51单片机之DS18B02按键控制效果

1.新建项目导入AT24C02、Key、Delay、LCD1602、DS18B02相关文件

2.编写main.c函数

#include
#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_low++;
        }
        if(keynum==4)
        {
            if(t_low>-55&&t_low             t_low--;
        }
        
        
        //显示超过阈值部分
        if(Tshow         {
            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按键控制模块实现效果

你可能感兴趣的:(51单片机,嵌入式硬件,单片机)