?? lcdproc.h
字號:
;===============================================
; Function:LcdCmd(A)(B100-????,????-X)
;===============================================
LcdCmd:
MOV A_buff,A
BC SpiPort,STB
CALL LcdDelay
; BIT = 1
BC SpiPort,WR
CALL LcdDelay
BS SpiPort,DAT
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
; BIT = 0
BC SpiPort,WR
CALL LcdDelay
BC SpiPort,DAT
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
; BIT = 0
BC SpiPort,WR
CALL LcdDelay
BC SpiPort,DAT
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
; Send (9 Bits)
MOV A,@9
MOV N1,A
LcdCmdLoop:
BC SpiPort,WR
CALL LcdDelay
JBS A_buff,7
JMP LcdCmdDat0
BS SpiPort,DAT
JMP LcdCmdClk
LcdCmdDat0:
BC SpiPort,DAT
LcdCmdClk:
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
LcdCmdNext:
RLC A_buff
DJZ N1
JMP LcdCmdLoop
; STB = 1
BS SpiPort,STB
CALL LcdDelay
RET
;===============================================
; Function:LcdWrite(A=Addr,SpiData)(101-AAAAAA,DDDD)
;===============================================
LcdWrite:
; A_buff = Address
MOV A_buff,A
BC SpiPort,STB
CALL LcdDelay
; DAT = 1
BC SpiPort,WR
CALL LcdDelay
BS SpiPort,DAT
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
; DAT = 0
BC SpiPort,WR
CALL LcdDelay
BC SpiPort,DAT
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
; DAT = 1
BC SpiPort,WR
CALL LcdDelay
BS SpiPort,DAT
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
;--------------------------------------
; Send Address(A & 0x3f)
;--------------------------------------
MOV A,@6
MOV N1,A
LcdWrAddrLoop:
BC SpiPort,WR
CALL LcdDelay
JBS A_buff,5
JMP LcdWrAddrDat0
BS SpiPort,DAT
JMP LcdWrAddrClk
LcdWrAddrDat0:
BC SpiPort,DAT
LcdWrAddrClk:
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
RLC A_buff
DJZ N1
JMP LcdWrAddrLoop
;--------------------------------------
; Send Data (A & 0xf)
;--------------------------------------
MOV A,SpiData
MOV A_buff,A
MOV A,@0x04
MOV N1,A
LcdWrtDatLoop:
BC SpiPort,WR
CALL LcdDelay
JBS A_buff,0
JMP LcdWrtDatDat0
BS SpiPort,DAT
JMP LcdWrtDatClk
LcdWrtDatDat0:
BC SpiPort,DAT
LcdWrtDatClk:
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
RRC A_buff
DJZ N1
JMP LcdWrtDatLoop
; STB = 1
BS SpiPort,STB
CALL LcdDelay
RET
;===============================================
; Function:LcdRead(A = Address)
;===============================================
LcdRead:
; A_buff = Address
MOV A_buff,A
BC SpiPort,STB
CALL SpiDelay
; DAT = 1
BC SpiPort,WR
CALL LcdDelay
BS SpiPort,DAT
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
; DAT = 1
BC SpiPort,WR
CALL LcdDelay
BS SpiPort,DAT
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
; DAT = 0
BC SpiPort,WR
CALL LcdDelay
BC SpiPort,DAT
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
;--------------------------------------
; Send Address(A & 0x3f)
;--------------------------------------
MOV A,@6
MOV N1,A
LcdRdAddrLoop:
BC SpiPort,WR
CALL LcdDelay
JBS A_buff,5
JMP LcdRdAddrDat0
BS SpiPort,DAT
JMP LcdRdAddrClk
LcdRdAddrDat0:
BC SpiPort,DAT
LcdRdAddrClk:
CALL LcdDelay
BS SpiPort,WR
CALL LcdDelay
RLC A_buff
DJZ N1
JMP LcdRdAddrLoop
;--------------------------------------
; Read Data
;--------------------------------------
IOR SpiPort
OR A,@OSPI_DAT
IOW SpiPort
; SpiData = 0
CLR A_buff
MOV A,@4
MOV N1,A
LcdRdDatLoop:
BC SpiPort,RD
CALL LcdDelay
BS SpiPort,RD
CALL LcdDelay
RLC A_buff
BC A_buff,0
JBC SpiPort,DAT
BS A_buff,0
DJZ N1
JMP LcdRdDatLoop
;
IOR SpiPort
AND A,@ASPI_DAT
IOW SpiPort
; STB = 1
BS SpiPort,STB
CALL LcdDelay
MOV A,A_buff
RET
;===============================================
; Function:InitLcd()
;===============================================
LcdInit:
BS SpiPort,STB ;
BS SpiPort,RD ; 1418共用
BS SpiPort,WR ;
; IRQ DIS
MOV A,@0x80
CALL LcdCmd
; RC 256K
MOV A,@0x18
CALL LcdCmd
; 1/3 BIAS,4COMs
MOV A,@0x29
CALL LcdCmd
; TONE OFF
MOV A,@0x08
CALL LcdCmd
; WDT DIS
MOV A,@0x05
CALL LcdCmd
; TIMER DIS
MOV A,@0x04
CALL LcdCmd
; SYS EN
MOV A,@0x01
CALL LcdCmd
; LCD ON
MOV A,@0x03
CALL LcdCmd
NOP
RET
;===============================================
; Function:LcdClearAll()
;===============================================
LcdClearAll:
MOV A,@8
MOV N2,A
CLR SpiAddr
LcdClearByte:
;如果你要檢查屏,可以修改下列數(shù)
MOV A,@0x00
MOV SpiData,A
MOV A,SpiAddr
CALL LcdWrite
INC SpiAddr
DJZ N2
JMP LcdClearByte
RET
;===================================================
; Function:LcdShowFm(L1,L2,L3,L4) Like:"0 8 7 5"
;===================================================
LcdShowFm:
MOV A,L1
CALL TblDigitChar
OR A,@0x08
MOV SpiData,A
MOV A,@0
CALL LcdWrite
SWAP SpiData
MOV A,@1
CALL LcdWrite
MOV A,L2
CALL TblDigitChar
OR A,@0x08
MOV SpiData,A
MOV A,@2
CALL LcdWrite
SWAP SpiData
MOV A,@3
CALL LcdWrite
MOV A,L3
CALL TblDigitChar
JBC L4,0
OR A,@0x08
MOV SpiData,A
MOV A,@4
CALL LcdWrite
SWAP SpiData
MOV A,@5
CALL LcdWrite
RET
;===================================================
; Function:LcdCleanFm()
;===================================================
LcdCleanFm:
MOV A,@0x08
MOV SpiData,A
MOV A,@0
CALL LcdWrite
CLR SpiData
MOV A,@1
CALL LcdWrite
MOV A,@2
CALL LcdWrite
MOV A,@3
CALL LcdWrite
MOV A,@4
CALL LcdWrite
MOV A,@5
CALL LcdWrite
RET
;===================================================
; Function:LcdShowCh(A=(1-9))
;===================================================
LcdShowCh:
CALL TblDataIcon
MOV SpiData,A
MOV A,@6
CALL LcdWrite
SWAP SpiData
MOV A,@7
CALL LcdWrite
RET
;===================================================
; Function:LcdClearCh()
;===================================================
LcdClearCh:
CLR SpiData
MOV A,@6
CALL LcdWrite
MOV A,@7
CALL LcdWrite
RET
;==========================================
; END OF LCD
;==========================================
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -