keil5编程控制LCD1602显示时间代码完整
时间: 2023-08-22 12:06:03 浏览: 315
好的,以下是使用Keil5编程控制LCD1602显示时间的完整代码:
```
#include<reg52.h>
//定义LCD1602引脚
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
//定义LCD1602数据口
sbit LCD1602_D4 = P1^4;
sbit LCD1602_D5 = P1^5;
sbit LCD1602_D6 = P1^6;
sbit LCD1602_D7 = P1^7;
//函数声明
void InitLCD1602(); //初始化LCD
void WriteCommand(unsigned char command); //写指令
void WriteData(unsigned char data); //写数据
void WriteString(unsigned char *s); //写字符串
void WriteNumber(unsigned char num); //写数字
void Delay(unsigned int i); //延时
void main()
{
InitLCD1602(); //初始化LCD
while(1)
{
WriteCommand(0x80); //设置光标位置
WriteString("Time: "); //写字符串
WriteNumber(TL0/20); //写数字(以秒为单位)
Delay(100); //延时
}
}
//初始化LCD函数
void InitLCD1602()
{
WriteCommand(0x38); //显示模式设置
WriteCommand(0x0c); //开显示,不显示光标
WriteCommand(0x06); //文字不动,地址自动+1
WriteCommand(0x01); //清屏
}
//写指令函数
void WriteCommand(unsigned char command)
{
RS = 0; //设置RS为0,表示写指令
RW = 0; //设置RW为0,表示写入数据
P1 = command; //将指令写入P1口
EN = 1; //使能端置高
Delay(5); //延时
EN = 0; //使能端置低
}
//写数据函数
void WriteData(unsigned char data)
{
RS = 1; //设置RS为1,表示写数据
RW = 0; //设置RW为0,表示写入数据
P1 = data; //将数据写入P1口
EN = 1; //使能端置高
Delay(5); //延时
EN = 0; //使能端置低
}
//写字符串函数
void WriteString(unsigned char *s)
{
while(*s != '\0') //遍历字符串
{
WriteData(*s); //写入数据
s++; //指向下一个字符
}
}
//写数字函数
void WriteNumber(unsigned char num)
{
unsigned char temp;
temp = num / 10 + '0'; //获取十位数
WriteData(temp); //写入十位数
temp = num % 10 + '0'; //获取个位数
WriteData(temp); //写入个位数
}
//延时函数
void Delay(unsigned int i)
{
unsigned int j, k;
for(j=0;j<i;j++)
for(k=0;k<125;k++);
}
```
在上面的代码中,我们使用了8051单片机和LCD1602显示屏。首先,在`InitLCD1602()`函数中,我们初始化LCD显示屏并清空屏幕。然后,在`main()`函数中,我们使用定时器0来计时,每20ms中断一次,从而实现秒表的计时功能。在每次循环中,我们将光标移动到第一行的第一个字符位置,并打印出"Time: "和计时器的值(以秒为单位)。最后,我们使用`Delay()`函数延迟100ms,然后重复这个过程。
你可以根据自己的需求修改这个代码,例如改变显示的时间格式或者添加其他功能。
阅读全文