微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STC89C52单片机1602液晶驱动

STC89C52单片机1602液晶驱动

时间:11-21 来源:互联网 点击:

Digital_tube_Duan_Enable;
LCD_DATAPORT=0X00;
DelayMs(2);
Digital_tube_Duan_Disable;


LCD_DATAPORT=0;
DelayMs(15);
WriteCommandLCD(0x38,0); //三次显示模式设置,不检测忙信号
DelayMs(5);
WriteCommandLCD(0x38,0);
DelayMs(5);
WriteCommandLCD(0x38,0);
DelayMs(5);

WriteCommandLCD(0x38,1); //8bit数据传送,2行显示,5*7字型,检测忙信号
WriteCommandLCD(0x08,1); //关闭显示,检测忙信号
WriteCommandLCD(0x01,1); //清屏,检测忙信号
WriteCommandLCD(0x06,1); //显示光标右移设置,检测忙信号
WriteCommandLCD(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号
}
/////////////////////////////////////////////////////////////////////////
函数名称:DisplayOneCharLCD
函数功能:按指定位置显示一个字符,比如说数字,英文字母等
参数介绍:cXCoord:要显示字符在某一行当中的位置
cYCoord:要显示字符在液晶中的行数,比如说第一行或第二行
cData: 要显示的字符,比如说1、a等
返回值:
注意事项:限制cXCoord不能大于15,cYCoord不能大于1
/////////////////////////////////////////////////////////////////////////

void DisplayOneCharLCD(uchar cXCoord,uchar cYCoord,uchar cData)
{
cYCoord&=1; //取cYCoord的第一位,其他的全部设置成0
if(cYCoord)cXCoord|=0x40; //若y为1,显示第一行,地址码+0X40
cXCoord|=0x80; //若不为1,则显示第二行,地址码+0X80
WriteCommandLCD(cXCoord,0); //把写入的地址送到1602液晶
WriteDataLCD(cData); //写入要写入的数据
}
/////////////////////////////////////////////////////////////////////////

函数名称:DisplayListCharLCD
函数功能:按指定位置显示一串字符,比如说显示 abcdefg,123456等
参数介绍:cXCoord:要显示字符在某一行当中的位置
cYCoord:要显示字符在液晶中的行数,比如说第一行或第二行
cData: 要显示的字符串,比如说123456、adcdgd等
返回值:
注意事项:制cXCoord不能大于15,cYCoord不能大于1
/////////////////////////////////////////////////////////////////////////
void DisplayListCharLCD(uchar cXCoord,uchar cYCoord,uchar code *Data)
{
uchar ListLength=0;//要显示字符串的长度
cYCoord&=0x01;//取cYCoord的第一位,其他的全部设置成0
cXCoord&=0x0f;
while(cXCoord<16) //循环写入要写入的字符串
{
DisplayOneCharLCD(cXCoord,cYCoord,Data[ListLength]);
ListLength++;
cXCoord++;
}
}
/////////////////////////////////////////////////////////////////////////
函数名称:main
函数功能:启动1602液晶,在1602液晶上面循环显示2组字符串
参数介绍:无
返回值:
注意事项:无
/////////////////////////////////////////////////////////////////////////
void main()
{
DelayMs(50); //延时50ms启动
Initial_LCD(); //对LCD进行初始化
while(1)
{
DisplayListCharLCD(0,0,string0);//在1602的顶行显示字符串0
DisplayListCharLCD(0,1,string1);//在1602的底行显示字符串1

DelayMs(2000); //延时2s,保留显示字符

DisplayListCharLCD(0,0,string2);//在1602的顶行显示字符串2
DisplayListCharLCD(0,1,string3);//在1602的底行显示字符串3

DelayMs(2000); //延时2s,保留显示字符
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top