小弟最近開始接觸8051
現在想要做從PC端發送字串
然後透過RS232傳輸給8051然後在LCD上顯示出來 目前小弟做出來 只能正常顯示一個字元
想要嘗試一次傳送一個字串並顯示出來
卻遇到瓶頸
希望能在此得到協助
<textarea class="c#" rows="10" cols="60" name="code">
請在此區域輸入程式碼
//mcs-51 #include
#include sbit RS = P2^0;
sbit RW = P2^1;
sbit En = P2^2;
void delay(void);
void InitialLCD(void);
void WriteLCDcmd(char);
void WriteLCDdata(char);
void CheckBusy(void);
void print(char line,char *str);
char *string; main()
{
TMOD = 0x20;
TH1 = 253;
TL1 = 253;
TR1 = 1;
SCON = 0x50;
InitialLCD();
WriteLCDcmd(0x84);
print(1,"READY OK");
while(1)
{
while(RI==0)
RI=0;
*string = SBUF;
print(1,string);
delay();
}
}
//main void InitialLCD(void)
{
WriteLCDcmd(0x38);
WriteLCDcmd(0x38);
WriteLCDcmd(0x38);
WriteLCDcmd(0x38);
WriteLCDcmd(0x08);
WriteLCDcmd(0x01);
WriteLCDcmd(0x0c);
WriteLCDcmd(0x06);
}
//初始化LCD void WriteLCDcmd(char instruction)
{
RS = 0;
RW = 0;
En = 1;
P1 = instruction;
En = 0;
CheckBusy(); }
//寫命令至LCD void WriteLCDdata(char i)
{
RS = 1;
RW = 0;
En = 1;
P1 = i;
En = 0;
CheckBusy();
} //寫字串至LCD void CheckBusy(void)
{
char i=0x80;
while(i&0x80)
{
RS=0;
RW=1;
En=1;
i=P1;
En=0;
delay();
}
} void delay(void)
{
int i;
for(i=0;i<500;i );
} void print(char line,char *str)
{
int i;
if(line==1)
{
WriteLCDcmd(0x80);
for(i=0;i<16;i )
WriteLCDdata(' ');
WriteLCDcmd(0x80);
}
else
{
WriteLCDcmd(0x80);
for(i=0;i<16;i )
WriteLCDdata(' ');
WriteLCDcmd(0xc0);
}
do{WriteLCDdata(*str );}
while(*str!='\0');
}
//輸出到lcd </textarea>