资源简介

基于STC89S52单片机的温度控制系统,可以通过按键设置最大最小温度值,DS18B20温度传感器采集回来温度通过1602液晶显示屏显示。内含电路图和程序源码

资源截图

代码片段和文件信息

/**********************BST-V51实验开发板例程************************

*  平台:BST-V51 + Keil 5 + STC89C52
*  名称:18B20实时温度计1602显示  
*  日期:2018-10-28
*  晶振:11.0592MHZ

******************************************************************/

#include 
#include 
#include 

#define uchar unsigned char
#define uint  unsigned int

sbit ds = P2^2;  //ds18b20端口定义
sbit rw = P1^1;  //LCD1602端口定义
sbit RS = P1^0;  
sbit LCDEN = P2^5; 
sbit kaiguan = P2^0;
sbit K1 = P3^4;  //K1独立按键设置温度+
sbit K2 = P3^5;  //K1独立按键设置温度-

void delayUs()  //延时一个机器周期
{
    _nop_();
}

 void delayMs(uint a)  //延时a毫秒
{
    uint i j;
    for(i = a; i > 0; i--)
        for(j = 100; j > 0; j--);
}

/*******************************LCD1602*******************************/
void writeComm(uchar comm)  //LCD写命令
{
    RS = 0;    
    P0 = comm;
    LCDEN = 1;
    delayUs();
    LCDEN = 0;
    delayMs(1);
}

void writeData(uchar dat)  //写数据:RS=1 RW=0;
{
    RS = 1;
    P0 = dat;
    LCDEN = 1;
    delayUs();
    LCDEN = 0;
    delayMs(1);
}

void init()  //LCD初始化
{
    rw = 0; 
    writeComm(0x38);
    writeComm(0x0c); 
    writeComm(0x06);
    writeComm(0x01); 
}

void writeString(uchar * str uchar length)  //LCD写字符串
{
    uchar i;
    for(i = 0; i < length; i++)
    {
         writeData(str[i]);
    }
 }
 
/*******************************DS18B20*******************************/
void dsInit()  //ds18b20初始化
{
    unsigned int i;  
    ds = 0;
    i = 100;  
     while(i>0) i--;
    ds = 1;   
    i = 4;
     while(i>0) i--;
}
 
void dsWait()  //等待
 {
      unsigned int i;
      while(ds);  
      while(~ds);
      i = 4;
      while(i > 0) i--;
}


bit readBit()  //读一位数据
{
    unsigned int i;
    bit b;
    ds = 0;
    i++;   
    ds = 1; 
    i++; i++;  
    b = ds;
    i = 8; 
    while(i>0) i--;
    return b;
}

unsigned char readByte()  //读一个字节
{
    unsigned int i;
    unsigned char j dat;
    dat = 0;
    for(i=0; i<8; i++)
    {
        j = readBit();
      
        dat = (j << 7) | (dat >> 1);
    }
    return dat;
}


void writeByte(unsigned char dat)  //写一个字节
{
    unsigned int i;
    unsigned char j;
    bit b;
    for(j = 0; j < 8; j++)
    {
        b = dat & 0x01;
        dat >>= 1;
    
        if(b)   
        {
           ds = 0;          i++; i++;  
            ds = 1;    
            i = 8; while(i>0) i--;  
        }
        else  
        {
            ds = 0;
          i = 8; while(i>0) i--;  
            ds = 1;
           i++; i++;
        }
    }
}


void sendChangeCmd()  //温度转换
{
    dsInit();    
    dsWait();   
    delayMs(1);    
    writeByte(0xcc);  //跳过64位光刻ROM操作
    writeByte(0x44);  //写入RAM操作
}

void sendReadCmd()  
{
    dsInit();
    dsWait();
    delayMs(1);
    writeByte(0xcc); 
    writeByte(0xbe); 
}


int getTmpValue()  //获取温度
{
    unsigned int tmpvalue;
    int 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      14721  2018-10-29 00:57  DS18B20温度控制(1602显示)\1602-wendu

     文件        994  2018-10-29 00:57  DS18B20温度控制(1602显示)\1602-wendu.build_log.htm

     文件       5131  2018-10-29 00:55  DS18B20温度控制(1602显示)\1602-wendu.c

     文件       6745  2018-10-29 00:57  DS18B20温度控制(1602显示)\1602-wendu.hex

     文件         37  2018-10-29 00:57  DS18B20温度控制(1602显示)\1602-wendu.lnp

     文件      10411  2018-10-29 00:57  DS18B20温度控制(1602显示)\1602-wendu.LST

     文件      20590  2018-10-29 00:57  DS18B20温度控制(1602显示)\1602-wendu.M51

     文件      15635  2018-10-29 00:57  DS18B20温度控制(1602显示)\1602-wendu.OBJ

     文件        259  2013-11-02 22:23  DS18B20温度控制(1602显示)\1602-wendu.plg

    .......     85507  2018-11-01 21:45  DS18B20温度控制(1602显示)\1602-wendu.uvgui.36564

     文件       5564  2018-10-28 18:46  DS18B20温度控制(1602显示)\1602-wendu.uvopt

     文件      13851  2018-10-28 19:32  DS18B20温度控制(1602显示)\1602-wendu.uvproj

     文件       1330  2013-11-02 22:23  DS18B20温度控制(1602显示)\1602-wendu_Opt.Bak

     文件       2153  2012-02-15 20:38  DS18B20温度控制(1602显示)\1602-wendu_Uv2.Bak

     文件      39936  2018-05-04 14:38  DS18B20温度控制(1602显示)\温度传感器ds18b20模块化程序.doc

     文件      16491  2018-10-29 01:12  DS18B20温度控制(1602显示)\电路\@Q9(Q~{HR_MGYWS4U)GS@19.png

     文件    4032397  2018-10-29 01:17  DS18B20温度控制(1602显示)\电路\IMG_20181029_011728.jpg

     文件      52569  2018-10-29 01:12  DS18B20温度控制(1602显示)\电路\P32Y3]BCE0IRCU5NPU94WR9.png

     文件     192150  2018-10-29 01:11  DS18B20温度控制(1602显示)\电路\ZI_CR$9Z~2[%(‘FPW%4VY_3.png

     目录          0  2018-10-29 01:22  DS18B20温度控制(1602显示)\电路

     目录          0  2019-01-03 08:59  DS18B20温度控制(1602显示)

----------- ---------  ---------- -----  ----

              4516471                    21


评论

共有 条评论