基于stc89516实现电脑串口远程控制LCD1602来显示时间
时间: 2024-01-19 19:04:51 浏览: 50
实现电脑串口远程控制LCD1602来显示时间,需要以下步骤:
1. 首先,需要连接STC89516和LCD1602。STC89516的P0口作为数据线,P2.0、P2.1、P2.2作为控制线,分别连接到LCD1602的D4-D7和RS、RW、E三个引脚。
2. 然后,需要编写程序。程序的主要功能就是通过串口接收电脑发送的时间数据,然后在LCD1602上显示出来。
下面是一个简单的程序示例:
```
#include <8051.h>
#define LCD_RS P2_0
#define LCD_RW P2_1
#define LCD_E P2_2
void InitLcd();
void WriteLcd(unsigned char c);
void SendCommand(unsigned char c);
void SendData(unsigned char c);
void main()
{
unsigned char c;
InitLcd();
SCON = 0x50; // 设置串口模式
TMOD = 0x20; // 设置计时器模式
TH1 = 0xFD; // 设置波特率9600
TL1 = 0xFD;
TR1 = 1; // 启动计时器
ES = 1; // 启用串口中断
while (1)
{
// 循环等待串口中断
}
}
void InitLcd()
{
SendCommand(0x38); // 初始化
SendCommand(0x0C); // 开启显示
SendCommand(0x06); // 设置光标移动方向
SendCommand(0x01); // 清屏
}
void WriteLcd(unsigned char c)
{
LCD_RS = 1; // 设置写入数据
LCD_RW = 0;
LCD_E = 1; // 启用使能信号
P0 = c; // 写入数据
LCD_E = 0; // 关闭使能信号
}
void SendCommand(unsigned char c)
{
LCD_RS = 0; // 设置写入命令
LCD_RW = 0;
LCD_E = 1; // 启用使能信号
P0 = c; // 写入数据
LCD_E = 0; // 关闭使能信号
}
void SendData(unsigned char c)
{
WriteLcd(c);
}
void SerialInterrupt() interrupt 4
{
unsigned char c;
if (RI) // 串口接收中断
{
c = SBUF; // 读取接收到的数据
// 判断数据是否为时间数据
if (c >= '0' && c <= '9')
{
SendData(c); // 在LCD1602上显示数据
}
}
}
```
在程序中,我们首先定义了LCD1602的控制引脚,然后编写了初始化LCD1602的函数和发送命令和数据的函数。在主函数中,我们初始化了串口并启用了串口中断,然后进入一个循环,等待串口中断。在串口中断中,我们读取接收到的数据,并判断是否为时间数据,如果是,则在LCD1602上显示数据。
需要注意的是,程序中的计时器和波特率都需要根据实际情况进行设置。
阅读全文