|
C81D6O6XU5IZW0{F[1H7ENM.png (38.24 KB, 下載次數(shù): 82)
下載附件
2018-5-17 17:23 上傳
G0HLZD)TZ3NN%7QK%FZ]@VS.png (40.36 KB, 下載次數(shù): 75)
下載附件
總顯示為0
2018-5-17 17:21 上傳
LED1 EQU 30H ;初始化定義 LED2 EQU 31H LED3 EQU 32H ;存放三個(gè)數(shù)碼管的段碼 ADC EQU 35H ;存放轉(zhuǎn)換后的數(shù)據(jù) ST BIT P3.2 OE BIT P3.0 EOC BIT P3.1 ;定義ADC080... LED1 EQU 30H ;初始化定義
LED2 EQU 31H
LED3 EQU 32H ;存放三個(gè)數(shù)碼管的段碼
ADC EQU 35H ;存放轉(zhuǎn)換后的數(shù)據(jù)
ST BIT P3.2
OE BIT P3.0
EOC BIT P3.1 ;定義ADC0809的功能控制引腳
ORG 0000H
LJMP MAIN ;跳轉(zhuǎn)到主程序執(zhí)行
ORG 0030H
MAIN: MOV LED1,#00H
MOV LED2,#00H
MOV LED3,#00H ;寄存器初始化
CLR P3.4
SETB P3.5
CLR P3.6 ;選擇ADC0809的通道2
WAIT: CLR ST
SETB ST
CLR ST ;在脈沖下降沿啟動(dòng)轉(zhuǎn)換
JNB EOC,$ ;等待轉(zhuǎn)換結(jié)束
SETB OE ;允許輸出信號(hào)
MOV ADC,P1 ;暫存A/D轉(zhuǎn)換結(jié)果
CLR OE ;關(guān)閉輸出
MOV A,ADC ;將轉(zhuǎn)換結(jié)果放入A中,準(zhǔn)備個(gè)位數(shù)據(jù)轉(zhuǎn)換
MOV B,#50 ;變換個(gè)位調(diào)整值50送B
DIV AB
MOV LED1,A ;將變換后的個(gè)位值送顯示緩沖區(qū)LED1
MOV A,B ;將變換結(jié)果的余數(shù)放入A中,準(zhǔn)備十分位變換
MOV B,#5 ;變換十分位調(diào)整值5送B
DIV AB
MOV LED2,A ;將變換后的十分位值送LED2
MOV LED3,B ;最后的余數(shù)作百分位值送LED3
LCALL DISP ;調(diào)用顯示程序
AJMP WAIT
DISP:MOV R1,#LED1 ; 顯示子程序
CJNE @R1,#5,GO ;@R1=5V?是往下執(zhí)行,否,則到GO
MOV LED2,#0H ;是5V,即最高值,將小數(shù)的十分位清零
MOV LED3,#0H ;將小數(shù)的百分位清零
GO:MOV R2,#3 ;顯示位數(shù)賦初值,用到3位數(shù)碼管
MOV R3,#0FDH ;掃描初值送R3
DISP1:MOV P2,#0FFH ;關(guān)閉顯示,目的防止亂碼
MOV A,@R1 ;顯示值送A
MOV DPTR,#TAB ;送表首地址給DPTR
MOVC A,@A+DPTR ;查表取段碼
CJNE R2,#3,GO1 ;判斷是否個(gè)位數(shù)碼管?否則跳到GO1
ORL A,#80H ;將整數(shù)的數(shù)碼管顯示小數(shù)點(diǎn)
GO1:MOV P0,A ;送段碼給P0口
MOV A,R3
MOV P2,A ;送位碼給P2口
LCALL DELAY ;調(diào)用延時(shí)
MOV R3,A
RL A ;改變位碼
MOV R3,A
INC R1 ;改變段碼
DJNZ R2,DISP1 ;三位是否顯示完?否則調(diào)到DISP1
RET
DELAY:MOV R6,#10 ;延時(shí)5S程序:
D1:MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
TAB: DB 3FH, 06H,5BH,4FH,66H;共陰極數(shù)碼管顯示0-4 ;顯示數(shù)據(jù)表:
DB 6DH,7DH,07H,7FH,6FH;顯示5-9
END
|
|