获取当前环境温度值,并在lcd上显示
#include <reg52.h>
#include "intrins.h"
#include "./delay/delay.h"
#include "stdio.h"
#include "./lcd1302/lcd1302.h"
#include "intrins.h"
#include "./delay/delay.h"
#include "stdio.h"
#include "./lcd1302/lcd1302.h"
bit ack = 0;
sbit ds = P1^0;
sbit ds = P1^0;
void ds_reset()
{
ds = 1;
ds = 0;
delay_us(200);
delay_us(200);
ds = 1;
delay_us(30);
if(ds == 0)
{
ack = 1;
}
else
{
ack = 0;
}
delay_us(200);
delay_us(100);
}
{
ds = 1;
ds = 0;
delay_us(200);
delay_us(200);
ds = 1;
delay_us(30);
if(ds == 0)
{
ack = 1;
}
else
{
ack = 0;
}
delay_us(200);
delay_us(100);
}
void ds_send_byte(unsigned char byte)
{
unsigned char i;
for(i = 0; i < 8; i++)
{
ds = 0;
_nop_();
_nop_();
ds = byte & 0x01;
byte >>= 1;
delay_us(30);
ds = 1;
}
delay_us(30);
}
{
unsigned char i;
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()
{
bit temp;
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = 1;
temp = ds;
delay_us(30);
return temp;
}
{
bit temp;
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = 1;
temp = ds;
delay_us(30);
return temp;
}
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;
}
{
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 b,temp;
float wendu;
unsigned char disbuf[20];
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;
wendu = (float)temp * 0.0625;
sprintf(disbuf,"temp is %7.3f",wendu);
lcd_str_display(0,0,disbuf);
}
}
{
unsigned char a;
unsigned int b,temp;
float wendu;
unsigned char disbuf[20];
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;
wendu = (float)temp * 0.0625;
sprintf(disbuf,"temp is %7.3f",wendu);
lcd_str_display(0,0,disbuf);
}
}