用代码让51单片机控制LCD1602显示数据、
时间: 2023-06-19 10:05:09 浏览: 133
实验22:LCD1602液晶_lcd1602_51单片机lcd1602显示_
5星 · 资源好评率100%
以下是使用51单片机控制LCD1602显示数据的示例代码:
```
#include <reg51.h>
#define LCD_DATA_PORT P0 // LCD 数据口
sbit LCD_RS = P2^0; // LCD RS 引脚
sbit LCD_RW = P2^1; // LCD RW 引脚
sbit LCD_EN = P2^2; // LCD EN 引脚
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i = 0; i < t; i++)
{
for(j = 0; j < 120; j++);
}
}
void LCD_Write_Command(unsigned char cmd) // 写命令函数
{
LCD_RS = 0; // RS = 0,选择命令寄存器
LCD_RW = 0; // RW = 0,选择写入模式
LCD_DATA_PORT = cmd; // 将命令写入数据口
LCD_EN = 1; // EN 置高
delay(1); // 延时
LCD_EN = 0; // EN 置低
}
void LCD_Write_Data(unsigned char dat) // 写数据函数
{
LCD_RS = 1; // RS = 1,选择数据寄存器
LCD_RW = 0; // RW = 0,选择写入模式
LCD_DATA_PORT = dat; // 将数据写入数据口
LCD_EN = 1; // EN 置高
delay(1); // 延时
LCD_EN = 0; // EN 置低
}
void LCD_Init() // LCD 初始化函数
{
LCD_Write_Command(0x38); // 初始化,8 位数据总线,2 行显示,5x7 点阵字符
LCD_Write_Command(0x0c); // 显示控制,显示开,光标关,光标不闪烁
LCD_Write_Command(0x06); // 地址计数器自动加 1,写入字符后光标右移,屏幕不动
LCD_Write_Command(0x01); // 清屏
}
void LCD_Display_String(unsigned char x, unsigned char y, unsigned char *str) // 显示字符串函数
{
unsigned char i;
if(x > 15) // 判断是否越界
{
x = 0;
y++;
}
if(y > 1) // 判断是否越界
{
y = 0;
}
LCD_Write_Command(0x80 + y*0x40 + x); // 光标移到指定位置
for(i = 0; str[i] != '\0'; i++) // 逐个字符显示
{
LCD_Write_Data(str[i]);
}
}
void main()
{
LCD_Init(); // 初始化 LCD
LCD_Display_String(0, 0, "Hello, World!"); // 在第一行显示 "Hello, World!"
while(1);
}
```
这个示例代码使用 P0 作为 LCD 数据口,使用 P2^0、P2^1、P2^2 分别作为 LCD 的 RS、RW、EN 引脚。在 main 函数中调用 LCD_Init 函数初始化 LCD,然后使用 LCD_Display_String 函数在第一行显示 "Hello, World!"。
阅读全文