全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3782
推到 Plurk!
推到 Facebook!

有關8051接收pc透過rs232傳出來的字串

尚未結案
farstar777
一般會員


發表:1
回覆:0
積分:0
註冊:2007-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-06 13:39:03 IP:140.112.xxx.xxx 訂閱
小弟最近開始接觸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>
foreman
高階會員


發表:3
回覆:124
積分:190
註冊:2004-09-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-07 10:12:09 IP:125.229.xxx.xxx 未訂閱
大大:
8051一次RI!=0只能收到一個BYTE, 我的建議您去買些書來參考.
系統時間:2024-06-14 15:17:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!