欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22796|回復: 10
打印 上一主題 下一主題
收起左側

單片機數字電壓表的設計

  [復制鏈接]
跳轉到指定樓層
樓主
摘 要
電壓表是測量儀器中不可缺少的設備,而且隨著電子技術的發展,更是經常需要測量高精度的電壓,所以數字電壓表就成為一種必不可少的測量儀器。目前廣泛應用的是采用專門集成電路實現的數字電壓表。
本系統以AT89C51單片機為核心,以逐次逼近式A/D轉化器ADC0808、數碼管顯示器為主體,加上按鍵控制功能,設計了一款簡易的數字電壓表,通過按鍵控制,對ADC0808的輸入通道進行選擇,且通過數碼管顯示出具體通道數值,可以測量0到5V的八路輸入電壓。
本次設計還使用按鍵實現了數碼管電路選擇顯示電壓值的功能。能夠測量0到5V的直流電壓,最小分辨率為0.01。設計大體分為單片機部分、測量部分、數碼管顯示部分。其中測量部分為本次重點,要求將外部采集的模擬信號轉化成數字信號,決定了數字電壓表的精度等主要性能指標。
目 錄
第1章 緒論
1.1系統的開發背景
1.2 本文研究對象
第2章 方案設計與論證
2.1設計方案與論證
2.2 系統設計要求
2.3總體設計框圖
第3章 單元電路設計
3.1最小系統設計
3.2單片機模塊設計
3.2 A/D轉換設計
3.5 顯示電路設計
3.6 模擬輸入設計
3.7 按鍵設計
第4章 系統軟件設計
4.1 主程序的設計
4.2 A/D轉換程序設計
4.3 顯示程序設計
4.4 按鍵程序設計
第5章 系統仿真與調試
第6章 總結
參考文獻
附錄I:整體電路原理圖
附錄II:元器件清單



第1章 緒論1.1系統的開發背景
在電量的測量中,電壓、電流和頻率是最基本的三個被測量,其中電壓量的測量最為經常。而且隨著電子技術的發展,更是經常需要測量高精度的電壓,所以數字電壓表就成為一種必不可少的測量儀器。數字電壓表簡稱DVM,它是采用數字化測量技術,把連續的模擬量轉換成不連續、離散的數字形式并加以顯示的儀表。由于數字式儀器具有讀數準確方便、精度高、誤差小、測量速度快等特而得到廣泛應用。
傳統的指針式刻度電壓表功能單一,進度低,容易引起視差和視覺疲勞,因而不能滿足數字化時代的需要。采用單片機的數字電壓表,將連續的模擬量如直流電壓轉換成不連續的離散的數字形式并加以顯示,從而精度高、抗干擾能力強,可擴展性強、集成方便,還可與PC實時通信。數字電壓表是諸多數字化儀表的核心與基礎。以數字電壓表為核心,可以擴展成各種通用數字儀表、專用數字儀表及各種非電量的數字化儀表。目前,由各種單片機和A/D轉換器構成的數字電壓表作全面深入的了解是很有必要的。
最近的幾十年來,隨著半導體技術、集成電路(IC)和微處理器技術的發展,數字電路和數字化測量技術也有了巨大的進步,從而促使了數字電壓表的快速發展,并不斷出現新的類型。數字電壓表從1952年問世以來,經歷了不斷改進的過程,從最早采用繼電器、電子管和形式發展到了現在的全固態化、集成化(IC化),另一方面,精度也從0.01%-0.005%。
目前,數字電壓表的內部核心部件是A/D轉換器,轉換的精度很大程度上影響著數字電壓表的準確度,因而,以后數字電壓表的發展就著眼在高精度和低成本這兩個方面。
1.2 本文研究對象
本文是以簡易數字直流電壓表的設計為研究內容,本系統主要包括三大模塊:轉換模塊、數據處理模塊及顯示模塊。其中,A/D轉換采用ADC0808對輸入的模擬信號進行轉換,控制核心AT89C51再對轉換的結果進行運算處理,最后驅動輸出裝置LED顯示數字電壓信號。
第2章 方案設計與論證2.1設計方案與論證
數字電壓表的設計方案很多,但采用集成電路來設計較流行。其設計主要是由模擬電路和數字電路兩大部分組成,模擬部分包括A/D轉換器,基準電源等;數字部分包括振蕩器,數碼顯示,計數器等。其中,A/D轉換器將輸入的模擬量轉換成數字量,它是數字電壓表的一個核心部件,對它的選擇一般三種選擇方案:
方案一、采用雙積分A/D轉換器MC14433,它有多路調制的BCD碼輸出端和超量程輸出端,采用動態掃描顯示,便于實現自動控制。但芯片只能完成A/D轉換功能,要實現顯示功能還需配合其它驅動芯片等,使得整部分硬件電路板布線復雜,加重了電路設計和實際焊接的工作。
方案二、 A/D轉換器采用ICL7107型三位半顯示的芯片,輸入信號,流經取樣電路取樣后送到ICL7107型三位半A/D轉換器,只需要很少的簡單外圍元件,就可組成數字電流表模塊,直接驅動三位半LED顯示器顯示,最后輸入電流在顯示部分顯示。由于ICL7107做的LED數字表,最大的缺點就是數字亂跳不穩定,特別最后一位。接口模塊:使用數字電路實現,采用譯碼芯片CD4543作為接口芯片,這種方案能實現功能,但穩定性不高,結構復雜。
方案三、逐次逼近式A/D轉換器。它的轉換速度更快,而且精度更高,采用ADC0808轉換芯片,其中A/D轉換器用于實現模擬量向數字量的轉換,單電源供電。它是具有8路模擬量輸入、8位數字量輸出功能的A/D轉換器,轉換時間為100μs,模擬輸入電壓范圍為0V~5V,不需零點和滿刻度校準,功耗低,約15mW。 由于模擬轉換電路的種類很多,通過對轉換速度,精度和價格方面考慮。
綜上所述選擇方案三。采用ADC0808為本次設計的轉換芯片。單片機模塊采用AT89S51單片機作為系統的控制單元,通過A/D轉換將被測值轉換為數字量送入單片機中,再由單片機來送顯。此方案各類功能易于實現,成本低、功耗低,顯示穩定。
顯示部分可以采用各類數碼管或用LED顯示器顯示。在此簡化采用4位八段共陰極數碼管對A/D轉換變換后的結果加以顯示。
2.2 系統設計要求
設計一個數字電壓表,基于單片機或數字邏輯電路,設計A/D轉化電路、密碼校驗電路和控制輸出與顯示電路,實現用戶按鍵輸入密碼開鎖功能。
1、以單片機為控制核心設計數字電壓表;
2、可以測量0~5V的8路輸入電壓值;
3、LED數碼管輪流顯示或單路選擇顯示電壓值;
4、最小分辨率為0.01V,測量誤差約為±0.01V。
2.3總體設計框圖
本設計采用以AT89C51單片機控制方案。 利用單片機靈活的編程設計和豐富的IO端口,及其控制的準確性。系統結構框圖如圖2.1所示。

圖2.1系統結構框圖






第3章 單元電路設計3.1最小系統設計

晶振模塊設計采用內部時鐘方式,利用單片機內部的高增益反相放大器,外部電路簡,只需要一個晶振和 2個電容即可,如圖3.1所示。
圖3.1 時鐘電路
電路中的器件選擇可以通過計算和實驗確定,也可以參考一些典型電路。參數,電路中,電容器C1和C2對震蕩頻率有微調作用,通常的取值范圍是30±10pF,在這個系統中選擇了30pF;石英晶振選擇范圍最高可選24MHz,它決定了單片機電路產生的時鐘信號震蕩頻率,在本系統中選擇的是12MHz,因而時鐘信號的震蕩頻率為12MHz。

復位模塊設計AT89C51單片機在啟動運行時或者出現死機時需要復位,使CPU以及其他功能部件處于一個確定的初始狀態,并從這個狀態開始工作。復位電路產生的復位信號(高電平有效)由RST引腳送入到內部的復位電路,對AT89C51單片機進行復位,要求至少兩個高電平,以便單片機做好準備工作。當上電時,由于電容的電壓不能突變,會輸出高電平,當電容充電到一定程度,就會輸出低電平,單片機利用輸出高電平的這段時間復位。電阻和電容的值選擇要合適。在這要求R1<圖3.3 最小相位系統電路
AT89C51芯片的各引腳功能為:
P0口:8位,漏極開路的雙向I/O口。這組引腳共有8條,P0.0為最低位。這8個引腳有兩種不同的功能,分別適用于不同的情況。
P1口:8位,準雙向I/O口,具有內部上拉電阻。這8個引腳和P0口的8個引腳
類似,P1.7為最高位,P1.0為最低位,當P1口作為通用I/O口使用時,P1.0-P1.7的功能和P0口的第一功能相同,也用于傳送用戶的輸入和輸出數據。
P2口:這組引腳的第一功能與上述兩組引腳的第一功能相同即它可以作為通用I/O口使用,它的第一功能和P0口引腳的第二功能相配合,用于輸出片外存儲器的高8位地址,共同選中片外存儲器單元,但并不是像P0口那樣傳送存儲器的讀/寫數據。
P3口:這組引腳的第一功能和其余三個端口的第一功能相同,第二功能為控制功能,每個引腳并不完全相同,如下表2所示:
ALE/PROG:地址鎖存允許信號,輸出。配合P0口的第二功能使用,在訪問外部存儲器時,89C51的CPU在P0.0-P0.7引腳線去傳送隨后而來的片外存儲器讀/寫數據。在不訪問片外存儲器時,89C51自動在ALE線上輸出頻率為1/6震蕩器頻率的脈沖序列。該脈沖序列可以作為外部時鐘源或定時脈沖使用。
/EA:片外存儲器訪問允許信號,低電平有效。可以控制89C51使用片內ROM或使用片外ROM,若/EA=1,則允許使用片內ROM,若/EA=0,則只使用片外ROM。
/PSEN:片外ROM的選通信號低電平有效。在訪問片外ROM時,89C51自動在/PSEN線上產生一個負脈沖,作為片外ROM芯片的讀選通信號。
RST:復位線,可以使89C51處于復位(即初始化)工作狀態。通常89C51復位有自動上電復位和人工按鍵復位兩種。
XTAL1和XTAL2:片內震蕩電路輸入線,這兩個端子用來外接石英晶體和微調電容,即用來連接89C51片內OSC(震蕩器)的定時反饋回路。
3.2 A/D轉換設計

A/D轉換器是模擬量輸入通道中的一個環節,單片機通過A/D轉換器把輸入模擬量變成數字量再處理。ADC0808是采樣分辨率為8位的、以逐次逼近原理進行模/數轉換的器件。其內部有一個8通道多路開關,它可以根據地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉換。A/D轉換電路如圖3.4所示。
圖3.4 ADC0808 轉換電路
ADC0808芯片有28條引腳,采用雙列直插式封裝,各引腳功能為:
(1) IN0~IN7:8路模擬量輸入端。
(2) D0~D7:8位數字量輸出端口。
(3) START:A/D轉換啟動信號輸入端。
(4) ALE:地址鎖存允許信號,高電平有效。
(5) EOC:輸出允許控制信號,高電平有效。
(6) OE: 輸出允許控制信號,高電平有效。
(7) CLK:時鐘信號輸入端。
(8)ADDA、ADDB、ADDC:轉換通道地址,控制8路模擬通道的切換。ADDA、ADDB、ADDC分別與地址線或數據線相連,三位編碼對應8個通道地址端口,ADDA、ADDB、ADDC=000~111分別對應IN0~IN7通道的地址端口。

使用方法:
ADC0808采用逐次比較的方法完成A/D轉換,由單一的+5V電源供電。片內帶有鎖存功能的8路選1的模擬開關,由ADDA、ADDB、ADDC的編碼來決定所選的通道。ADC0808完成一次轉換需100μs左右,它具有輸出TTL三態鎖存緩沖器,可直接連接到AT89C51的數據總線上。通過適當的外接電路,ADC0808可對0~5V的模擬信號進行轉換。
3.5 顯示電路設計

電壓顯示采用四位共陰極數碼管,這種數碼管可顯示4位值,每位由8個發光二極管(以下簡稱字段)即a、b、c、d、e、f、g、dp字段構成,通過控制不同的LED的亮滅的不同組合可用來顯示數字09及小數點“”。數碼管又分為共陰極和共陽極兩種結構。本次課程設計采用共陰極。
圖3.5 四位數碼管電路

共陰極數碼管0~9的C51編碼為:
  • uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f};
  • uchar code table[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
其中1不帶小數點,2帶小數點。
共陽極就是數碼管的每段都接高電平,這樣要是哪段亮就這段就得接地。
通道選擇顯示采用7SEG-BCD,該數碼管內含譯碼器,外部不需要再配,適用于直接加BCD碼,即直接加四位二進制數,顯示0到F。這個數碼管用于顯示ADC0808的選擇輸入通道。

圖3.6 數碼管電路

3.6 模擬輸入設計
通過可變電阻一端接電源+5v,一端接地GND,通過改變電阻的阻值,從而改變所測電壓值,實現電壓的模擬信號輸入。分別將八個輸入接入ADC0808中IN0到IN7引腳實現八路的輸入電壓。將通過按鍵選擇某一路輸入,實現單路選擇輸出電壓。

圖3.7 模擬輸入電路
3.7 按鍵設計
通過兩個按鍵控制ADC0808的輸入通道同時將通道數傳遞給通道顯示的數碼管。按鍵一的功能為加一,即每按下一次,通道數加一。按鍵二的功能為減一,即每按一下,通道數減一。實現單路選擇顯示電壓。按鍵模型如圖3.8所示。


圖3.8 按鍵電路
要實現按鍵的功能需要知道ADC0808的ADDA、ADDB、ADDC的功能。ADC0808一個8路模擬開關,一個地址鎖存與譯碼器、一個8位A/D轉換器和一個三態輸出鎖存器組成。多路開關可選通8個模擬通道IN0—IN7,允許8路模擬分量輸入,共用A/D轉換器 進行轉換。地址輸入和控制線:4條,ALE為地址鎖存允許輸入線,高電平有效。當ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進行鎖存,經譯碼后被選中的通道的模擬量進轉化器進行轉換。A,B,C為地址輸入線,用于選通IN0—IN7上的一路模擬量輸入。


第4章 系統軟件設計4.1 主程序的設計
由于ADC0808在進行A/D轉換時需要有CLK信號,而此時的ADC0808的CLK是連接在AT89C51單片機的30管腳,也就是要求從30管腳輸出CLK信號供ADC0808使用。因此產生CLK信號的方法就等于從軟件產生。電壓表系統有主程序,A/D轉換子程序、按鍵子程序和顯示子程序。主程序框圖如圖4.1所示。
圖4.1 主程序流程圖
4.2 A/D轉換程序設計
ADC0808對模擬量輸入信號進行轉換通過判斷EOC(P3.2來確定轉換是否完成若EOC為0則繼續等待若EOC為1則把OE置位,將轉換完成。加入按鍵控制,通過按鍵控制ADC0808對輸入電路的選擇,從而實現單路選擇電路電壓滿足設計要求。程序流程圖如4.2所示。
    圖4.2 A/D程序流程圖
其中A/D轉換子程序的C語言代碼如下
sbit START=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
uint data  tvdata;   
void main(void)
{
  ET0=1;
  EA=1;
  TMOD=0x02;
  TH0=216;
  TL0=216;
  TR0=1;
while(1)
  {
   START=1;
   START=0;          //啟動轉換
   while(EOC==0);
   OE=1;
   tvdata=P1;
   tvdata*=20-0.01;
   OE=0;
}
}
4.3 顯示程序設計
系統上電后,配置數碼管個引腳,然后對其進行初始化,再調用的讀寫函數,可將采集處理后的電壓數值實時顯示。其程序流程圖如圖4.3所示。




圖4.3 顯示程序流程圖

其中顯示子程序的C語言代碼如下:
uchar code  tv[]={0xfe,0xfd,0xfb,0xf7};
uchar code  a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void ledxianshi(void)     
{
  uchar k,i;
  if(tvdata>5000)
  tvdata=5000;
  led[0]=tvdata%10;
  led[1]=tvdata/10%10;
  led[2]=tvdata/100%10;
  led[3]=tvdata/1000;
  for(k=0;k<4;k++)
  {
   P2=tv[k];
   i=led[k];
   P0=a[ i];
   if(k==3)
   {
    P07 =1;
              }
   delay();
  }
}
4.4 按鍵程序設計
通過按鍵控制ADC0808選擇的輸入通道。開始之后,進行通道選擇,一個按鍵使通道加1,一個減1,從而選擇輸入,影響輸出。按鍵按下之后,重新進行AD轉換,重新顯示電壓值與通道。
圖4.3 按鍵程序流程圖

其中按鍵子程序的C語言代碼如下:
void xuan( uint a)
{
  if(a==0)
  {
  P37=0;P36=0;P35=0;
  }
  if(a==4)
  {
  P37=0;P36=0;P35=1;
  }
   if(a==2)
  {
  P37=0;P36=1;P35=0;
  }
   if(a==6)
  {
  P37=0;P36=1;P35=1;
  }
   if(a==1)
  {
  P37=1;P36=0;P35=0;
  }
   if(a==5)
  {
  P37=1;P36=0;P35=1;
  }
   if(a==3)
  {
  P37=1;P36=1;P35=0;
  }
   if(a==7)
  {
  P37=1;P36=1;P35=1;
  }
}
              if( KEY2==0)
    {               
                    b--;
                              delay();
                              xuan(b);
                              delay();                                         
                              if(b==0)
                                          b=7;            
              }              
              if( KEY1==0)
    {               
                    b++;delay( );
                                xuan(b);
                              if(b==7)
                                          b=0;               
              }              



第5章 系統仿真與調試
使用Proteus繪制原理圖,然后將Keil生成的hex程序文件載入到單片機中,點擊運行:
按下按鍵,選擇IN5即通道5時,仿真與如圖5.1所示。

圖5.1 通道5仿真圖
如圖所示,通過按鍵選擇通道五實現顯示單路電壓,數碼管顯示數字5。測量電壓為2.038V,實際電壓為2.03V,誤差小于0.01,滿足設計要求。
為確定結果的準確性,需要多次測量對比。

按下按鍵,選擇IN7即通道7時,仿真與如圖5.2所示。
圖5.2 通道7仿真圖
如圖所示,測量電壓為0.919V,實際電壓為0.92V,誤差小于0.01,滿足設計要求,且可通過按鍵選擇通道七實現顯示單路電壓,數碼管顯示數字7。
仿真結果分析:輸入的電壓從0~5V變化時,數字電壓表能夠測量出并利用數碼管顯示出來。測量的精度與要求的一致,前兩位精確,百分位不作精確。要更精確,只需修改相應的源程序代碼即可。
第6章 總結
本系統由單片機系統、A/D轉化電路、LCD顯示和按鍵系統組成。數字電壓表能完成測量0~5V的8路輸入電壓值并且通過按鍵控制可以使LED數碼管單路選擇顯示電壓值的功能。本系統利用單片機控制,LCD顯示,按鍵配合,系統成本低廉,功能強大實用。
本文設計的基于AT89C51的數字電壓表具有簡單的軟硬件設計電路、低廉的開發成本、簡便的操作方法,在實際應用工作應能好,測量電壓準確,精度高。并通過Proteus仿真實現了預期的功能,實現八路輸入電壓單路選擇輸入顯示電路電壓值,且可以滿足現在的誤差要求最小分辨率為0.01V,測量誤差約為±0.01V。。
但是設計數字電壓表需要結合實際綜合考慮很多因素,因此該數字電壓表設計需要在實際中進一步完善和改進。 要想在現實生活中推廣,還必須針對實際應用場合的需要,進一步完善系統功能的程序具有一定的推廣價值。
                                          



附錄I:整體電路原理圖
附錄II:元器件清單
序號
標號
元器件名稱
元器件參數
1
U1
單片機
AT89C51
2
U2
A/D轉化器
ADC0808
3
RV0-RV7
滑動變阻器
1K
4
R1-R10
電阻
10K
5
LED1
四位數碼管
7SEG-MPX4-CC
6
LED2
一位數碼管
7SEG-BCD
7
C1、C2
電容
33pF
8
C3
電容
1uF
9
KEY1-KEY3
按鍵
6*6*5


以上文檔下載(word格式 可編輯):
數字電壓表的設計.doc (736.36 KB, 下載次數: 158)




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏13 分享淘帖 頂3 踩
回復

使用道具 舉報

沙發
ID:142559 發表于 2017-7-25 20:46 | 只看該作者
沒程序吧!
回復

使用道具 舉報

板凳
ID:142559 發表于 2017-7-25 20:47 | 只看該作者
沒有程序嗎?
回復

使用道具 舉報

無效樓層,該帖已經被刪除
5#
ID:438003 發表于 2018-12-3 17:08 來自觸屏版 | 只看該作者
找了好久,感謝分享
回復

使用道具 舉報

6#
ID:439838 發表于 2018-12-5 11:07 | 只看該作者
謝謝分享.
回復

使用道具 舉報

7#
無效樓層,該帖已經被刪除
8#
無效樓層,該帖已經被刪除
9#
無效樓層,該帖已經被刪除
10#
ID:542201 發表于 2020-6-12 15:53 | 只看該作者
感謝分享
回復

使用道具 舉報

11#
ID:794233 發表于 2020-7-7 20:38 | 只看該作者
文件里面什么都沒有
回復

使用道具 舉報

12#
ID:234560 發表于 2020-7-10 16:40 | 只看該作者
有個問題:
既然是電壓表,那被測電壓就有超出預期的可能,不做過壓保護OVP,不是容易燒掉?
回復

使用道具 舉報

13#
無效樓層,該帖已經被刪除
14#
無效樓層,該帖已經被刪除
15#
ID:65956 發表于 2021-11-25 08:28 | 只看該作者
8位ADC測電壓是不可能作到分辨率0.01V的,5/256你算算分辨率是多少
回復

使用道具 舉報

16#
ID:72088 發表于 2021-11-25 10:47 | 只看該作者
aking991 發表于 2021-11-25 08:28
8位ADC測電壓是不可能作到分辨率0.01V的,5/256你算算分辨率是多少

對,12位的ADC才能做到完整的0.001V分辨率,他這個只能做到0.05
回復

使用道具 舉報

17#
ID:937525 發表于 2021-11-27 15:43 | 只看該作者
感謝分享!想求一下程序和仿真QAQ
回復

使用道具 舉報

18#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表