基于stc89516实现电脑串口远程控制LCD1602来显示时间 代码
时间: 2024-05-16 10:18:19 浏览: 55
以下是基于STC89C516RD+单片机控制LCD1602显示时间的代码:
```c
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P1^0; // RS引脚
sbit RW=P1^1; // RW引脚
sbit EN=P1^2; // EN引脚
void delay(uint z) // 延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) // 写命令函数
{
RS=0;
RW=0;
P2=com;
delay(5);
EN=1;
delay(5);
EN=0;
}
void write_data(uchar date) // 写数据函数
{
RS=1;
RW=0;
P2=date;
delay(5);
EN=1;
delay(5);
EN=0;
}
void init() // 初始化函数
{
write_com(0x38); // 显示模式设置:16×2显示,5×7点阵,8位数据接口
write_com(0x0c); // 显示开关控制:显示开,光标关,光标闪烁关
write_com(0x06); // 光标/显示方向:光标右移,显示不移动
write_com(0x01); // 显示清屏
}
void main()
{
uchar hour,minute,second; // 定义时间变量
init(); // 初始化
while(1)
{
hour=12; // 设置小时
minute=30; // 设置分钟
second=0; // 设置秒钟
write_com(0x80); // 写入地址:第1行第1个字符
write_data(hour/10+0x30); // 写入小时的十位数
write_data(hour%10+0x30); // 写入小时的个位数
write_data(':'); // 冒号
write_data(minute/10+0x30); // 写入分钟的十位数
write_data(minute%10+0x30); // 写入分钟的个位数
write_data(':'); // 冒号
write_data(second/10+0x30); // 写入秒钟的十位数
write_data(second%10+0x30); // 写入秒钟的个位数
delay(1000); // 延时1秒
second++; // 秒钟加1
if(second==60) // 秒钟到60
{
second=0; // 秒钟清零
minute++; // 分钟加1
if(minute==60) // 分钟到60
{
minute=0; // 分钟清零
hour++; // 小时加1
if(hour==24) // 小时到24
{
hour=0; // 小时清零
}
}
}
}
}
```
该代码实现了在LCD1602上显示当前时间,并且时间会不断地更新。可以根据自己的需求修改代码来实现更多功能。
阅读全文