数字温度计设计代码
时间: 2023-12-26 10:04:52 浏览: 24
以下是基于51单片机的数字温度计的设计代码,使用的是DS18B20数字温度传感器:
```
#include<reg51.h>
#include<intrins.h>
#define DQ P2_7
typedef unsigned char uchar;
typedef unsigned int uint;
uchar code table[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x00};
void delay(uint i)
{
while(i--);
}
uchar ds18b20_init()
{
uchar i;
DQ = 1;
_nop_();
_nop_();
DQ = 0;
delay(500);
DQ = 1;
delay(60);
i = DQ;
delay(420);
return i;
}
void ds18b20_write_byte(uchar dat)
{
uchar i;
for(i=0; i<8; i++)
{
DQ = 0;
DQ = dat & 0x01;
delay(6);
DQ = 1;
dat >>= 1;
}
delay(60);
}
uchar ds18b20_read_byte()
{
uchar i, j, dat = 0;
for(i=0; i<8; i++)
{
DQ = 0;
dat >>= 1;
DQ = 1;
j = DQ;
_nop_();
_nop_();
if(j)
dat |= 0x80;
delay(6);
}
return dat;
}
void ds18b20_start()
{
ds18b20_init();
ds18b20_write_byte(0xcc);
ds18b20_write_byte(0x44);
}
uchar ds18b20_read_temp()
{
uchar tl, th;
ds18b20_init();
ds18b20_write_byte(0xcc);
ds18b20_write_byte(0xbe);
tl = ds18b20_read_byte();
th = ds18b20_read_byte();
return tl;
}
void display(uchar dat)
{
P0 = table[dat/10];
P1 = table[dat%10];
}
void main()
{
uchar temp;
while(1)
{
ds18b20_start();
temp = ds18b20_read_temp();
display(temp);
delay(500);
}
}
```
以上代码可以实现基于51单片机的数字温度计的功能。具体实现方法为:通过DS18B20数字温度传感器获取温度值,然后将温度值以数字形式显示在数码管上。