?? ht1621.txt
字號:
LCD 設定(命令模式字的低8位數據)
BIAS EQU 52H 1/3 偏壓4背極
RC256 EQU 30H 系統時鐘選用片
內RC振蕩器
SYSEN EQU 02H 打開系統時鐘
LCDON EQU 06H 打開偏壓發生器
SYSDIS EQU 00H 關閉系統時鐘和
偏壓發生器
X32K EQU 28H 系統時鐘選擇為
片外晶振
ToneOn EQU 12H 打開音頻輸出
ToneOff EQU 10H 關閉音頻輸出
Tone4k EQU 80H 音頻輸出頻率為
4K
Tone2k EQU 0C0H 音頻輸出頻率為2K
TIMEREN EQU 0CH 時基輸出使能
TIMERDIS EQU 08H 時基輸出禁能
CLRtime EQU 18H 清零進基發生器
WDTEN EQU 0EH 使能WDT溢出標志
輸出
WDTDIS EQU 0AH 禁止WDT溢出標志
輸出
CLRWDT EQU 1CH 清零WDT
IRQEN EQU 10H 使能IRQ輸出
IRQDIS EQU 00H 禁止IRQ輸出
FR1 EQU 40H 設置時基輸出
1HZ,WDT溢出時間4s
;HT1621B控制位(液晶模塊接口定義,用戶根據自已的需要更改)
CS BIT P0.1 HT1621B片選
WRITE BIT P0.3 HT1621B寫控制位
SDATA BIT P0.5 HT1621B數據線
;顯示緩沖區(用戶根據自已的需要更改變量的存儲地址)
DISBUFFER EQU 34H 顯示緩沖區地址34H--43H(16
字節)
;臨時變量定義(不會破壞這些資源,只是臨時占用,用戶不要自行修改)
lcdbitcnt EQU 03H 發送位計數器
lcdcommand EQU 02H 發送命令緩沖器
lcdadr EQU 01H lcd顯存指針
LCDBYTECNT EQU 04H 發送字節數記數器
;===============================================================================
====
; 向HT1621B發送命令和數據模塊
;軟件包面向用戶的界面程序:
; Send1621Com 發送命令子程序,命令ID為100+0型式 + 命令字
; Send1621ComB 發送命令子程序(B),命令ID為100+1型式 + 命令字
; HT1621DOWN 設置1621進行掉電工作方式
; INTI1621 初化1621,并打開LCD顯示,用戶可更改相應初化字,進行1621的不同設
置。
; BrushLcd 刷新LCD顯示,即將顯示緩沖區的16字節數據發送到1621,從SEG0
段開始。
; DISDPTR 將DPTR指向的程序存儲器的數據(連續16字節)發送到1621顯示。
;這此子程序都會自動保護所需的臨時單元,所以占用較多的堆棧,用戶要注意這一點。
;===============================================================================
====
;發送命令程序
;名稱: Send1621Com
;描述: 向HT1621B發送控制命令,命令內容在LCDCOMMAND中。
;所發的命令類型為ID=100+0+命令,占用堆棧。
Send1621Com:
PUSH ACC
PUSH LCDBITCNT
ACALL INTI 起動1621(即初
化)
MOV LCDBITCNT,#04h
MOV A,#80h 發送ID值100+0
ACALL sendb0
MOV A,LCDCOMMAND 取得命令字
ACALL send1621byte 發送到1621
SETB write
SETB cs
SETB sdata
POP LCDBITCNT
POP ACC
RET
;發送命令程序(B)
;名稱: Send1621ComB
;描述: 向HT1621B發送控制命令,命令內容在LCDCOMMAND中。
;所發的命令類型為ID=100+1+命令,占用堆棧。
Send1621ComB:
PUSH ACC
PUSH LCDBITCNT
ACALL INTI 起動1621(即初
化)
MOV LCDBITCNT,#04h
MOV A,#90h 發送ID值100+1
ACALL sendb0
MOV A,LCDCOMMAND
ACALL send1621byte
SETB write 將SPI接口均置為
高電平
SETB cs
SETB sdata
POP LCDBITCNT
POP ACC
RET
;HT1621B掉電模式
;使1621進行掉電模式,以降低功耗
HT1621DOWN:
PUSH LCDCOMMAND
MOV LCDCOMMAND,#SYSDIS 關閉系統振蕩器即進行掉電
方式
ACALL Send1621Com
POP LCDCOMMAND
RET
;1621設置
;描述:進行1621的基本設置,偏壓、背極、系統工作方式
;用戶添加初化內容或更改設置內容。
INTI1621:
PUSH LCDCOMMAND
MOV LCDCommand,#bias
ACALL Send1621Com 工作于1/3偏壓,
4背極
MOV LCDCommand,#X32K
ACALL Send1621Com 系統時鐘選擇為
外部時鐘
MOV LCDCommand,#wdtdis
ACALL Send1621Com 關閉看門狗
MOV LCDCommand,#timerdis
ACALL Send1621Com
MOV LCDCommand,#sysen 啟動1621系統振蕩器
ACALL Send1621Com
MOV LCDCommand,#LCDON 啟動1621顯示偏壓發生器,啟
動顯示
ACALL Send1621Com
POP LCDCOMMAND
RET
;刷新顯示子程序
;名稱:BrushLcd
;描述:把顯示緩沖區DISBUFFER共16個單元的內容送到1621中
BrushLcd:
PUSH LCDBYTECNT
PUSH LCDADR
MOV LCDBYTECNT,#16 發送16個數據
MOV LCDADR,#DISBUFFER 指向顯示緩沖區
DISPLAY0:
LCALL SEND1621DATA 調用發送數據子
程序,從SEG0段開始
POP LCDADR
POP LCDBYTECNT
RET
;函數名:DISDPTR
;功能: 把DPTR指向的程序存貯器的16個字節內容直接送到1621的顯示緩沖區內
;參數: DPTR-緩沖區指針
;返回值:無
DISDPTR:
PUSH 07H
PUSH 00H
PUSH 06H
PUSH ACC
MOV R7,#10H 設置各指針及變
量初值
MOV R0,# DISBUFFER 先把數據讀入顯
示緩沖區
MOV R6,#00
ICERRORCON:
MOV A,R6
MOVC A,@A+DPTR 讀取程序區的數據
MOV @R0,A 放入顯示緩沖區
INC R0
INC R6
DJNZ R7,ICERRORCON
ACALL BrushLcd 輸出顯示
POP ACC
POP 06H
POP 00H
POP 07H
RET
;*******************************************************************
; 子程序
;用啟盡量不要單獨的調用這此子程序
;***********************************************
;************************************************
;發送數據程序
;名稱: Send1621Data
;描述: 向HT1621B發送BYTECNT個數據(從SEG0開始發送)
; 數據在發送緩沖區中,緩沖區指針lcdadr.
;-----------------------------------------------
Send1621Data:
PUSH ACC
PUSH LCDBITCNT
PUSH LCDBYTECNT
PUSH LCDADR
ACALL INTI
MOV LCDBITCNT,#01H 發送寫1621RAM命
令
MOV A,#80H 發送1位數據
ACALL SENDB0
MOV A,#40H 1621RAM地址設置
為00H
ACALL SEND1621BYTE
MOV R1,LCDADR
SENDNEXT1:
MOV A,@R1 讀取數據
ACALL SEND1621BYTE 發送數據
INC R1
DJNZ LCDBYTECNT,SENDNEXT1
SETB WRITE
SETB CS
SETB SDATA
POP LCDADR
POP LCDBYTECNT
POP LCDBITCNT
POP ACC
RET
;************************************************
;1621初始化子程序
;即起動1621
;-----------------------------------------------
INTI:
CLR CS
SETB WRITE
NOP
CLR WRITE
NOP
RET
;******************************************************************
;發送字節數據子程序
;名稱: Send1621Byte
;描述: 向HT1621B發送一個字節數據,數據在A中
;-----------------------------------------------
Send1621Byte:
PUSH LCDBITCNT
MOV lcdbitcnt,#08h 發送8位數據位
ACALL SENDB0 調用發送數據位
子程序
POP LCDBITCNT
RET
;******************************************************************
;發送位數據子程序
;名稱: sendb0
;描述: 向HT1621B發送N位數據,數據在A中,N在LCDBITCNT中,從高位開始發送
;-----------------------------------------------
SENDB0:
PUSH ACC
PUSH PSW
PUSH LCDBITCNT
SENDB01:
RLC A
MOV SDATA,C 先發送高位數據
SETB WRITE 產生WR信號
NOP
NOP
CLR WRITE
NOP
NOP
DJNZ LCDBITCNT,SENDB01 未發送完,繼續
POP LCDBITCNT
POP PSW
POP ACC
RET
;========================================================
;表格區
;ZY886A型LCD數字顯示表(0-F),供用戶轉換使用。(以上程序不用此表)
LCDData:
DB 0EBH,60H,0C7H,0E5H,6CH,0ADH,0AFH,0E0H,0EFH,0EDH,0EEH,2FH,07H,67H,8FH,8EH
;===============================================================
;
;以上程序是HT1621的通用程序,對不同的LCD只是其字模不一樣而以
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -