你用的是串口方式 而程序是并口方式,所以再怎么弄都不会显示出来 ;
我这里有串口方式的程序 今晚刚编好的 也测试了液晶能显示出来 你看看吧 把我的端口对应改一下就行 如果液晶再无法显示 那就是你硬件的问题了 比如PSB端口是否接了低电平
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit cs=P2^5; //片选端 高电平有效
sbit sid=P2^6; //数据线
sbit sclk=P2^7; //串行时钟信号 下降沿有效
uchar table[]="我是个小兵却乐天知命,在你的世界说鸟语,在我的世界对不起请说汉语";
uchar datecnt;
void delayms(uint z)//单位延时一毫秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void send_byte(uchar byte)//发送一个字节函数
{
uchar j;
cs=1;
for(j=0;j<8;j++)
{
sclk=0;
byte=byte<<1;
sid=CY;
sclk=1;
sclk=0;
}
cs=0;
}
void writecom_12864(uchar com)//写命令控制函数
{
uchar HDATA,LDATA;
HDATA=com&0xf0;
LDATA=((com<<4)&0xf0);
send_byte(0xf8);
send_byte(HDATA);
send_byte(LDATA);
}
void writedate_12864(uchar date)//写数据控制函数
{
uchar HDATA,LDATA;
HDATA=date&0xf0;
LDATA=((date<<4)&0xf0);
send_byte(0xfa);
send_byte(HDATA);
send_byte(LDATA);
}
void init_12864()//初始化12864
{
writecom_12864(0x30);
writecom_12864(0x30);
writecom_12864(0x0c);
writecom_12864(0x01);//清屏
writecom_12864(0x06);
}
void display_12864()
{
for(datecnt=0;datecnt<64;datecnt++)
{
if(datecnt==0) writecom_12864(0x80);
if(datecnt==16)writecom_12864(0x90);
if(datecnt==32)writecom_12864(0x88);
if(datecnt==48)writecom_12864(0x98);
writedate_12864(table[datecnt]);
}
}
void main()
{
init_12864();
display_12864();
while(1);
}