你用的是串口方式 而程序是并口方式,所以再怎么弄都不會顯示出來 ;
我這里有串口方式的程序 今晚剛編好的 也測試了液晶能顯示出來 你看看吧 把我的端口對應改一下就行 如果液晶再無法顯示 那就是你硬件的問題了 比如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);
}