DS18B20 LCD显示当前温度
2017-02-13 20:07
330 查看
include
include “./delay/delay.h”
include
include <1602.h>
include
define SUCC 1
define ERR 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 = 1; } delay_us(40); //等待应答 大于60us
}
void ds18b20_write_byte(unsigned char byte)
{
unsigned char i;
for(i = 0; i < 8; i++)
{
ds = 1;
ds = 0;
nop(); //延迟1us
nop();
ds = byte & 0x01; byte = byte >> 1; delay_us(30); //2t+7 } delay_us(30); ds = 1;
}
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();
j = j << 7;
k = k >> 1;
k = j + k;
} return k;
}
void main()
{
unsigned int temp;
float temp_f;
unsigned char a;
unsigned int b;
unsigned char disbuf[20];
LCD_Init(); while(1) { ds18b20_init(); ds18b20_write_byte(0xcc); ds18b20_write_byte(0x44); delay_ms(20); ds18b20_init(); ds18b20_write_byte(0xcc); ds18b20_write_byte(0xbe); a = ds_read_byte(); b = ds_read_byte(); temp = (b << 8) + a; temp_f = (float)temp *0.0625; sprintf(disbuf,"temp is %7.3f",temp_f); LCD_Write_String(0,0,disbuf); }
}
相关文章推荐
- DS18B20温度传感器利用LCD显示室内温度
- 单片机练习 - 使用1602LCD显示DS18B20的温度值
- linux-raspbian系统下编写python脚本显示树莓派的当前cpu温度、使用率、内存和硬盘信息
- 获取当前日期时间并以LCD形式显示
- 实验六:温度传感DS18B20实验(数码管显示)
- 1602液晶显示DS18B20温度
- ATMEGA16读取DS18B20温度,1602显示,并用proteus仿真,成功。
- LCD1602显示+ds18b20温度测试+ds1302时钟显示
- ds18b20LCD显示
- 单片机练习 - DS18B20温度转换与显示
- DS18B20温度传感器,将实时温度用数码管显示
- Arduino LCD 温度显示
- 用ds18b20测试温度并且显示在LCD1602上
- 基于51单片机及DS18B20温度传感器数码管显示程序
- STC15系列读取DS18B20温度传感器串口显示代码
- DS18B20温度传感器测温显示在数码管上(29.9℃)
- STC15F2K60S2读取DS18B20温度串口显示
- DS18B20显示温度并报警
- DS18B20温度转换与显示
- WebCombo取组合框当前显示的文本