51单片机1602循环显示
时间: 2023-10-17 21:05:10 浏览: 57
下面是51单片机1602液晶屏循环显示的程序代码:
```c
#include <reg52.h> //包含头文件
#define LCD_data P0 //定义LCD数据端口
sbit RS = P2^0; //定义LCD RS端口
sbit RW = P2^1; //定义LCD RW端口
sbit E = P2^2; //定义LCD E端口
void LCD_init(); //初始化LCD函数
void LCD_write_cmd(unsigned char cmd); //写入LCD命令函数
void LCD_write_data(unsigned char dat); //写入LCD数据函数
void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s); //在LCD上显示字符串函数
void delay(unsigned int i); //延时函数
void main()
{
unsigned char str1[] = "Hello, World!"; //定义显示字符串1
unsigned char str2[] = "Welcome to 51 MCU!"; //定义显示字符串2
unsigned char i;
LCD_init(); //初始化LCD
while(1)
{
LCD_write_cmd(0x80); //将光标移动到第一行第一列
LCD_write_string(0,0,str1); //在第一行显示字符串1
delay(1000); //延时1秒
LCD_write_cmd(0x01); //清屏
LCD_write_cmd(0x80); //将光标移动到第一行第一列
LCD_write_string(0,0,str2); //在第一行显示字符串2
delay(1000); //延时1秒
for(i=0;i<16;i++) //循环移动光标到第二行
{
LCD_write_cmd(0x1C); //光标右移
delay(100); //延时100毫秒
}
LCD_write_cmd(0x01); //清屏
}
}
void LCD_init() //初始化LCD函数
{
delay(20); //等待LCD上电稳定
LCD_write_cmd(0x38); //设置LCD为8位数据接口,2行显示,5x7点阵
LCD_write_cmd(0x0C); //显示开,光标关,闪烁关
LCD_write_cmd(0x06); //光标右移,字符不移动
LCD_write_cmd(0x01); //清屏,光标回到原点
}
void LCD_write_cmd(unsigned char cmd) //写入LCD命令函数
{
RS = 0; //选择命令寄存器
RW = 0; //选择写入模式
LCD_data = cmd; //写入命令
E = 1; //使能
delay(1); //延时
E = 0; //失能
}
void LCD_write_data(unsigned char dat) //写入LCD数据函数
{
RS = 1; //选择数据寄存器
RW = 0; //选择写入模式
LCD_data = dat; //写入数据
E = 1; //使能
delay(1); //延时
E = 0; //失能
}
void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s) //在LCD上显示字符串函数
{
unsigned char i;
if(x<16) //如果x小于16
{
if(y==0) //如果y等于0
{
LCD_write_cmd(0x80+x); //将光标移动到第一行第x列
}
else //否则
{
LCD_write_cmd(0xC0+x); //将光标移动到第二行第x列
}
}
for(i=0;s[i]!='\0';i++) //循环写入字符串
{
LCD_write_data(s[i]); //写入字符
}
}
void delay(unsigned int i) //延时函数
{
unsigned int j,k;
for(j=0;j<i;j++)
{
for(k=0;k<120;k++);
}
}
```
以上是51单片机1602液晶屏循环显示的程序代码,你可以根据需要进行修改和优化。