基于51單片機的數字電壓表程序設計
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (13.03 KB, 下載次數: 119)
下載附件
2018-12-25 01:24 上傳
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
見本文后面
單片機源程序如下:
- #include <REG51.H>
- sfr AUXR = 0x8e;
- int shuju;
- #include <display.c>
- sbit clock = P3^0;
- sbit OE = P3^7;
- sbit EOC = P3^2;
- sbit SATRA = P3^5;
- void timer0_isr()interrupt 1
- {
- TH0 = (65535 - 2000) / 255;
- TL0 = (65535 - 2000) % 255;
- display0();
- }
- void timer1_isr()interrupt 3
- {
- clock = ~clock;
- }
- void timer0_init()
- {
- TMOD = 0x21;
- TH0 = (65535 - 2000) / 255;
- TL0 = (65535 - 2000) % 255;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- TL1 = 0xfb; //設置定時初值
- TH1 = 0xfb; //設置定時初值
- ET1 = 1;
- TR1 = 1; //定時器0開始計時
- }
- void main()
- {
- timer0_init();
- while(1)
- {
- OE = 0;
- SATRA = 0;SATRA = 1;SATRA = 0;
- while(EOC == 0);
- OE = 1;
- shuju = P1 * 1.96;
- OE = 0;
- }
- }
復制代碼
摘要
本課題是利用單片機設計一個數字電壓表,能夠測量0-5V之間的直流電壓值,四位數碼管顯示,使用的元器件數目較少。外界電壓模擬量輸入到A/D轉換部分的輸入端,通過ADC0809轉換變為數字信號,輸送給單片機。然后由單片機給數碼管數字信號,控制其發光,從而顯示數字。
目錄
1 前言
1.1 課題研究的背景及意義
2 設計要求
3系統原理框圖
4 主要元器件
4.1 STC89C52
4.2 ADC0809 轉換電路
4.3四位一體數碼管
四位一體數碼管
5系統設計電路
5.1電路
6程序設計
6.1 顯示程序設計
6.2 主程序的設計
7 電路原理圖
8 PCB圖
9 程序
10 總結
參考文獻
致謝
1 前言
1.1 課題研究的背景及意義在生產過程,科學研究和其他產業領域中,電氣控制技術應用十分廣泛。在機械設備的控制中,電氣控制也比其他的控制方法使用的更為普遍。 數字電壓表簡稱DVM,它是采用數字化測量技術設計的電壓表。從性能來看:數字電壓表的發展從一九五二年美國NLS公司由四位電子管數字電壓表精度千分之一到現在已經出現8位數字電壓表。參數可測量直流電壓、交流電壓、電流、阻抗等。測量自動化程度不斷提高,可以和計算機配合顯示、計算結果、然后打印出來。 1.2 國內外研究現狀和發展 數字電壓表(Digital Voltmeter)簡稱DVM,它出現在上世紀50年代初,60年代末發張起來的電壓測量儀表,它采用的是數字化測量技術,把連續的模擬量,也就是連續的電壓值轉變為不連續的數字量,加以數字處理然后通過顯示器件顯示。這種電子儀表之所以出現,一方面是由于電子計算機的應用推廣到系統的自動控制信號的實驗領域,提出了各種被觀測量或被控制量轉換成數字量的要求,即為了實時控制和數據處理的要求;另一方面,也是電子計算機的發展,帶動了脈沖數字電路技術的發展,為數字化儀表的出現提供了條件。所以,數字化測量儀表的產生與發展與電子計算機的發展是密切相關的;同時,為革新電子測量中的煩瑣與陳舊方式也促進了它的飛速發展。如今,它又成為向智能化儀表發展的必要橋梁。
2 設計要求設計一個數字電壓表,基于單片機或數字邏輯電路,設計A/D轉化電路、密碼校驗電路和控制輸出與顯示電路,實現用戶按鍵輸入密碼開鎖功能。 1、以單片機為控制核心設計數字電壓表; 2、可以測量0~5V的8路輸入電壓值; 3、LED數碼管輪流顯示或單路選擇顯示電壓值; 4、最小分辨率為0.01V,測量誤差約為±0.01V。
3系統原理框圖選擇AT89S51作為單片機芯片,選用四位8段共陰極LED數碼管實現電壓顯示,利用ADC0809作為數模轉換芯片。將數據采集接口電路輸入電壓傳入ADC0809數模轉換元件,經轉換后通過D0至D7與單片機P0口連接,把轉換完的模擬信號以數字信號的信號的形式傳給單片機,信號經過單片機處理從LED數碼顯示管顯示。P2口接數碼管位選,P1接數碼管,實現數據的動態顯示,如圖4.1所示。
4 主要元器件
4.1 STC89C52STC89C52是美國ATMEL公司生產的低電壓,高性能CMOS8位單片機,片內含有4KB的可反復擦寫的只讀程序存儲器和128字節的隨機存儲器。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容,由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的STC89C52是一種高效微控制器,它為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。 STC89C52功能性能:與MCS-51成品指令系統完全兼容;4KB可編程閃速存儲器;壽命:1000次寫/擦循環;數據保留時間:10年;全靜態工作:0-24MHz;三級程序存儲器鎖定;128*8B內部RAM;32個可編程I/O口線;2個16位定時/計數器;5個中斷源;可編程串行UART通道;片內震蕩器和掉電模式。
STC89C52各引腳功能 P0端口:P0口是一個漏極開路的8位雙向I/O口。作為輸出端口每個引腳能驅動8個TTL負載對端口P0寫入“1”時可以作為高阻抗輸入。在訪問外部程序和數據存儲器時P0口也可以提供低8位地址和8位數據的復用總線。此時P0口內部上拉電阻有效。在Flash ROM編程時P0端口接收指令字節而在校驗程序時則輸出指令字節。驗證時要求外接上拉電阻。 P1端口: P1口是一個帶內部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅動吸收或者輸出電流方式4個TTL輸入。對端口寫入1時通過內部的上拉電阻把端口拉到高電位這是可用作輸入口。P1口作輸入口使用時因為有內部上拉電阻那些被外部拉低的引腳會輸出一個電流。 P2端口:P2口是一個帶內部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅動吸收或輸出電流方式4個TTL輸入。對端口寫入1時到高電平這時可用作輸入口。P2作為輸入口使用時因為有內部的上拉電阻那些被外部信號拉低的引腳會輸出一個電流。 在訪問外部程序存儲器和16位地址的外部數據存儲器如執行“MOVX @DPTR”指令時P2送出高8位地址。在訪問8位地址的外部數據存儲器如執行“MOVX @R1”指令時P2口引腳上的內容就是專用寄存器SFR區中的P2寄存器的內容在整個訪問期間不會改變。 在對Flash ROM編程和程序校驗期間P2也接收高位地址和一些控制信號。 P3端口:P3口是一個帶內部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅動吸收或輸出電流方式4個TTL輸入。對端口寫入1時通過內部的上拉電阻把端口拉到高電位這時可用作輸入口。P3做輸入口使用時因為有內部的上拉電阻那些被外部信號拉低的引腳會輸入一個電流。 在對Flash ROM編程或程序校驗時P3還接收一些控制信號。
4.2 ADC0809 轉換電路ADC0808芯片有28條引腳,采用雙列直插式封裝,各引腳功能為: 
IN0~IN7:8路模擬量輸入端。 D0~D7:8位數字量輸出端口。 START:A/D轉換啟動信號輸入端。 ALE:地址鎖存允許信號,高電平有效。 EOC:輸出允許控制信號,高電平有效。 OE: 輸出允許控制信號,高電平有效。 CLK:時鐘信號輸入端。 ADDA、ADDB、ADDC:轉換通道地址,控制8路模擬通道的切換。ADDA、ADDB、ADDC分別與地址線或數據線相連,三位編碼對應8個通道地址端口,ADDA、ADDB、ADDC=000~111分別對應IN0~IN7通道的地址端口。
4.3四位一體數碼管四位一體數碼管首先數碼管有共陰極和共陽極之分,區別他們的方法是若公共端接地,其他端接電源,若各段測試能亮,說明是共陰的,反之共陽的;若公共端接電源其他端分別接的,測得各端亮,則說明是共陽的,反之為共陰的。
5系統設計電路5.1電路 AT89C51單片機在啟動運行時或者出現死機時需要復位,使CPU以及其他功能部件處于一個確定的初始狀態,并從這個狀態開始工作。復位電路產生的復位信號(高電平有效)由RST引腳送入到內部的復位電路,對AT89C51單片機進行復位,復位信號要持續兩個機器周期(24個時鐘周期)以上,才能使AT89C51單片機可靠復位。 AT89C51單片機復位電路如圖3.3所示:
復位電路工作原理:上電瞬間RST引腳的電位與VCC等電位,RST引腳為高電平,隨著電容C6充電電流的減少,RST引腳的電位不斷下降,其充電時間常數為T=R9*C6=100ms,此時間常數足以RST引腳在保持為高電平的時間內完成復位操作。 當單片機已在運行當中時,按下復位鍵S1后松開,也能使單片機RST引腳維持一段時間的高電平,從而實現AT89C51單片機手動復位。 5.2 晶振電路 
XTAL1和XTAL2是片內振蕩電路輸入端,這兩個端子用來外接石英晶體和微調電容,即用來連接AT89C51單片機片內OSC的定時反饋回路。晶振起振后要能在XTAL2端輸出一個3V左右的正弦波,以便使片內OSC電路按晶振相同頻率自激振蕩。通常,OSC的輸出時鐘頻率FOSC為6MHZ—16MHZ,典型值為12MHZ或11.0592MHZ。電容C5和C6幫助晶振起振,典型值為30pf,調節它們可以達到微調FOSC的目的。本系統中,晶振為12MHZ,C5=C6=30pf。晶振電路如圖3.4所示:
6程序設計
6.1 顯示程序設計系統上電后,配置數碼管個引腳,然后對其進行初始化,再調用的讀寫函數,可將采集處理后的電壓數值實時顯示。其程序流程圖如圖所示。
6.2 主程序的設計由于ADC0809在進行A/D轉換時需要有CLK信號,而此時的ADC0809的CLK是連接在AT89C51單片機的40管腳,也就是要求從40管腳輸出CLK信號供ADC0809使用。因此產生CLK信號的方法就等于從軟件產生。電壓表系統有主程序,A/D轉換子程序、按鍵子程序和顯示子程序。

7 電路原理圖
8 PCB圖
Proteus8.8仿真+代碼PCB資料:
數字電壓表仿真程序PCB.7z
(2.44 MB, 下載次數: 531)
2021-12-7 23:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|