ADC0832數(shù)字電壓表數(shù)碼管顯示(示例程序)
描述:
本文引用地址:http://www.ex-cimer.com/article/201611/317443.htmADC0832數(shù)字電壓表數(shù)碼管顯示
調(diào)節(jié)ADC0832旁邊的電位器,數(shù)碼管顯示ADC0832轉(zhuǎn)換值的大小
;*******************************************************************************
**********************************************************************************
AD_CLKEQUP1.0
AD_DATEQUP1.1
AD_CSEQUP3.4
DISSTARTEQU30H;顯示單元首地址
LED_DA
ORG0000H
JMPSTART
;--------------------------------------------------------
START:MOVSP,#60H
MOVA,#00H
MOV20H,A
MOVP0,#0FFH
MOVP2,#0FFH
START1:CALLAD_CONV
CALLAD_CHULI
CALLQUSHU
CALLADPLAY
JMPSTART1
;---------------------------------------------------------
AD_CONV:;ADC0832初始化
SETBAD_CS;一個轉(zhuǎn)換周期開始
CLRAD_CLK
CLRAD_CS;CS置0,片選有效
SETBAD_DAT;DI置1,起始位
SETBAD_CLK;第一個脈沖
CLRAD_DAT;在負(fù)跳變之前加一個DI反轉(zhuǎn)操作
CLRAD_CLK
SETBAD_DAT;DI置1,設(shè)為單通道
SETBAD_CLK;第二個脈沖
CLRAD_DAT;***
CLRAD_CLK;
CLRAD_DAT;DI置0,選擇通道0
SETBAD_CLK;第三個脈沖
SETBAD_DAT;***
CLRAD_CLK
NOP
SETBAD_CLK;第四個脈沖
MOVR1,#08H;計數(shù)器初值,讀取8位數(shù)據(jù),
AD_READ:CLRAD_CLK;下降沿
MOVC,AD_DAT;讀取DO端數(shù)據(jù)
RLCA;C移入A,高位在前
SETBAD_CLK;下一個脈沖
DJNZR1,AD_READ;沒讀完繼續(xù)
SETBAD_CS
MOV20H,A;轉(zhuǎn)換結(jié)果發(fā)給20H
RET
;------------------------------------------------------
AD_CHULI:
CLRC
MOVR5,#00H;十進(jìn)制轉(zhuǎn)換的低位寄存器
MOVR4,#00H;十進(jìn)制轉(zhuǎn)換的高位寄存器
MOVR3,#08H;十進(jìn)制調(diào)整的次數(shù)
MOVA,20H
AD_CHULI1:
RLCA
MOVR2,A
MOVA,R5
ADDCA,R5
DAA
MOVR5,A
MOVA,R4
ADDCA,R4
MOVR4,A
MOVA,R2
DJNZR3,AD_CHULI1
MOVA,R5
ADDA,R5
DAA
MOVR5,A
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
RET
;-------------------------------------------------
QUSHU:MOVA,R5
ANLA,#0FH
MOVDISSTART,A
MOVA,R5
ANLA,#0F0H
SWAPA
MOVDISSTART+1,A
MOVA,R4
ANLA,#0FH
MOVDISSTART+2,A
MOVA,R4
ANLA,#0F0H
MOVDISSTART+3,A
RET
;---------------------------------------------------
ADPLAY:PUSHPSW
CLRPSW.3
SETBPSW.4
MOVR0,#DISSTART;開始填充顯示單元
MOVR2,#03H;共計填充3位
DISP1:MOVA,@R0;獲得當(dāng)前位地址
MOVDPTR,#TAB_NU;獲得表頭
MOVCA,@A+DPTR;獲得編碼數(shù)據(jù)
MOV@R0,A;保存編碼數(shù)據(jù)
INCR0;指向下一個帶轉(zhuǎn)換數(shù)據(jù)
DJNZR2,DISP1;繼續(xù)轉(zhuǎn)換,直到完成
MOVR0,#DISSTART;獲得顯示單元首地址
MOVR1,#07FH;從第一個數(shù)碼管開始
MOVR2,#03H;共顯示3位數(shù)碼管
DISP2:MOVLED_DA
MOVP2,R1;開始顯示當(dāng)前位
MOVA,R1;準(zhǔn)備顯示下一位
RRA;
MOVR1,A;下一位
INCR0;取下一個單元地址
JNBACC.5,DISP3;第三位數(shù)碼管加小數(shù)點(diǎn)
JMPDISP4
DISP3:MOVA,@R0
ANLA,#7FH
MOV@R0,A
DISP4:LCALLDELAY5MS;延時2MS
DJNZR2,DISP2;重復(fù)顯示下一個
POPPSW
RET;顯示完成,返回
;---------------------------------------------------
DELAY5MS:
MOVR6,#10
DEL1:MOVR7,#100
DJNZR7,$
DJNZR6,DEL1
RET
;-------------------------------------------------
TAB_NU:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH
評論