51单片机lcd1602显示程序
时间: 2023-07-29 20:07:45 浏览: 134
51单片机1602液晶显示程序.zip
以下是51单片机使用LCD1602显示的程序(基于C语言):
```c
#include <reg51.h>
#define LCD1602_DB P0
sbit LCD1602_RS = P2^6;
sbit LCD1602_RW = P2^5;
sbit LCD1602_EN = P2^7;
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i = 0; i < t; i++)
for(j = 0; j < 120; j++);
}
void LCD1602_WriteCommand(unsigned char Command) // 写入指令
{
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_DB = Command;
delay(5);
LCD1602_EN = 1;
delay(5);
LCD1602_EN = 0;
}
void LCD1602_WriteData(unsigned char Data) // 写入数据
{
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_DB = Data;
delay(5);
LCD1602_EN = 1;
delay(5);
LCD1602_EN = 0;
}
void LCD1602_Init() // LCD1602初始化函数
{
LCD1602_WriteCommand(0x38); // 8位数据接口,2行显示,5x7点阵字符
LCD1602_WriteCommand(0x0c); // 显示开,光标关,光标位置不显示
LCD1602_WriteCommand(0x06); // 光标加1,写入字符后移
LCD1602_WriteCommand(0x01); // 显示清屏
}
void LCD1602_DisplayString(unsigned char x, unsigned char y, unsigned char *String) // 在指定位置显示字符串
{
unsigned char i;
if(x < 16)
{
if(y == 0)
LCD1602_WriteCommand(0x80 + x);
else if(y == 1)
LCD1602_WriteCommand(0x80 + 0x40 + x);
else
return;
}
else
return;
for(i = 0; String[i] != '\0'; i++)
LCD1602_WriteData(String[i]);
}
void main()
{
LCD1602_Init(); // 初始化LCD1602
LCD1602_DisplayString(0, 0, "Hello, world!"); // 在第一行第一列显示字符串
while(1);
}
```
以上程序实现了在LCD1602上显示字符串“Hello, world!”,并且可以通过修改`LCD1602_DisplayString`函数的参数来在其他位置显示其他字符串。如果需要显示其他内容,可以根据LCD1602的指令集自行编写相应的函数并调用即可。
阅读全文