51单片机LCD12864程序代码
时间: 2024-09-13 11:09:49 浏览: 36
51单片机与LCD12864液晶显示屏通信通常需要通过专用的数据线、控制线以及中断机制来操作。以下是一个简单的示例,展示了如何使用C语言编写基本的LCD初始化和字符显示的51单片机程序:
```c
#include <REGX51.H> // 引入51单片机头文件
// LCD12864寄存器地址
#define LCD_RS 0x02 // 数据/命令选择线
#define LCD_EN 0x03 // 使能信号线
#define LCD_RW 0x00 // 读写线
#define LCD_CMD 0x80 // 命令模式
void LCD_Init(void) {
// 初始化步骤
TRISB = 0xFF; // 将所有PB口设置为输入
PORTB = 0b00000000; // 清除LCD的所有使能信号
Delay_ms(10); // 稍微延时
// 启动命令模式
LCD_Cmd(_LCD_FUNCTIONSET | _LCD_8BITMODE); // 设置8位数据传输
LCD_Cmd(_LCD_CLEARDISPLAY); // 清屏
LCD_Cmd(_LCD_RETURNHOME); // 回到首页
LCD_Cmd(_LCD_ENTRYMODESET | _LCD_4BITDISPLAY); // 设置4位显示
// 写入行/列地址
LCD_Cmd(_LCD_SETDDRAMADDR(0x00)); // 设置开始行
}
void LCD_Cmd(unsigned char cmd) {
LCD_RS = 0;
LCD_EN = 1;
PORTB = cmd; // 发送命令
LCD_EN = 0;
Delay_us(2);
}
void LCD_Data(unsigned char data) {
LCD_RS = 1;
LCD_EN = 1;
PORTB = data; // 发送数据
LCD_EN = 0;
Delay_us(2);
}
void LCD_PrintString(char *str) {
while(*str != '\0') {
LCD_Data(*str++);
LCD_Cmd(_LCD_WRITECMD); // 写入字符
}
}
void main() {
LCD_Init();
LCD_PrintString("Hello, LCD!");
while(1);
}
阅读全文