第1章 緒論1.1系統(tǒng)的開發(fā)背景在電量的測量中,電壓、電流和頻率是最基本的三個被測量,其中電壓量的測量最為經(jīng)常。而且隨著電子技術(shù)的發(fā)展,更是經(jīng)常需要測量高精度的電壓,所以數(shù)字電壓表就成為一種必不可少的測量儀器。數(shù)字電壓表簡稱DVM,它是采用數(shù)字化測量技術(shù),把連續(xù)的模擬量轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。由于數(shù)字式儀器具有讀數(shù)準確方便、精度高、誤差小、測量速度快等特而得到廣泛應用。
傳統(tǒng)的指針式刻度電壓表功能單一,進度低,容易引起視差和視覺疲勞,因而不能滿足數(shù)字化時代的需要。采用單片機的數(shù)字電壓表,將連續(xù)的模擬量如直流電壓轉(zhuǎn)換成不連續(xù)的離散的數(shù)字形式并加以顯示,從而精度高、抗干擾能力強,可擴展性強、集成方便,還可與PC實時通信。數(shù)字電壓表是諸多數(shù)字化儀表的核心與基礎。以數(shù)字電壓表為核心,可以擴展成各種通用數(shù)字儀表、專用數(shù)字儀表及各種非電量的數(shù)字化儀表。目前,由各種單片機和A/D轉(zhuǎn)換器構(gòu)成的數(shù)字電壓表作全面深入的了解是很有必要的。
最近的幾十年來,隨著半導體技術(shù)、集成電路(IC)和微處理器技術(shù)的發(fā)展,數(shù)字電路和數(shù)字化測量技術(shù)也有了巨大的進步,從而促使了數(shù)字電壓表的快速發(fā)展,并不斷出現(xiàn)新的類型。數(shù)字電壓表從1952年問世以來,經(jīng)歷了不斷改進的過程,從最早采用繼電器、電子管和形式發(fā)展到了現(xiàn)在的全固態(tài)化、集成化(IC化),另一方面,精度也從0.01%-0.005%。
目前,數(shù)字電壓表的內(nèi)部核心部件是A/D轉(zhuǎn)換器,轉(zhuǎn)換的精度很大程度上影響著數(shù)字電壓表的準確度,因而,以后數(shù)字電壓表的發(fā)展就著眼在高精度和低成本這兩個方面。
1.2 本文研究對象本文是以簡易數(shù)字直流電壓表的設計為研究內(nèi)容,本系統(tǒng)主要包括三大模塊:轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示模塊。其中,A/D轉(zhuǎn)換采用ADC0808對輸入的模擬信號進行轉(zhuǎn)換,控制核心AT89C51再對轉(zhuǎn)換的結(jié)果進行運算處理,最后驅(qū)動輸出裝置LED顯示數(shù)字電壓信號。
第2章 方案設計與論證2.1設計方案與論證數(shù)字電壓表的設計方案很多,但采用集成電路來設計較流行。其設計主要是由模擬電路和數(shù)字電路兩大部分組成,模擬部分包括A/D轉(zhuǎn)換器,基準電源等;數(shù)字部分包括振蕩器,數(shù)碼顯示,計數(shù)器等。其中,A/D轉(zhuǎn)換器將輸入的模擬量轉(zhuǎn)換成數(shù)字量,它是數(shù)字電壓表的一個核心部件,對它的選擇一般三種選擇方案:
方案一、采用雙積分A/D轉(zhuǎn)換器MC14433,它有多路調(diào)制的BCD碼輸出端和超量程輸出端,采用動態(tài)掃描顯示,便于實現(xiàn)自動控制。但芯片只能完成A/D轉(zhuǎn)換功能,要實現(xiàn)顯示功能還需配合其它驅(qū)動芯片等,使得整部分硬件電路板布線復雜,加重了電路設計和實際焊接的工作。
方案二、 A/D轉(zhuǎn)換器采用ICL7107型三位半顯示的芯片,輸入信號,流經(jīng)取樣電路取樣后送到ICL7107型三位半A/D轉(zhuǎn)換器,只需要很少的簡單外圍元件,就可組成數(shù)字電流表模塊,直接驅(qū)動三位半LED顯示器顯示,最后輸入電流在顯示部分顯示。由于ICL7107做的LED數(shù)字表,最大的缺點就是數(shù)字亂跳不穩(wěn)定,特別最后一位。接口模塊:使用數(shù)字電路實現(xiàn),采用譯碼芯片CD4543作為接口芯片,這種方案能實現(xiàn)功能,但穩(wěn)定性不高,結(jié)構(gòu)復雜。
方案三、逐次逼近式A/D轉(zhuǎn)換器。它的轉(zhuǎn)換速度更快,而且精度更高,采用ADC0808轉(zhuǎn)換芯片,其中A/D轉(zhuǎn)換器用于實現(xiàn)模擬量向數(shù)字量的轉(zhuǎn)換,單電源供電。它是具有8路模擬量輸入、8位數(shù)字量輸出功能的A/D轉(zhuǎn)換器,轉(zhuǎn)換時間為100μs,模擬輸入電壓范圍為0V~5V,不需零點和滿刻度校準,功耗低,約15mW。 由于模擬轉(zhuǎn)換電路的種類很多,通過對轉(zhuǎn)換速度,精度和價格方面考慮。
綜上所述選擇方案三。采用ADC0808為本次設計的轉(zhuǎn)換芯片。單片機模塊采用AT89S51單片機作為系統(tǒng)的控制單元,通過A/D轉(zhuǎn)換將被測值轉(zhuǎn)換為數(shù)字量送入單片機中,再由單片機來送顯。此方案各類功能易于實現(xiàn),成本低、功耗低,顯示穩(wěn)定。
顯示部分可以采用各類數(shù)碼管或用LED顯示器顯示。在此簡化采用4位八段共陰極數(shù)碼管對A/D轉(zhuǎn)換變換后的結(jié)果加以顯示。
2.2 系統(tǒng)設計要求設計一個數(shù)字電壓表,基于單片機或數(shù)字邏輯電路,設計A/D轉(zhuǎn)化電路、密碼校驗電路和控制輸出與顯示電路,實現(xiàn)用戶按鍵輸入密碼開鎖功能。
1、以單片機為控制核心設計數(shù)字電壓表;
2、可以測量0~5V的8路輸入電壓值;
3、LED數(shù)碼管輪流顯示或單路選擇顯示電壓值;
4、最小分辨率為0.01V,測量誤差約為±0.01V。
2.3總體設計框圖本設計采用以AT89C51單片機控制方案。 利用單片機靈活的編程設計和豐富的IO端口,及其控制的準確性。系統(tǒng)結(jié)構(gòu)框圖如圖2.1所示。
1.001.jpg (17.52 KB, 下載次數(shù): 83)
下載附件
2017-7-1 18:00 上傳
圖2.1系統(tǒng)結(jié)構(gòu)框圖
1.006.jpg (30.7 KB, 下載次數(shù): 75)
下載附件
2017-7-1 18:00 上傳
第3章 單元電路設計3.1最小系統(tǒng)設計
1.002.jpg (7.02 KB, 下載次數(shù): 99)
下載附件
2017-7-1 18:00 上傳
晶振模塊設計采用內(nèi)部時鐘方式,利用單片機內(nèi)部的高增益反相放大器,外部電路簡,只需要一個晶振和 2個電容即可,如圖3.1所示。
圖3.1 時鐘電路
電路中的器件選擇可以通過計算和實驗確定,也可以參考一些典型電路。參數(shù),電路中,電容器C1和C2對震蕩頻率有微調(diào)作用,通常的取值范圍是30±10pF,在這個系統(tǒng)中選擇了30pF;石英晶振選擇范圍最高可選24MHz,它決定了單片機電路產(chǎn)生的時鐘信號震蕩頻率,在本系統(tǒng)中選擇的是12MHz,因而時鐘信號的震蕩頻率為12MHz。
1.003.jpg (9.18 KB, 下載次數(shù): 112)
下載附件
2017-7-1 18:00 上傳
復位模塊設計AT89C51單片機在啟動運行時或者出現(xiàn)死機時需要復位,使CPU以及其他功能部件處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。復位電路產(chǎn)生的復位信號(高電平有效)由RST引腳送入到內(nèi)部的復位電路,對AT89C51單片機進行復位,要求至少兩個高電平,以便單片機做好準備工作。當上電時,由于電容的電壓不能突變,會輸出高電平,當電容充電到一定程度,就會輸出低電平,單片機利用輸出高電平的這段時間復位。電阻和電容的值選擇要合適。在這要求R1<圖3.3 最小相位系統(tǒng)電路
AT89C51芯片的各引腳功能為:
P0口:8位,漏極開路的雙向I/O口。這組引腳共有8條,P0.0為最低位。這8個引腳有兩種不同的功能,分別適用于不同的情況。
P1口:8位,準雙向I/O口,具有內(nèi)部上拉電阻。這8個引腳和P0口的8個引腳
類似,P1.7為最高位,P1.0為最低位,當P1口作為通用I/O口使用時,P1.0-P1.7的功能和P0口的第一功能相同,也用于傳送用戶的輸入和輸出數(shù)據(jù)。
P2口:這組引腳的第一功能與上述兩組引腳的第一功能相同即它可以作為通用I/O口使用,它的第一功能和P0口引腳的第二功能相配合,用于輸出片外存儲器的高8位地址,共同選中片外存儲器單元,但并不是像P0口那樣傳送存儲器的讀/寫數(shù)據(jù)。
P3口:這組引腳的第一功能和其余三個端口的第一功能相同,第二功能為控制功能,每個引腳并不完全相同,如下表2所示:
ALE/PROG:地址鎖存允許信號,輸出。配合P0口的第二功能使用,在訪問外部存儲器時,89C51的CPU在P0.0-P0.7引腳線去傳送隨后而來的片外存儲器讀/寫數(shù)據(jù)。在不訪問片外存儲器時,89C51自動在ALE線上輸出頻率為1/6震蕩器頻率的脈沖序列。該脈沖序列可以作為外部時鐘源或定時脈沖使用。
/EA:片外存儲器訪問允許信號,低電平有效。可以控制89C51使用片內(nèi)ROM或使用片外ROM,若/EA=1,則允許使用片內(nèi)ROM,若/EA=0,則只使用片外ROM。
/PSEN:片外ROM的選通信號低電平有效。在訪問片外ROM時,89C51自動在/PSEN線上產(chǎn)生一個負脈沖,作為片外ROM芯片的讀選通信號。
RST:復位線,可以使89C51處于復位(即初始化)工作狀態(tài)。通常89C51復位有自動上電復位和人工按鍵復位兩種。
XTAL1和XTAL2:片內(nèi)震蕩電路輸入線,這兩個端子用來外接石英晶體和微調(diào)電容,即用來連接89C51片內(nèi)OSC(震蕩器)的定時反饋回路。
3.2 A/D轉(zhuǎn)換設計
1.007.jpg (21.5 KB, 下載次數(shù): 90)
下載附件
2017-7-1 18:00 上傳
A/D轉(zhuǎn)換器是模擬量輸入通道中的一個環(huán)節(jié),單片機通過A/D轉(zhuǎn)換器把輸入模擬量變成數(shù)字量再處理。ADC0808是采樣分辨率為8位的、以逐次逼近原理進行模/數(shù)轉(zhuǎn)換的器件。其內(nèi)部有一個8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉(zhuǎn)換。A/D轉(zhuǎn)換電路如圖3.4所示。
圖3.4 ADC0808 轉(zhuǎn)換電路
ADC0808芯片有28條引腳,采用雙列直插式封裝,各引腳功能為:
(1) IN0~IN7:8路模擬量輸入端。
(2) D0~D7:8位數(shù)字量輸出端口。
(3) START:A/D轉(zhuǎn)換啟動信號輸入端。
(4) ALE:地址鎖存允許信號,高電平有效。
(5) EOC:輸出允許控制信號,高電平有效。
(6) OE: 輸出允許控制信號,高電平有效。
(7) CLK:時鐘信號輸入端。
(8)ADDA、ADDB、ADDC:轉(zhuǎn)換通道地址,控制8路模擬通道的切換。ADDA、ADDB、ADDC分別與地址線或數(shù)據(jù)線相連,三位編碼對應8個通道地址端口,ADDA、ADDB、ADDC=000~111分別對應IN0~IN7通道的地址端口。
使用方法:
ADC0808采用逐次比較的方法完成A/D轉(zhuǎn)換,由單一的+5V電源供電。片內(nèi)帶有鎖存功能的8路選1的模擬開關(guān),由ADDA、ADDB、ADDC的編碼來決定所選的通道。ADC0808完成一次轉(zhuǎn)換需100μs左右,它具有輸出TTL三態(tài)鎖存緩沖器,可直接連接到AT89C51的數(shù)據(jù)總線上。通過適當?shù)耐饨与娐罚珹DC0808可對0~5V的模擬信號進行轉(zhuǎn)換。
3.5 顯示電路設計
1.008.jpg (10.27 KB, 下載次數(shù): 92)
下載附件
2017-7-1 18:00 上傳
電壓顯示采用四位共陰極數(shù)碼管,這種數(shù)碼管可顯示4位值,每位由8個發(fā)光二極管(以下簡稱字段)即a、b、c、d、e、f、g、dp字段構(gòu)成,通過控制不同的LED的亮滅的不同組合可用來顯示數(shù)字09及小數(shù)點“”。數(shù)碼管又分為共陰極和共陽極兩種結(jié)構(gòu)。本次課程設計采用共陰極。
圖3.5 四位數(shù)碼管電路
共陰極數(shù)碼管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不帶小數(shù)點,2帶小數(shù)點。
共陽極就是數(shù)碼管的每段都接高電平,這樣要是哪段亮就這段就得接地。
通道選擇顯示采用7SEG-BCD,該數(shù)碼管內(nèi)含譯碼器,外部不需要再配,適用于直接加BCD碼,即直接加四位二進制數(shù),顯示0到F。這個數(shù)碼管用于顯示ADC0808的選擇輸入通道。
1.009.jpg (4.44 KB, 下載次數(shù): 104)
下載附件
2017-7-1 18:00 上傳
圖3.6 數(shù)碼管電路
3.6 模擬輸入設計通過可變電阻一端接電源+5v,一端接地GND,通過改變電阻的阻值,從而改變所測電壓值,實現(xiàn)電壓的模擬信號輸入。分別將八個輸入接入ADC0808中IN0到IN7引腳實現(xiàn)八路的輸入電壓。將通過按鍵選擇某一路輸入,實現(xiàn)單路選擇輸出電壓。
1.010.jpg (15.06 KB, 下載次數(shù): 118)
下載附件
2017-7-1 18:00 上傳
圖3.7 模擬輸入電路
3.7 按鍵設計通過兩個按鍵控制ADC0808的輸入通道同時將通道數(shù)傳遞給通道顯示的數(shù)碼管。按鍵一的功能為加一,即每按下一次,通道數(shù)加一。按鍵二的功能為減一,即每按一下,通道數(shù)減一。實現(xiàn)單路選擇顯示電壓。按鍵模型如圖3.8所示。
1.011.jpg (4.9 KB, 下載次數(shù): 100)
下載附件
2017-7-1 18:00 上傳
圖3.8 按鍵電路
要實現(xiàn)按鍵的功能需要知道ADC0808的ADDA、ADDB、ADDC的功能。ADC0808一個8路模擬開關(guān),一個地址鎖存與譯碼器、一個8位A/D轉(zhuǎn)換器和一個三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個模擬通道IN0—IN7,允許8路模擬分量輸入,共用A/D轉(zhuǎn)換器 進行轉(zhuǎn)換。地址輸入和控制線:4條,ALE為地址鎖存允許輸入線,高電平有效。當ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進行鎖存,經(jīng)譯碼后被選中的通道的模擬量進轉(zhuǎn)化器進行轉(zhuǎn)換。A,B,C為地址輸入線,用于選通IN0—IN7上的一路模擬量輸入。
第4章 系統(tǒng)軟件設計4.1 主程序的設計由于ADC0808在進行A/D轉(zhuǎn)換時需要有CLK信號,而此時的ADC0808的CLK是連接在AT89C51單片機的30管腳,也就是要求從30管腳輸出CLK信號供ADC0808使用。因此產(chǎn)生CLK信號的方法就等于從軟件產(chǎn)生。電壓表系統(tǒng)有主程序,A/D轉(zhuǎn)換子程序、按鍵子程序和顯示子程序。主程序框圖如圖4.1所示。
1.012.jpg (14.05 KB, 下載次數(shù): 104)
下載附件
2017-7-1 18:00 上傳
圖4.1 主程序流程圖
4.2 A/D轉(zhuǎn)換程序設計ADC0808對模擬量輸入信號進行轉(zhuǎn)換通過判斷EOC(P3.2來確定轉(zhuǎn)換是否完成若EOC為0則繼續(xù)等待若EOC為1則把OE置位,將轉(zhuǎn)換完成。加入按鍵控制,通過按鍵控制ADC0808對輸入電路的選擇,從而實現(xiàn)單路選擇電路電壓滿足設計要求。程序流程圖如4.2所示。
1.013.jpg (17.3 KB, 下載次數(shù): 83)
下載附件
2017-7-1 18:00 上傳
圖4.2 A/D程序流程圖
其中A/D轉(zhuǎn)換子程序的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; //啟動轉(zhuǎn)換
while(EOC==0);
OE=1;
tvdata=P1;
tvdata*=20-0.01;
OE=0;
}
}
4.3 顯示程序設計系統(tǒng)上電后,配置數(shù)碼管個引腳,然后對其進行初始化,再調(diào)用的讀寫函數(shù),可將采集處理后的電壓數(shù)值實時顯示。其程序流程圖如圖4.3所示。
1.014.jpg (18.62 KB, 下載次數(shù): 69)
下載附件
2017-7-1 18:00 上傳
圖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轉(zhuǎn)換,重新顯示電壓值與通道。
1.017.jpg (20.67 KB, 下載次數(shù): 82)
下載附件
2017-7-1 18:00 上傳
圖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章 系統(tǒng)仿真與調(diào)試使用Proteus繪制原理圖,然后將Keil生成的hex程序文件載入到單片機中,點擊運行:
按下按鍵,選擇IN5即通道5時,仿真與如圖5.1所示。
1.018.jpg (52.77 KB, 下載次數(shù): 128)
下載附件
2017-7-1 18:00 上傳
圖5.1 通道5仿真圖
如圖所示,通過按鍵選擇通道五實現(xiàn)顯示單路電壓,數(shù)碼管顯示數(shù)字5。測量電壓為2.038V,實際電壓為2.03V,誤差小于0.01,滿足設計要求。
為確定結(jié)果的準確性,需要多次測量對比。
1.019.jpg (49.28 KB, 下載次數(shù): 120)
下載附件
2017-7-1 18:00 上傳
按下按鍵,選擇IN7即通道7時,仿真與如圖5.2所示。 圖5.2 通道7仿真圖
如圖所示,測量電壓為0.919V,實際電壓為0.92V,誤差小于0.01,滿足設計要求,且可通過按鍵選擇通道七實現(xiàn)顯示單路電壓,數(shù)碼管顯示數(shù)字7。
仿真結(jié)果分析:輸入的電壓從0~5V變化時,數(shù)字電壓表能夠測量出并利用數(shù)碼管顯示出來。測量的精度與要求的一致,前兩位精確,百分位不作精確。要更精確,只需修改相應的源程序代碼即可。
第6章 總結(jié)本系統(tǒng)由單片機系統(tǒng)、A/D轉(zhuǎn)化電路、LCD顯示和按鍵系統(tǒng)組成。數(shù)字電壓表能完成測量0~5V的8路輸入電壓值并且通過按鍵控制可以使LED數(shù)碼管單路選擇顯示電壓值的功能。本系統(tǒng)利用單片機控制,LCD顯示,按鍵配合,系統(tǒng)成本低廉,功能強大實用。
本文設計的基于AT89C51的數(shù)字電壓表具有簡單的軟硬件設計電路、低廉的開發(fā)成本、簡便的操作方法,在實際應用工作應能好,測量電壓準確,精度高。并通過Proteus仿真實現(xiàn)了預期的功能,實現(xiàn)八路輸入電壓單路選擇輸入顯示電路電壓值,且可以滿足現(xiàn)在的誤差要求最小分辨率為0.01V,測量誤差約為±0.01V。。
但是設計數(shù)字電壓表需要結(jié)合實際綜合考慮很多因素,因此該數(shù)字電壓表設計需要在實際中進一步完善和改進。 要想在現(xiàn)實生活中推廣,還必須針對實際應用場合的需要,進一步完善系統(tǒng)功能的程序具有一定的推廣價值。
1.020.jpg (61.87 KB, 下載次數(shù): 107)
下載附件
2017-7-1 18:00 上傳
附錄I:整體電路原理圖 附錄II:元器件清單
以上文檔下載(word格式 可編輯):
數(shù)字電壓表的設計.doc
(736.36 KB, 下載次數(shù): 158)
2017-7-1 17:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5