|
初學(xué)51,參照郭天祥的例程,一字未改,照著接線,燒好程序后,字顯示了,但是是反色的,亮的地方不亮,不亮的地方是亮的,為什么?
附:郭天祥例子
#include <reg52.h>
#include <intrins.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P0
sbit LCD_EN=P3^4;
sbit LCD_RS=P3^5;
sbit LCD_RW=P3^6;
sbit LCD_PSB=P3^7;
sbit LCD_RST=P3^3; //因為不顯示,看他程序不帶復(fù)位,后來加上的還是不顯示
uchar code dis1[]={"www.txmcu.com"};
uchar code dis2[]={"www.txmcu.com"};
uchar code dis3[]={"天祥電子"};
uchar code dis4[]={"--------"};
void delay_1ms(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++)
;
}
//寫指令數(shù)據(jù)到LCD
//RS=L,RW=L;E=高脈沖,P0-P7=指令碼
void write_cmd(uchar cmd)
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
P0=cmd;
delay_1ms(5);
LCD_EN=1;
delay_1ms(5);
LCD_EN=0;
}
//寫顯示數(shù)據(jù)到LCD
//RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)
void write_dat(uchar dat)
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delay_1ms(5);
LCD_EN=1;
delay_1ms(5);
LCD_EN=0;
}
//設(shè)置顯示位置
void lcd_pos(uchar X,uchar Y)
{
uchar pos;
if(X==0)
X=0x80;
else if(X==1)
X=0x90;
else if(X==2)
X=0x88;
else if(X==3)
X=0x98;
pos=X+Y;
write_cmd(pos);
}
//LCD初始化設(shè)定
void lcd_init()
{
LCD_PSB=1;
LCD_RST=1; //原程序沒有這句,加上后依然反色顯示
write_cmd(0x30);
delay_1ms(50000);
write_cmd(0x01);
delay_1ms(50000);
write_cmd(0x06);
delay_1ms(50000);
write_cmd(0x0c);
delay_1ms(50000);
}
//主程序
main()
{
uchar i;
delay_1ms(100000);
lcd_init();
lcd_pos(1,0);
i=0;
while(dis2[i]!='\0')
{
write_dat(dis2[i]);
i++;
}
lcd_pos(2,0);
i=0;
while(dis3[i]!='\0')
{
write_dat(dis3[i]);
i++;
}
lcd_pos(3,0);
i=0;
while(dis4[i]!='\0')
{
write_dat(dis4[i]);
i++;
}
while(1)
{
lcd_pos(0,0);
for(i=0;i<10;i++)
write_dat(dis1[i]);
}
}
|
|