原程序如下想在1602顯示屏下行顯示字符,用了WriteCom命令寫0x80+0x40,操作,不能在下行顯示,請大神們指教下那里寫錯了。謝謝
#include<reg51.h>
#define GPIO_LCD P0 //Data IO
sbit RS=P2^6; //RS data:H,Com:L
sbit RW=P2^5; //RW read:H,Write:L
sbit LCDE=P2^7; //LCDE delay,H,delay,L
void IntLCD(); //Int LCD,command
void WriteCom(unsigned char); //
void WriteDat(unsigned char);
void Delay(unsigned int);
unsigned char code HelloYu[]="Hello!Li Ai Dang";
void main(void)
{
unsigned char i=0;
IntLCD(); // use int LCD first
//while(1) //putout Data to IO
//{ // 16th times
for(;i<16;i++)
WriteDat(HelloYu);
//}
while(1)
{
}
}
/*********************************************
*函數名稱:WriteCom
*功能:寫命令
*
***********************************************/
void WriteCom(unsigned char n)
{
RS=0;
RW=0;
GPIO_LCD=n;
Delay(10);
LCDE=1;
Delay(10);
LCDE=0;
}
/*********************************************
*函數名稱:WriteDat
*功能:寫數據
*
***********************************************/
void WriteDat(unsigned char m)
{
RS=1;
RW=0;
GPIO_LCD=m;
Delay(10);
LCDE=1;
Delay(10);
LCDE=0;
}
/*********************************************
*函數名稱:IntLCD
*功能:初始化LCD
*
***********************************************/
void IntLCD()
{
WriteCom(0x38); //設置16*2,5*7的顯示
WriteCom(0x0c); //設置下劃線不顯示,塊狀光標顯示
WriteCom(0x06); //寫一個指針加1
WriteCom(0x01); //清屏幕
WriteCom(0x80+0x40); //設置指針起始位置??俺設置了T_T,LCD不理我
}
/*********************************************
*函數名稱:Delay
*功能:延時函數
*
***********************************************/
void Delay(unsigned int c)
{
unsigned char a,b;
for(;c>0;c--)
for(a=1;a>0;a--)
for(b=22;b>0;b--);
}
|