基于52单片机LCD12864显示程序
时间: 2023-10-10 21:06:04 浏览: 112
单片机LCD12864显示程序
以下是基于 52 单片机和 LCD12864 显示屏的显示程序:
```c
#include <reg52.h>
#define LCD_DB P0 // LCD 数据线
sbit LCD_RS = P3^5; // LCD RS 引脚
sbit LCD_RW = P3^6; // LCD RW 引脚
sbit LCD_EN = P3^4; // LCD EN 引脚
void delay(unsigned int t)
{
while(t--);
}
void write_cmd(unsigned char cmd)
{
LCD_RS = 0; // 设置为写入指令
LCD_RW = 0;
LCD_DB = cmd;
LCD_EN = 1;
delay(10);
LCD_EN = 0;
}
void write_data(unsigned char dat)
{
LCD_RS = 1; // 设置为写入数据
LCD_RW = 0;
LCD_DB = dat;
LCD_EN = 1;
delay(10);
LCD_EN = 0;
}
void init_lcd()
{
write_cmd(0x30);
delay(500);
write_cmd(0x30);
delay(500);
write_cmd(0x30);
delay(500);
write_cmd(0x38); // 设置为8位数据接口,2行显示,5x8点阵
write_cmd(0x08); // 关闭显示
write_cmd(0x01); // 清屏
write_cmd(0x06); // 设定文字输入方式为移位输入,不移动屏幕
write_cmd(0x0C); // 开启显示,光标关闭
}
void display(unsigned char x, unsigned char y, unsigned char *str)
{
unsigned char addr;
if (y == 0)
addr = 0x80 + x;
else
addr = 0xC0 + x;
write_cmd(addr);
while (*str)
write_data(*str++);
}
void main()
{
init_lcd();
display(0, 0, "Hello, World!");
display(0, 1, "This is 12864 LCD");
while(1);
}
```
在这个程序中,我们使用了 52 单片机和 LCD12864 显示屏进行显示。在 `write_cmd` 函数中,我们将指令写入到 LCD 中,包括清屏、光标移动等等。在 `write_data` 函数中,我们将数据写入到 LCD 中,包括需要显示的字符。在 `init_lcd` 函数中,我们初始化了 LCD 的一些设置,包括设置数据接口为 8 位、2 行显示、5x8 点阵等等。在 `display` 函数中,我们将要显示的字符写入到 LCD 中,并设置显示的位置。
在 `main` 函数中,我们首先初始化 LCD,并在第一行和第二行分别显示 "Hello, World!" 和 "This is 12864 LCD"。然后程序进入死循环等待。
阅读全文