• 大小: 42KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: 其他
  • 标签: STC89C51  DS18B20  温度  

资源简介

STC89C51采集DS18B20温度,控制2个继电器 温度低于一定的时候动作1个 高于一定的时候动作另1个

资源截图

代码片段和文件信息

#include “reg52.h“
#include         //函数处理头文件
#include          //字符串处理头文件  
#include           // 输入输出函数头文件

#define uchar unsigned char    //宏定义 无符号字符串型
#define uint unsigned int    //宏定义 无符号整型

sbit rs = P1^2; //LCD1602控制脚声明
sbit rw = P1^1;
sbit ep = P1^0;
sbit D3=P1^4; //DS18B20信号线声明
sbit J1=P1^6; //继电器控制1
sbit J2=P1^7; //继电器控制2
sbit fmq=P2^7;

sbit k1=P2^0; //DS18B20信号线声明
sbit k2=P2^1; //继电器控制1
sbit k3=P2^2; //继电器控制2
sbit k4=P2^3; //DS18B20信号线声明
sbit k5=P2^4; //继电器控制1
sbit k6=P2^5; //继电器控制2

void InitializeSystem();
void Delay(uint time);
void delay1(uint a); //小延时函数声明
void init_18b20(); //18B20温度传感器初始化函数申明  
void weite(uchar dat); //向18b20写一个字节函数声明
uchar read(); //向18b20读一个字节函数声明
uchar read_tu(); //读18b20温度函数声明
bit lcd_bz();
lcd_wcmd(uchar cmd);
lcd_pos(uchar pos);
lcd_wdat(uchar dat);
lcd_init();
LCD1206();
void RS232() ;
void kk(viod);
void pro();

unsigned char code dis0[] = {“TEMP:“};//声明一些字符串
unsigned char code dis1[] = {“.“}; 
unsigned char code dis2[] = {“C“};  
unsigned char code dis3[] = {“ON “};
unsigned char code dis4[] = {“OFF“};//关
unsigned char code dis5[] = {“k1:“};
unsigned char code dis6[] = {“k2:“};    
unsigned char code dis7[] = {“0123456789“}; 
unsigned char code dis8[] = {“auto“}; 
unsigned char code dis9[] = {“shou“}; 
unsigned char code dis10[] = {“H “}; 
unsigned char code dis11[] = {“L “}; 
 
uint ctttkeyfalgKCOMh=40l=10mode=0J1FALGJ2FALGa;   
uint temp_data[2];  
float temp;            
void main( )

{    
     Delay(30);       //上电延时,目的是去干扰
     InitializeSystem();//系统初始化
     init_18b20(); //DS18B20初始化
 RS232(); //串口初始化
     while ( 1 )
     {   
read_tu();      //将读回的温度赋值给c
LCD1206();      //显示处理
a++;
  if(a>=100)
  {
   a=0;
ES=0;
TI=1;             
      printf(“%u“t);//
ES=1;
  }
 }       
}

void InitializeSystem() //系统初始化
{     
     P0 = 0xFF;
 P1 = 0xFF;
 P2 = 0xFF; 
 P3 = 0xFF;
 J1=1;
 J2=1;
 lcd_init(); // 初始化LCD
 Delay(1);
}
void Delay(uint time)          //大延时函数
{
  uint ik  ;
  for(i=0;i<255;i++)
    for(k=0;k      _nop_();   
}
bit lcd_bz()              // 测试LCD忙碌状态
{
bit result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0 & 0x80);
ep = 0;
return result;
}
lcd_wcmd(uchar cmd)// 写入指令数据到LCD
{
while(lcd_bz());
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}

lcd_pos(uchar pos)
{ //设定显示位置
lcd_wcmd(pos | 0x80);
}
lcd_wdat(uchar dat)
{ //写入字符显示数据到LCD
while(lcd_bz());
rs = 1;
rw = 0;
ep = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
lcd_init()  //LCD初始化设定
{
lcd_wcmd(0

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

     文件      27893  2013-05-26 19:13  DS18B20自动控制温度\ds18b20

     文件      12877  2013-05-26 19:13  DS18B20自动控制温度\ds18b20.hex

     文件         59  2013-05-26 19:13  DS18B20自动控制温度\ds18b20.lnp

     文件      32443  2013-05-26 19:13  DS18B20自动控制温度\ds18b20.M51

     文件       1072  2013-05-26 19:15  DS18B20自动控制温度\ds18b20.Opt

     文件        190  2015-11-25 19:03  DS18B20自动控制温度\ds18b20.plg

     文件       2034  2013-05-26 19:15  DS18B20自动控制温度\ds18b20.uv2

     文件       1073  2013-05-26 19:15  DS18B20自动控制温度\ds18b20_Opt.Bak

     文件       9815  2013-05-26 19:15  DS18B20自动控制温度\main.c

     文件      23737  2013-05-26 19:13  DS18B20自动控制温度\main.LST

     文件      27730  2013-05-26 19:13  DS18B20自动控制温度\main.OBJ

     文件       5115  2002-04-16 14:32  DS18B20自动控制温度\STARTUP.A51

     文件      11665  2013-05-26 19:13  DS18B20自动控制温度\STARTUP.LST

     文件        749  2013-05-26 19:13  DS18B20自动控制温度\STARTUP.OBJ

     目录          0  2016-01-11 21:33  DS18B20自动控制温度

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

               156452                    15


评论

共有 条评论