用单片机C语言写LCD1602显示的代码
时间: 2023-06-04 18:04:41 浏览: 101
使用1602液晶显示的c代码
很高兴回答你的问题。以下是用单片机C语言编写LCD1602显示的代码示例:
```c
// 定义LCD数据口
sbit LCD_D4 = P2^4;
sbit LCD_D5 = P2^5;
sbit LCD_D6 = P2^6;
sbit LCD_D7 = P2^7;
// 定义LCD控制口
sbit LCD_RS = P1^0;
sbit LCD_RW = P1^1;
sbit LCD_EN = P1^2;
void LCD_Init() {
delay(20); // 延时20ms等待LCD上电稳定
LCD_WriteCmd(0x28); // 开始初始化,函数集合:8位线、2行、5*7点阵
LCD_WriteCmd(0x0C); // 显示开启,光标关闭
LCD_WriteCmd(0x06); // 显示地址自增,光标不移动
LCD_WriteCmd(0x01); // 清屏
}
void LCD_WriteCmd(unsigned char cmd) {
LCD_RS = 0; // 命令模式
LCD_RW = 0; // 写入模式
LCD_EN = 0; // 干扰信号清零
LCD_D4 = (cmd & 0x01);
LCD_D5 = (cmd & 0x02) >> 1;
LCD_D6 = (cmd & 0x04) >> 2;
LCD_D7 = (cmd & 0x08) >> 3;
LCD_EN = 1; // 发送高电平
delay(1); // 延时1ms等待执行
LCD_EN = 0; // 发送低电平
LCD_D4 = (cmd & 0x10) >> 4;
LCD_D5 = (cmd & 0x20) >> 5;
LCD_D6 = (cmd & 0x40) >> 6;
LCD_D7 = (cmd & 0x80) >> 7;
LCD_EN = 1; // 发送高电平
delay(1); // 延时1ms等待执行
LCD_EN = 0; // 发送低电平
}
void LCD_WriteData(unsigned char dat) {
LCD_RS = 1; // 数据模式
LCD_RW = 0; // 写入模式
LCD_EN = 0; // 干扰信号清零
LCD_D4 = (dat & 0x01);
LCD_D5 = (dat & 0x02) >> 1;
LCD_D6 = (dat & 0x04) >> 2;
LCD_D7 = (dat & 0x08) >> 3;
LCD_EN = 1; // 发送高电平
delay(1); // 延时1ms等待执行
LCD_EN = 0; // 发送低电平
LCD_D4 = (dat & 0x10) >> 4;
LCD_D5 = (dat & 0x20) >> 5;
LCD_D6 = (dat & 0x40) >> 6;
LCD_D7 = (dat & 0x80) >> 7;
LCD_EN = 1; // 发送高电平
delay(1); // 延时1ms等待执行
LCD_EN = 0; // 发送低电平
}
void LCD_WriteString(unsigned char x, unsigned char y, unsigned char *a) {
unsigned char i;
if(x == 1) {
LCD_WriteCmd(0x80 + (y - 1));
} else {
LCD_WriteCmd(0xC0 + (y - 1));
}
for(i = 0; a[i] != '\0'; i++) {
LCD_WriteData(a[i]);
}
}
void main() {
LCD_Init();
LCD_WriteString(1,1,"Hello, World!");
}
```
以上代码仅供参考,具体使用时需要根据LCD屏幕类型和单片机型号做出相应调整。希望能对您有所帮助。
阅读全文