LCD1602的显示程序设计
时间: 2023-12-03 15:42:02 浏览: 83
下面是一个基本的LCD1602显示程序设计,使用的是8051单片机:
```c
#include <reg52.h>
#include <intrins.h>
#define LCD_data P0
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
void LCD_init();
void LCD_write_cmd(unsigned char command);
void LCD_write_data(unsigned char data);
void LCD_display_string(unsigned char x, unsigned char y, unsigned char *string);
void delay(unsigned int time);
void main()
{
LCD_init();
LCD_display_string(0, 0, "Hello, World!");
while(1);
}
void LCD_init()
{
delay(15); // 等待电源稳定
LCD_write_cmd(0x38); // 8位数据总线,2行显示,5x7点阵字体
delay(5);
LCD_write_cmd(0x0c); // 开启显示,关闭光标
delay(5);
LCD_write_cmd(0x01); // 清屏
delay(5);
LCD_write_cmd(0x06); // 光标右移,字符不移动
delay(5);
}
void LCD_write_cmd(unsigned char command)
{
LCD_RS = 0; // 告诉LCD我们要写入指令
LCD_RW = 0; // 告诉LCD我们要写入数据
LCD_data = command; // 写入指令
LCD_EN = 1; // 使能
_nop_(); // 延时
LCD_EN = 0; // 关闭使能
}
void LCD_write_data(unsigned char data)
{
LCD_RS = 1; // 告诉LCD我们要写入数据
LCD_RW = 0; // 告诉LCD我们要写入数据
LCD_data = data; // 写入数据
LCD_EN = 1; // 使能
_nop_(); // 延时
LCD_EN = 0; // 关闭使能
}
void LCD_display_string(unsigned char x, unsigned char y, unsigned char *string)
{
unsigned char i = 0;
if(y == 0)
{
LCD_write_cmd(0x80 + x); // 设置显示位置
}
else if(y == 1)
{
LCD_write_cmd(0xc0 + x); // 设置显示位置
}
while(string[i] != '\0')
{
LCD_write_data(string[i]); // 逐个字符写入
i++;
}
}
void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<time;i++)
{
for(j=0;j<125;j++);
}
}
```
这个程序中,`LCD_init()`函数用于初始化LCD1602,`LCD_write_cmd()`函数用于向LCD1602写入指令,`LCD_write_data()`函数用于向LCD1602写入数据,`LCD_display_string()`函数用于在指定位置显示字符串。`delay()`函数用于延时,以等待LCD1602响应。
在主函数中,我们首先初始化LCD1602,然后在第一行第一列显示“Hello, World!”。最后进入死循环,保持显示状态。
阅读全文