本人是剛學51的菜鳥, 請教各位高手大哥一個問題,再此先謝過了!
我來點一款12864的液晶屏, 實現最簡單的顯示 " 間隔橫條 " , 主要顯示程序段用下邊的這一段 的時候,一打開電源, 就可以正常的顯示出 間隔橫條 來, 可是, 一旦改成后邊的那一段, 就絕對不 顯示, 只在片1與片2的第一頁顯示4或8列出來,然后沒反應了. 或者用鑷子放在AT89C52的第19 腳, 顯示屏便逐頁逐列的緩慢的一列一列的顯示出來, 最終片1顯示正常, 片2(右半屏)卻有部分亂 碼. 始終想不明白:
這是開機即可以正常顯示的程序段:
QUAN: MOV R4,#00H ; 頁從0開始 QUAN1: MOV A,R4 ; 頁數送到A ORL A,#0B8H ; 計算頁碼值代碼 MOV R_1,A ; 頁代碼送到指令暫存器 CALL WRI1 CALL WRI2 ; 頁代碼寫進LCM的片1與片2 MOV R_1,#40H ; 0列開始,即列代碼為40H CALL WRI1 CALL WRI2 ; 起始列寫進左右半屏 MOV R3,#00H ; 每一頁寫64個字節( 64 列) QUAN2: ; MOV R_2,#55H ; 調用"QUAN"的程序已在R_2中送入55H, 這里僅作說明本段程序用 CALL WRDATA1 ; 向片1寫入顯示數據 55H CALL WRDATA2 ; 向片2寫入顯示數據 55H INC R3 ; 列計數器加1 CJNE R3,#40H,QUAN2 ; 列如果沒有到64, 就返回繼續寫 INC R4 ; 頁計數器加1 CJNE R4,#08H,QUAN1 ; 頁如果沒有到8, 就返回繼續寫 RET
這是在上邊這段稍加修改但卻不能正常顯示的程序段:
QUAN: MOV R4,#00H ; 頁從0開始 QUAN1: MOV A,R4 ; 頁數送到A ORL A,#0B8H ; 計算頁碼值代碼 MOV R_1,A ; 頁代碼送到指令暫存器 CALL WRI1 ; 寫頁代碼 CALL WRI2 MOV R_1,#40H ; 0列開始,即列代碼為40H CALL WRI1 CALL WRI2 MOV R3,#00H ; 每一頁寫64個字節 ( 64列 ) QUAN2: ; MOV R_2,#55H ; 調用"QUAN"的程序已在R_2中送入55H, 這里僅作說明本段程序用 CALL WRDATA1 ; 將55H寫進片1 ( 左半屏 ) INC R3 CJNE R3,#64,QUAN2 ; 將左半屏的一頁64列寫滿 MOV R3,#0 QUAN3: ; MOV R_2,#55H ; 調用"QUAN"的程序已在R_2中送入55H, 這里僅作說明本段程序用 CALL WRDATA2 ; 將55H寫進片2 ( 右半屏 ) INC R3 ; 列計數器加1 CJNE R3,#40H,QUAN3 ; 將右半屏的同一頁寫滿64列 INC R4 ; 頁計數器加1 CJNE R4,#08H,QUAN1 ; 頁如果沒有到8, 就返回繼續重復 RET |