ds18b20温度传感器主程序
2017-02-11 16:48
369 查看
#include<reg52.h> #include<intrins.h> #include "./delay/delay.h" #include <stdio.h> #include "./display/display.h" sbit ds= P2^3; bit ack = 0; #define SUCC 1 #define ERR 0 void ds18b20_init() { //P0 = 0x00; ds = 0; delay_us(200); delay_us(200); ds = 1; delay_us(30); if(ds == 0) { ack = SUCC; } else { ack = ERR; } delay_us(200); } void ds18b20_write_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); } delay_us(30); ds = 1; } bit ds18b20_read_bit() { bit tmp; ds = 1; ds = 0; _nop_(); _nop_(); ds = 1; tmp = ds; delay_us(30); return tmp; } unsigned char ds18b20_read_byte() { unsigned char i,j,k = 0; for(i = 0;i < 8;i++) { j = ds18b20_read_bit(); k = (j << 7) | (k >> 1);//j <<= 7;k >>= 1;k += j; } return k; } void main() { unsigned char a; unsigned int b,temp; float temp_f; unsigned char disbuf[20]; LCD_Init(); while(1) { ds18b20_init(); ds18b20_write_byte(0xcc); ds18b20_write_byte(0x44); delay_us(20); ds18b20_init(); ds18b20_write_byte(0xcc); ds18b20_write_byte(0xbe); a = ds18b20_read_byte(); b = ds18b20_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); } }
相关文章推荐
- STC15系列读取DS18B20温度传感器串口显示代码
- 关于蓝桥杯——ds18b20温度传感器
- S3C6410 DS18B20温度传感器驱动(二) --- 时序分析
- STC89C52MCU -- DS18B20温度传感器
- 基于51单片机及DS18B20温度传感器数码管显示程序
- AVR单片机(ATmega16L)DS18B20温度传感器驱动程序
- S3C6410 DS18B20温度传感器驱动(三) --- 驱动源代码
- 基于ARM-LINUX的温度传感器驱动(DS18B20) .
- S3C2440 温度传感器ds18b20的驱动编写与测试
- ds18b20温度传感器
- DS18b20温度传感器的使用
- 基于ARM-LINUX的温度传感器驱动-DS18B20
- S3C6410 DS18B20温度传感器驱动(四) --- 读取温度的应用程序
- 温度传感器,ds18b20
- 树莓派 GPIO学习笔记(3)--DS18B20温度传感器
- 总结:如何驱动DS18B20温度传感器
- 51学习库(7)--DS18B20温度传感器
- STM8L 温度传感器DS18B20
- DS18B20温度传感器,将实时温度用数码管显示
- 基于ARM-LINUX的温度传感器驱动-DS18B20