基于51单片机的lcd1602.c代码
时间: 2023-09-28 09:05:58 浏览: 67
以下是一个基于51单片机的LCD1602.c文件的代码示例:
```
#include "lcd1602.h"
void delay(unsigned int t)
{
while(t--);
}
void lcd_init()
{
delay(1000); //等待LCD电源稳定
lcd_write_cmd(0x38); //设置LCD为8位数据总线,双行显示,5*8点阵
lcd_write_cmd(0x0c); //显示开,光标关闭,闪烁关闭
lcd_write_cmd(0x06); //光标移动设置:地址加1,不移动屏幕
lcd_write_cmd(0x01); //显示清屏
}
void lcd_write_data(unsigned char dat)
{
LCD_DATA = dat; //将数据放入端口
RS = 1; //设置RS为1,表示写入数据
EN = 1; //使能EN
delay(10); //等待一段时间
EN = 0; //关闭EN
}
void lcd_write_cmd(unsigned char cmd)
{
LCD_DATA = cmd; //将命令放入端口
RS = 0; //设置RS为0,表示写入命令
EN = 1; //使能EN
delay(10); //等待一段时间
EN = 0; //关闭EN
}
void lcd_write_str(unsigned char row, unsigned char col, unsigned char *str)
{
unsigned char addr;
if(row == 0) //如果是第一行
{
addr = 0x80 + col; //计算地址
lcd_write_cmd(addr); //写入地址
}
else if(row == 1) //如果是第二行
{
addr = 0xc0 + col; //计算地址
lcd_write_cmd(addr); //写入地址
}
while(*str) //依次写入字符串
{
lcd_write_data(*str++);
}
}
```
此代码中,我们定义了上述头文件中声明的函数,并实现了这些函数的具体功能。请注意,在编写该代码时,需要将LCD1602.h头文件包含进来。