资源简介
基于51单片机DS18B20测温的程序及proteus仿真,通过测试可以完美运行

代码片段和文件信息
/*************** writer:shopping.w ******************/
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}
sbit DQ = P3^3;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
uchar code Temp_Disp_title[]={“Current Temp : “};
uchar Current_Temp_Display_Buffer[]={“ TEMP: “};
uchar code Temperature_Char[8] =
{
0x0c0x120x120x0c0x000x000x000x00
};
uchar code df_Table[]=
{
0112334456678899
};
uchar CurrentT = 0;
uchar Temp_Value[]={0x000x00};
uchar Display_Digit[]={0000};
bit DS18B20_IS_OK = 1;
void DelayXus(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<200;i++);
}
}
bit LCD_Busy_Check()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0&0x80);
LCD_EN=0;
return result;
}
void Write_LCD_Command(uchar cmd)
{
while(LCD_Busy_Check());
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 = cmd;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}
void Write_LCD_Data(uchar dat)
{
while(LCD_Busy_Check());
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}
void LCD_Initialise()
{
Write_LCD_Command(0x01);
DelayXus(5);
Write_LCD_Command(0x38);
DelayXus(5);
Write_LCD_Command(0x0c);
DelayXus(5);
Write_LCD_Command(0x06);
DelayXus(5);
}
void Set_LCD_POS(uchar pos)
{
Write_LCD_Command(pos|0x80);
}
void Delay(uint x)
{
while(--x);
}
uchar Init_DS18B20()
{
uchar status;
DQ = 1;
Delay(8);
DQ = 0;
Delay(90);
DQ = 1;
Delay(8);
DQ = 1;
return status;
}
uchar ReadOneByte()
{
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)
{
uchar i;
for(i=0;i<8;i++)
{
DQ = 0;
DQ = dat& 0x01;
Delay(5);
DQ = 1;
dat >>= 1;
}
}
void Read_Temperature()
{
if(Init_DS18B20()==1)
DS18B20_IS_OK=0;
else
{
WriteOneByte(0xcc);
WriteOneByte(0x44);
Init_DS18B20();
WriteOneByte(0xcc);
WriteOneByte(0xbe);
Temp_Value[0] = ReadOneByte();
Temp_Value[1] = ReadOneByte();
DS18B20_IS_OK=1;
}
}
void Display_Temperature()
{
uchar i;
uchar t = 150 ng = 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[0] = df_Table[Temp_Value[0]&0x0f];
CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4);
Display_Digit[3] = CurrentT/100;
Display_Digit[2] = CurrentT%100/10;
Display_Digit[1] = CurrentT%10;
Current_Temp_Display_Buffer[11] = Display_Digit[0] + ‘0‘;
Current_Temp_Display_Buffer[10] = ‘.‘;
Current_Temp_Disp
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-06 10:20 DS18B20温度传感器实验\
文件 37674 2009-03-06 21:55 DS18B20温度传感器实验\DS18B20温度传感器实验.DSN
文件 1197 2018-05-04 14:03 DS18B20温度传感器实验\DS18B20温度传感器实验.PWI
目录 0 2018-04-06 10:20 DS18B20温度传感器实验\Keil C\
文件 10291 2009-03-06 21:54 DS18B20温度传感器实验\Keil C\DS18B20温度传感器实验
文件 2408 2009-03-06 21:54 DS18B20温度传感器实验\Keil C\DS18B20温度传感器实验.hex
文件 37674 2009-02-08 12:33 DS18B20温度传感器实验\Last Loaded DS18B20温度传感器实验.DBK
目录 0 2018-04-06 10:20 DS18B20温度传感器实验\code\
文件 10863 2018-01-11 14:07 DS18B20温度传感器实验\code\25
文件 9986 2018-01-11 14:07 DS18B20温度传感器实验\code\25.LST
文件 15537 2018-01-11 14:07 DS18B20温度传感器实验\code\25.M51
文件 12840 2018-01-11 14:07 DS18B20温度传感器实验\code\25.OBJ
文件 2129 2018-01-11 14:07 DS18B20温度传感器实验\code\25.Uv2.bak
文件 4080 2009-08-13 14:18 DS18B20温度传感器实验\code\25.c
文件 2355 2018-01-11 14:07 DS18B20温度传感器实验\code\25.hex
文件 36 2018-01-11 14:07 DS18B20温度传感器实验\code\25.lnp
文件 977 2018-01-11 14:08 DS18B20温度传感器实验\code\25.opt.bak
文件 194 2018-01-11 19:26 DS18B20温度传感器实验\code\25.plg
文件 55675 2018-01-11 19:36 DS18B20温度传感器实验\code\25.uvopt
文件 13226 2018-01-11 16:49 DS18B20温度传感器实验\code\25.uvproj
文件 973 2018-01-11 14:07 DS18B20温度传感器实验\code\25_Opt.Bak
文件 2134 2009-08-13 14:40 DS18B20温度传感器实验\code\25_Uv2.Bak
文件 55276 2018-01-11 16:49 DS18B20温度传感器实验\code\25_uvopt.bak
- 上一篇:NDK Socket通讯小程序
- 下一篇:51单片机万年历程序及proteus仿真
相关资源
- 基于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单片机的模数转换与数模转换
评论
共有 条评论