找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17403|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)+ADC0808的數(shù)字電壓表PCB文件+仿真+程序設(shè)計

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:435945 發(fā)表于 2018-12-23 16:55 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
基于51單片機(jī)的數(shù)字電壓表程序設(shè)計

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
見本文后面

單片機(jī)源程序如下:
  1. #include <REG51.H>
  2. sfr AUXR = 0x8e;
  3. int shuju;
  4. #include <display.c>
  5. sbit clock = P3^0;
  6. sbit OE = P3^7;
  7. sbit EOC = P3^2;
  8. sbit SATRA = P3^5;

  9. void timer0_isr()interrupt 1
  10. {
  11.         TH0 = (65535 - 2000) / 255;
  12.         TL0 = (65535 - 2000) % 255;
  13.         display0();        
  14. }
  15. void timer1_isr()interrupt 3
  16. {
  17.         clock = ~clock;
  18. }
  19. void timer0_init()
  20. {
  21.         TMOD = 0x21;
  22.         TH0 = (65535 - 2000) / 255;
  23.         TL0 = (65535 - 2000) % 255;
  24.         EA = 1;
  25.         ET0 = 1;
  26.         TR0 = 1;
  27.         TL1 = 0xfb;                //設(shè)置定時初值
  28.         TH1 = 0xfb;                //設(shè)置定時初值        
  29.         ET1 = 1;
  30.         TR1 = 1;                //定時器0開始計時
  31. }
  32. void main()
  33. {
  34.         timer0_init();
  35.         while(1)
  36.         {
  37.                 OE = 0;
  38.                 SATRA = 0;SATRA = 1;SATRA = 0;
  39.                 while(EOC == 0);
  40.                 OE = 1;
  41.                 shuju = P1 * 1.96;
  42.                 OE = 0;                        
  43.         }
  44. }
復(fù)制代碼

摘要
本課題是利用單片機(jī)設(shè)計一個數(shù)字電壓表,能夠測量0-5V之間的直流電壓值,四位數(shù)碼管顯示,使用的元器件數(shù)目較少。外界電壓模擬量輸入到A/D轉(zhuǎn)換部分的輸入端,通過ADC0809轉(zhuǎn)換變?yōu)閿?shù)字信號,輸送給單片機(jī)。然后由單片機(jī)給數(shù)碼管數(shù)字信號,控制其發(fā)光,從而顯示數(shù)字。

目錄
1 前言
1.1 課題研究的背景及意義
2 設(shè)計要求
3系統(tǒng)原理框圖
4 主要元器件
4.1  STC89C52
4.2  ADC0809 轉(zhuǎn)換電路
4.3四位一體數(shù)碼管
四位一體數(shù)碼管
5系統(tǒng)設(shè)計電路
5.1電路
6程序設(shè)計
6.1 顯示程序設(shè)計
6.2 主程序的設(shè)計
7 電路原理圖
8  PCB圖
9 程序
10 總結(jié)
參考文獻(xiàn)
致謝

1 前言
1.1 課題研究的背景及意義
在生產(chǎn)過程,科學(xué)研究和其他產(chǎn)業(yè)領(lǐng)域中,電氣控制技術(shù)應(yīng)用十分廣泛。在機(jī)械設(shè)備的控制中,電氣控制也比其他的控制方法使用的更為普遍。
數(shù)字電壓表簡稱DVM,它是采用數(shù)字化測量技術(shù)設(shè)計的電壓表。從性能來看:數(shù)字電壓表的發(fā)展從一九五二年美國NLS公司由四位電子管數(shù)字電壓表精度千分之一到現(xiàn)在已經(jīng)出現(xiàn)8位數(shù)字電壓表。參數(shù)可測量直流電壓、交流電壓、電流、阻抗等。測量自動化程度不斷提高,可以和計算機(jī)配合顯示、計算結(jié)果、然后打印出來。
1.2 國內(nèi)外研究現(xiàn)狀和發(fā)展            
數(shù)字電壓表(Digital Voltmeter)簡稱DVM,它出現(xiàn)在上世紀(jì)50年代初,60年代末發(fā)張起來的電壓測量儀表,它采用的是數(shù)字化測量技術(shù),把連續(xù)的模擬量,也就是連續(xù)的電壓值轉(zhuǎn)變?yōu)椴贿B續(xù)的數(shù)字量,加以數(shù)字處理然后通過顯示器件顯示。這種電子儀表之所以出現(xiàn),一方面是由于電子計算機(jī)的應(yīng)用推廣到系統(tǒng)的自動控制信號的實驗領(lǐng)域,提出了各種被觀測量或被控制量轉(zhuǎn)換成數(shù)字量的要求,即為了實時控制和數(shù)據(jù)處理的要求;另一方面,也是電子計算機(jī)的發(fā)展,帶動了脈沖數(shù)字電路技術(shù)的發(fā)展,為數(shù)字化儀表的出現(xiàn)提供了條件。所以,數(shù)字化測量儀表的產(chǎn)生與發(fā)展與電子計算機(jī)的發(fā)展是密切相關(guān)的;同時,為革新電子測量中的煩瑣與陳舊方式也促進(jìn)了它的飛速發(fā)展。如今,它又成為向智能化儀表發(fā)展的必要橋梁。


2
設(shè)計要求
設(shè)計一個數(shù)字電壓表,基于單片機(jī)或數(shù)字邏輯電路,設(shè)計A/D轉(zhuǎn)化電路、密碼校驗電路和控制輸出與顯示電路,實現(xiàn)用戶按鍵輸入密碼開鎖功能。
1、以單片機(jī)為控制核心設(shè)計數(shù)字電壓表;
2、可以測量0~5V的8路輸入電壓值;
3、LED數(shù)碼管輪流顯示或單路選擇顯示電壓值;
4、最小分辨率為0.01V,測量誤差約為±0.01V。


3系統(tǒng)原理框圖
選擇AT89S51作為單片機(jī)芯片,選用四位8段共陰極LED數(shù)碼管實現(xiàn)電壓顯示,利用ADC0809作為數(shù)模轉(zhuǎn)換芯片。將數(shù)據(jù)采集接口電路輸入電壓傳入ADC0809數(shù)模轉(zhuǎn)換元件,經(jīng)轉(zhuǎn)換后通過D0至D7與單片機(jī)P0口連接,把轉(zhuǎn)換完的模擬信號以數(shù)字信號的信號的形式傳給單片機(jī),信號經(jīng)過單片機(jī)處理從LED數(shù)碼顯示管顯示。P2口接數(shù)碼管位選,P1接數(shù)碼管,實現(xiàn)數(shù)據(jù)的動態(tài)顯示,如圖4.1所示。


4 主要元器件
4.1  STC89C52
STC89C52是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含有4KB的可反復(fù)擦寫的只讀程序存儲器和128字節(jié)的隨機(jī)存儲器。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容,由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的STC89C52是一種高效微控制器,它為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。
STC89C52功能性能:與MCS-51成品指令系統(tǒng)完全兼容;4KB可編程閃速存儲器;壽命:1000次寫/擦循環(huán);數(shù)據(jù)保留時間:10年;全靜態(tài)工作:0-24MHz;三級程序存儲器鎖定;128*8B內(nèi)部RAM;32個可編程I/O口線;2個16位定時/計數(shù)器;5個中斷源;可編程串行UART通道;片內(nèi)震蕩器和掉電模式。              


STC89C52各引腳功能
  P0端口:P0口是一個漏極開路的8位雙向I/O口。作為輸出端口每個引腳能驅(qū)動8個TTL負(fù)載對端口P0寫入“1”時可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時P0口內(nèi)部上拉電阻有效。在Flash ROM編程時P0端口接收指令字節(jié)而在校驗程序時則輸出指令字節(jié)。驗證時要求外接上拉電阻。
P1端口: P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動吸收或者輸出電流方式4個TTL輸入。對端口寫入1時通過內(nèi)部的上拉電阻把端口拉到高電位這是可用作輸入口。P1口作輸入口使用時因為有內(nèi)部上拉電阻那些被外部拉低的引腳會輸出一個電流。
P2端口:P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅(qū)動吸收或輸出電流方式4個TTL輸入。對端口寫入1時到高電平這時可用作輸入口。P2作為輸入口使用時因為有內(nèi)部的上拉電阻那些被外部信號拉低的引腳會輸出一個電流。 在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器如執(zhí)行“MOVX @DPTR”指令時P2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲器如執(zhí)行“MOVX @R1”指令時P2口引腳上的內(nèi)容就是專用寄存器SFR區(qū)中的P2寄存器的內(nèi)容在整個訪問期間不會改變。 在對Flash ROM編程和程序校驗期間P2也接收高位地址和一些控制信號。
P3端口:P3口是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動吸收或輸出電流方式4個TTL輸入。對端口寫入1時通過內(nèi)部的上拉電阻把端口拉到高電位這時可用作輸入口。P3做輸入口使用時因為有內(nèi)部的上拉電阻那些被外部信號拉低的引腳會輸入一個電流。 在對Flash ROM編程或程序校驗時P3還接收一些控制信號。

4.2  ADC0809 轉(zhuǎn)換電路
ADC0808芯片有28條引腳,采用雙列直插式封裝,各引腳功能為:

IN0~IN7:8路模擬量輸入端。
D0~D7:8位數(shù)字量輸出端口。
START:A/D轉(zhuǎn)換啟動信號輸入端。
ALE:地址鎖存允許信號,高電平有效。
EOC:輸出允許控制信號,高電平有效。
OE: 輸出允許控制信號,高電平有效。
CLK:時鐘信號輸入端。
ADDA、ADDB、ADDC:轉(zhuǎn)換通道地址,控制8路模擬通道的切換。ADDA、ADDB、ADDC分別與地址線或數(shù)據(jù)線相連,三位編碼對應(yīng)8個通道地址端口,ADDA、ADDB、ADDC=000~111分別對應(yīng)IN0~IN7通道的地址端口。

4.3四位一體數(shù)碼管四位一體數(shù)碼管

首先數(shù)碼管有共陰極和共陽極之分,區(qū)別他們的方法是若公共端接地,其他端接電源,若各段測試能亮,說明是共陰的,反之共陽的;若公共端接電源其他端分別接的,測得各端亮,則說明是共陽的,反之為共陰的。

5系統(tǒng)設(shè)計電路5.1電路
AT89C51單片機(jī)在啟動運行時或者出現(xiàn)死機(jī)時需要復(fù)位,使CPU以及其他功能部件處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。復(fù)位電路產(chǎn)生的復(fù)位信號(高電平有效)由RST引腳送入到內(nèi)部的復(fù)位電路,對AT89C51單片機(jī)進(jìn)行復(fù)位,復(fù)位信號要持續(xù)兩個機(jī)器周期(24個時鐘周期)以上,才能使AT89C51單片機(jī)可靠復(fù)位。
AT89C51單片機(jī)復(fù)位電路如圖3.3所示:



復(fù)位電路工作原理:上電瞬間RST引腳的電位與VCC等電位,RST引腳為高電平,隨著電容C6充電電流的減少,RST引腳的電位不斷下降,其充電時間常數(shù)為T=R9*C6=100ms,此時間常數(shù)足以RST引腳在保持為高電平的時間內(nèi)完成復(fù)位操作。
當(dāng)單片機(jī)已在運行當(dāng)中時,按下復(fù)位鍵S1后松開,也能使單片機(jī)RST引腳維持一段時間的高電平,從而實現(xiàn)AT89C51單片機(jī)手動復(fù)位。
5.2 晶振電路

XTAL1和XTAL2是片內(nèi)振蕩電路輸入端,這兩個端子用來外接石英晶體和微調(diào)電容,即用來連接AT89C51單片機(jī)片內(nèi)OSC的定時反饋回路。晶振起振后要能在XTAL2端輸出一個3V左右的正弦波,以便使片內(nèi)OSC電路按晶振相同頻率自激振蕩。通常,OSC的輸出時鐘頻率FOSC為6MHZ—16MHZ,典型值為12MHZ或11.0592MHZ。電容C5和C6幫助晶振起振,典型值為30pf,調(diào)節(jié)它們可以達(dá)到微調(diào)FOSC的目的。本系統(tǒng)中,晶振為12MHZ,C5=C6=30pf。晶振電路如圖3.4所示:

6程序設(shè)計
6.1 顯示程序設(shè)計
系統(tǒng)上電后,配置數(shù)碼管個引腳,然后對其進(jìn)行初始化,再調(diào)用的讀寫函數(shù),可將采集處理后的電壓數(shù)值實時顯示。其程序流程圖如圖所示。



6.2 主程序的設(shè)計
由于ADC0809在進(jìn)行A/D轉(zhuǎn)換時需要有CLK信號,而此時的ADC0809的CLK是連接在AT89C51單片機(jī)的40管腳,也就是要求從40管腳輸出CLK信號供ADC0809使用。因此產(chǎn)生CLK信號的方法就等于從軟件產(chǎn)生。電壓表系統(tǒng)有主程序,A/D轉(zhuǎn)換子程序、按鍵子程序和顯示子程序。





7 電路原理圖


8  PCB



Proteus8.8仿真+代碼PCB資料:
數(shù)字電壓表仿真程序PCB.7z (2.44 MB, 下載次數(shù): 531)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:308785 發(fā)表于 2019-4-29 23:13 | 只看該作者
正在學(xué)習(xí)此項內(nèi)容 比較感謝樓主的分享
回復(fù)

使用道具 舉報

板凳
ID:524917 發(fā)表于 2019-4-30 09:12 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報

地板
ID:375715 發(fā)表于 2019-4-30 14:09 來自手機(jī) | 只看該作者
值得學(xué)習(xí)
回復(fù)

使用道具 舉報

5#
ID:528087 發(fā)表于 2019-5-8 18:38 | 只看該作者
正在做此類設(shè)計,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

6#
ID:157286 發(fā)表于 2019-10-25 23:45 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報

7#
ID:710050 發(fā)表于 2020-3-17 15:29 | 只看該作者
兩個c文件添加到工程里面,為什么編譯不了呢,顯示   display.c(15): error C202: 'P0': undefined identifier
求解答。
回復(fù)

使用道具 舉報

8#
ID:804169 發(fā)表于 2020-7-16 13:58 | 只看該作者
感謝樓主,我想問一下,你的ADC0809是自己畫的,還是在庫里找的,我在庫里找不到咋辦
回復(fù)

使用道具 舉報

9#
ID:804169 發(fā)表于 2020-7-16 13:59 | 只看該作者
問一下樓主,你的ADC0809是自己畫的嗎,我在庫里沒有找到
回復(fù)

使用道具 舉報

10#
ID:925314 發(fā)表于 2021-5-22 12:47 | 只看該作者
想問下ADC0808在哪里找到呀
回復(fù)

使用道具 舉報

11#
ID:648066 發(fā)表于 2021-6-21 19:03 | 只看該作者
樓主你這個PCB圖連線有問題啊
回復(fù)

使用道具 舉報

12#
ID:978036 發(fā)表于 2021-11-28 11:29 | 只看該作者
di88 發(fā)表于 2020-7-16 13:58
感謝樓主,我想問一下,你的ADC0809是自己畫的,還是在庫里找的,我在庫里找不到咋辦

用ADC0808,一樣的
回復(fù)

使用道具 舉報

13#
ID:991606 發(fā)表于 2021-12-13 12:42 來自手機(jī) | 只看該作者
正在學(xué)習(xí)此項內(nèi)容 比較感謝樓主的分享
回復(fù)

使用道具 舉報

14#
ID:992042 發(fā)表于 2021-12-14 08:57 | 只看該作者
看過樓主的設(shè)計,非常受用。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表