用C51语言编程实现如下功能:在LCD1602液晶的第一行向左滚动显示:“China Jiliang University”,第二行向左滚动显示:“2021年02月21日”,每隔1秒钟刷新一次(可以更改刷新的时间间隔,感受滚动显示的效果)。
时间: 2024-03-10 11:49:38 浏览: 141
好的,这里是用C51语言编程实现在LCD1602液晶上滚动显示“China Jiliang University”和“2021年02月21日”的代码:
```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD1602_DB P0
sbit LCD1602_RS = P2^6;
sbit LCD1602_RW = P2^5;
sbit LCD1602_E = P2^7;
void delay(uint t)
{
while(t--);
}
void write_com(uchar com)
{
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_E = 0;
_nop_();
LCD1602_DB = com;
delay(10);
LCD1602_E = 1;
_nop_();
LCD1602_E = 0;
}
void write_data(uchar dat)
{
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_E = 0;
_nop_();
LCD1602_DB = dat;
delay(10);
LCD1602_E = 1;
_nop_();
LCD1602_E = 0;
}
void init_lcd1602()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void display_string(uchar x, uchar y, uchar *str)
{
uchar i = 0;
if(x < 16)
{
if(y == 0)
{
write_com(0x80 + x);
}
else
{
write_com(0x80 + 0x40 + x);
}
}
while(str[i] != '\0')
{
write_data(str[i]);
i++;
}
}
void main()
{
uchar str1[] = "China Jiliang University";
uchar str2[] = "2021\5\2\2\1\2\1\1\0\0\0";
uchar i, j;
init_lcd1602();
while(1)
{
for(i = 0; i < 16; i++)
{
display_string(i, 0, str1);
for(j = 0; j < 16; j++)
{
display_string(j, 1, str2);
delay(1000); // 刷新时间间隔为1秒
}
}
}
}
```
在代码中,我们使用了`write_com()`和`write_data()`函数来向LCD1602液晶写入指令和数据。`init_lcd1602()`函数用于初始化LCD1602液晶。`display_string()`函数用于在指定位置显示字符串。在`main()`函数中,我们不断循环让两行字符串向左滚动显示,并且每隔1秒钟刷新一次。
阅读全文