線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1551
推到 Plurk!
推到 Facebook!

關於PC傳輸資料至8051顯示於LCD程式問題

缺席
phico-smt
一般會員


發表:2
回覆:1
積分:0
註冊:2005-03-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-12 11:04:06 IP:203.75.xxx.xxx 未訂閱
我使用超級終端機輸入資料給8051但卻無法顯示於LCD上,以下是8051的程式部份,煩請各位高手幫忙看看是否程式有問題??  
        ORG     0000H
        MOV     TMOD,#00100000B
        MOV     TH1,#230
        MOV     TL1,#230
        SETB    TR1
        ACALL   INIT
;
        MOV     SCON,#01110000B 
LOOP:   CLR     RI
WAIT:   JNB     RI,WAIT
;
        MOV     A,SBUF
        MOV     R1,A  
        CJNE    A,#date,address
        CJNE    B,#date,address
        CJNE    C,#date,address
        CJNE    D,#date,address
        CJNE    E,#date,address
        
        ACALL   LINE1
        MOV     DPTR,#R1
        ACALL   DISPLAY            ACALL   LINE2
        MOV     DPTR,#R1
        ACALL   DISPLAY    OK:     AJMP    OK    ;
INIT:   ACALL   DELAY            MOV     A,#38H
        ACALL   WRINS
        MOV     A,#38H
        ACALL   WRINS
        MOV     A,#38H
        ACALL   WRINS
        MOV     A,#38H
        ACALL   WRINS            MOV     A,#08H
        ACALL   WRINS            MOV     A,#01H
        ACALL   WRINS            MOV     A,#06H
        ACALL   WRINS            MOV     A,#0CH
        ACALL   WRINS
        RET
;
DISPLAY:MOV     R7,#00H
NEXT:   MOV     A,R7
        MOVC    A,@A DPTR
        CJNE    A,#10H,DSP
        RET
DSP:    ACALL   WRDATA
        INC     R7
        AJMP    NEXT    LINE1:  MOV     A,#10000000B
        ACALL   WRINS
        RET    LINE2:  MOV     A,#11000000B
        ACALL   WRINS
        RET    WRINS:  MOV     P3,#00011111B   ;RS=0,R/W=0,E=0
        NOP
        SETB    P3.5            ;E=1
        MOV     P1,A
        NOP
        CLR     P3.5            ;E=0
        ACALL   DLY1
        RET    WRDATA: MOV     P3,#10011111B   ;RS=1,R/W=0,E=0
        NOP
        SETB    P3.5            ;E=1
        MOV     P1,A
        NOP
        CLR     P3.5            ;E=0
        ACALL   DLY2
        RET
;
DELAY:  MOV     R6,#100
DL:     MOV     R7,#200
        DJNZ    R7,$
        DJNZ    R6,DL
        RET
;
DLY1:   MOV     R6,#20
DL1:    MOV     R7,#200
        DJNZ    R7,$
        DJNZ    R6,DL1
        RET
;
DLY2:   MOV     R6,#80
        DJNZ    R6,$
        RET
;            END     
發表人 - phico-smt 於 2005/05/12 15:34:32

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-12 12:28:19 IP:211.22.xxx.xxx 未訂閱
新手請先閱讀版規! PO程式碼請縮排. 煩請修改配合,謝謝!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-12 14:33:47 IP:211.21.xxx.xxx 未訂閱
phico-smt您好: 您是本站的新手 有幾點跟您提醒一下^^ 1.網頁上方有網站/新手必看(本站使用規定說明) 建議您先去看一下 或是連到這裡[url="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19264"]新手須知[/url] 2.另一個[url="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48259"]關於程式碼的縮排[/url] 3.請試著把8051的操作環境、指令功能跟程式碼搞懂 4.您的問題範圍過大 故障排除要把一個大問題拆開成數段 檢查每段的工作是否如預期完成 逐漸縮小範圍 如這個問題 拆成 (1)8051是否收到資料 (2)資料轉換/處理是否正確 (3)資料能否顯示在LCD上 5.謝謝您的合作 ------------------- 美好的事物 稍縱即逝
foreman
高階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-12 15:50:12 IP:218.164.xxx.xxx 未訂閱
大大: 這程式能組譯OK嗎? ;??語法好相不對          
        MOV        A,SBUF
        MOV        R1,A
        CJNE        A,#date,address ;??
        CJNE        B,#date,address ;??
        CJNE        C,#date,address ;??
        CJNE        D,#date,address ;??
        CJNE        E,#date,address ;??            ACALL         LINE1
        MOV        DPTR,#R1 ;??
        ACALL        DISPLAY            ACALL         LINE2
        MOV        DPTR,#R1 ;??
        ACALL         DISPLAY
 
phico-smt
一般會員


發表:2
回覆:1
積分:0
註冊:2005-03-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-12 16:23:39 IP:203.75.xxx.xxx 未訂閱
這程式我是一照老師給的概念編寫的:PC傳送(超級終端機)→8051接收→判斷→LCD顯示
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-12 18:08:46 IP:211.21.xxx.xxx 未訂閱
問題1:
OK:     AJMP    OK
這是死迴圈 你的程式也沒啟動中斷 所以到這裡程式已經不再做任何事了 問題2: foreman大大說的
        CJNE    A,#date,address
這不是個可編譯通過的指令 指令的意思是 當A不等於#data時就跳到address的位址 CJNE只有A 沒有B,C,D,E 問題3: SCON要在啟動前先設
        MOV     SCON,#01110000B 
        MOV     TMOD,#00100000B
        MOV     TH1,#230
        MOV     TL1,#230
        SETB    TR1
        ACALL   INIT
問題4: 程式改成下面這樣
        ORG     0000H
        JMP        START
        ORG        30H        
;--------------------------------
START:
        MOV     SCON,#01110000B ;<1
        MOV     TMOD,#00100000B
        MOV     TH1,#230
        MOV     TL1,#230
        SETB    TR1
        ACALL   INIT
        ACALL   LINE1                
        CLR     RI
        MOV        R1,#16                
;--------------------------------
LOOP:
        JNB     RI,WAIT
        CLR        RI                
        MOV     A,SBUF
        CALL        WRDATA                
        DJNZ        R1,LOOP
        MOV        R1,#16
        CALL        LINE1
        JMP        LOOP                    INIT:   ACALL   DELAY            MOV     A,#38H
        ACALL   WRINS
        .
        .
        .
問題5: LCD下指令前要檢查Busy旗標 ------------------- 美好的事物 稍縱即逝 發表人 - 阿信 於 2005/05/12 19:22:59
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-12 18:31:54 IP:59.104.xxx.xxx 未訂閱
post程式前先將程式作註解 例: start:mov count,a;將計數值載入計數器 程式作有意義的註解好讀,未來容易維護 對於問題容易解決,否則讀你的程式還要努力想你的意思 關於你的問題,還要加上你的lcd型號及電路圖 mymj
系統時間:2024-04-30 4:18:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!