51单片机串行口实现数据在lcd上显示代码
时间: 2024-03-14 07:46:57 浏览: 161
51单片机实现在lcd屏中显示键码值.zip
以下是51单片机串行口实现数据在LCD上显示的代码示例:
```c
#include <reg52.h>
#include <intrins.h>
// 定义LCD接口引脚
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2;
sbit D4 = P1^4;
sbit D5 = P1^5;
sbit D6 = P1^6;
sbit D7 = P1^7;
// 延时函数
void delay(unsigned int i) {
while (i--);
}
// LCD写命令函数
void writeCommand(unsigned char command) {
RS = 0; // 选择命令模式
RW = 0; // 选择写入模式
P1 = command; // 将命令写入P1口
EN = 1; // 使能
delay(5); // 延时
EN = 0; // 失能
}
// LCD写数据函数
void writeData(unsigned char data) {
RS = 1; // 选择数据模式
RW = 0; // 选择写入模式
P1 = data; // 将数据写入P1口
EN = 1; // 使能
delay(5); // 延时
EN = 0; // 失能
}
// LCD初始化函数
void initLCD() {
writeCommand(0x02); // 光标返回到起始位置
writeCommand(0x28); // 4位数据总线,2行显示,5x8点阵字符
writeCommand(0x0C); // 显示器开启,光标关闭,不闪烁
writeCommand(0x01); // 清屏
writeCommand(0x06); // 光标右移,字符不移动
}
// 串口发送函数
void sendSerial(unsigned char data) {
SBUF = data; // 将数据写入SBUF
while (!TI); // 等待数据发送完成
TI = 0; // 清除发送完成标志位
}
// 主函数
void main() {
unsigned char data;
initLCD(); // 初始化LCD
writeCommand(0x80); // 光标移到第一行第一列
sendSerial('H'); // 发送字符'H'
sendSerial('e'); // 发送字符'e'
sendSerial('l'); // 发送字符'l'
sendSerial('l'); // 发送字符'l'
sendSerial('o'); // 发送字符'o'
while (1) { // 循环等待串口数据
if (RI) {
data = SBUF; // 读取串口数据
RI = 0; // 清除接收完成标志位
writeData(data); // 将数据写入LCD
}
}
}
```
该代码中,我们通过串口发送函数`sendSerial()`将数据发送到单片机,然后通过LCD写数据函数`writeData()`将数据写入LCD中显示。在主函数中,我们使用了一个循环等待串口数据的语句,以便在接收到数据时能够及时地将其显示在LCD上。
阅读全文