久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
液晶顯示數(shù)值
[打印本頁]
作者:
daniu
時間:
2014-12-26 23:32
標題:
液晶顯示數(shù)值
LCD_X EQU 23H ;LCD 地址變量(決定文字的在LCD上的顯示位置)
;-----------------------------------------------------------
LCD_RS EQU P4.0 ;LCD 數(shù)據(jù)/命令選擇端
LCD_RW EQU P4.1 ;LCD 讀/寫選擇端
LCD_EN EQU P4.2 ;LCD 使能信號
LCD_BG EQU P4.3 ;LCD 背光控制端
LCD_SJ EQU P0 ;LCD 數(shù)據(jù)
;===========================================================
ORG 0000H
AJMP MAIN
ORG 0100H
;===========================================================
MAIN: MOV SP,#60H
CLR LCD_BG ;打開LCD背光
CALL SET_LCD ;初始化 LCD
CALL MENU_1 ;顯示菜單1
MOV 73H,#1 ;加載百位數(shù)據(jù)
MOV 72H,#2 ;加載十位數(shù)據(jù)
MOV 71H,#3 ;加載個位數(shù)據(jù)
MOV 70H,#4 ;加載小數(shù)位數(shù)據(jù)
ACALL CONV01
SJMP $
;=================================================
;對 LCD 做初始化設置
;=================================================
SET_LCD: MOV A,#34H ;34H--擴充指令操作
CALL WCOM ;寫入命令
MOV A,#30H ;30H--基本指令操作
CALL WCOM ;寫入命令
MOV A,#01H ;清除顯示
CALL WCOM ;寫入命令
MOV A,#06H ;指定在資料寫入或讀取時,光標的移動方向
CALL WCOM ;DDRAM 的地址計數(shù)器(AC)加1
MOV A,#0CH ;開顯示,關(guān)光標,不閃爍
CALL WCOM ;寫入命令
RET
;==========================================================
;73H-70H 分別存放百位、十位、個位、小數(shù)位的數(shù)據(jù)
;==========================================================
CONV01: MOV A,73H ;加載百位數(shù)據(jù)
MOV LCD_X,#1 ;設置顯示位置
CJNE A,#00H,CONV2
CONV1: MOV A,#" " ;百位數(shù)等于0顯示空格
MOV B,LCD_X
CALL LCDP2
MOV A,72H ;十位
CJNE A,#00H,CONV3
INC LCD_X ;調(diào)整顯示地址
MOV A,#" " ;十位數(shù)等于0顯示空格
MOV B,LCD_X
CALL LCDP2
JMP CONV4
CONV2: CALL SHOW_DIG2 ;顯示數(shù)據(jù)
CONV3: INC LCD_X ;調(diào)整顯示地址
MOV A,72H ;十位
CALL SHOW_DIG2
CONV4: INC LCD_X ;調(diào)整顯示地址
MOV A,71H ;個位
CALL SHOW_DIG2
INC LCD_X ;調(diào)整顯示地址
MOV A,#'.'
MOV B,LCD_X
CALL LCDP2
MOV A,70H ;加載小數(shù)位
INC LCD_X ;設置位置
CALL SHOW_DIG2 ;顯示數(shù)據(jù)
RET
;=============================================
;在LCD的第二行顯示數(shù)據(jù)字符
;A=ASCII 數(shù)據(jù), B=位置變量
;==============================================
LCDP2: PUSH ACC ;在LCD的第二行顯示字符
MOV A,B ;設置顯示地址
ADD A,#90H ;設置LCD的第二行地址
CALL WCOM ;寫入命令
POP ACC ;由堆棧取出A
CALL WDATA ;寫入數(shù)據(jù)
RET
;-------------------------------------------------------
SHOW_DIG2: ;在 LCD 的第二行顯示數(shù)字
ADD A,#30H ;加30H,轉(zhuǎn)換為ASCII碼
MOV B,LCD_X ;確定顯示位置
CALL LCDP2 ;送顯示
RET
;===============================================
;命令寫入子程序
;RS=L,RW=L,D0-D7=指令碼,E=高脈沖
;以8位控制方式將命令寫至LCD
;===============================================
WCOM: LCALL CHK_BUSY ;寫入指令
CLR LCD_RS
CLR LCD_RW
MOV LCD_SJ,A
SETB LCD_EN
NOP
NOP
CLR LCD_EN
RET
;===============================================
;數(shù)據(jù)寫入子程序
;RS=H,RW=L,D0-D7=指令碼,E=高脈沖
;以8位控制方式將數(shù)據(jù)寫至LCD
;===============================================
WDATA: MOV LCD_SJ,A ;寫入數(shù)據(jù)
SETB LCD_RS
CLR LCD_RW
SETB LCD_EN
CALL DE
CLR LCD_EN
CALL DE
RET
;===============================================
;測LCD忙碌子程序
;RS=0,RW=1,E=H,D0-D7=狀態(tài)字
;===============================================
CHK_BUSY: MOV LCD_SJ,#0FFH ;測忙碌子程序
CLR LCD_RS
SETB LCD_RW
SETB LCD_EN
JB LCD_SJ.7,$
CLR LCD_EN
RET
;==========================================================
;LCD 顯示第一頁菜單
;==========================================================
MENU_OK1: MOV DPTR,#M_OK11 ;指針指到顯示信息區(qū)
MOV A,#1 ;顯示在第一行
CALL LCD_PRINT
MOV DPTR,#M_OK12 ;指針指到顯示信息區(qū)
MOV A,#2 ;顯示在第二行
CALL LCD_PRINT
MOV DPTR,#M_OK13 ;指針指到顯示信息區(qū)
MOV A,#3 ;顯示在第二行
CALL LCD_PRINT
MOV DPTR,#M_OK14 ;指針指到顯示信息區(qū)
MOV A,#4 ;顯示在第二行
CALL LCD_PRINT
RET
M_OK11: DB"一氧化氮濃度: ",0
M_OK12: DB" PPM",0 ;超過120PPM報警
M_OK13: DB"油量: ",0
M_OK14: DB" 升 ",0
;==================================================
;在LCD的顯示字符串
;DPTR = 放字符串的地址
;==================================================
LCD_PRINT:CJNE A,#1,LINE2 ;判斷是否為第一行
LINE1: MOV A,#80H ;設置 LCD 的第一行地址
CALL WCOM ;寫入命令
CALL CLR_LINE ;清除該行字符數(shù)據(jù)
MOV A,#80H ;設置 LCD 的第一行地址
CALL WCOM ;寫入命令
JMP FILL
LINE2: CJNE A,#2,LINE3 ;判斷是否為第二行
MOV A,#90H ;設置 LCD 的第二行地址
CALL WCOM ;寫入命令
CALL CLR_LINE ;清除該行字符數(shù)據(jù)
MOV A,#90H ;設置 LCD 的第二行地址
CALL WCOM
JMP FILL
LINE3: CJNE A,#3,LINE4 ;判斷是否為第三行
MOV A,#88H ;設置 LCD 的第三行地址
CALL WCOM ;寫入命令
CALL CLR_LINE ;清除該行字符數(shù)據(jù)
MOV A,#88H ;設置 LCD 的第三行地址
CALL WCOM
JMP FILL
LINE4: MOV A,#98H ;設置 LCD 的第四行地址
CALL WCOM ;寫入命令
CALL CLR_LINE ;清除該行字符數(shù)據(jù)
MOV A,#98H ;設置 LCD 的第四行地址
CALL WCOM
FILL: CLR A ;填入字符
MOVC A,@A+DPTR ;由信息區(qū)取出字符
CJNE A,#0,LC1 ;判斷是否為結(jié)束碼
RET
LC1: CALL WDATA ;寫入數(shù)據(jù)
INC DPTR ;指針加1
JMP FILL ;繼續(xù)填入字符
;===============================================
;清除一行 LCD 的字符
;輸入一行空格,來替代原顯示字符
;===============================================
CLR_LINE: MOV R0,#24 ;清除該行 LCD 的字符
CL1: MOV A,#' '
CALL WDATA
DJNZ R0,CL1
RET
;====================================================
;實時溫度值與設定報警溫度值 TH、TL 比較子程序
;當實際溫度大于 TH 的設定值時,顯示“過高”并閃動顯示
;當實際溫度小于 TH 的設定值時,顯示“正常”
;當實際溫度小于 TL 的設定值時,顯示“過低”
;====================================================
TEMP_COMP:JNB FLAG2,L101 ;讀取水溫傳感器時用以下程序
MOV TEMP_TH,#SWGWSD
MOV TEMP_TL,#SWDWSD ;設置 LCD 的第一行地址
SJMP L102
L101: JNB FLAG3,L104 ;讀取油溫傳感器時用以下程序
MOV TEMP_TH,#YWGWSD
MOV TEMP_TL,#YWDWSD
L102: CLR C
MOV A,TEMP_ZH
CJNE A,TEMP_TH,T_COMP0;實時溫度與設定報警溫度比較,運行后當A<TEMP_TH則C=1
T_COMP0: JNC CHULI1 ;檢查溫度是否過高
MOV A,TEMP_ZH
SUBB A,TEMP_TL ;檢查溫度是否過低,減數(shù)>被減數(shù),則
JC CHULI2 ;借位標志位C=1,轉(zhuǎn)
MOV DPTR,#BJ50 ;顯示"正常"
CALL TEMP_BJ3
L106: JNB FLAG2,L103 ;讀取水溫傳感器時用以下程序
CLR FLAH1 ;清除水溫報警標志
SJMP L104
L103: JNB FLAG3,L104 ;讀取油溫傳感器時用以下程序
CLR FLAH2 ;清除油溫報警標志
L104: RET
CHULI1: MOV DPTR,#BJ60 ;顯示形成閃爍效果
CALL TEMP_BJ3
MOV R5,#10 ;延時10MS
LCALL DELAY1
MOV DPTR,#BJ30 ;顯示"過高"
CALL TEMP_BJ3
JNB FLAG2,L105
SETB FLAH1 ;設置水溫報警標志
SJMP L104
L105: JNB FLAG3,L104
SETB FLAH2 ;設置油溫報警標志
SJMP L104
CHULI2: MOV DPTR,#BJ40 ;顯示"過低"
CALL TEMP_BJ3
SJMP L106
;=========================================
;標記字符寫入子程序
;=========================================
TEMP_BJ3: JNB FLAG2,L001 ;讀取水溫傳感器時用以下程序
MOV A,#86H ;設置 LCD 的第一行地址
SJMP L002
L001: JNB FLAG3,L004 ;讀取油溫傳感器時用以下程序
MOV A,#8EH ;設置 LCD 的第三行地址
L002: CALL WCOM ;寫入指令
L003: CLR A ;填入字符
MOVC A,@A+DPTR ;由信息區(qū)取出字符
CJNE A,#0,L005 ;判斷是否為結(jié)束碼
L004: RET
L005: CALL WDATA ;寫入數(shù)據(jù)
INC DPTR ;指針加1
JMP L003 ;繼續(xù)填入字符
BJ30: DB "濃度超標請注意!",0 ;溫度過高顯示內(nèi)容
BJ40: DB " ",0 ;溫度正常顯示內(nèi)容
BJ50: DB "低油位,請加油!",0 ;溫度過低顯示內(nèi)容
BJ60: DB " ",0 ;清除以上標記
;**********************************************************
;延時子程序
;**********************************************************
DE: MOV R7,#229 ;延時 500 微秒,此條2個機器周期
DJNZ R7,$
RET ;此條2個機器周期,總延時(229*2+2+2)*(12/11.0592)≈500uS
END
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
麻豆成人在线视频
|
91黄在线观看
|
久久综合入口
|
午夜午夜精品一区二区三区文
|
欧美一区二区视频
|
日本中文字幕视频
|
羞羞免费网站
|
成人激情视频在线观看
|
一区中文字幕
|
曰韩三级
|
在线国产小视频
|
欧洲视频一区
|
综合九九
|
久久这里有精品
|
天天操精品视频
|
中文字幕亚洲区
|
大陆一级毛片免费视频观看
|
91一区二区三区在线观看
|
九九热精品视频
|
欧美激情视频一区二区三区在线播放
|
成人一区二区三区在线观看
|
国产精品91视频
|
黄网站涩免费蜜桃网站
|
羞羞的视频免费在线观看
|
久久久久久网站
|
天天色天天
|
天天爽夜夜爽精品视频婷婷
|
欧美精品video
|
久久精品国产99国产精品
|
精品视频一区二区三区在线观看
|
9久9久9久女女女九九九一九
|
亚洲欧美日韩在线不卡
|
日本黄色片免费在线观看
|
国产人成精品一区二区三
|
国产一级一级毛片
|
亚洲综合色视频在线观看
|
四虎永久在线精品免费一区二
|
亚洲狠狠
|
久久午夜影院
|
色在线免费
|
亚洲一区精品视频
|