?? lm7m.asm
字號(hào):
; 偽彩320*240 LCD控制板(QX3224RGB1.1) 技巧演示例程
; 通過這個(gè)例程你可以知道怎樣顯示圖形和中文的技巧
; 從上一個(gè)例程LF9111.ASM你可以看出,以三個(gè)字節(jié)(8個(gè)像素)為一個(gè)尋址單元時(shí),編程更加方便。
; 通過調(diào)用下面的地址換算子程序和顏色設(shè)置子程序你可以像為單色LCD編程一樣簡單。
CSEG AT 0000H
;LCD控制板接口
;P1 為數(shù)據(jù)線
AOO EQU P3.0 ;AO 高電平時(shí)寫入的數(shù)據(jù)是地址,低電平時(shí)寫入的數(shù)據(jù)是顯示數(shù)據(jù)。
WRR EQU P3.2 ;WR 當(dāng)P1口的數(shù)據(jù)有效時(shí),WR產(chǎn)生一個(gè)下降沿,寫一個(gè)數(shù)據(jù)完成。
D12 EQU P3.1 ;D12 顯示RAW分為二頁,D12高電平時(shí)顯示第一頁,D12為低電平時(shí)顯示第二頁。
WRDATA EQU 28H ;數(shù)據(jù)變量
ADDRL EQU 30H ;地址低位變量
ADDRH EQU 31H ;地址高位變量..................以一個(gè)字節(jié)為單元(8/3個(gè)像素)
ADDBL EQU 32H ;地址低位
ADDBH EQU 33H ;地址高位 .....................以三個(gè)字節(jié)為單元(8個(gè)像素)
TEMP1 EQU 3AH ;
TEMP2 EQU 39H ;通用變量
TEMP3 EQU 38H ;
TEMP4 EQU 3BH ;
TEMP5 EQU 3CH
TEMP6 EQU 3DH
CODEN EQU 3EH ; 中文字模位置代碼
FCOLOR EQU 40H ; 前景顏色
BCOLOR EQU 41H ; 背景顏色
MAIN:
NOP
NOP
MAIN1:
NOP
LCALL CLREA ; 調(diào)用清屏子程序,
NOP
SETB D12
LCALL DISFORM ; 在第一區(qū)顯示表格
NOP
LCALL CONT ; 在第二區(qū)顯示文字說明和彩條
NOP
NOP
PLAY:
NOP
LJMP PLAY
;;==================================================================
; 調(diào)用前先預(yù)置CODEN,ADDBH,ADDBL,FCOLOR,BCOLOR
WRCHINA: ;寫一個(gè)16*16的中文到LCD子程序
MOV TEMP5,ADDBL
MOV TEMP6,ADDBH
MOV DPTR,#CHINTAB
MOV A,CODEN ;
MOV B,#32 ;通過中文代碼算出每個(gè)中文字模的首地址=CHINTAB+32*CODEN
MUL AB ;因?yàn)橐粋€(gè)16*16的中文占用32個(gè)字節(jié)
ADD A,DPL ;
MOV DPL,A ;
MOV A,B ;
ADDC A,DPH ;
MOV DPH,A ;
MOV R5,#16
LCALL FORADDR
LCALL SETADDR
WRCHIN1:
CLR A
MOVC A,@A+DPTR
MOV WRDATA,A
LCALL SETCOLOR ;調(diào)用顏色設(shè)置子程序把8個(gè)像素寫入LCD
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV WRDATA,A
LCALL SETCOLOR ;調(diào)用顏色設(shè)置子程序把8個(gè)像素寫入LCD
MOV A,#80 ;
ADD A,ADDBL ;
MOV ADDBL,A ;
CLR A ;用ADDBH,ADDBL=ADDBH,ADDL+40實(shí)現(xiàn)換一行
ADDC A,ADDBH ;
MOV ADDBH,A ;
LCALL FORADDR ;
LCALL SETADDR ;
INC DPTR
DJNZ R5,WRCHIN1 ;連續(xù)寫16行
INC CODEN
MOV A,#2
ADD A,TEMP5
MOV ADDBL,A
CLR A
ADDC A,TEMP6
MOV ADDBH,A
RET
;;==================================================================
;地址換算子程序
;
FORADDR:
MOV A,ADDBH
JB ACC.7,FORADDR1
FORADDR1: ;第一區(qū)的換算: ADDRH,ADDRL=ADDBH,ADDBL*3
MOV B,#3
MOV A,ADDBL
MUL AB
MOV ADDRL,A
MOV TEMP1,B
MOV B,#3
MOV A,ADDBH
MUL AB
ADD A,TEMP1
MOV ADDRH,A
RET
FORADDR2: ;第二區(qū)的換算: 先ADDBH的最高位置0,然后是ADDRH,ADDRL=ADDBH,ADDBL*3
CLR ACC.7 ;最后再把ADDRH的最高位置1。
MOV ADDBH,A
MOV B,#3
MOV A,ADDBL
MUL AB
MOV ADDRL,A
MOV TEMP1,B
MOV B,#3
MOV A,ADDBH
MUL AB
ADD A,TEMP1
SETB ACC.7
MOV ADDRH,A
RET
;;==============================================================================
;設(shè)置顏色子程序(同時(shí)把數(shù)據(jù)寫入LCD)
;入口: 變量BCOLOR 是背景顏色,F(xiàn)COLOR 是前景顏色,大小為00H~07H, 其中00H為黑色,F(xiàn)FH為白色,
; 04H為紅色, 02H為綠色,01H為藍(lán)色.........
;設(shè)置顏色,一個(gè)字節(jié)WRDATA(單色)擴(kuò)展到三個(gè)字節(jié)TEMP3,TEMP2,TEMP1(RGB 8色)
;實(shí)現(xiàn)的原理是檢查WEDATA的每一位,為0時(shí)用背景顏色填充,為1時(shí)用前景顏色填充。
SETCOLOR:
MOV R6,#8
SETSRT:
JB WRDATA.0,SETC1
MOV A,BCOLOR
LJMP SETC2
SETC1:
MOV A,FCOLOR
SETC2:
MOV R7,#3
LCALL LOOP
MOV A,WRDATA
RRC A
MOV WRDATA,A
DJNZ R6,SETSRT
MOV P1,TEMP3
CLR WRR
SETB WRR
MOV P1,TEMP2
CLR WRR
SETB WRR
MOV P1,TEMP1
CLR WRR
SETB WRR
RET
LOOP:
RRC A
MOV TEMP4,A
MOV A,TEMP3
RRC A
MOV TEMP3,A
MOV A,TEMP2
RRC A
MOV TEMP2,A
MOV A,TEMP1
RRC A
MOV TEMP1,A
MOV A,TEMP4
DJNZ R7,LOOP
RET
;==========================================================
;顯示文字說明和彩條子程序
CONT:
MOV ADDBL,#10H
MOV ADDBH,#02H
MOV FCOLOR,#1
MOV BCOLOR,#6
MOV CODEN,#0
LCALL WRCHINA24
LCALL WRCHINA24
LCALL WRCHINA24
LCALL WRCHINA24
LCALL WRCHINA24
LCALL WRCHINA24
LCALL WRCHINA24
MOV ADDBL,#0ABH
MOV ADDBH,#00CH
MOV FCOLOR,#0
MOV BCOLOR,#0FFH
MOV CODEN,#05
MOV R0,#13
CONT1:
LCALL WRCHINA
DJNZ R0,CONT1
MOV CODEN,#3
LCALL WRNUN
MOV CODEN,#2
LCALL WRNUN
MOV CODEN,#0
LCALL WRNUN
MOV CODEN,#13H
LCALL WRNUN
LCALL WRNUN
LCALL WRNUN
MOV CODEN,#0BH
LCALL WRNUN
MOV CODEN,#13H
LCALL WRNUN
MOV CODEN,#2
LCALL WRNUN
MOV CODEN,#4
LCALL WRNUN
MOV CODEN,#0
LCALL WRNUN
MOV ADDBL,#088H
MOV ADDBH,#013H
MOV CODEN,#18
MOV R0,#7
CONT2:
LCALL WRCHINA
DJNZ R0,CONT2
DEC ADDBL
MOV CODEN,#0CH
LCALL WRNUN
LCALL WRNUN
MOV CODEN,#25
LCALL WRCHINA
LCALL WRCHINA
LCALL WRCHINA
LCALL WRCHINA
LCALL DISCOLOR
RET
;;==================================================================
WRCHINA24: ;寫一個(gè)24*20的中文到LCD子程序
MOV DPTR,#CHIN24TAB
MOV A,CODEN
MOV B,#60
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV R5,#20
LCALL FORADDR
LCALL SETADDR
WRCHIN241:
CLR A
MOVC A,@A+DPTR
MOV WRDATA,A
LCALL SETCOLOR
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV WRDATA,A
LCALL SETCOLOR
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV WRDATA,A
LCALL SETCOLOR
MOV A,#240 ;
ADD A,ADDRL ;
MOV ADDRL,A ;也可以像16*16的中文子程序那樣用ADDBH,ADDBL+40換行
CLR A ;這里用ADDRH,ADDRL+120換行,作用是一樣的
ADDC A,ADDRH ;
MOV ADDRH,A ;
LCALL SETADDR ;
INC DPTR
DJNZ R5,WRCHIN241
INC CODEN
MOV A,#3
ADD A,ADDBL
MOV ADDBL,A
CLR A
ADDC A,ADDBH
MOV ADDBH,A
RET
;;==========================================================================
WRNUN: ;寫一個(gè)8*8的數(shù)字或字母到LCD子程序
MOV DPTR,#NUNTAB
MOV A,CODEN
MOV B,#16
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV R5,#16
LCALL FORADDR
LCALL SETADDR
WRNUN1:
CLR A
MOVC A,@A+DPTR
MOV WRDATA,A
LCALL SETCOLOR
MOV A,#240
ADD A,ADDRL
MOV ADDRL,A
CLR A
ADDC A,ADDRH
MOV ADDRH,A
LCALL SETADDR
INC DPTR
DJNZ R5,WRNUN1
INC CODEN
MOV A,#1
ADD A,ADDBL
MOV ADDBL,A
CLR A
ADDC A,ADDBH
MOV ADDBH,A
RET
;;======================================================================================
DISFORM: ;顯示演示表格子程序
MOV R5,#160
MOV ADDRL,#093H
MOV ADDRH,#25H
DISCUL1:
LCALL SETADDR
MOV P1,#01H
CLR WRR
SETB WRR
MOV A,#240
ADD A,ADDRL
MOV ADDRL,A
CLR A
ADDC A,ADDRH
MOV ADDRH,A
DJNZ R5,DISCUL1
MOV R5,#95
MOV ADDRL,#093H
MOV ADDRH,#0BBH
LCALL SETADDR
DISCUL2:
MOV P1,#0
CLR WRR
SETB WRR
DJNZ R5,DISCUL2
MOV ADDRL,#078H
MOV ADDRH,#09FH
MOV R4,#30
LCALL DISRED
MOV ADDRL,#0C7H
MOV ADDRH,#08CH
MOV R4,#50
LCALL DISRED
MOV ADDRL,#0D6H
MOV ADDRH,#08CH
MOV R4,#50
LCALL DISRED
MOV ADDRL,#085H
MOV ADDRH,#083H
MOV R4,#60
LCALL DISRED
MOV ADDRL,#044H
MOV ADDRH,#088H
MOV R4,#55
LCALL DISRED
MOV ADDRL,#023H
MOV ADDRH,#08BH
MOV R4,#52
LCALL DISRED
MOV ADDRL,#008H
MOV ADDRH,#088H ;145
MOV R4,#25
LCALL DISCCO
MOV ADDRL,#057H
MOV ADDRH,#075H ;125
MOV R4,#25
LCALL DISCCO
MOV ADDRL,#016H
MOV ADDRH,#07AH ;130
MOV R4,#25
LCALL DISCCO
MOV ADDRL,#0B5H ;105
MOV ADDRH,#062H
MOV R4,#35
LCALL DISCCO
MOV ADDRL,#064H
MOV ADDRH,#059H ;95
MOV R4,#50
LCALL DISCCO
MOV ADDRL,#0E3H
MOV ADDRH,#052H ;88
MOV R4,#60
LCALL DISCCO
MOV ADDRL,#048H
MOV ADDRH,#075H
MOV R4,#20
LCALL DISBLU
MOV ADDRL,#097H
MOV ADDRH,#062H
MOV R4,#20
LCALL DISBLU
MOV ADDRL,#0F6H
MOV ADDRH,#05DH
MOV R4,#30
LCALL DISBLU
MOV ADDRL,#0E5H
MOV ADDRH,#041H
MOV R4,#35
LCALL DISBLU
MOV ADDRL,#0E4H
MOV ADDRH,#033H
MOV R4,#40
LCALL DISBLU
MOV ADDRL,#003H
MOV ADDRH,#024H
MOV R4,#50
LCALL DISBLU
MOV FCOLOR,#4
MOV ADDBL,#096H
MOV ADDBH,#01
MOV CODEN,#04
LCALL WRCHINA
MOV FCOLOR,#0
MOV BCOLOR,#3
MOV CODEN,#10H
LCALL WRNUN
MOV CODEN,#02
LCALL WRCHINA
LCALL WRCHINA
MOV A,#4
ADD A,ADDBL
MOV ADDBL,A
MOV FCOLOR,#6
MOV CODEN,#04
LCALL WRCHINA
MOV FCOLOR,#0
MOV CODEN,#11H
LCALL WRNUN
MOV CODEN,#02
LCALL WRCHINA
LCALL WRCHINA
MOV A,#4
ADD A,ADDBL
MOV ADDBL,A
MOV FCOLOR,#1
MOV CODEN,#04
LCALL WRCHINA
MOV FCOLOR,#0
MOV CODEN,#12H
LCALL WRNUN
MOV CODEN,#02
LCALL WRCHINA
LCALL WRCHINA
MOV CODEN,#0
MOV ADDBL,#027H
MOV ADDBH,#03FH
LCALL WRCHINA
LCALL WRCHINA
MOV CODEN,#0AH
LCALL WRNUN
MOV CODEN,#0
LCALL WRCHINA
LCALL WRCHINA
MOV CODEN,#0BH
LCALL WRNUN
MOV CODEN,#0
LCALL WRCHINA
LCALL WRCHINA
MOV CODEN,#0CH
LCALL WRNUN
MOV CODEN,#0
LCALL WRCHINA
LCALL WRCHINA
MOV CODEN,#0DH
LCALL WRNUN
MOV CODEN,#0
LCALL WRCHINA
LCALL WRCHINA
MOV CODEN,#0EH
LCALL WRNUN
MOV CODEN,#0
LCALL WRCHINA
LCALL WRCHINA
MOV CODEN,#0FH
LCALL WRNUN
MOV ADDBL,#082H
MOV ADDBH,#0CH
MOV CODEN,#7
LCALL WRNUN
MOV CODEN,#0
LCALL WRNUN
MOV CODEN,#0
LCALL WRNUN
MOV CODEN,#6
LCALL DISPOP
MOV CODEN,#5
LCALL DISPOP
MOV CODEN,#4
LCALL DISPOP
MOV CODEN,#3
LCALL DISPOP
MOV CODEN,#2
LCALL DISPOP
MOV CODEN,#1
LCALL DISPOP
MOV CODEN,#0
LCALL DISPOP
RET
DISPOP:
MOV A,#3DH
ADD A,ADDBL
MOV ADDBL,A
MOV A,#6
ADDC A,ADDBH
MOV ADDBH,A
LCALL WRNUN
MOV CODEN,#0
LCALL WRNUN
MOV CODEN,#0
LCALL WRNUN
RET
DISBLU:
LCALL SETADDR
MOV R5,#3
DISBLU1:
MOV P1,#024H
CLR WRR
SETB WRR
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -