资源简介
基于51单片机和DS18B20的温度控制器(带Pretues仿真),对学习51单片机,学习LCD1602,和DS18B20的应用,是不错的资料,每个模块独立,简单,KielC开发环境。

代码片段和文件信息
#include“ds18b20.h“
/******************************ds1820程序***************************************/
void delay_18B20(unsigned int i)//延时1微秒
{
while(i--);
}
//************************************************************
// ds18b20复位
//**********************************************************
void ds1820rst()
{
uchar x=0;
DQ = 1; //DQ复位
delay_18B20(4); //延时
DQ = 0; //DQ拉低
delay_18B20(100); //精确延时大于480us
DQ = 1; //拉高
delay_18B20(40);
}
//***************************************************
// 读数据
//***************************************************
uchar ds1820rd()
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; //给脉冲信号
dat>>=1;
DQ = 1; //给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(10);
}
return(dat);
}
//************************************************
// 写数据
//******************************************************
void ds1820wr(uchar wdata)
{
uchar i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = wdata&0x01;
delay_18B20(10);
DQ = 1;
wdata>>=1;
}
}
//*****************************************************
// 读取温度并转换温度
//*************************************************
uint read_temp()
{
uchar ab;
// EA=1;
ds1820rst();
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0x44);//*启动温度转换*/
ds1820rst();
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0xbe);//*读取温度*/
a=ds1820rd();
b=ds1820rd();
//*******************************温度转换***********************
tvalue=b;
tvalue<<=8;
tvalue=tvalue|a;
if(tvalue<0x0fff)
tflag=0;
else
{
tvalue=~tvalue+1;
tflag=1;
}
tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数
// EA=1;
return(tvalue);
}
/*****************************温度值显示**************************************/
void ds1820disp()
{
uchar flagdat;
disdata[0]=tvalue/1000+0x30;//百位数
disdata[1]=tvalue%1000/100+0x30;//十位数
disdata[2]=tvalue%100/10+0x30;//个位数
disdata[3]=tvalue%10+0x30;//小数位
if(tflag==0)
flagdat=0x20; //正温度不显示符号
else
flagdat=0x2d; //负温度显示负号:-
/* if(disdata[0]==0x30)
{
disdata[0]=0x20;//如果百位为0,不显示
if(disdata[1]==0x30)
{
disdata[1]=0x20;//如果百位为0,十位为0也不显示
}
}*/
//****************************************************
// 当前温度显示
//********************************************************
wr_com(0xc5);
wr_dat(flagdat); //显示符号位
wr_com(0xc6);
wr_dat(disdata[0]); //显示百位
wr_com(0xc7);
wr_dat(disdata[1]); //显示十位
wr_com(0xc8);
wr_dat(disdata[2]); //显示个位
wr_com(0xc9);
wr_dat(0x2e); //显示小数点
wr_com(0xca);
wr_dat(disdata[3]); //显示小数位
wr_com(0xcb);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2996 2011-06-29 14:43 temp2\temp2\ds18b20.c
文件 324 2011-06-29 12:25 temp2\temp2\ds18b20.h
文件 128253 2011-06-29 19:45 temp2\temp2\Last Loaded 温度控制器.DBK
文件 2913 2011-06-29 12:51 temp2\temp2\lcd1602.c
文件 926 2011-06-29 19:33 temp2\temp2\lcd1602.h
文件 436 2011-06-28 18:24 temp2\temp2\ldc1602.LST
文件 5115 2002-04-16 15:32 temp2\temp2\STARTUP.A51
文件 11791 2011-06-29 21:23 temp2\temp2\STARTUP.lst
文件 4541 2011-06-29 21:23 temp2\temp2\temp.c
文件 6905 2011-06-29 21:23 temp2\temp2\temp.hex
文件 30963 2011-06-29 21:23 temp2\temp2\temp.M51
....... 2091 2011-06-29 20:45 temp2\temp2\temp_Opt.Bak
文件 4127 2011-06-29 21:25 temp2\temp2\temp.plg
....... 2157 2011-06-29 20:45 temp2\temp2\temp_Uv2.Bak
文件 128247 2011-06-29 20:36 temp2\temp2\温度控制器.DSN
文件 1054 2011-06-29 21:25 temp2\temp2\温度控制器.PWI
文件 75 2011-06-29 21:23 temp2\temp2\temp.lnp
文件 908 2011-06-29 21:23 temp2\temp2\STARTUP.obj
文件 6456 2011-06-29 21:23 temp2\temp2\ds18b20.LST
文件 7525 2011-06-29 21:23 temp2\temp2\ds18b20.OBJ
文件 6545 2011-06-29 21:23 temp2\temp2\lcd1602.LST
文件 9225 2011-06-29 21:23 temp2\temp2\lcd1602.OBJ
文件 12830 2011-06-29 21:23 temp2\temp2\temp.LST
文件 15153 2011-06-29 21:23 temp2\temp2\temp.OBJ
文件 28555 2011-06-29 21:23 temp2\temp2\temp
文件 2290 2011-06-29 21:25 temp2\temp2\temp.Uv2
文件 1452 2011-06-29 21:25 temp2\temp2\temp.Opt
目录 0 2011-06-29 20:45 temp2\temp2
目录 0 2011-06-29 10:54 temp2
----------- --------- ---------- ----- ----
............此处省略2个文件信息
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- LCD显示温度+串口接收温度.rar
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 毕业论文之温度传感器DS18B20(源码
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- stm32 ds18b20 温度传感器 测试通过
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- DS18B20分布式多点测温的Proteus仿真
- 铂电阻温度测量系统的设计
- 单片机 DS18B20 温度控制系统
- 课程设计蔬菜大棚自动控制系统,包
- 带时间温度显示的室内灯光控制系统
- C51单片机汇编指令查询、学习工具集
- 制作万年历 日期 农历 温度显示
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
评论
共有 条评论