PRHZ3:MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R7,PRHZ3
MOV 1DH,#30 ;顯示0E0H后的一行字符(共30個)
MOV R5,#0 ;當前列R5
MOV R0,#0E0H
MOV A,#7FH ;是否為ASCII碼?
CLR C
SUBB A,@R0
JC DPHZ1
MOV 26H,@R0
INC R0
MOV 24H,R6 ;ASCII碼顯示
MOV 25H,R5
LCALL PRASCII
SJMP PRHZ4
DPHZ1:MOV 24H,@R0 ;是漢字則將機內碼送24H25H
INC R0
MOV 25H,@R0
INC R0
MOV A,25H
CLR C
SUBB A,#0A1H ;機內碼轉換為二進制的區(qū)碼和位碼
MOV 25H,A
MOV A,24H
CLR C
SUBB A,#0A1H
LCALLDPONHZ ;顯示1個漢字
DEC 1DH
INC R5
PRHZ4:INC R5
DJNZ 1DH,PRHZ5
POP DPL
POP DPH
RET
PR0:MOV DPTR,#LCDCOM ;讀狀態(tài)
MOVX A,@DPTR
RET
PR01:LCALLPR0 ;讀、寫一數據前
JNB ACC.0,PR01
JNB ACC.1,PR01
RET
PR02:LCALL PR0 ;連續(xù)讀前
JNB ACC.2,PR02
RET
PR03:LCALL PR0 ;連續(xù)寫前
JNB ACC.3,PR02
RET
PR1:LCALL PR01 ;雙字節(jié)參數R2,R3
MOV A,R2
LCALL PR14
PR11:LCALL PR01 ;單字節(jié)參數R3
MOV A,R3
LCALL PR14
PR12:LCALL PR01 ;無參數指令R4
MOV A,R4
SJMP PR15
PR14:MOV DPTR,#LCDDAT
PR15:MOVX @DPTR,A
RET
RL245:MOV R7,#5 ;24H25H左移5
RLL1:CLR C
MOV A,25H
RLC A
MOV 25H,A
MOV A,24H
RLC A
MOV 24H,A
DJNZ R7,RLL1
RET
;行位置R6(0~7),列位置R5(0~29),漢字區(qū)別24H,位碼25H
DPONHZ:MOV A,24H ;顯示1個漢字
MOV B,#94 ;每區(qū)94個漢字
MUL AB
ADD A,25H
MOV 25H,A
CLR A
ADDC A,B
MOV 24H,A
RR A ;獲得32KB為1頁的頁號
RR A
ORL A,#0F0H
MOV P1,A ;頁號送P1口
LCALL RL245 ;漢字序號乘以32
SETB 24H,7 ;因為存儲器位于單片機系統的7FFFH~0FFFFH
MOV DPH,24H
MOV DPL,25H
MOV R2,#32 ;在該位置連續(xù)取出32個字節(jié)
MOV R1,#0C0H
DPHZ2:MOVX A,@DPTR
INC DPTR
MOV @R1,A
INC R1
DJNZ R2,DPHZ2
MOV R1,#0C0H
MOV A,R6 ;根據行列位置計算LCD指針
MOV B,#16
MUL AB
MUL B,#30
MUL AB
ADD A,R5
MOV 25H,A
MOV R2,A
CLR A
ADDC A,B
MOV 24H,A
MOV R3,A
MOV 26H,#16 ;將取出的點陣送LCD顯示
PRHZ6:MOV R4,#24H
LCALL PR1 ;雙字節(jié)參數R2,R3
MOV A,@R1
MOV R3,A
INC R1
MOV R4,#0C0H
LCALL PR11 ;單字節(jié)參數R3
MOV A,@R1
MOV R3,A
INC R1
MOV R4,#0C0H
LCALL PR11
MOV A,#30
ADD A,25H
MOV R2,A
CLR A
ADDC A,24H
MOV R3,A
MOV 24H,A
DJNZ 26H,PRHZ6
RET
注:由于以上程序直接引自下面的應用實例,調用以上程序時請讓寄存器組位于第2區(qū),即R0對應10H。
三、應用實例
我們應用本文介紹的方法成功地進行了某醫(yī)療儀器的設計。該設計要求具有完整的中、英文字符提示和漢字處方顯示,并盡可能地為今后的功能擴展和處方修改留有余地。目前儀器中用到的漢字約1200個,語句行為1300行左右,而且用戶認為利用工控PC機設計成本過高,要求盡可能地降低成本。顯然,對于該系統利用傳統的漢字處理方式進行設計雖然能節(jié)省一定的存儲空間,但龐大的漢字和語句重新編碼工作卻讓人望而生畏,而且當處方修改須要用到新的漢字時相當麻煩。我們利用8031單片機系統和本文介紹的方法進行設計,整個硬件電路和底層程序設計只用了1周的時間,大大地縮短了開周期。而且由于本系統可調用所有的ASCII碼和全部漢字庫,所以對于功能的擴展和處方的修改十分方便。





