?? test5.asm
字號:
;=====硬件連接參加如下=========================
CS1 EQU P1.0 ;
RES EQU P1.1 ;復位端,低電平觸發有效,正常時 高電平
A0 EQU P1.2 ;
RW EQU P1.3 ;
E_RD EQU P1.4 ;
Data_bus data P0 ;LCM Data bus
;----------------------------------------------
HZ_P data 51H ;頁地址
HZ_C data 52H ;行地址
HZ_H data 53H ;字高 16x16顯示的時候 =2
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:CALL LCM_INIT
CALL DELAY
LCALL clr_screen
SJMP $
;===LCM initalization 初始化=======
LCM_INIT:
LCALL DELAY
CLR RES ;initalization reset 復位
LCALL DELAY
LCALL DELAY
SETB RES
LCALL DELAY
MOV A,#0E2H ;initialize interal function
LCALL TCOM
LCALL DELAY
MOV A,#0A2H ;set LCD bias=1/9
LCALL TCOM
MOV A,#0C8H ;set SHL COM1 to COM64 =C0H,set SHL COM64 to COM1 =C8H 設置顯示方向
LCALL TCOM
MOV A,#0A0H ;ADC select SEG0 to SEG131 A1H 顯示圖像左右鏡像
LCALL TCOM
MOV A,#040H ;Initial Display Line
LCALL TCOM
MOV A,#02CH
LCALL TCOM
LCALL DELAY
MOV A,#02EH
LCALL TCOM
LCALL DELAY
MOV A,#02FH ;power control(VC,VR,VF=1,1,1)
LCALL TCOM
LCALL DELAY
;----------------------------
MOV A,#023H ;Regulator resistor select 對比度設置 020H~027H
LCALL TCOM
MOV A,#081H ;set reference voltage mode
LCALL TCOM
MOV A,#019H ;set reference voltage 亮度電壓調節 00H~03FH 先發指令 81H,后寫具體值
LCALL TCOM
;以上2條指令互相配合可以調節到合適得對比度
MOV A,#0A6H ;set reverse display OFF ,正 反顯示設置 A6 正顯示 A7反顯示
LCALL TCOM
MOV A,#0D2h ;driving mode set
LCALL TCOM
MOV A,#000H ;MODE 1
LCALL TCOM
MOV A,#0AFH ;turns the display ON
LCALL TCOM
ret
;***********Initial over***********
;======亮度測試========
Light_test:
mov r7,#00H
LT_LOOP:
call delay_ns
MOV A,#10000001B ;set column address MSB ;列地址 高4位
CALL TCOM
mov a,r7
call tcom ;change亮度
cjne r7,#03Fh,LTA
mov r7,#00h
jmp lt_loop
LTA:
inc R7
jmp LT_LOOP
;==========清屏==========================================
;實際上就是RAM中全寫00H
;========================================================
clr_screen:
mov r2,#10110000b
clr_2:
MOV A,R2 ;set page address
LCALL TCOM
MOV A,#010H ;set column address MSB ;列地址
LCALL TCOM
MOV A,#00H ;set column address LSB ;列地址
LCALL TCOM
MOV R1,#10H ;set (8*8)*16characters
clr1:
MOV R0,#08H
clr0:
mov a,#0f0h
call tdata
DJNZ R0,clr0
DJNZ R1,clr1
INC R2
LCALL DELAY
CJNE R2,#10110011,clr_2
ret
;----------------CLR Screen Over-------------------------
;====忙查尋==============================================
;在高速中,使用忙查詢會穩定顯示效果
;========================================================
busy_check:
mov data_bus,#0FFH
mov a,data_bus
SETB CS1
CLR CS1 ;cs1=0
CLR A0 ;a0=0
setb RW ;RW=1
clr e_rd ;RD=0
nop
nop
mov a,data_bus
setb e_rd
nop
nop
setb cs1 ;
;jmp busy_check
ret
;------------------Over-------------------------------------------
;=====送命令,CS1=0 A0=0 RD=1,RW 0-->1
TCOM:
SETB RES
SETB CS1
setb RW
setb E_RD
CLR A0 ;A0=0
nop
nop
CLR CS1 ;CS1=0
nop
nop
mov data_bus,a ;DATA
nop
nop
clr rw ;RW 0-->1
nop
nop
setb rw
setb cs1
SETB A0
setb E_RD
SETB RES
ret
;=======送顯示數據======= A0=1 CS1=0 RD=1 RW 0-->1
TDATA:
SETB RES
SETB CS1
SETB A0
SETB RW
CLR CS1
SETB E_RD
TRANSMIT:
MOV DATA_bus,A
SETB RW
NOP
NOP
NOP
CLR RW
nop
nop
SETB CS1
SETB E_RD
SETB RW
SETB A0
SETB RES
RET
;===延時子程序=================================
DELAY: ;time = 40Hx(41Hx2+1+2)us CY=12MHZ
MOV 40H,#0100 ;10.05ms ;32h
DELAY1:
MOV 41H,#051
DELAY2:
DJNZ 41H,DELAY2 ;192us
DJNZ 40H,DELAY1
RET
Delay_ns: ;100ms
mov R6,#200
dns1:
call delay
djnz r6, dns1
ret
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -