
投訴熱線:13148701893
聯(lián)系人:鄧小姐
傳真:0755-27315661
0760-85884496
座機(jī):0755-29769890-0
0760-85884486
辦公地址:深圳市寶安區(qū)福永塘尾富華工業(yè)區(qū)11棟3樓
工廠地址:廣東省中山市三鄉(xiāng)鎮(zhèn)萬里路1號平鋪工業(yè)區(qū)B棟三樓
段碼LCD液晶屏參考程序
來源:lcd液晶模塊,lcd液晶屏定制,lcm液晶模組廠家 發(fā)布時(shí)間:2017-12-04 點(diǎn)擊量:7257
段碼液晶參考程序
;程序清單
;*********************************************************************************
;文件名:CAT888.asm
;項(xiàng)目: IC卡水表LCD顯示模塊演示程序(1.1版)
;描述: 啟動(dòng)程序即進(jìn)入正常顯示狀態(tài)(循環(huán)顯示一系列數(shù)字0~F),并通過KEY按鍵進(jìn)入全顯示狀態(tài)
; (測功耗)、掉電狀態(tài)(測功耗)及關(guān)斷LCM電源(GND端),依此循環(huán)。
;最后更新日期:2017/12/04
;*********************************************************************************
;特殊功能寄存器SFR和位地址定義
AUXR1 DATA 0A2H ;輔助功能寄存器,不可位尋址
DIVM DATA 95H ;MCU時(shí)鐘除數(shù)控制寄存器,
P0M1 DATA 84H ;0口工作模式選擇寄存器1
P0M2 DATA 85H ;0口工作模式選擇寄存器1
P1M1 DATA 91H
P1M2 DATA 92H
PT0AD DATA 0F6H ;0口數(shù)字輸入功能禁止寄存器
LED1 BIT P0.0 ;狀態(tài)燈定義
LED2 BIT P1.7 ;正常顯示狀態(tài)時(shí)LED1點(diǎn)亮,全顯示狀態(tài)時(shí)
LED3 BIT P1.6 ;LED2點(diǎn)亮,掉電狀態(tài)時(shí)LED3點(diǎn)亮,關(guān)斷LCM電
LED4 BIT P1.4 ;源狀態(tài)時(shí)LED4點(diǎn)亮。
LCMC BIT P0.7 ;LCM的GND控制輸出端,實(shí)現(xiàn)LCM的電源控制
KEY BIT P1.1 ;KEY的IO定義
keyin BIT 10H ;定義有鍵盤輸出標(biāo)志位
;定義顯示數(shù)據(jù)計(jì)數(shù)變量
DCONT DATA 50H ;用于顯示位的計(jì)數(shù)
;狀態(tài)標(biāo)志位定義
FLAGS1 DATA 2EH ;狀態(tài)標(biāo)志寄存器1
EMI BIT FLAGS1.0;電磁干擾標(biāo)志
PASS BIT FLAGS1.2;水閥打開/關(guān)閉標(biāo)志位
OUT BIT FLAGS1.3;IC卡退出標(biāo)志位(退卡后M3才顯示)
SALEWATR BIT FLAGS1.4;剩余金額不足標(biāo)志位(顯示'請購水')
POWERDOWN BIT FLAGS1.5;電池電壓不足標(biāo)志位
CUR BIT FLAGS1.6;本次購水金額/剩余金額標(biāo)志位
XPLAN BIT FLAGS1.7;超計(jì)劃標(biāo)志位
;***********************************************************************
; 程序開始
;***********************************************************************
ORG 0000H
AJMP RESET
ORG 0080H
RESET:
;安全設(shè)置
MOV DIVM,#1 ;CPU工作頻率降至正常時(shí)的1/4
MOV SP,#59H ;設(shè)堆棧指針
MOV TMOD,#01H ;使能定時(shí)器0
;顯示數(shù)據(jù)初化
MOV DCONT,#0
MOV FLAGS1,#00H
MAIN:
;LCD工作方式設(shè)定
CLR LCMC ;打開LCM電源
MOV P1M1,#00H ;將P1.7,P1.6,P1.4置為上拉輸出
MOV P1M2,#0D0H
MOV P0M1,#00H ;將P0.7置為上拉輸出
MOV P0M2,#01H
ACALL INTI1621
MOV LCDCOMMAND,#Tone4k ;設(shè)置音頻輸出頻率為4KHZ
ACALL Send1621Com
;進(jìn)入正常顯示狀態(tài)
;正常顯示情況下,不發(fā)送數(shù)據(jù)時(shí),把SPI口均置為高
SETB LED1 ;點(diǎn)亮LED1
CLR LED2
CLR LED3
CLR LED4
ACALL RUNOK
;進(jìn)入全顯示狀態(tài)
;LCD各段均顯示,然后SPI口設(shè)為高阻態(tài),
CLR LED1
SETB LED2
ACALL RUNALL
;進(jìn)入掉電狀態(tài)
;掉電狀態(tài)是把HT1621設(shè)置為掉電方式,以降低功耗
CLR LED2
SETB LED3
ACALL RUNDOWN
;進(jìn)入關(guān)斷電源狀態(tài)
;關(guān)斷HT1621電源,以降低功耗
CLR LED3
SETB LED4
ACALL RUNNOP
SJMP MAIN
;RUNOK
;從0到f循環(huán)顯示LCD數(shù)位(數(shù)字右移)
;顯示1秒后,所有數(shù)字均加1(即緩沖區(qū)加11H)
RUNOK: ;打開各標(biāo)志符號
SETB EMI ;電磁干擾標(biāo)志,顯示
SETB PASS ;水閥打開/關(guān)閉標(biāo)志位,顯示開
SETB OUT ;IC卡退出標(biāo)志位(退卡后M3才顯示),顯示退卡
SETB SALEWATR ;顯示'請購水'
SETB POWERDOWN ;電池電壓不足標(biāo)志位,顯示
SETB CUR ;本次購水金額/剩余金額標(biāo)志位,顯示本次金額
SETB XPLAN ;超計(jì)劃標(biāo)志位,顯示
CLR keyin ;清除keyin標(biāo)志位
ACALL LOADDAT ;裝載數(shù)據(jù)
CLR C
MOV A,#9
SUBB A,DCONT ;判斷DCONT是否大于9,大于9則打開蜂鳴器
JNC RUNOK_L1
MOV LCDCOMMAND,#ToneOn
ACALL Send1621Com
RUNOK_L1:
ACALL BrushLcd
ACALL DELAY_1S
MOV LCDCOMMAND,#ToneOff ;關(guān)閉蜂鳴器
ACALL Send1621Com
ACALL DELAY_1S ;延時(shí)并接收按鍵
ACALL DELAY_1S
ACALL DELAY_1S
INC DCONT ;計(jì)數(shù)器加1
CLR C
MOV A,#0FH ;若DCONT的值大于0FH,則復(fù)位為0
SUBB A,DCONT
JNC RUNOK_L2
MOV DCONT,#0
ACALL INTI1621 ;重新設(shè)置1621
MOV LCDCOMMAND,#Tone4k ;設(shè)置音頻輸出頻率為4KHZ
ACALL Send1621Com
RUNOK_L2:
JNB keyin,RUNOK ;判斷是否有按鍵,有則退出正常顯示方式
RET
;數(shù)據(jù)裝載程序
;將計(jì)數(shù)數(shù)據(jù)進(jìn)行字模轉(zhuǎn)換后放入顯示緩沖區(qū),包括狀態(tài)字段。
LOADDAT:
MOV R0,#DISBUFFER ;指定顯示地址為SEG0開始
MOV R1,DCONT
MOV R7,#10 ;寫入12個(gè)數(shù)據(jù)
LOAD_L1: ;將數(shù)據(jù)填充顯示緩沖區(qū)
MOV A,R1
MOV DPTR,#LCDData
MOVC A,@A+DPTR ;字模轉(zhuǎn)換
MOV @R0,A
INC R0 ;緩沖區(qū)的下一個(gè)地址
DJNZ R7,LOAD_L1
JNB EMI,HOLD0 ;EMI=1時(shí),
ORL DISBUFFER,#10H ;顯示電磁干擾信號
HOLD0:
JNB PASS,HOLD1
ORL DISBUFFER+1,#10H ;PASS=1時(shí),顯示'開'
SJMP HOLD2
HOLD1:
ORL DISBUFFER+2,#10H ;否則顯示'關(guān)'
HOLD2:
JNB OUT,HOLD3 ;OUT=1時(shí)
ORL DISBUFFER+3,#10H ;顯示'退卡'
SJMP HOLD4
HOLD3:
ORL DISBUFFER+6,#10H ;否則顯示'M3'
HOLD4:
JNB SALEWATR,HOLD5
ORL DISBUFFER+4,#10H ;顯示'請購水'
HOLD5:
JNB XPLAN,HOLD6
ORL DISBUFFER+5,#10H ;'超計(jì)劃'
HOLD6:
JNB POWERDOWN,HOLD7
ORL DISBUFFER+8,#10H ;電池缺電符號
HOLD7:
ORL DISBUFFER+9,#10H ;單位'元'
JNB CUR,HOLD8
MOV DISBUFFER+10,#05H ;'本次金額'
RET
HOLD8:
MOV DISBUFFER+10,#03H ;'剩余金額'
RET
;RUNALL
;全顯示輸出,把SPI接口置為高阻態(tài),以便測量LCM功耗
RUNALL:
MOV R7,#12
MOV R0,#DISBUFFER
RUNALL_L1:
MOV @R0,#0FFH ;裝入數(shù)據(jù)0FFH
INC R0
DJNZ R7,RUNALL_L1
ACALL BrushLcd ;刷新LCD顯示
ORL P0M1,#2AH ;設(shè)置IO口為高阻態(tài)
ANL P0M2,#0D5H
MOV PT0AD,#2AH
RUNALL_L2: ;等待按鍵
JB KEY,$
MOV R7,#0FFH
DJNZ R7,$
JB KEY,RUNALL_L2
JNB KEY,$
ANL P0M1,#0D5H ;恢復(fù)IO口
MOV PT0AD,#00H
RET
;RUNDOWN
;掉電方式,把SPI接口置為高阻態(tài),以便測量LCM功耗
RUNDOWN:
ACALL HT1621DOWN ;進(jìn)入掉電狀態(tài)
ORL P0M1,#2AH ;IO口置為高阻態(tài)
ANL P0M2,#0D5H
MOV PT0AD,#2AH
RUNDOWN_L1:
JB KEY,$ ;等待按鍵
MOV R7,#0FFH ;去抖動(dòng)
DJNZ R7,$
JB KEY,RUNDOWN_L1
JNB KEY,$ ;等待按鍵放放開
RET
;RUNNOP
;關(guān)斷LCD電源,把SPI接口置為高阻態(tài)。
RUNNOP:
SETB LCMC ;關(guān)斷LCM電源
RUNNOP_L1: ;等待按鍵操作
JB KEY,$
MOV R7,#0FFH
DJNZ R7,$
JB KEY,RUNNOP_L1
JNB KEY,$
ANL P0M1,#0D5H ;恢復(fù)IO口設(shè)置
MOV PT0AD,#00H
CLR LCMC ;打開LCM電源
RET
;延時(shí)1S子程序
; 在延時(shí)過程序可以判斷有無按鍵,有按鍵時(shí)置位keyin位,無按
;鍵時(shí)不對keyin操作。
DELAY_1S:
SETB TR0 ;啟動(dòng)定時(shí)器
MOV R0,#2
BACK:
MOV TL0,#0B0H ;置初值
MOV TH0,#3CH
DL:
JB KEY,DL_1
MOV R7,#0FFH ;有按鍵,進(jìn)行去抖動(dòng)處理
DJNZ R7,$
JB KEY,DL_1
SETB keyin ;是按鍵,置位keyin
DL_1:
JNB TF0,DL
CLR TF0
DJNZ R0,BACK ;等待定時(shí)時(shí)間到
JNB KEY,$ ;等待按鍵放開
RET
;包含1621操作軟件包
$INCLUDE(LCD1621.INC) ;包含頭文件,頭文件內(nèi)已定義SPI,顯示緩沖區(qū),
;及各操作變量,ZY886A型LCD數(shù)字顯示表等
相關(guān)產(chǎn)品
熱點(diǎn)資訊
- 廣州lcd液晶模組生產(chǎn)廠家2021-08-23
- 佛山lcd液晶顯示屏加工2021-08-23
- 上海12864中文字庫液晶價(jià)格2021-08-22
- 湖南LCM中文字庫液晶批發(fā)2021-08-22
- 湖北LCD液晶屏加工價(jià)格2021-08-21
- 惠州LCD液晶屏加工生產(chǎn)廠家2021-08-21
- 深圳lcd液晶顯示屏加工2021-08-20
- 杭州lcd液晶模組價(jià)格2021-08-20