我给你写个测试程序,diyi行显示A,第二行显示B
/*******************************************************************************************
* LCD1602液晶显示程序 51&AVR实验程序
*
* LCD1602液晶: 写指令;
*
* LCD1602液晶: 写数据;
*
* LCD1602液晶: 写指令和据;
********************************************************************************************/
#include "reg52.h"
sbit LCD_RS=P3^5;
sbit LCD_EN=P3^4;
#define Data_addr P0 //定义LCD1602液晶数据I口
void Delay_1ms(unsigned int Time)
{
unsigned int x, y;
for(x = Time; x > 0; x--)
for(y = 120; y > 0; y--);
}
/*********************************************************************************************
* 函数名称: Write_lcd1602_com(unsigned char com);
*
* 输入: 无
*
* 输出: 无
*
* 说明: 给LCD1602液晶写入指令*********************************************************************************************/
void Write_lcd1602_com(unsigned char com)
{
LCD_RS=0;
Data_addr=com;
Delay_1ms(5);
LCD_EN=1;
Delay_1ms(5);
LCD_EN=0;
}
/**********************************************************************************************
函数名称: Write_lcd1602_data(unsigned char date);
*
* 输入: 无
*
* 输出: 无
*
* 说明: 给LCD1602液晶写数据*********************************************************************************************/
void Write_lcd1602_data(unsigned char date)
{
LCD_RS=1;
Data_addr=date;
Delay_1ms(5);
LCD_EN=1;
Delay_1ms(5);
LCD_EN=0;
}
/*********************************************************************************************
* 函数名称: Init_lcd1602(void);
*
* 输入: 无
*
* 输出: 无
*
* 说明: 给LCD1602液晶指令初始化*********************************************************************************************/
void Init_lcd1602(void)
{
LCD_RS=0;
LCD_EN=0;
Write_lcd1602_com(0x38);
Write_lcd1602_com(0x0C);
Write_lcd1602_com(0x06);
Write_lcd1602_com(0x01);
}
int main(void)
{
Init_lcd1602();
Write_lcd1602_com( 0x80); //diyi行显示A
Write_lcd1602_data("A");
Delay_1ms(5);
Write_lcd1602_com( 0x80 + 0x40); //第二行显示B
Write_lcd1602_data("B");
while(1);
}