C语言描述在51单片机的系统中上位机液晶屏LM016L显示下位机发来的消息,其中A和消息B在第一行,消息C在第二行
时间: 2024-03-23 17:40:17 浏览: 124
基于51单片机的温度计液晶显示 C语言
4星 · 用户满意度95%
实现该功能的基本思路如下:
1. 在51单片机上编写程序,通过串口通信接收下位机发来的消息。
2. 将接收到的消息按照一定的格式组织起来,并且将其发送到液晶屏LM016L。
3. 在液晶屏上显示A和消息B在第一行,消息C在第二行。
下面是一个简单的C语言代码实现该功能的示例:
```c
#include <reg52.h>
#include <stdio.h>
#include <string.h>
// 定义液晶屏控制端口
sbit rs = P1^0;
sbit rw = P1^1;
sbit en = P1^2;
// 定义串口接收引脚
sbit rx = P3^0;
// 函数声明
void init_serial();
void lcd_init();
void lcd_cmd(unsigned char cmd);
void lcd_data(unsigned char dat);
void lcd_puts(unsigned char row, unsigned char col, char *str);
void main() {
char buf[256];
char *msg_a = "A";
char *msg_b = "";
char *msg_c = "";
unsigned char len;
init_serial();
lcd_init();
while (1) {
// 等待接收到下位机发来的消息
while (!RI);
// 读取串口接收缓冲区中的数据
len = 0;
while (RI) {
buf[len++] = SBUF;
RI = 0;
}
buf[len] = '\0';
// 解析接收到的消息
msg_b = strtok(buf, ",");
msg_c = strtok(NULL, ",");
// 在液晶屏上显示消息
lcd_puts(0, 0, msg_a);
lcd_puts(0, 1, msg_b);
lcd_puts(1, 0, msg_c);
}
}
// 初始化串口
void init_serial() {
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
TI = 0;
RI = 0;
}
// 初始化液晶屏
void lcd_init() {
lcd_cmd(0x38);
lcd_cmd(0x0c);
lcd_cmd(0x06);
lcd_cmd(0x01);
}
// 发送液晶屏命令
void lcd_cmd(unsigned char cmd) {
rs = 0;
rw = 0;
P0 = cmd;
en = 1;
en = 0;
}
// 发送液晶屏数据
void lcd_data(unsigned char dat) {
rs = 1;
rw = 0;
P0 = dat;
en = 1;
en = 0;
}
// 在液晶屏上显示字符串
void lcd_puts(unsigned char row, unsigned char col, char *str) {
unsigned char i;
if (row == 0) {
col |= 0x80;
} else {
col |= 0xc0;
}
lcd_cmd(col);
for (i = 0; str[i] != '\0'; i++) {
lcd_data(str[i]);
}
}
```
这段代码中,我们首先定义了液晶屏控制端口和串口接收引脚的引脚号。然后在 `main` 函数中,我们初始化了串口和液晶屏,然后进入一个死循环,等待下位机发来消息。当接收到消息后,我们将其按照指定格式解析,并且将其显示到液晶屏上。其中,`lcd_puts` 函数用于在液晶屏上显示字符串。
阅读全文