51单片机串口通信驱动LCD1602
时间: 2023-10-30 19:20:49 浏览: 151
51单片机lcd1602
以下是51单片机串口通信驱动LCD1602的代码示例:
```
#include <reg52.h>
#include <intrins.h>
#define LCD1602_DB P0
sbit LCD1602_RS = P2^0;
sbit LCD1602_RW = P2^1;
sbit LCD1602_E = P2^2;
void LCD1602_DelayUs2x(unsigned char t)
{
while(--t);
}
void LCD1602_DelayMs(unsigned char t)
{
while(t--)
{
LCD1602_DelayUs2x(245);
LCD1602_DelayUs2x(245);
}
}
void LCD1602_WriteCommand(unsigned char Command)
{
LCD1602_RS = 0;
LCD1602_RW = 0;
_nop_();
LCD1602_E = 1;
LCD1602_DB = Command;
_nop_();
LCD1602_E = 0;
}
void LCD1602_WriteData(unsigned char Data)
{
LCD1602_RS = 1;
LCD1602_RW = 0;
_nop_();
LCD1602_E = 1;
LCD1602_DB = Data;
_nop_();
LCD1602_E = 0;
}
void LCD1602_Init(void)
{
LCD1602_WriteCommand(0x38);
LCD1602_WriteCommand(0x0c);
LCD1602_WriteCommand(0x06);
LCD1602_WriteCommand(0x01);
}
void main()
{
unsigned char data;
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
LCD1602_Init();
while(1)
{
if(RI)
{
data = SBUF;
RI = 0;
LCD1602_WriteData(data);
}
}
}
```
该代码使用了51单片机的串口通信功能,将接收到的数据在LCD1602上显示。其中,LCD1602的初始化操作和写入命令和数据的操作在函数中实现。串口通信的设置和数据接收操作在主函数中实现。该代码适用于波特率为9600的串口通信。
阅读全文