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