使用51单片机编写电子温度计的程序代码
时间: 2024-06-13 17:07:35 浏览: 96
根据提供的引用内容,我们可以得知使用51单片机编写电子温度计的程序代码需要以下几个步骤:
1. 确定使用的温度传感器型号,这里引用中使用的是数字式温度计传感器,而引用中使用的是DS18B20温度检测传感器。
2. 根据传感器型号,编写相应的读取温度数据的程序代码。以DS18B20为例,可以使用单总线协议读取温度数据,具体实现方法可以参考DS18B20的数据手册。
3. 将读取到的温度数据进行处理,得到实际的温度值。DS18B20读取到的温度数据需要进行转换,具体转换方法也可以参考数据手册。
4. 将处理后的温度值进行显示。可以使用引用中提到的4位LED数码管进行显示,也可以使用引用中提到的LCD12864显示屏进行显示。
5. 可以添加其他功能,如温度报警、温度记录等。
下面是一个简单的示例代码,仅供参考:
```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DQ = P3^7; // DS18B20数据线连接到P3.7口
// DS18B20初始化函数
void Init_DS18B20()
{
uchar i;
DQ = 1;
_nop_();
_nop_();
_nop_();
DQ = 0;
_nop_();
_nop_();
_nop_();
DQ = 1;
_nop_();
_nop_();
_nop_();
i = DQ;
_nop_();
_nop_(); _nop_();
}
// DS18B20写字节函数
void Write_DS18B20(uchar dat)
{
uchar i;
for (i = 0; i < 8; i++)
{
DQ = 0;
_nop_();
_nop_();
_nop_();
DQ = dat & 0x01;
_nop_();
_nop_();
_nop_();
DQ = 1;
_nop_();
_nop_();
_nop_();
dat >>= 1;
}
}
// DS18B20读字节函数
uchar Read_DS18B20()
{
uchar i, dat = 0;
for (i = 0; i < 8; i++)
{
DQ = 0;
_nop_();
_nop_();
_nop_();
DQ = 1;
_nop_();
_nop_();
_nop_();
dat |= DQ << i;
_nop_();
_nop_();
_nop_();
}
return dat;
}
// DS18B20读温度函数
int Read_Temperature()
{
uchar TL, TH;
int temp;
Init_DS18B20();
Write_DS18B20(0xcc); // 跳过ROM操作
Write_DS18B20(0x44); // 启动温度转换
while (!Read_DS18B20()); // 等待转换完成
Init_DS18B20();
Write_DS18B20(0xcc); // 跳过ROM操作
Write_DS18B20(0xbe); // 读取温度数据
TL = Read_DS18B20();
TH = Read_DS18B20();
temp = TH;
temp <<= 8;
temp |= TL;
return temp * 0.0625; // 转换为实际温度值
}
// 数码管显示函数
void Display_LED(uchar dat)
{
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
P0 = table[dat];
}
// 主函数
void main()
{
int temp;
while (1)
{
temp = Read_Temperature();
Display_LED(temp / 1000);
Display_LED(temp % 1000 / 100);
Display_LED(temp % 100 / 10);
Display_LED(temp % 10);
}
}
```
阅读全文