ds18b20温度传感器
2017-02-11 17:02
351 查看
#include<reg52.h>
#include<intrins.h>
#include<stdio.h>
#include"./delay/delay.h"
#include"./LCD/LCD.h"
#define SUCC 1
#define ERR 0
sbit ds = P2^0;
sbit led = P2^1;
bit ack = 0;
void ds18b20_init()
{
ds = 0;
delay_us(200);
delay_us(200);
ds = 1;
delay_us(30);
if(ds == 0)
{
ack = SUCC;
//led = 0;
}
else
{
ack = ERR;
//led = 0;
}
delay_us(200);
}
void ds18b20_send_byte(unsigned char byte)
{
unsigned char i;
for(i = 0 ;i< 8;i++)
{
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = byte & 0x01;
byte >>= 1;
delay_us(30);
}
ds = 1;
delay_us(30);
}
bit ds_read_bit()
{
bit tmp;
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = 1;
tmp = ds;
delay_us(30);
return tmp;
}
unsigned char ds_read_byte()
{
unsigned char i,j,k=0;
for(i = 0;i < 8;i++)
{
j = ds_read_bit();
k = (j <<= 7) | (k >>= 1);
}
return k;
}
void main()
{
//ds18b20_init();
//ds18b20_send_byte(0xaa);
unsigned int temp,b;
unsigned char a,disbuf[20];
float temp_f;
LCD_Init();
while(1)
{
ds18b20_init();
ds18b20_send_byte(0xcc);
ds18b20_send_byte(0x44);
delay_ms(20);
ds18b20_init();
ds18b20_send_byte(0xcc);
ds18b20_send_byte(0xbe);
a = ds_read_byte();
b = ds_read_byte();
temp = (b << 8)|a;
temp_f = (float)temp*0.0625;
LCD_Write_String(1,0,"Temp now is :");
sprintf(disbuf,"%7.3f",temp_f);
//LCD_Clear();
LCD_Write_String(4,1,disbuf);
}
}
#include<intrins.h>
#include<stdio.h>
#include"./delay/delay.h"
#include"./LCD/LCD.h"
#define SUCC 1
#define ERR 0
sbit ds = P2^0;
sbit led = P2^1;
bit ack = 0;
void ds18b20_init()
{
ds = 0;
delay_us(200);
delay_us(200);
ds = 1;
delay_us(30);
if(ds == 0)
{
ack = SUCC;
//led = 0;
}
else
{
ack = ERR;
//led = 0;
}
delay_us(200);
}
void ds18b20_send_byte(unsigned char byte)
{
unsigned char i;
for(i = 0 ;i< 8;i++)
{
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = byte & 0x01;
byte >>= 1;
delay_us(30);
}
ds = 1;
delay_us(30);
}
bit ds_read_bit()
{
bit tmp;
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = 1;
tmp = ds;
delay_us(30);
return tmp;
}
unsigned char ds_read_byte()
{
unsigned char i,j,k=0;
for(i = 0;i < 8;i++)
{
j = ds_read_bit();
k = (j <<= 7) | (k >>= 1);
}
return k;
}
void main()
{
//ds18b20_init();
//ds18b20_send_byte(0xaa);
unsigned int temp,b;
unsigned char a,disbuf[20];
float temp_f;
LCD_Init();
while(1)
{
ds18b20_init();
ds18b20_send_byte(0xcc);
ds18b20_send_byte(0x44);
delay_ms(20);
ds18b20_init();
ds18b20_send_byte(0xcc);
ds18b20_send_byte(0xbe);
a = ds_read_byte();
b = ds_read_byte();
temp = (b << 8)|a;
temp_f = (float)temp*0.0625;
LCD_Write_String(1,0,"Temp now is :");
sprintf(disbuf,"%7.3f",temp_f);
//LCD_Clear();
LCD_Write_String(4,1,disbuf);
}
}
相关文章推荐
- DS18B20温度传感器,将实时温度用数码管显示
- 基于ARM-LINUX的温度传感器驱动-DS18B20
- AVR单片机(ATmega16L)DS18B20温度传感器驱动程序
- 树莓派2代(RaspberryPi2)配合温度传感器DS18B20获取温度
- STM32单片机学习(11) DS18B20温度传感器实验
- 温度传感器(DS18B20)程序
- DS18B20温度传感器在90c51上的使用
- DS18B20温度传感器使用简介
- 基于ARM-LINUX的温度传感器驱动-DS18B20
- 温度传感器,ds18b20
- 单总线接口DS18B20温度传感器
- tq2440连接到温度传感器DS18B20
- LPC213x ARM板子的DS18B20温度传感器模块添加
- 【树莓派学习笔记】关于树莓派2代,更新最新内核后,DS18B20温度传感器无法找到对应文件的问题的解决
- stm32 ds18b20 温度传感器
- Dht11与Ds18b20温度传感器使用
- 第27章 DS18B20温度传感器
- 51单片机(STC89C52)DS18B20温度传感器驱动程序
- DS18B20温度传感器测温显示在数码管上(29.9℃)
- 基于S3C2440的嵌入式Linux驱动——DS18B20温度传感器(添加使用platform总线机制)