关于lcd显示的问题,程序运行没出错,下载到板子上,lcd...

2019-07-16 01:53发布

源程序:板子是stc12c5A60S2,电路图附上,显示屏结果如图片,求大侠帮忙
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^5;//////控制0输入指令,1是输入数据
sbit lcden=P2^7;////使能端

sbit wr=P2^6;   ///0是写入,1是读写

uchar table1[]="HJ-3GMCU";
uchar table2[]="WWW.HJMCU.COM";

//*****延时函数,时间较短*******/

void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}


/////*******************延时函数,时间较长**********************//
void delay1(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}

////////**************向lcd写指令的函数********************///

/////////////////***********************************************
void write_com(uchar com)
{
P0=com;
rs=0;
wr=0;
//lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}

///////////////*******************向lcd写数据的函数******************////////////////
////////////////////******************************************/////////////////////
void write_date(uchar date)
{
P0=date;
rs=1;
wr=0;
//lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}

///////////////////lcd初始化函数******************/////////////////
void init()
{
wr=0;
//dula=0;
//wela=0;
write_com(0x38);//向lcd输入指令,二进制是0011 1000,功能设定:数据总线八位;显示两行***///
delay(20);
write_com(0x0f);///二进制是0000 1111.显示开关:开显示功能;有光标且闪烁
delay(20);
write_com(0x06);///二进制:0000 0110,模式设置:写入数据后光标左移;写入新数据屏幕不移动
delay(20);
write_com(0x01);////很明显清屏指令
delay(20);
}
//////*********/
///////***********************main主函数
void main()
{
uchar a;
init();////////对lcd初始化
write_com(0x80+17);////第一排第18位置
delay(20);
for(a=0;a<9;a++)
{
write_date(table1[a]);
delay(20);
}
write_com(0xc0+17);//////第二排第18位置
delay(50);
for(a=0;a<13;a++)
{
write_date(table2[a]);
delay(40);
}
for(a=0;a<16;a++)
{
write_com(0x18);/////二进制:0001 1000.屏幕光标:字符左移一格,光标不动
delay1(200);
}
while(1);
}


显示屏只有一行格格 显示屏只有一行格格
HOT-51电路图.pdf 下载积分: 积分 -1 分
103.6 KB, 下载次数: 9, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。