资源简介
用51单片机读取DS18B20的温度数据,并在1602上面显示,包含完整工程和proteus仿真
代码片段和文件信息
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define delay4us() {_nop_();_nop_();_nop_();_nop_();}
sbit DQ=P3^4;
uchar code df_Table[]={0112334456678899}; //温度小数位对照表
uchar CurrentT=0;//当前读取的温度整数部分
uchar Temp_Value[]={0x000x00}; //从DS18B20读取的温度值
uchar Display_Digit[11]={00000000000}; //待显示的各温度数位
bit DS18B20_IS_OK=1; //DS18B20正常标志
void DelayXus(uint x) //延时1
{
uchar i;
while(x--)
{
for(i=0;i<200;i++);
}
}
void Delay(uint x) //延时2
{
while(x--);
}
uchar Init_DS18B20() //初始化18B20
{
uchar status;
DQ=1;
Delay(8);
DQ=0;
Delay(90);
DQ=1;
Delay(8);
status=DQ;
Delay(100);
DQ=1;
return status;
}
uchar ReadOneByte() //从DS18B20读一字节数据
{
uchar idat=0;
DQ=1;
_nop_();
for(i=0;i<8;i++)
{
DQ=0;
dat>>=1;
DQ=1;
_nop_();
_nop_();
if(DQ)
dat|=0x80;
Delay(30);
DQ=1;
}
return dat;
}
void WriteOneByte(uchar dat) //从DS18B20写一字节数据
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;
Delay(5);
DQ=1;
dat>>=1;
}
}
void Read_Temperature()// 从DS18B20读取温度值
{
if(Init_DS18B20()==1) //DS18B20故障
DS18B20_IS_OK=0;
else
{
WriteOneByte(0xcc); //跳过序列号命令
WriteOneByte(0x44); //启动温度转换命令
Init_DS18B20();//复位DS18B20
WriteOneByte(0xcc);//跳过序列号命令
WriteOneByte(0xbe);//读取温度寄存器
Temp_Value[0]=ReadOneByte(); //读取温度低字节
Temp_Value[1]=ReadOneByte(); //读取温度高字节
DS18B20_IS_OK=1; //DS18B20正常
}
}
void Display_Temperature()
{
uchar i;
uchar t=150ng=0;
if((Temp_Value[1]&0xf8)==0xf8)
{
Temp_Value[1]=~Temp_Value[1];
Temp_Value[0]=~Temp_Value[0]+1;
if(Temp_Value[0]==0x00)
Temp_Value[1]++;
ng=1;
}
Display_Digit[5]=df_Table[Temp_Value[0]&0x0f]+‘0‘; //由低四位确定小数值
CurrentT=(((Temp_Value[0]&0xf0)>>4)|((Temp_Value[1]&0x07)<<4));
if(CurrentT/100==0)
Display_Digit[1]=‘ ‘;
else
Display_Digit[1]=CurrentT/100+‘0‘;
Display_Digit[2]=(CurrentT%100)/10+‘0‘;
Display_Digit[3]=CurrentT%10+‘0‘;
Display_Digit[4]=‘.‘;
Display_Digit[6]=‘0‘;
Display_Digit[7]=‘0‘;
Display_Digit[8]=‘ ‘;
Display_Digit[9]=‘c‘;
if(ng==1)
Display_Digit[0]=‘-‘;
else
Display_Digit[0]=‘+‘;
LCD_Write_String(61Display_Digit);
LCD_Write_String(20“thermometry“);
LCD_Write_String(11“Temp“);
}
void main()
{
LCD_Init();
Read_Temperature();
Delay(50000);
Delay(50000);
while(1)
{
Read_Temperature();
if(DS18B20_IS_OK)
Display_Temperature();
DelayXus(100);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12522 2015-08-02 08:35 DS18B20\DS18B20
文件 2757 2015-08-02 08:35 DS18B20\DS18B20.c
文件 2508 2015-08-02 08:35 DS18B20\DS18B20.hex
文件 62 2015-08-02 08:35 DS18B20\DS18B20.lnp
文件 6001 2015-08-02 08:35 DS18B20\DS18B20.LST
文件 19143 2015-08-02 08:35 DS18B20\DS18B20.M51
文件 14055 2015-08-02 08:35 DS18B20\DS18B20.OBJ
文件 159 2015-08-13 10:28 DS18B20\DS18B20.plg
....... 57076 2015-08-13 10:58 DS18B20\DS18B20.uvopt
文件 13576 2015-07-31 22:40 DS18B20\DS18B20.uvproj
....... 56272 2015-08-12 23:11 DS18B20\DS18B20_uvopt.bak
文件 0 2015-07-31 19:14 DS18B20\DS18B20_uvproj.bak
文件 121665 2015-07-31 22:40 DS18B20\Last Loaded show.DBK
文件 3488 2014-05-08 15:35 DS18B20\lcd1602.h
文件 121681 2015-08-02 08:36 DS18B20\show.DSN
文件 1028 2015-08-13 10:58 DS18B20\show.PWI
文件 6376 2005-03-22 15:22 DS18B20\STARTUP.A51
文件 14049 2015-07-31 22:02 DS18B20\STARTUP.LST
文件 749 2015-07-31 22:02 DS18B20\STARTUP.OBJ
文件 819712 2015-07-31 21:04 DS18B20\参考资料.doc
目录 0 2015-08-13 10:58 DS18B20
----------- --------- ---------- ----- ----
1272879 21
- 上一篇:labview编写的串口调试助手
- 下一篇:sed.exe 64位
相关资源
- 基于51单片机寻光小车
- 基于protues仿真-1602LCD显示电话拨号键
- 基于protues仿真-1602LCD显示的秒表
- c51单片机数码管显示60s倒计时
- 51单片机控制DS18b20,在数码管上显示
- AT89C51单片机--CC1101无线接收程序经本
- XFS5152语音合成配套程序 C51 串口通信
- 51单片机+DS18B20+NRF24L01+LCD1602=无线温度
- 基于AT89C51单片机的智能脉搏测试仪设
- 51单片机驱动K型热电偶数字转换器M
- 基于51单片机的24l01程序
- ds18b20温度传感器工作原理及其应用电
- 51单片机Protues,仿真DS18b20温度传感器
- 51单片机Protues,仿真交通灯。程序+仿
- 51单片机Protues,通过ADC0809芯片仿真
- 基于RFID的同学签到系统的设计
- STC MCU利用ISP做远程升级
- Atmel Microcontroller 8051 Architecture_201408
- 51单片机寄存器详解
- 单片机电子密码锁,1602显示,密码可
- 下载链接.txt51930
- Altium Designer 89c51原理图
- 基于51单片机电炉丝加热控制仿真ke
- 基于51单片机仓库温度监控系统仿真设
- 基于51单片机多传感器楼道照明控制系
- 基于51单片机简易信号发生器仿真设计
- STM8S003读取DS18B20温度传感器
- 51驱动继电器相关电路
- 51单片机Protues点阵广告屏仿真及实现
- C51完美OLED显示.zip
评论
共有 条评论