51单片机LCD1602时钟代码
时间: 2023-09-13 16:07:39 浏览: 87
以下是51单片机LCD1602时钟代码,可以通过串口调试助手进行调试:
```c
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P2^6; //RS引脚定义
sbit RW = P2^5; //RW引脚定义
sbit EN = P2^7; //EN引脚定义
void delay(uint i) //延时函数
{
while(i--);
}
void write_com(uchar com) //写入命令函数
{
RS = 0;
RW = 0;
P0 = com;
EN = 1;
delay(10);
EN = 0;
}
void write_data(uchar dat) //写入数据函数
{
RS = 1;
RW = 0;
P0 = dat;
EN = 1;
delay(10);
EN = 0;
}
void init() //初始化函数
{
write_com(0x38); //16*2显示,5*7点阵,8位数据接口
write_com(0x0c); //显示开,不显示光标
write_com(0x06); //光标右移,字符不移动
write_com(0x01); //清屏
}
void display(uchar hour, uchar minute, uchar second) //显示函数
{
uchar i;
uchar time[8] = {'2','0','1','9','-',0,0,' '}; //时间格式:2019-00-00
time[5] = hour/10+0x30; //显示小时
time[6] = hour%10+0x30;
write_com(0x80); //设置光标位置
for(i=0;i<8;i++)
{
write_data(time[i]); //显示时间
}
write_com(0x8d); //设置光标位置
write_data(':'); //显示冒号
write_data(minute/10+0x30); //显示分钟
write_data(minute%10+0x30);
write_data(':'); //显示冒号
write_data(second/10+0x30); //显示秒数
write_data(second%10+0x30);
}
void main() //主函数
{
uchar hour = 0; //小时
uchar minute = 0; //分钟
uchar second = 0; //秒数
init(); //初始化
while(1)
{
display(hour,minute,second); //显示时间
second++; //秒数加一
if(second==60) //如果秒数等于60
{
second=0; //秒数清零
minute++; //分钟加一
if(minute==60) //如果分钟等于60
{
minute=0; //分钟清零
hour++; //小时加一
if(hour==24) //如果小时等于24
{
hour=0; //小时清零
}
}
}
delay(1000); //延时1秒
}
}
```
阅读全文
相关推荐


















