綜合訓練項目三 數字電壓表 用c51單片機和ADC0808A/D轉換器把輸入的模擬電壓電流轉變成計算機可以識別的數字信息。我們小組這次通過運用所學知識,制作了一個量程為2.55V的電壓表。 1.概念流程圖; 
2.電壓數字顯示流程圖: 
3.顯示子程序流程圖:  遇到的問題:
在這次數字電壓表的設計過程中,我們遇到的主要問題是數顯程序的編寫,我們最初的想法是給一個寄存器存入一定數值,再用DJNZ指令進行跳轉,跳轉到特定的子程序使數顯顯示0。但后來發現程序順序問題會導致無論電壓數值為多少,數顯程序判斷部分都會判斷為減到0并跳轉。后決定使用Cy位,通過清零來避免干擾。
組員信息:
測控一班 李*坤 1505070112
測控一班 李*哲 1505070110
測控一班 胡*宇 1505070108
組員分工
胡*宇:程序編寫;
李*哲:文檔編輯;
*坤:仿真電路制作;
程序校對和錯誤分析有所有組員共同完成。
三、單片機匯編語言程序指令:
-
- LED_0 EQU 30H ;千分位
- LED_1 EQU 31H ;百分位
- LED_2 EQU 32H ;十分位
- LED_3 EQU 33H ;個位
- ADC EQU 35H
- CLOCK BIT P1.4 ;定義0808時鐘位
- ST BIT P1.5
- EOC BIT P1.6
- OE BIT P1.7
- ORG 0000H
- LJMP START
- ORG 000BH
- LJMP INT_T0
- ORG 30H
- START: MOV LED_0,#00H
- MOV LED_1,#00H
- MOV LED_2,#00H
- MOV DPTR,#TABLE ;表格數值賦到DPTR
- MOV TMOD,#02H ;定時器選擇方式2
- MOV TH0,#0F5H ;防止數碼管數位閃動,可設定的置為小于等于245的數
- MOV TL0,#00H
- MOV IE,#82H ;開T0中斷
- SETB TR0 ;T0開始計數
- WAIT: CLR ST
- SETB ST ;上升沿清零SAR(SAR用來在A/D轉化過程中存放暫態數字量)
- CLR ST ;下降沿啟動ADC工作
- JNB EOC,[ DISCUZ_CODE_19 ]nbsp; ;等待轉換結果
- SETB OE ;ADC輸出
- MOV ADC,P2 ;讀取AD轉換結果
- CLR OE
- MOV A,ADC
- MOV R7,A ;R7儲存AD轉換后的結果
- MOV LED_3,#00H ;清空個位
- MOV LED_2,#00H ;清空十分位
- MOV A,#00H
- LOOP1: ADD A,#20H ;一位二進制碼對應1000mV
- DA A ;結果轉換成BCD碼
- JNC LOOP2 ;Cy為0跳轉,Cy為1繼續執行
- MOV R4,A ;R4儲存千分分位、百分位
- INC LED_2 ;十分位加1
- MOV A,LED_2
- CJNE A,#0AH,LOOP4 十分位位不為10跳轉,為10繼續執行
- MOV LED_2,#00H ;十分位置0
- INC LED_3 ;個位加1
- LOOP4: MOV A,R4
- LOOP2: DJNZ R7,LOOP1 ;R7減1不為0跳轉,為0繼續執行
- ACALL BTOD1
- LCALL DISP ;調用顯示子程序
- LJMP WAIT
- ORG 0200H
- BTOD1: MOV R6,A ;R6儲存R7為0后的A的值
- ANL A,#0F0H ;R6與11110000B后賦給A
- MOV R5,#4
- LOOP3: RR A
- DJNZ R5,LOOP3
- MOV LED_1,A ;A右移4次后賦給百分位
- MOV A,R6
- ANL A,#0FH
- MOV LED_0,A ;R6與00001111B后賦給千分位
- RET
-
- INT_T0: CPL CLOCK ;提供0808時鐘信號
- RETI
- DISP: ;顯示子程序
- MOV A,LED_0
- MOVC A,@A+DPTR
- CLR P1.3 ;千分位顯示
- MOV P0,A
- LCALL DELAY ;數值顯示
- SETB P1.3
-
- MOV A,LED_1
- MOVC A,@A+DPTR
- CLR P1.2 ;百分位顯示
- MOV P0,A
- LCALL DELAY ;數值顯示
- SETB P1.2
-
- MOV A,LED_2
- MOVC A,@A+DPTR
- CLR P1.1 ;十分位顯示
- MOV P0,A
- LCALL DELAY ;數值顯示
- SETB P1.1
-
- MOV A,LED_3
- MOVC A,@A+DPTR
- ADD A,#80H ;顯示小數點
- CLR P1.0 ;個位顯示
- MOV P0,A
- LCALL DELAY ;數值顯示
- SETB P1.0
- RET
- DELAY: MOV R6,#10 ;延時5ms
- D1: MOV R7,#250
- DJNZ R7,$
- DJNZ R6,D1
- RET
- TABLE: DB 3FH,06H,5BH,4FH,66H ;共陰數碼管7段值
- DB 6DH,7DH,07H,7FH,6FH
- END
復制代碼
全部資料下載:
數字電壓表.zip
(419.98 KB, 下載次數: 82)
2018-3-31 11:03 上傳
點擊文件名下載附件
數字電壓表 下載積分: 黑幣 -5
|