以下是我编写的程序,这个程序能够显示wlecom to和I LOVE MCU,但之后显示的就是乱码了,屏幕没有清屏,而且之后的显示不是从指定位开始的,
论坛的大神们麻烦给点意见
#include
#include
typedef unsigned char BYTE;
typedef bit BOOL;
***it LCD_RS=P2^6;
***it LCD_RW=P2^5;
***it LCDE=P2^7;
BYTE code dis1[] = {" WELCOME TO "};
BYTE code dis2[] = {"I LONE MCU "};
BYTE code dis3[] = {" OT EMOCLEW "};
BYTE code dis4[] = {" UCM EVOL I "};
delay(int ms)
{
int i;
while(ms--)
{
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
BOOL LCD_bz()
{
BOOL result;
LCD_RS=0;
LCD_RW=1;
LCDE=1;
_nop_();
_nop_();
_nop_();
_nop_();
result=(BOOL)(P0&0x80);
LCDE=0;
return result;
}
LCD_wcmd(BYTE cmd)
{
while(LCD_bz()) ;
LCD_RS=0;
LCD_RW=0;
LCDE=0;
_nop_();
_nop_();
P0=cmd;
_nop_();
_nop_();
_nop_();
_nop_();
LCDE=1;
_nop_();
_nop_();
_nop_();
_nop_();
LCDE=0;
}
LCD_pos(BYTE pos)
{
LCD_wcmd(pos|0x80);
}
LCD_wdat(BYTE dat)
{
while(LCD_bz());
LCD_RS=1;
LCD_RW=0;
LCDE=0;
P0=dat;
_nop_();
_nop_();
_nop_();
_nop_();
LCDE=1;
_nop_();
_nop_();
_nop_();
_nop_();
LCDE=0;
}
void init()
{
LCD_wcmd(0x38);
delay(1);
LCD_wcmd(0x0c);
delay(1);
LCD_wcmd(0x06);
delay(1);
LCD_wcmd(0x01);
delay(1);
}
main()
{
BYTE i;
init();
delay(10);
while(1)
{
LCD_wcmd(0x06);
LCD_pos(0);
i=0;
while(dis1!='