资源简介
单点温度读取 和多点测温的 读取DS18B20的序列号实现多点测温

代码片段和文件信息
/********两点测温**********/
#include
//#include“DS18B20LCD.h“
/*uchar code str1[]={0x280x5f0xf90x460x020x000x000xe7};//ROM1
uchar code str2[]={0x280x7f0xdb0xe40x020x000x000x84};//ROM2 */
//sbit DQ=P3^5;
/*unsigned char data display[2] = {0x000x00};
unsigned char data RomCode[8] = {0x000x000x000x000x000x000x000x00}; */
/*DS18B20程序**/
//DS18B20延时函数
sbit DQ=P2^7;
void delay(unsigned int i)
{
while(i--);
}
void delay_ms(unsigned xms)
{
unsigned char ij;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
/********************************/
//#include
/********************************/
unsigned char code table[]=
{
0xc00xf90xa40xb0
0x990x920x820xf8
0x800x900x880x83
0xc60xa10x860x8e
};
/*********************数码管显示程序*************************/
void display(unsigned int num)
{
unsigned char qianbaishige;
qian=num/1000;
bai=num%1000/100;
shi=num%1000%100/10;
ge=num%1000%100%10;
P1=table[qian];
P0=0x01;
delay_ms(1);
P0=0x00;
P1=table[bai];
P0=0x02;
delay_ms(1);
P0=0x00;
P1=table[shi];
P0=0x04;
delay_ms(1);
P0=0x00;
P1=table[ge];
P0=0x08;
delay_ms(1);
P0=0x00;
}
//DS18B20初始化函数
void Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1; //DQ复位
delay(8); //稍做延时
DQ = 0; //单片机将DQ拉低
delay(80); //精确延时 大于 480us
DQ = 1; //拉高总线
delay(14);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
delay(20);
}
//DS18B20读一个字节
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay(4);
}
return(dat);
}
//DS18B20写一个字节
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay(5);
DQ = 1;
dat>>=1;
}
}
/*匹配ROM*/
/* void b20_Matchrom(uchar a) //匹配ROM
{
char j;
WriteOneChar(0x55); //发送匹配ROM命令
if(a==1)
{
for(j=0;j<8;j++)
{
WriteOneChar(str1[j]); //发送18b20的序列号,先发送低字节
}
}
if(a==2)
{
for(j=0;j<8;j++)
{
WriteOneChar(str2[j]); //发送18b20的序列号,先发送低字节
}
}
} */
//读取温度值并转换
/*uint read_temp(uchar z) // 读取温度值并转换
{
uchar ab;
uint t=0;
float tt;
Init_DS18B20();
WriteOneChar(0xcc); //读序列号
Init_DS18B20();
if(z==1)
{
b20_Matchrom(1); //匹配ROM1
}
if(z==2)
{
b20_Matchrom(2); //匹配ROM2
}
WriteOneChar(0x44); //启动温度转换
delayms(5);
Init_DS18B20();
WriteOneChar(0xcc); //读序列号
Init_DS18B20();
if(z==1)
{
b20_Matchrom(1); //匹配ROM1
}
if(z==2)
{
b20_Matchrom(2); //匹配ROM2
}
WriteOneChar(0xbe); //读取温度
a=ReadOneChar();
b=ReadOneChar();
t=b;
t<<=8;
t=t|a;
//if(t<0x0fff)
//tflag=0;
// else
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1336 2011-02-21 21:20 DS18B20LCD.h
文件 6380 2011-05-06 17:20 温度传感器.c
----------- --------- ---------- ----- ----
7716 2
相关资源
- 单片机与温度传感器DS18B20的程序设计
- 毕业论文之温度传感器DS18B20(源码
- stm32 ds18b20 温度传感器 测试通过
- 51单片机读取温度数据存储到SD卡中并
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- DS18B20分布式多点测温的Proteus仿真
- 单片机 DS18B20 温度控制系统
- 课程设计蔬菜大棚自动控制系统,包
- 带时间温度显示的室内灯光控制系统
- 制作万年历 日期 农历 温度显示
- ds18b20温度传感是什么传感器
- DS18B20_Serial_println.ino
- ds18b20测温例程tm4c123x
- STM32F103C8T6读取DS18B20串口显示程序.r
- DS18B20温度+DHT11湿度+LCD1602
- ESP8266+OLED屏实现天气预报+温度显示
- TM4C系列ds18b20温度传感器例程
- 读写ds18b20内部eeprom
- 基于FPGA的DS18B20单总线控制+数码管显
- STM32F103C8T6读取DS18B20串口显示程序
- STM32F103读取ds18b20温度传感器
- DS18B20-液晶1602显示温度和控制(代码
- 基于FPGA的LCD1602实时显示DS18b20温度
- 通过DS18B20检测环境温度,并在LCD128
- FPGA实现的DS18B20温度传感器
- stm32f407对ds18b20温度传感器数据的采集
- 基于zigbee的温度传感器DS18B20
- DS18B20 AT89C51 单片机 protus keil 温度传感
- FPGA综合系统设计二基于FPGA的温度采集
- 基于STC89C52和DS18B20的温控系统
评论
共有 条评论