资源简介
单点温度读取 和多点测温的 读取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在STC12C5A60S2上的移植
- MSP430单片机通过proteus仿真DS18B20程序
- DS18B20温度传感器的proteus仿真.rar
- 温度显示、超声波测距、光敏D/A显示
- 单片机数码管显示温度
- STM32-DS18B20.zip
- DS18B20 51单片机,包括电路
- MSP430—DS18B20程序
- 单总线两个DS18B20温度传感器程序及其
- DS18B20+UCOSIII-技术资料+源码
- 单总线控制多个DS18B20
- 60S2单片机驱动DS18B20温度传感器C程序
- STM32f103的DS18B20温度读取
- DS18B20内部EEPROM保存
- msp430f149基于DS18b20测温并1602显示
- C2000 DSP对DS18B20的初始化读写程序
- 基于单片机的DS18B20温度采集,液晶屏
- STM32 STM32F103C8T6 读取DS18B20温度数据例
- 基于51单片机、PCF8563时钟芯片的智能
- DS18B20仿真
- msp430 DS18B20.rar
- 基于Qt的以串口接收的温度显示界面,
- DS18B20-温度传感器的51汇编程序
- Proteus8.9 VSM Studio WINAVR编译器仿真ATM
- DS18B20测温程序完全解读
- 同一总线上多个DS18b20
- 读取DS18B20ID号
- 基于DS18B20的温度控制系统
- 51单片机Ds1302及温度Ds18B20+1602液晶显示
评论
共有 条评论