19264液晶屏显示STC12C5A60S2单片机8位AD转换的三线制PT100的温度值的代码
时间: 2023-05-28 16:07:58 浏览: 100
温度显示代码 基于单片机
由于没有给出具体的液晶屏型号和接口方式,以下代码仅供参考,需要根据具体情况进行修改和适配。
```c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P1^0; // 液晶屏控制线
sbit RW = P1^1;
sbit EN = P1^2;
void delay(uint ms) // 延时函数
{
uint i, j;
for(i = ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
void lcd_write_cmd(uchar cmd) // 向液晶屏写命令
{
RS = 0;
RW = 0;
P2 = cmd;
EN = 1;
delay(5);
EN = 0;
}
void lcd_write_data(uchar dat) // 向液晶屏写数据
{
RS = 1;
RW = 0;
P2 = dat;
EN = 1;
delay(5);
EN = 0;
}
void lcd_init() // 液晶屏初始化
{
lcd_write_cmd(0x38); // 8位数据总线,2行显示,5*7点阵字符
lcd_write_cmd(0x0c); // 关闭光标,打开显示
lcd_write_cmd(0x06); // 光标右移,字符不移动
lcd_write_cmd(0x01); // 清屏
}
void lcd_display_temp(int temp) // 显示温度值
{
uchar i;
char str[6];
sprintf(str, "%d.%d", temp / 10, temp % 10); // 将温度值转换为字符串
lcd_write_cmd(0x80); // 第一行显示
for(i = 0; i < 6; i++)
{
if(str[i] == '\0') // 字符串结束
break;
lcd_write_data(str[i]);
}
lcd_write_data('C'); // 显示单位℃
}
void main()
{
int adc_val;
float temp_val;
lcd_init(); // 初始化液晶屏
while(1)
{
adc_val = ADC_read(0); // 读取ADC转换值
temp_val = (float)adc_val / 1024 * 5; // 转换为电压值
temp_val = (temp_val - 0.5) * 100; // 转换为温度值
lcd_display_temp((int)temp_val); // 显示温度值
delay(1000); // 延时1秒
}
}
```
阅读全文