2014不变态的魔域私发服网12864显示屏只能显示白屏,求怎么解决

这是我的程序
.h文件
#ifndef _LCD12864_H_
#define _LCD12864_H_
#define LCD_PORT P3
sbit lcd_rs = P1^0;
sbit lcd_rw = P1^2;
sbit lcd_e = P1^3;
sbit lcd_rst =P2^5;
sbit lcd_change=P2^7;

extern void busy();
extern void cmd_write12864(uchar cmd);
extern void dat_write12864(uchar dat);
extern void LCD12864_Init();
extern void display_12864(uchar y,uchar x,uchar *z);
extern void displayDigital_12864(uchar y,uchar x,uchar shu);
#endif

.c文件
//检查忙
void busy()
{
lcd_rs=0; lcd_rw=1; lcd_e=1;
delayms(5);
while((LCD_PORT&0x80)==0x80);
lcd_e=0;
}
/** 写命令*/
void cmd_write12864(uchar cmd)
{
busy();

lcd_rs = 0;//RS端口置0
lcd_rw = 0;//RW端口置0
lcd_e=0;
LCD_PORT = cmd;
lcd_e = 1;//E端口置1
delayms(10);//延时

lcd_e = 0;//E端口置0
}

/** 写数据*/
void dat_write12864(uchar dat)
{
busy();

lcd_rs = 1;//RS端口置1
lcd_rw = 0;//RW端口置0
lcd_e = 0;//E端口置0
LCD_PORT = dat; //填充数据
lcd_e = 1;//E端口置1
delayms(10);

lcd_e = 0;//E端口置0
}


void LCD12864_Init()
{
lcd_change=1;
lcd_rst=0;
LCD_PORT = 0;
delayms(15);
lcd_rst=1;
cmd_write12864(0x30); //选择基本指令操作
cmd_write12864(0x0c); //显示开,关光标
cmd_write12864(0x01); //清除LCD12864的显示内容
}





/****************************显示部分*****************************/
//lcd显示数字程序
void displayDigital_12864(uchar y,uchar x,uchar shu)
{
uchar a,b,Address;
a=shu/10;
b=shu%10;
if(y==1){Address=0x80+x;} //Y判断第几行,X判断第几列,0x80为液晶行初始地址
if(y==2){Address=0x90+x;}
if(y==3){Address=0x88+x;}
if(y==4){Address=0x98+x;}
cmd_write12864(Address); //写入地址命令到LCD12864
dat_write12864(0x30+a);
dat_write12864(0x30+b);

}
//lcd显示程序
void display_12864(uchar y,uchar x,uchar *z)
{
uchar Address;
if(y==1){Address=0x80+x;} //Y判断第几行,X判断第几列,0x80为液晶行初始地址
if(y==2){Address=0x90+x;}
if(y==3){Address=0x88+x;}
if(y==4){Address=0x98+x;}
cmd_write12864(Address); //写入地址命令到LCD12864
while(*z!='\0') //写入显示数据的大小
{
dat_write12864(*z++); //写入显示数据到LCD12864
}
}

void main(){

LCD12864_Init();

display_12864(3,1,"时");
while(1);

}

2025-12-27 18:05 点击量:4