欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 請(qǐng)問(wèn)為什么轉(zhuǎn)換結(jié)果看不到啊,還有LCD上顯示字符之后就消失了,只剩下數(shù)字 [打印本頁(yè)]

作者: WANGZR    時(shí)間: 2023-3-26 19:24
標(biāo)題: 請(qǐng)問(wèn)為什么轉(zhuǎn)換結(jié)果看不到啊,還有LCD上顯示字符之后就消失了,只剩下數(shù)字
仿真:

代碼:
RS BIT P2.0
RW BIT P2.1
LCDE BIT P2.2

NUM EQU 30H        ;存放AD輸出
TEMP EQU 20H        ;存放轉(zhuǎn)換后的數(shù)字
        
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP ITX0
ORG 0100H
MAIN:
        SETB IT0        ;INT0為邊沿出發(fā)觸發(fā)
        SETB EA                ;開(kāi)系統(tǒng)中斷
        SETB EX0        ;開(kāi)INT0中斷
        MOV DPTR,#7FF8H        ;送入口地址并指向IN0
        MOVX @DPTR,A        ;啟動(dòng)A/D轉(zhuǎn)換,A的值沒(méi)有意義
HERE:
        LCALL CONVERT
        AJMP HERE        ;等待中斷

//中斷程序
ITX0:
        CLR EX0
        PUSH PSW        ;保護(hù)現(xiàn)場(chǎng)
        MOVX A,@DPTR        ;讀取轉(zhuǎn)換后的數(shù)字量
        MOV R1,A
        MOV 30H,R1
;        MOV DPTR,#7FF8H        ;重新賦值
;LOOP:
;        MOVX @DPTR,A        ;啟動(dòng)AD轉(zhuǎn)換
;        POP PSW
        RETI        ;中斷返回

//數(shù)據(jù)轉(zhuǎn)換
CONVERT:
        MOV A,NUM
        MOV B,#51        ;AD轉(zhuǎn)換結(jié)果轉(zhuǎn)換成BCD碼
        DIV AB
        MOV 22H,B        ;小數(shù)位
        ADD A,#25
        MOV B,#10
        DIV AB
        MOV 20H,A
        MOV 21H,B
        LCALL SHOW_CHAR
        LCALL SHOW_NUM
        JMP $
//顯示字符串"Temp"
SHOW_CHAR:
        MOV R3,#4        ;字符串長(zhǎng)度
        MOV DPTR,#TAB
        CLR A
        LCALL INIT_LCDE
        MOV R0,#80H        ;定位到LCDE的第一行開(kāi)頭
        LCALL WRITE_CODE
        LCALL DELAY
L1:
        MOVC A,@A+DPTR
        MOV R1,A
        LCALL WRITE_DATA
        LCALL DELAY
        INC DPTR
        CLR A
        DJNZ R3,L1
        RET
//將轉(zhuǎn)換后的數(shù)據(jù)在LCD上顯示出來(lái)
SHOW_NUM:
        MOV R3,#3
        MOV DPTR,#NUMB        ;獲取轉(zhuǎn)換后的數(shù)據(jù)的首地址
        CLR A
        LCALL INIT_LCDE
        MOV R0,#85H        ;定位到字符串后面
        LCALL WRITE_CODE
        LCALL DELAY
L2:        
        MOV R1,#20H
        MOV A,@R1
        MOVC A,@A+DPTR
        MOV R1,A
        LCALL WRITE_DATA
        LCALL DELAY
        INC R1
        CLR A
        DJNZ R3,L2
;RECOVER:
;        SETB EX0        ;顯示完畢再次允許中斷
        RET
        

//雙重延遲函數(shù)
DELAY:
        MOV R6,#8
W2:        MOV R7,#248
W1:        DJNZ R7,W1
        DJNZ R6,W2
        RET
        
//指令函數(shù),在調(diào)用之前,先將指令碼放在R0中
WRITE_CODE:
        CLR LCDE        ;清除使能信號(hào)
        CLR RS
        CLR RW        ;RS=0,RW=0,寫(xiě)指令
        MOV P0,R0        ;送指令
        LCALL DELAY
        SETB LCDE        ;設(shè)置使能信號(hào)
        LCALL DELAY
        CLR LCDE
        RET

//數(shù)據(jù)函數(shù),調(diào)用之前,先將數(shù)據(jù)放在R1中
WRITE_DATA:
        CLR LCDE        ;清除使能信號(hào)
        SETB RS
        CLR RW        ;RS=1,RW=0
        MOV P0,R1        ;送數(shù)據(jù)
        LCALL DELAY
        SETB LCDE        ;設(shè)置使能信號(hào)
        LCALL DELAY
        CLR LCDE
        RET

//初始化函數(shù)
INIT_LCDE:
        CLR LCDE
        MOV R0,#0
        MOV R0,#38H        ;設(shè)置16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口
        LCALL WRITE_CODE
        MOV R0,#0
        MOV R0,#0EH        ;設(shè)置開(kāi)顯示,不顯示光標(biāo)
        LCALL WRITE_CODE
        MOV R0,#0
        MOV R0,#06H        ;設(shè)置寫(xiě)一個(gè)字符后地址指針加一
        LCALL WRITE_CODE
        MOV R0,#0
        MOV R0,#01H        ;顯示清零,數(shù)據(jù)指針清零
        LCALL WRITE_CODE
        RET

NUMB:        DB 30H,31H,31H,33H,34H,35H,36H,38H,39H        ;0123456789
TAB:        DB "Temp"

END


作者: WANGZR    時(shí)間: 2023-3-26 19:28
仿真是這樣的


作者: 人中狼    時(shí)間: 2023-3-27 08:13
LCD的初始化在主程序里做一次就可以了,不用每次寫(xiě)入顯示數(shù)據(jù)時(shí)都做




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1