|
基于51單片機(jī)數(shù)字電壓表仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
壓縮包里面有匯編語(yǔ)言和c語(yǔ)言編寫(xiě)的2個(gè)程序
單片機(jī)匯編語(yǔ)言源程序:
- OE BIT P3.0 ;ADC0808的OE端
- EOC BIT P3.1 ;ADC0808的EOC端
- CLOCK BIT P2.6
- ST BIT P3.2 ;ADC0808的START和ALE端
- LED_0 DATA 30H ;顯示緩沖區(qū)
- LED_1 DATA 31H
- LED_2 DATA 32H
- LED_3 DATA 33H
- ADC DATA 34H ;存放轉(zhuǎn)換后的數(shù)據(jù)
- ;//////主程序開(kāi)始////////////////////////////////////////
- ORG 0000H
- AJMP START
- ORG 000BH
- LJMP TT0
- ORG 0030H
- ;------初始化-----------------------------------
- START:
- MOV SP,#60H ;設(shè)置堆棧
- MOV LED_0,#00H ;清空顯示緩沖區(qū)
- MOV LED_1,#00H
- MOV LED_2,#00H
- MOV LED_3,#00H
- MOV DPTR,#TABLE ;送字型碼表首地
-
- MOV TMOD,#02H
- MOV TH0,#01H
- MOV TL0,#01H
- MOV IE,#82H
- SETB TR0
- ;------ADC0808轉(zhuǎn)換------------------------------
- WAIT: CLR ST
- SETB ST
- CLR ST ;啟動(dòng)轉(zhuǎn)換
- JNB EOC,[ DISCUZ_CODE_2 ]nbsp; ;等待轉(zhuǎn)換結(jié)束
- SETB OE ;允許輸出
- MOV ADC,P1 ;暫存轉(zhuǎn)換結(jié)果
- ;------數(shù)據(jù)處理,已備顯示------------------------
- MOV A,ADC ;將AD轉(zhuǎn)換結(jié)果轉(zhuǎn)換成BCD碼
- MOV B,#0C5H ;乘以19.5MV
- MUL AB
- MOV R7,A
- MOV R6,B
- HB2: CLR A ;BCD碼初始化
- CLR C
- MOV R3,A
- MOV R4,A
- MOV R5,A
- MOV R2,#10H ;轉(zhuǎn)換雙字節(jié)十六進(jìn)制整數(shù)
- HB3: MOV A,R7 ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
- RLC A
- MOV R7,A
- MOV A,R6
- RLC A
- MOV R6,A
- MOV A,R5 ;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2
- ADDC A,R5
- DA A ;十進(jìn)制調(diào)整
- MOV R5,A
- MOV A,R4
- ADDC A,R4
- DA A
- MOV R4,A
- MOV A,R3
- ADDC A,R3
- MOV R3,A ;雙字節(jié)十六進(jìn)制數(shù)的萬(wàn)位數(shù)不超過(guò)6,不用調(diào)整
- DJNZ R2,HB3
- MOV A,R5
- SWAP A
- ANL A,#0FH
- MOV LED_0,A
- MOV A,R4
- ANL A,#0FH
- MOV LED_1,A
- MOV A,R4
- SWAP A
- ANL A,#0FH
- MOV LED_2,A
- MOV A,R3
- ANL A,#0FH
- MOV LED_3,A
- LCALL DISP ;調(diào)用顯示子程序
- AJMP WAIT
- ;//////數(shù)碼管顯示子程序///////////////////////////////////////////////
- DISP: MOV A,LED_0 ;數(shù)碼顯示子程序
- MOVC A,@A+DPTR
- CLR P2.3
- MOV P0,A
- LCALL DELAY
- SETB P2.3
- MOV A,LED_1
- MOVC A,@A+DPTR
- CLR P2.2
- MOV P0,A
- LCALL DELAY
- SETB P2.2
- MOV A,LED_2
- MOVC A,@A+DPTR
- CLR P2.1
- MOV P0,A
- LCALL DELAY
- SETB P2.1
- MOV A,LED_3
- MOVC A,@A+DPTR
- CLR P2.0
- MOV P0,A
- SETB P0.7
- LCALL DELAY
- SETB P2.0
- RET
- ;//////延時(shí)子程序////////////////////////////////////
- DELAY: MOV R6,#0AH ;延時(shí)5毫秒
- D1: MOV R7,#0FAH
- DJNZ R7,$
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
單片機(jī)源程序如下(c語(yǔ)言):
- ADC0809數(shù)字電壓表
- ;########################################################
- ;********************************************************
- ;程序名稱(chēng): ADC0808電壓表
- ;主控芯片: 89c51 ,12MHZ,(ADC0808,共陰極數(shù)碼管)
- ;程序編寫(xiě)者:buyixin (不亦心)
- ;********************************************************
- ;########################################################
- OE BIT P3.0 ;ADC0808的OE端
- EOC BIT P3.1 ;ADC0808的EOC端
- ST BIT P3.2 ;ADC0808的START和ALE端
- ADD0 BIT P3.4 ;ADC0808的模擬輸入選擇端
- ADD1 BIT P3.5
- ADD2 BIT P3.6
- LED_0 DATA 30H ;顯示緩沖區(qū)
- LED_1 DATA 31H
- LED_2 DATA 32H
- LED_3 DATA 33H
- ADC DATA 34H ;存放轉(zhuǎn)換后的數(shù)據(jù)
- ;//////主程序開(kāi)始////////////////////////////////////////
- ORG 0000H
- AJMP START
- ORG 0030H
- ;------初始化-----------------------------------
- START: MOV SP,#60H ;設(shè)置堆棧
- MOV LED_0,#00H ;清空顯示緩沖區(qū)
- MOV LED_1,#00H
- MOV LED_2,#00H
- MOV LED_3,#00H
- MOV DPTR,#TABLE ;送字型碼表首地址
- SETB ADD0
- SETB ADD1
- CLR ADD2 ;選擇ADC0808的通道3
- ;------ADC0808轉(zhuǎn)換------------------------------
- WAIT: CLR ST
- SETB ST
- CLR ST ;啟動(dòng)轉(zhuǎn)換
- JNB EOC,[ DISCUZ_CODE_3 ]nbsp; ;等待轉(zhuǎn)換結(jié)束
- SETB OE ;允許輸出
- MOV ADC,P1 ;暫存轉(zhuǎn)換結(jié)果
- CLR OE ;關(guān)閉輸出
- ;------數(shù)據(jù)處理,已備顯示------------------------
- MOV A,ADC ;將AD轉(zhuǎn)換結(jié)果轉(zhuǎn)換成BCD碼
- MOV B,#0C3H ;乘以19.5MV
- MUL AB
- MOV R7,A
- MOV R6,B
- HB2: CLR A ;BCD碼初始化
- CLR C
- MOV R3,A
- MOV R4,A
- MOV R5,A
- MOV R2,#10H ;轉(zhuǎn)換雙字節(jié)十六進(jìn)制整數(shù)
- HB3: MOV A,R7 ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
- RLC A
- MOV R7,A
- MOV A,R6
- RLC A
- MOV R6,A
- MOV A,R5 ;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2
- ADDC A,R5
- DA A ;十進(jìn)制調(diào)整
- MOV R5,A
- MOV A,R4
- ADDC A,R4
- DA A
- MOV R4,A
- MOV A,R3
- ADDC A,R3
- MOV R3,A ;雙字節(jié)十六進(jìn)制數(shù)的萬(wàn)位數(shù)不超過(guò)6,不用調(diào)整
- DJNZ R2,HB3
- MOV A,R5
- SWAP A
- ANL A,#0FH
- MOV LED_0,A
- MOV A,R4
- ANL A,#0FH
- MOV LED_1,A
- MOV A,R4
- SWAP A
- ANL A,#0FH
- MOV LED_2,A
- MOV A,R3
- ANL A,#0FH
- MOV LED_3,A
- LCALL DISP ;調(diào)用顯示子程序
- AJMP WAIT
- ;//////數(shù)碼管顯示子程序///////////////////////////////////////////////
- DISP: MOV A,LED_0 ;數(shù)碼顯示子程序
- MOVC A,@A+DPTR
- CLR P2.3
- MOV P0,A
- LCALL DELAY
- SETB P2.3
- MOV A,LED_1
- MOVC A,@A+DPTR
- CLR P2.2
- MOV P0,A
- LCALL DELAY
- SETB P2.2
- MOV A,LED_2
- MOVC A,@A+DPTR
- CLR P2.1
- MOV P0,A
- LCALL DELAY
- SETB P2.1
- MOV A,LED_3
- MOVC A,@A+DPTR
- CLR P2.0
- MOV P0,A
- SETB P0.7
- LCALL DELAY
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
數(shù)字電壓表.rar
(152.41 KB, 下載次數(shù): 151)
2017-5-23 13:54 上傳
點(diǎn)擊文件名下載附件
|
|