ds18b20(程序)

来源:互联网 发布:python 文本挖掘技术 编辑:程序博客网 时间:2024/05/17 22:57
#include <reg52.h>#include "./delay/delay.h"#include <intrins.h>#include "./lcd/lcd.h"#include <stdio.h>sbit ds = P1^0;bit ack = 0;void ds_reset(){ds = 1;ds = 0;delay_us(200);delay_us(200);ds = 1;delay_us(30);if(0 == ds){ack = 0;}else{ack = 1;}delay_us(200);delay_us(200);}void ds_send_byte(unsigned char byte){unsigned char i = 0;for(i = 0; i < 8; i++){ds = 0;_nop_();_nop_();ds = byte & 0x01;byte >>= 1;delay_us(30);ds = 1;}delay_us(30);}bit ds_read_bit(){unsigned char 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;for(i = 0; i < 8; i++){j = ds_read_bit();k = (j << 7) | (k >> 1);}return k;}void main(){unsigned char a;unsigned int temp,b;unsigned char disbuf[20];float temperature;lcd_init();while(1){ds_reset();ds_send_byte(0xcc);ds_send_byte(0x44);ds_reset();ds_send_byte(0xcc);ds_send_byte(0xbe);a = ds_read_byte();b = ds_read_byte();temp = (b<<8)|a;temperature = (float)temp*0.0625;sprintf(disbuf,"temp is %7.3f",temperature);lcd_dis_str(0,0,disbuf);}2}

0 0
原创粉丝点击