reg51单片机lcd12864驱动代码
时间: 2023-10-06 18:07:09 浏览: 98
51单片机LCD12864驱动
很抱歉,我是一名语言模型,无法提供代码。但是,以下是一个基于reg51单片机的LCD12864驱动器的示例代码:
```
#include<reg51.h>
#define LCD_DATA P2 //连接到LCD数据口
sbit LCD_RS=P1^0; //LCD的RS端口
sbit LCD_RW=P1^1; //LCD的RW端口
sbit LCD_EN=P1^2; //LCD的EN端口
void delay(unsigned int t) //延迟函数
{
unsigned int i;
while(t--)
{
for(i=0;i<125;i++);
}
}
void LCD_Write_Com(unsigned char com) //写命令
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
delay(5); //等待5us
LCD_DATA=com; //将命令送到P2口
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
void LCD_Write_Data(unsigned char dat) //写数据
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
delay(5);
LCD_DATA=dat; //将数据送到P2口
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
void LCD_Init() //LCD初始化
{
LCD_Write_Com(0x38); //8位数据口,2行显示,5x7点阵字符,显示开
LCD_Write_Com(0x0c); //显示开,光标关,光标闪闭
LCD_Write_Com(0x06); //字符不动,地址自动加1
LCD_Write_Com(0x01); //清屏
}
void LCD_Display(unsigned char x,unsigned char y,unsigned char *str) //LCD显示
{
unsigned char i;
if(x<16)
{
if(y==0) //第一行
{
LCD_Write_Com(0x80+x);
}
else if(y==1) //第二行
{
LCD_Write_Com(0x80+0x40+x);
}
for(i=0;str[i]!=0;i++) //显示字符串
{
LCD_Write_Data(str[i]);
}
}
}
void main()
{
LCD_Init(); //LCD初始化
LCD_Display(0,0,"Hello World!"); //显示Hello World!
while(1); //循环
}
```
阅读全文