单片机c51编写程序接收环境温度并将温度数据通过串口发送给电脑
时间: 2023-08-16 18:06:38 浏览: 142
以下是一份基于 C51 单片机的程序,用于接收环境温度并将温度数据通过串口发送给电脑:
```c
#include <reg52.h>
#include <stdio.h>
#define BAUDRATE 9600 // 设置串口波特率为9600
sbit LED = P1^0; // 设置 LED 灯引脚
sbit TEMP_SENSOR = P3^0; // 设置温度传感器引脚
unsigned char temperature = 0; // 温度数据
unsigned char str[20]; // 存储温度数据的字符串
void InitUART() {
TMOD &= 0x0F;
TMOD |= 0x20; // 设置定时器1为8位自动重装模式
TH1 = 0xFD; // 设置波特率计数器的初值
TL1 = TH1;
PCON &= 0x7F; // 波特率不加倍
SCON = 0x50; // 设置串口工作在模式1
TR1 = 1; // 启动定时器1
}
void SendByte(unsigned char byte) {
SBUF = byte;
while (TI == 0);
TI = 0;
}
void SendString(unsigned char *str) {
while (*str != '\0') {
SendByte(*str);
str++;
}
}
void main() {
InitUART(); // 初始化串口
while (1) {
if (TEMP_SENSOR == 1) { // 判断是否有温度数据
temperature = 0;
LED = 1; // 点亮 LED 灯表示正在读取温度
while (TEMP_SENSOR == 1); // 等待温度数据稳定
temperature = (unsigned char)(TEMP_SENSOR * 2.55); // 计算温度数据
sprintf(str, "Temperature: %d C\r\n", temperature); // 将温度数据转换成字符串
SendString(str); // 发送温度数据
LED = 0; // 熄灭 LED 灯
}
}
}
```
该程序通过 P3^0 引脚接收温度数据,并将其转换成字符串后通过串口发送给电脑。串口波特率设置为 9600,LED 灯用于指示程序是否正在读取温度数据。
阅读全文