?? lcd12232.asm
字號:
;THIS PROGRAM IS FOR 12232F
; RS--------P3.3 '0'指令 '1'數據
; R/W-------P3.1 '0'寫 '1'讀
; E---------P3.0 配合讀寫
; DB0~7-----P1
$INCLUDE (STC12C5404.h);(STC12C5410AD.H)
RS_B EQU P2.7 ;INT1
RW_B EQU P2.1
E_B EQU P2.0
REG1 EQU 20H
TMP_RAM1 EQU 21H
DEL0 EQU 30H
DEL1 EQU 31H
ORG 0000H
AJMP START
ORG 0003H
RETI
ORG 0030H
START:
MOV IE,#00H;#81H
MOV IP,#01H
MOV TCON,#00H
MOV SP,#67H
MOV TMP_RAM1,#20
START1:
CALL DELAY
NOP
DJNZ TMP_RAM1,START1
MOV A,#00110000B
CALL WRITE_COM
MOV TMP_RAM1,#5
START2:
CALL DELAY
NOP
DJNZ TMP_RAM1,START2
MOV A,#00110000B
CALL WRITE_COM
MOV TMP_RAM1,#5
START3:
CALL DELAY
NOP
DJNZ TMP_RAM1,START3
MOV A,#00110000B
CALL WRITE_COM
MOV TMP_RAM1,#5
START4:
CALL DELAY
NOP
DJNZ TMP_RAM1,START4
MOV A,#00110000B
CALL WRITE_COM
NOP
CALL DELAY
MOV A,#00111000B;設為基本指令
CALL WRITE_COM
CALL DELAY
MOV A,#00000010B;DDRAM set to 00h
CALL WRITE_COM
CALL DELAY
MOV A,#10000000B;SET DDRAM ADDRESS
CALL WRITE_COM
CALL DELAY
MOV A,#00000100B;進入點設定
CALL WRITE_COM
CALL DELAY
MOV A,#00001100B;display on
CALL WRITE_COM
CALL DELAY
MOV A,#00000001B;Clearing screen
CALL WRITE_COM
;-=---------------------------------
MAIN:
;;自造字(圖片)
NOP
CALL WRITE_CGRAM_DIAIC
MOV A,#82H
CALL WRITE_COM
MOV DPTR,#CGRAM1
CALL WRITE_CGRAM
NOP
CALL DELAY
NOP
CALL WRITE_CGRAM
NOP
CALL DELAY
NOP
CALL WRITE_CGRAM
NOP
CALL DELAY
NOP
CALL WRITE_CGRAM
NOP
;;自造字2(漢字)
; CALL WRITE_CGRAM_hz
; MOV A,#90H
; CALL WRITE_COM
;
; MOV DPTR,#CGRAM1
; CALL WRITE_CGRAM
; NOP
; CALL WRITE_CGRAM
; NOP
; CALL WRITE_CGRAM
; NOP
; CALL WRITE_CGRAM
; NOP
;;自造字3(漢字)
; CALL WRITE_CGRAM_hz1
; MOV A,#94H
; CALL WRITE_COM
;
; MOV DPTR,#CGRAM1
; CALL WRITE_CGRAM
; NOP
; CALL WRITE_CGRAM
; NOP
;------------------------------------------
;打印ASCII
ASCII_DIS:
MOV R2,#0
ASCII_DIS0:
MOV R3,#15
MOV A,#90H
CALL WRITE_COM
ASCII_DIS1:
MOV A,R2
CALL WRITE_DAT
INC R2
CALL DELAY
CALL DELAY
CALL DELAY
NOP
MOV A,R2
CLR C
SUBB A,#128
JNC END_ASCII
DJNZ R3,ASCII_DIS1
JMP ASCII_DIS0
END_ASCII:
NOP
;-------------------------------------------
;調用字庫漢字
HZ_DIS:
MOV R2,#5
MOV DPTR,#CHINESE
HZ_DIS0:
MOV R3,#7
MOV A,#90H
CALL WRITE_COM
HZ_DIS2:
CLR A
MOVC A,@A+DPTR
CALL WRITE_DAT
INC DPTR
CLR A
MOVC A,@A+DPTR
CALL WRITE_DAT
INC DPTR
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
DJNZ R3,HZ_DIS2
MOV A,#0A1H
CALL WRITE_DAT
MOV A,#0A0H
CALL WRITE_DAT
DJNZ R2,HZ_DIS0
NOP
MOV TMP_RAM1,#50
HZ_DIS_DEL:
CALL DELAY
DJNZ TMP_RAM1,HZ_DIS_DEL
NOP
;------------------------------------------
AAA:
JMP START
;-----------------------------
;---------------------------------------
WRITE_COM:
;WRITE COMMANDS TO ST7920
CALL DELAY1
CLR RS_B
CLR RS_B
CLR RW_B
CLR RW_B
; CALL SAME_REG_P1
MOV P1,A
MOV P1,A
SETB E_B
SETB E_B
NOP
NOP
NOP
NOP
NOP
CLR E_B
CLR E_B
;CALL DELAY1
RET
;----------------------------------------------
WRITE_DAT:
CALL DELAY1
SETB RS_B
SETB RS_B
CLR RW_B
CLR RW_B
; CALL SAME_REG_P1
MOV P1,A
MOV P1,A
SETB E_B
SETB E_B
NOP
NOP
NOP
NOP
NOP
CLR E_B
CLR E_B
RET
;----------------------------------------------
DELAY1:
MOV R7,#20
D11:
MOV R6,#20
DJNZ R6,$
DJNZ R7,D11
RET
DELAY:
MOV DEL0,#00H
D2:
MOV DEL1,#00H
DJNZ DEL1,$
DJNZ DEL0,D2
RET
;-------------------------------------
DEF_CHAR:;WRITE TO CGRAN
MOV A,#40H;01000000B;SET CGRAM ADDRESS
CALL WRITE_COM
MOV R3,#8
DEF1:
MOV A,#00H
CALL WRITE_DAT
CALL WRITE_DAT
NOP
MOV A,#0FFH
CALL WRITE_DAT
CALL WRITE_DAT
NOP
DJNZ R3,DEF1
MOV R3,#8
DEF2:
MOV A,#0AAH
CALL WRITE_DAT
CALL WRITE_DAT
MOV A,#0AAH
CALL WRITE_DAT
CALL WRITE_DAT
DJNZ R3,DEF2
MOV R3,#8
DEF3:
MOV A,#55H
CALL WRITE_DAT
CALL WRITE_DAT
MOV A,#0AAH
CALL WRITE_DAT
CALL WRITE_DAT
NOP
DJNZ R3,DEF3
MOV R3,#8
DEF4:
MOV A,#0FFH
CALL WRITE_DAT
CALL WRITE_DAT
CALL WRITE_DAT
CALL WRITE_DAT
DJNZ R3,DEF4
RET
;-------------------------------
WRITE_CGRAM_hz:
MOV DPTR,#HZ_CGRAM
jmp WRITE_CGRAM_hz_same
WRITE_CGRAM_hz1:
MOV DPTR,#HZ_CGRAM1
WRITE_CGRAM_hz_same:
MOV A,#40H;01000000B;SET CGRAM ADDRESS
CALL WRITE_COM
MOV R3,#16*4;40~7f
WCGRAM1:
CLR A
MOVC A,@A+DPTR
CALL WRITE_DAT
CLR A
INC DPTR
MOVC A,@A+DPTR
CALL WRITE_DAT
INC DPTR
DJNZ R3,WCGRAM1
NOP
RET
;---------------------------
WRITE_CGRAM_DIAIC:
MOV R5,#40H
MOV R3,#16
MOV DPTR,#diaic_tab
WRITE_CGRAM_DIAIC00:
MOV R2,#4
MOV A,R5
MOV R4,A
WRITE_CGRAM_DIAIC0:
MOV A,R4
CALL WRITE_COM
WRITE_CGRAM_DIAIC1:
CLR A
MOVC A,@A+DPTR
CALL WRITE_DAT
CLR A
INC DPTR
MOVC A,@A+DPTR
CALL WRITE_DAT
INC DPTR
MOV A,#16
ADD A,R4
MOV R4,A
DJNZ R2,WRITE_CGRAM_DIAIC0
INC R5
DJNZ R3,WRITE_CGRAM_DIAIC00
NOP
RET
;*-------------------------------------------------------------------- *
;* 漢字字模表 *
;* 漢字庫: 宋體16.dot,橫向取模左高位,數據排列:從左到右從上到下 *
;*-------------------------------------------------------------------- *
Hz_CGRAM: ; 數據表
db 01h, 00h, 01h, 04h,0FFh,0FEh, 01h, 00h
db 01h, 04h, 7Fh,0FEh, 48h, 24h, 44h, 44h
db 5Fh,0F4h, 41h, 04h, 41h, 04h, 5Fh,0F4h
db 41h, 04h, 41h, 04h, 41h, 14h, 40h, 08h;"南",
db 00h, 04h, 7Dh,0FEh, 45h, 04h, 49h, 04h
db 49h, 04h, 51h, 04h, 49h, 04h, 49h,0FCh
db 45h, 04h, 45h, 04h, 45h, 04h, 69h, 04h
db 51h, 04h, 41h, 04h, 41h,0FCh, 41h, 04h;"陽",
db 00h, 08h, 13h,0FCh,0FAh, 48h, 22h, 48h
db 23h,0F8h, 22h, 48h,0FAh, 48h, 23h,0F8h
db 20h, 40h, 20h, 50h, 23h,0F8h, 3Ch, 40h
db 0E0h, 40h, 40h, 44h, 0Fh,0FEh, 00h, 00h;"理",
db 00h, 00h, 00h, 08h, 7Fh,0FCh, 01h, 00h
db 01h, 00h, 01h, 00h, 01h, 00h, 01h, 00h
db 01h, 00h, 01h, 00h, 01h, 00h, 01h, 00h
db 01h, 04h,0FFh,0FEh, 00h, 00h, 00h, 00h;"工",
;----------------------------------------------------------------
Hz_CGRAM1:
db 22h, 08h, 11h, 08h, 11h, 10h, 00h, 20h
db 7Fh,0FEh, 40h, 02h, 80h, 04h, 1Fh,0E0h
db 00h, 40h, 01h, 84h,0FFh,0FEh, 01h, 00h
db 01h, 00h, 01h, 00h, 05h, 00h, 02h, 00h;"學",
db 00h, 80h, 78h, 40h, 4Fh,0FEh, 54h, 02h
db 58h, 14h, 63h,0F8h, 50h, 00h, 48h, 08h
db 4Fh,0FCh, 48h,0A0h, 68h,0A0h, 50h,0A0h
db 41h, 22h, 41h, 22h, 42h, 1Eh, 4Ch, 00h;"院",
db 01h, 00h, 01h, 00h, 01h, 04h, 7Fh,0FEh
db 41h, 04h, 41h, 04h, 41h, 04h, 41h, 04h
db 7Fh,0FCh, 41h, 04h, 01h, 00h, 01h, 00h
db 01h, 00h, 01h, 00h, 01h, 00h, 01h, 00h;"中",
db 01h, 00h, 01h, 00h, 01h, 00h, 01h, 00h
db 41h, 04h, 41h, 04h, 41h, 04h, 41h, 04h
db 41h, 04h, 41h, 04h, 41h, 04h, 41h, 04h
db 41h, 04h, 7Fh,0FCh, 40h, 04h, 00h, 00h;"山",
;---------------------------------------------------------
diaic_tab:
db 00h, 00h, 00h, 07h,0C0h, 00h, 00h, 00h
db 00h, 00h, 00h, 1Fh,0E0h, 00h, 00h, 00h
db 00h, 00h, 00h, 3Fh,0F8h, 00h, 00h, 00h
db 0FFh,0FCh, 00h,0FFh,0FCh, 00h, 00h, 00h
db 0FFh,0FFh,0FFh,0DFh,0FFh,0FFh,0FFh,0FEh
db 0FFh,0FFh,0FFh,0BEh,0F7h,0FFh,0FFh,0FEh
db 0C0h, 0Fh,0FEh, 3Ch,0F1h,0FFh,0E0h, 1Eh
db 0C0h, 07h,0F8h, 7Ch, 78h, 7Fh, 80h, 06h
db 0C0h, 03h,0F0h, 78h, 78h, 3Fh, 00h, 02h
db 0C0h, 03h,0F0h,0FEh,0FCh, 3Fh, 00h, 00h
db 0C0h, 03h,0F0h,0FFh,0FCh, 3Fh, 00h, 00h
db 0C0h, 03h,0F1h,0FFh,0FEh, 3Fh, 00h, 00h
db 0C0h, 03h,0F1h,0FFh,0FEh, 3Fh, 00h, 02h
db 0C0h, 0Fh,0FBh,0F0h, 1Fh, 7Fh,0C0h, 0Eh
db 0FFh,0FFh,0FFh,0C0h, 0Fh,0FFh,0FFh,0FEh
db 0FFh,0FFh,0FFh, 80h, 07h,0FFh,0FFh,0FEh
;--------------------------------
WRITE_ASCII:
MOV R4,#16
ASCII0:
CLR A
MOVC A,@A+DPTR
CALL WRITE_DAT
INC DPTR
DJNZ R4,ASCII0
RET
;----------------------------
WRITE_HZ:
;WRITE 8 CHINESE TO LCD
MOV R4,#8
HZ1:
CLR A
MOVC A,@A+DPTR
INC DPTR
CALL WRITE_DAT
CLR A
MOVC A,@A+DPTR
INC DPTR
CALL WRITE_DAT
DJNZ R4,HZ1
RET
;----------------------------------
WRITE_CGRAM:
;CGRAM TESTING
CLR A
MOVC A,@A+DPTR
CALL WRITE_DAT
INC DPTR
CLR A
MOVC A,@A+DPTR
CALL WRITE_DAT
INC DPTR
RET
WRITE_CGRAM1:
MOV A,TMP_RAM1
MOVC A,@A+DPTR
CALL WRITE_DAT
INC DPTR
MOV A,TMP_RAM1
MOVC A,@A+DPTR
CALL WRITE_DAT
INC TMP_RAM1
RET
;--------------------------
TABLE1:
;"這里是16*8點陣的字符代碼"
DB 0C4H,0CFH,0D1H,0F4H,0C0H,0EDH,0B9H,0A4H,0D1H,0A7H,0D4H,0BAH,0C7H,0C7H,0C8H,0D9H,0C7H,0E4H
DB 0BBH,0B6H,0D3H,0ADH,0C4H,0FAH,0B5H,0E7H,0D7H,0D3H,0D3H,0EBH,0B5H,0E7H,0C6H,0F8H,0B9H,0A4H
DB 0B3H,0CCH,0CFH,0B5H
;------------------------------------
;以下是自造字符地址表
CGRAM1:
DB 00H,01H
CGRAM2:
DB 00H,02H
CGRAM3:
DB 00H,04H
CGRAM4:
DB 00H,06H
;-------------------------
CHINESE:
;這里是16*16點陣漢字代碼表
DB '南陽理工學院電子與電氣工程系02911!廣東省中山市中國燈飾之都古鎮迪艾生!!!!!!!!'
; 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435
;-------------------------
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -