基于stc89c52單片機的數(shù)字電壓表
設計報告
一、設計題目
二、設計內容與要求
三、設計目的意義
四、系統(tǒng)硬件電路圖
五、程序流程圖與源程序
六、系統(tǒng)功能分析與說明
七、設計體會
八、參考文獻
基于STC89C52的簡易數(shù)字電壓表的設計
摘要:本課題是利用單片機設計一個數(shù)字電壓表,能夠測量0-5V之間的直流電壓值,四位數(shù)碼管顯示,使用的元器件數(shù)目較少。外界電壓模擬量輸入到A/D轉換部分的輸入端,通過ADC0809轉換變?yōu)?a target="_blank">數(shù)字信號,輸送給單片機。然后由單片機給數(shù)碼管數(shù)字信號,控制其發(fā)光,從而顯示數(shù)字。此外,本文還討論了設計過程中的所用的軟件硬件環(huán)境,調試所出現(xiàn)的問題等。
關鍵詞:單片機; STC89C52;數(shù)字電壓表; ADC0809,四位數(shù)碼管
一、設計題目
基于STC89C52的簡易數(shù)字電壓表的設計。
二、設計內容與要求
用STC89C52單片機和ADC0809組成一個數(shù)字電壓表,要求能夠測量0~5V的直流電壓值,并用四位數(shù)碼管顯示,并要求所用元器件最少。
三、設計目的意義
1.通過親身的設計應用電路,將所用的理論知識應用到實踐中,增強實踐動手能力,進而促進理論知識的強化。
2.通過數(shù)字電壓表的設計系統(tǒng)掌握51單片機的應用。掌握A/D轉換的原理及軟件編程及硬件設計的方法,掌握根據(jù)課題的要求,提出選擇設計方案,查找所需元器,設計并搭建硬件電路,編程寫入EPROM并進行調試等。
四、系統(tǒng)硬件電路圖
4.1 系統(tǒng)原理框圖
選擇STC89C52作為單片機芯片,選用四位8段共陽極LED數(shù)碼管實現(xiàn)電壓顯示,利用ADC0809作為數(shù)模轉換芯片。將數(shù)據(jù)采集接口電路輸入電壓傳入ADC0809數(shù)模轉換元件,經(jīng)轉換后通過D0至D7與單片機P1口連接,把轉換完的模擬信號以數(shù)字信號的信號的形式傳給單片機,信號經(jīng)過單片機處理從LED數(shù)碼顯示管顯示。P2口接數(shù)碼管位選,P0接數(shù)碼管段選,實現(xiàn)數(shù)據(jù)的動態(tài)顯示,如圖4.1所示。
? ? ? ? 4.2 STC89C52的結構
在本次課題設計中我們選擇了STC89C52芯片。STC89C52是一種帶8K字節(jié)閃爍可編程可檫除只讀存儲器(FPEROM-Flash Programable and Erasable Read Only Memory )的低電壓,高性能COMOS8的微處理器,俗稱單片機。該器件采用ATMEL搞密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。
4.2.1 STC89C52內部結構概述
主要功能特性
兼容MCS51指令系統(tǒng)8K可反復擦寫Flash ROM
32個雙向I/O口256x8bit內部RAM
3個16位可編程定時/計數(shù)器中斷時鐘頻率0-24MHz
2個串行中斷可編程UART串行通道
2個外部中斷源共6個中斷源
2個讀寫中斷口線3級加密位
低功耗空閑和掉電模式軟件設置睡眠和喚醒功能
4.2.2 CPU結構
CPU 是單片機的核心部件。它由運算器和控制器等部件組成。
1. 運算器
運算器以完成二進制的算術/邏輯運算部件ALU為核心。它可以對半字節(jié)(4)、單字節(jié)等數(shù)據(jù)進行操作。例如,能完成加、減、乘、除、加1、減1、BCD碼十進制調整、比較等算術運算,完成與、或、異或、求反、循環(huán)等邏操作,操作結果的狀態(tài)信息送至狀態(tài)寄存器。
運算器還包含有一個布爾處理器,用以處理位操作。它以進位標志位C為累加器,可執(zhí)行置位、復位、取反、位判斷轉移,可在進位標志位與其他可位尋址的位之間進行位數(shù)據(jù)傳誦等操作,還可以完成進位標志位與其他可位尋址的位之間進行邏輯與、或操作。
2.程序計數(shù)器PC
PC是一個16位的計數(shù)器,用于存放一條要執(zhí)行的指令地址,尋址范圍為64kB,PC有自動加1功能,即完成了一條指令的執(zhí)行后,其內容自動加1。
3.指令寄存器
指令寄存器用于存放指令代碼。CPU執(zhí)行指令時,由程序存儲器中讀取的指令代碼送如指令寄存器,經(jīng)指令譯碼器譯碼后由定時有控制電路發(fā)出相應的控制信號,完成指令功能。
4.2.3 存儲器和特殊功能寄存器
1. 存儲器(Memory)是計算機系統(tǒng)中的記憶設備,用來存放程序和數(shù)據(jù)。計算機中的全部信息,包括輸入的原始數(shù)據(jù)、計算機程序、中間運行結果和最終運行結果都保存在存儲器中。它根據(jù)控制器指定的位置存入和取出信息。
2.特殊功能寄存器
特殊功能寄存器(SFR)的地址范圍為80H~FFH。在MCS-51中,除程序計數(shù)器PC和四個工作寄存器區(qū)外,其余21個特殊功能寄存器都在這SFR塊中。其中5個是雙字節(jié)寄存器,它們共占用了26個字節(jié)。各特殊功能寄存器的符號和地址見附表2。其中帶*號的可位尋址。特殊功能寄存器反映了8051的狀態(tài),實際上是8051的狀態(tài)字及控制字寄存器。用于CPU PSW便是典型一例。這些特殊功能寄存器大體上分為兩類,一類與芯片的引腳有關,另一類作片內功能的控制用。與芯片引腳有關的特殊功能寄存器是P0~P3,它們實際上是4個八位鎖存器(每個I/O口一個),每個鎖存器附加有相應的輸出驅動器和輸入緩沖器就構成了一個并行口。MCS-51共有P0~P3四個這樣的并行口,可提供32根I/O線,每根線都是雙向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加器A、標志寄存器PSW、數(shù)據(jù)指針DPTR等的功能前已提及。
4.2.4 P0-P3口結構
P0口功能 :P0口具有兩種功能:第一,P0口可以作為通用I/O接口使用,P0.7—P0.0用于傳送CPU的輸入/輸出數(shù)據(jù)。輸出數(shù)據(jù)時可以得到鎖存,不需外接專用鎖存器,輸入數(shù)據(jù)可以得到緩沖。第二,P0.7—P0.0在CPU訪問片外存儲器時用于傳送片外存儲器de低8位地址,然后傳送CPU對片外存儲器的讀寫
P1口 功能 :P1口的功能和P0口de第一功能相同,僅用于傳遞I/O輸入/輸出數(shù)據(jù)。
P2口的功能 :P2口的第一功能和上述兩組引腳的第一功能相同,即它可以作為通用I/O使用。它的第二功能和P0口引腳的第二功能相配合,作為地址總線用于輸出片外存儲器的高8位地址。
P3口功能 :P3口有兩個功能:第一功能與其余三個端口的第一功能相同;第二功能作控制用,每個引腳都不同。
表4.1 P3口第二功能
引腳名稱功能
P3.0RXD串行數(shù)據(jù)接收口
P3.1TXD串行數(shù)據(jù)發(fā)送口
P3.2INT0外中斷0輸入
P3.3INT1外中斷1輸入
P3.4T0計數(shù)器0計數(shù)輸入
P3.5T1計數(shù)器1計數(shù)輸入
P3.6WR外部RAM寫選通信號
P3.7RD外部RAM讀選通信號
4.2.5 時鐘電路和復位電路
1.時鐘電路
單片機的時鐘一般需要多相時鐘,所以時鐘電路由振蕩器和分頻器組成。
MCS-51內部有一個用于構成振蕩器的可控高增益反向放大器。兩個引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。在片外跨接一晶振和兩個匹配電容C1、C2如圖2.5所示。就構成一個自激振蕩器。振蕩頻率根據(jù)實際要求的工作速度,從幾百千赫至24MHz可適當選取某一頻率。匹配電容C1、C2要根據(jù)石英晶體振蕩器的要求選取。
當晶振頻率為12MHz時,C1C2一般選30pF左右。圖2.5中PD是電源控制寄存器PCON.1的掉電方式位,正常工作方式PD=0。當PD=1時單片機進入掉電工作方式,是一種節(jié)能工作方式。上述電路是靠MCS-51單片機內部電路產(chǎn)生振蕩的。也可以由外部振蕩器或時鐘直接驅動MCS-51。
2.復位電路
復位是單片機的初始化操作。其功能主要是將程序計數(shù)器(PC)初始化為0000H,使單片機從0000H單元開始執(zhí)行程序,并將特殊功能寄存器賦一些特定值。復位是使單片機退出低功耗工作方式而進入正常狀態(tài)一種操作。復位是上電的第一個操作,然后程序從0000H開始執(zhí)行。在運行中,外界干擾等因素可能會使單片機的程序陷入死循環(huán)狀態(tài)或“跑飛”。要使其進入正常狀態(tài),唯一辦法是將單片機復位,以重新啟動。
復位后,程序計數(shù)器(PC)及各特殊功能寄存器(SFR)的值如表4.2所示。
表4.2 程序計數(shù)器及各特殊功能寄存器的復位值
寄存器復位狀態(tài)寄存器復位狀態(tài)
PC0000HTH100H
ACC00HP0~P3FFH
PSW00HIPxx000000B
SP07HIE0xx00000B
DPTR0000HTMOD00H
TCON00HSCON00H
TL000HSBUF不定
TH000HPCON0xxx0000B
TL100H
RST引腳是復位端,高電平有效。在該引腳輸入至少連續(xù)兩個機器周期以上的高電平,單片機復位。RST引腳內部有一個斯密特ST觸發(fā)器(圖2.10)以對輸入信號整形,保證內部復位電路的可靠,所以外部輸入信號不一定要求是數(shù)字波形。使用時,一般在此引腳與VSS引腳之間接一個8.2kΩ的下拉電阻,與VCC引腳之間接一個約10μF的電解電容,即可保證上電自動復位。
上電或手動復位要求電源接通后,單片機自動復位,并且在單片機運行期間,用開關操作也能使單片機復位。上電后,由于電容C3的充電和反相門的作用,使RST持續(xù)一段時間的高電平。當單片機已在運行當中時,按下復位鍵K后松開,也能使RST為一段時間的高電平,從而實現(xiàn)上電或手動復位的操作。
4.3器件的比較與選擇
4.3.1顯示器
本次設計中有顯示模塊,而常用的顯示器件比較多,有數(shù)碼管,LED點陣,1602液晶,12864液晶等。
1. 數(shù)碼管是最常用的一種顯示器件,它是由幾個發(fā)光二極管組成的8字段顯示器件,其特點是價格非常的便宜,使用也非常的方便,顯示效果非常的清楚。小電流下可以驅動每光,發(fā)光響應時間極短,體積小,重量輕,抗沖擊性能好,壽命長。但數(shù)碼管只能是顯示0——9的數(shù)據(jù)。不能夠顯示字符。這也是數(shù)碼管的不足之處。
2. LED點陣顯示器件是由好多個發(fā)光二極管組成的。具有高亮度,功耗低,視角大,壽命長,耐濕,冷,熱等特點,LED點陣顯示器件可以顯示數(shù)字,英文字符,中文字符等。
3. 1602液晶是工業(yè)字符型液晶,能夠同時顯示16*2即32個字符。1602液晶模塊內部的字符發(fā)生存儲器已經(jīng)存儲了160個不同的點陣字符圖形,這些字這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼。使用時直接編寫軟件程序按一定的時序驅動即可。它的特點是顯示字跡清楚,價格相對便宜。
4. 12864液晶也是一種工業(yè)字符型液晶,它不僅能夠顯示1602液晶所可以顯示的字符,數(shù)字等信息,而且還可以顯示8*4個中文漢字和一些簡單的圖片,顯示信息也非常的清楚。使用時也直接編寫軟件程序按一定的時序驅動即可。不過它的價格比1602液晶貴了很多。
綜合上述,根據(jù)本設計的要求和價格的考慮,選擇數(shù)碼管顯示器。
單位數(shù)碼管如圖4.4所示,四位共陽極數(shù)碼管如圖4.5所示。
?
4.3.2模數(shù)(A/D)芯片
A/D轉換器是模擬量輸入通道中的一個環(huán)節(jié),單片機通過A/D轉換器把輸入模擬量變成數(shù)字量再處理。A/D轉換的常用方法有:①計數(shù)式A/D轉換,②逐次逼近型A/D轉換,③雙積分式A/D轉換,④ V/F變換型A/D轉換。在這些轉換方式中,記數(shù)式A/D轉換線路比較簡單,但轉換速度較慢,所以現(xiàn)在很少應用。雙積分式A/D轉換精度高,多用于數(shù)據(jù)采集及精度要求比較高的場合,如5G14433(31/2位),AD7555(41/2位或51/2位)等,但速度更慢。隨著大規(guī)模集成電路的發(fā)展,目前不同廠家已經(jīng)生產(chǎn)出了多種型號的A/D轉換器,以滿足不同應用場合的需要。如果按照轉換原理劃分,主要有3種類型,即雙積分式A/D轉換器、逐次逼近式A/D轉換器和并行式A/D轉換器。目前最常用的是雙積分和逐次逼近式。
(1)A/D芯片的比較
雙積分式A/D轉換器具有抗干擾能力強、轉換精度高、價格便宜等優(yōu)點,比如ICL71XX系列等,它們通常帶有自動較零、七段碼輸出等功能。與雙積分相比,逐次逼近式A/D轉換的轉換速度更快,而且精度更高,比如ADC0808、ADC0809等,它們通常具有8路模擬選通開關及地址譯碼、鎖存電路等,它們可以與單片機系統(tǒng)連接,將數(shù)字量送單片機進行分析和顯示。
1. AD0809是8位逐次逼近型A/D轉換器,它是由一個8路的模擬開關、一個地址鎖存譯碼器、一個A/D 轉換器和一個三態(tài)輸出鎖存器組成。多路開關可選通8個模擬通道,允許8 路模擬量分時輸入,共用A/D 轉換器進行轉換。些A/D轉換器是的特點是8位精度,屬于并行口,如果輸入的模擬量變化大快,必須在輸入之前增加采樣電路。
2. AD0832也是8位逐次逼近型A/D轉換器,可支持致命傷個單端輸入通道和一個差分輸入通道。它易于和微處理器接口或獨立使用;可滿量程工作;可用地址邏輯多路器選通各輸入通道。
3. TLC2543C是12位開關電容逐次逼近A/D轉換,每個器件有三個控制輸入端,片選,輸入/輸出時鐘以及地址輸入端。它可以從主機高速傳輸轉換數(shù)據(jù)。它有高速的轉換,通用的控制能力,具有簡化比率轉換,刻度以及模擬電路與邏輯電路和電源噪聲隔離,耐高溫等特點。
綜合上述,逐次逼近型A/D轉換既照顧了轉換速度,有具有一定的精度,這里選用的是逐次逼近型的A/D轉換芯片ADC0809。
(2)ADC0809 的工作原理
1.IN0-IN7:8 條模擬量輸入通道
ADC0809 對輸入模擬量要求:信號單極性,電壓范圍是0-5V,若信號太小,必須進行放大;輸入的模擬量在轉換過程中應該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。
地址輸入和控制線:4條。ALE 為地址鎖存允許輸入線,高電平有效。當ALE線為高電平時,地址鎖存與譯碼器將A, B,C 三條地址線的地址信號進行鎖存,經(jīng)譯碼后被選中的通道的模擬量進轉換器進行轉換。A,B 和C 為地址輸入線,用于選通IN0-IN7 上的一路模擬量輸入。通道選擇表如表4.3所示。
2.數(shù)字量輸出及控制線:11 條
ST 為轉換啟動信號。當ST 上跳沿時,所有內部寄存器清零;下跳沿時,開始進行A/D 轉換;在轉換期間,ST 應保持低電平。EOC 為轉換結束信號。當EOC 為高電平時,表明轉換結束;否則,表明正在進行A/D 轉換。OE為輸出允許信號,用于控制三條輸出鎖存器向單片機輸出轉換得到的數(shù)據(jù)。OE=1,輸出轉換得到的數(shù)據(jù);OE=0,輸出數(shù)據(jù)線呈高阻狀態(tài)。D7-D0 為數(shù)字量輸出線。
CLK為時鐘輸入信號線。因ADC0809的內部沒有時鐘電路,所需時鐘信號必須由外界提供,通常使用頻率為500KHZ,
VREF(+),VREF(-)為參考電壓輸入。
3. ADC0809 應用說明
①ADC0809 內部帶有輸出鎖存器,可以與AT89S51 單片機直接相連。
②初始化時,使ST 和OE信號全為低電平。
③送要轉換的哪一通道的地址到A,B,C 端口上。
④在ST 端給出一個至少有100ns 寬的正脈沖信號。
⑤是否轉換完畢,我們根據(jù)EOC 信號來判斷。
⑥當EOC變?yōu)楦唠娖綍r,這時給OE 為高電平,轉換的數(shù)據(jù)就輸出給單片機了。
AD0809的啟動方式為脈沖啟動方式,啟動信號START啟動后開始轉換,EOC 信號在
START 的下降沿10us后才變?yōu)闊o效的低電平。這要求查詢程序待EOC無效后再開始查詢,
轉換完成后,EOC 輸出高電平,再由OE 變?yōu)楦唠娖絹磔敵鲛D換數(shù)據(jù)。我們在設計程序時
可以利用EOC 信號來通知單片機(查詢法或中斷法)讀入已轉換的數(shù)據(jù),也可以在啟動
AD0809 后經(jīng)適當?shù)难訒r再讀入已轉換的數(shù)據(jù)。AT89S51的輸出頻為晶振頻的1/6(2MHZ),AT89S1 與SUN7474連接經(jīng)與7474的ST腳提供AD0809 的工作時鐘。AD0809 的工作頻范圍為10KHZ-1280KHZ,當頻率范圍為500KHZ 時,其轉換速度為128us。
4.4.2 系統(tǒng)原理圖
4.4.3 系統(tǒng)PCB圖
五、程序流程圖與源程序
5.1 程序流程圖
?
? ? ? ??
? ? ? ? ?
5.4 C語言程序清單
#include《reg51.h》
typedef unsigned char uchar;
typedef unsigned int uint;
code unsigned char SEGMENT[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
code unsigned char SELECT[4]={0xFD,0xF7,0xDF,0x7F};
uint X1;
sbit P2_1=P2^1;
sbit P2_3=P2^3;
sbit P2_5=P2^5;
sbit P2_7=P2^7;
sbit START=P2^2;
sbit OE=P2^6;
sbit EOC=P2^4;
sbit spk=P2^0;
void delay(uint i)
{
uint j;
for(j=0;j《=i;j++);
}
void Delayms(uint i)
{
uchar j,k;
for(j=0;j《=i;j++)
for(k=0;k《=114;k++);
}
void timer(void)
{
TMOD=0x01;
TH0=0xdc;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
uchar Scankey(void)
{
uchar key;
if((P3&0x0f)==0x0f) return(0xff);
Delayms(10);
if((P3&0x0f)==0x0f) return(0xff);
key=P3&0x0f;
while((P3&0x0f)!=0x0f);
return(key);
}
void display(unsigned int wen)
{
static unsigned char num=0;
P2_1=1;
P2_3=1;
P2_5=1;
P2_7=1;
P0=0xff;
switch(num)
{
case 0:P0=SEGMENT[wen%10];break;
case 1:P0=SEGMENT[wen/10%10];break;
case 2:P0=SEGMENT[wen/100%10];break;
case 3:P0=SEGMENT[wen/1000]&0x7f;break;
}
P2=SELECT[num];
num++;
num%=4;
}
void ADC0809()
{
uchar temp=2;
START=0;
delay(5);
START=1;
delay(5);
START=0;
delay(5);
while(!EOC);
OE=1;
P1=0xff;
temp=P1;
X1=(unsigned int)temp*19.53;
OE=0;
if(X1==0)
{
spk=0;
}
else
spk=1;
}
void timer_0(void) interrupt 1
{
static unsigned int num=0;
TH0=0xdc;
TL0=0x00;
num++;
if(num==50)
{
num=0;
ADC0809();
}
}
void main()
{
timer();
while(1)
{
display(X1);
delay(500);
}
}
六、系統(tǒng)功能分析與說明
6.1 數(shù)字電壓表的概述
數(shù)字電壓表(Digital Voltmeter)簡稱DVM,它是采用數(shù)字化測量技術,把連續(xù)的模擬量(直流輸入電壓)轉換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。傳統(tǒng)的指針式電壓表功能單一、精度低,不能滿足數(shù)字化時代的需求,采用單片機的數(shù)字電壓表,由精度高、抗干擾能力強,可擴展性強、集成方便,還可與PC進行實時通信。目前,由各種單片A/D 轉換器構成的數(shù)字電壓表,已被廣泛用于電子及電工測量、工業(yè)自動化儀表、自動測試系統(tǒng)等智能化測量領域,示出強大的生命力。與此同時,由DVM擴展而成的各種通用及專用數(shù)字儀器儀表,也把電量及非電量測量技術提高到嶄新水平。本章重點介紹單片A/D 轉換器以及由它們構成的基于單片機的數(shù)字電壓表的工作原理。
6.2 數(shù)字電壓表的介紹
模擬電壓表具有電路簡單、成本低、測量方便等特點,但測量精度較差,特別是受表頭精度的限制,即使采用0.5級的高靈敏度表頭,讀測時的分辨力也只能達到半格。再者,模擬式電壓表的輸入阻抗不高,測高內阻源時精度明顯下降。數(shù)字電壓表作為數(shù)字技術的成功應用,發(fā)展相當快。數(shù)字電壓表(Digital VoIt Me-ter,DVM),以其功能齊全、精度高、靈敏度高、顯示直觀等突出優(yōu)點深受用戶歡迎。特別是以A/D轉換器為代表的集成電路為支柱,使DVM向著多功能化、小型化、智能化方向發(fā)展。DVM應用單片機控制,組成智能儀表;與計算機接口,組成自動測試系統(tǒng)。目前,DVM多組成多功能式的,因此又稱數(shù)字多用表(Digital Multi Meter,DMM)。
DVM是將模擬電壓變換為數(shù)字顯示的測量儀器,這就要求將模擬量變成數(shù)字量。這實質上是個量化過程,即將連續(xù)的無窮多個模擬量用有限個數(shù)字表示的過程,完成這種變換的核心部件是A/D轉換器,最后用電子計數(shù)器計數(shù)顯示,困此,DVM的基本組成是A/D轉換器和電子計數(shù)器。
DVM最基本功能是測直流電壓,考慮到儀器的多功能化,可將其他物理量,如電阻、電容、交流電壓、電流等,都變成直流電壓,因此,還應有一個測量功能選擇變換器,它包含在輸入電路中。DVM對直流電壓直接測量時的測量精度最高,其他物理量在變換成直流電壓時,受功能選擇變換器精度的限制,測量精度有所下降。
6.3 數(shù)字電壓表工作原理
數(shù)字電壓表的系統(tǒng)工作原理:首先,被測電壓信號進入A/D轉換器,單片機中控制信號線發(fā)出控制信號,啟動A/D轉換器進行轉換,其采樣得到的數(shù)字信號數(shù)據(jù)在相應的碼制轉換模塊中轉換為顯示代碼。最后發(fā)出顯示控制與驅動信號,驅動外部的數(shù)碼管顯示相應的數(shù)據(jù)。圖2.1所示為DVM的基本組成框圖,需指出的是,圖中將DVM分成模擬和數(shù)字兩大部分,從框圖上看,A/D轉換器包含在模擬部分,這樣劃分并不嚴格,因為A/D轉換器本身具有數(shù)字電路的性質,特別是大規(guī)模集成化A/D轉換器是模擬與數(shù)字兩系統(tǒng)相互結合的,就連邏輯控制也集成在其中。
6.4 數(shù)字電壓表發(fā)展及未來
回顧一下DVM的發(fā)展過程,大致可以分為以下三個階段。
1.數(shù)字化階段
20世紀50年代到60年代中期,DVM的特點是運用各種原理實現(xiàn)模/數(shù)(A/D)轉換,即將模擬量轉化成數(shù)字量,從而實現(xiàn)測量儀表的數(shù)字化。1952年,第一臺問世的數(shù)字電壓表是采用電子管的伺服比較式;1956年出現(xiàn)諧波式V/T(電壓/時間變換型);1961年出現(xiàn)全晶體管化的逐次逼近比較式;1963年出現(xiàn)電壓/頻率(V/F)變換型(單積分式);1966年出現(xiàn)雙積分式(雙斜式)等。這一時期的顯示位數(shù)是3.5-5.5位
2.高精度階段
由于精密電測量的需要,DVM開始向高準確、高位數(shù)方向發(fā)展,出現(xiàn)了所謂復合型原理的儀表。如1971年日本研制的TR-6567(三次采樣積分式);1973年英國研制的SM-215(兩次采樣電感分壓比較型);1972年日本研制的TR-6501型DVM已達到了8位數(shù)。與此同時對積分方案進行了改進和提高,出現(xiàn)了如Dana公司的6900型(7位)、Solartron公司生產(chǎn)的7075型(8位),其準確度可達到百萬分之幾。
3.智能化階段
由于電子技術、大規(guī)模集成電路(LSI)及計算機技術的發(fā)展,是人們不久就研制出微處理器(P)數(shù)字電壓表,實現(xiàn)了DVM數(shù)據(jù)處理自動化和可編程序,因為帶有存儲器并使用軟件支持,所以可以進行信息處理,可通過標準接口組成自動測試系統(tǒng)(ATS)例如,F(xiàn)luke公司的8506型、Solartron公司的7065型和7081型、Datron公司的1071和1281型,以及Fluke公司的最新產(chǎn)品8508A型等。它們除了完成原有DVM的各種功能外,還能夠自校、自檢,保證了自動測量的高準確度,實現(xiàn)了儀器、儀表的智能化。當前,智能式儀表發(fā)展十分迅速,而微處理式DVM在智能儀表中占的比重最大。智能化的DVM為實現(xiàn)各種物理量的動態(tài)測量提供了可能。
6.5 軟硬件調試
軟件調試的任務是利用開發(fā)工具進行調試,發(fā)現(xiàn)和糾正程序的錯誤,同時也能發(fā)現(xiàn)硬件的故障。軟件調試是一個模塊接一個模塊進行的。首先單獨調試各子程序是否能夠按照預期的功能,接口電路的控制是否正常。最后調試整個程序。尤其注意的是各模塊間能否正確的傳遞參數(shù)。
1. 檢查數(shù)碼管顯示模塊程序。觀察數(shù)碼管上是否能夠顯示相應的字符。
2. 檢查A/D轉換模塊程序。可以在硬件電路的輸入端輸入已知的幾個電壓,分別觀察數(shù)碼管上是否顯示相應的電壓值。
3. 檢查數(shù)據(jù)的轉換模塊程序。
程序可分為數(shù)據(jù)采集系統(tǒng)、數(shù)據(jù)轉換系統(tǒng)、顯示系統(tǒng),這三部分先獨立測試,然后整體調試。
①數(shù)據(jù)采集系統(tǒng):因為ADC0809本身并沒有內部時鐘,需要外部時鐘來提供工作的時鐘頻率。如果利用單片機ALE端腳提供的頻率為6MHZ,而ADC0809工作的頻率在10KHZ-1MHZ。因此,需要增加含觸發(fā)器功能的器件,從面增加了系統(tǒng)的復雜程度。后來,經(jīng)過小組不斷的討論與思考,最終用軟件編程來提供ADC0809工作的時鐘頻率,從而解決了這個問題。
②顯示系統(tǒng)的調試:要顯示的數(shù)據(jù)存放在71H、72H、73H、74H單元中,先在30H~39H分單元中存放0~9的數(shù),運行顯示程序,進行查表指令,察看顯示的結果是否與存放值一樣。在測試的過程中發(fā)現(xiàn)小數(shù)點沒有顯示,通過下面幾條指令,把小數(shù)點顯示出來。
MOVC A,@A+DPTR
CJNE R2,#0FEH,NOT_ONE ;不是左邊第一個數(shù)碼管,則轉移
ORL A,#80H ;左邊第一個數(shù)碼管顯示小數(shù)點
NOT_ONE: MOV P0,A ;數(shù)碼管段選
另外,發(fā)現(xiàn)四位數(shù)碼管顯示的亮度不一樣,有時還存在閃爍的情況,后來經(jīng)過調整各位數(shù)碼管顯示的間隔,調用延時函數(shù)解決了亮度不一的問題。
③整體測試:把三部分進行程序聯(lián)調,編譯程序,看是否存在錯誤。經(jīng)過多次的嘗試與查找相資料,最后做出并完善了整體的方案。
4.系統(tǒng)進一步改進方案
進一步提高測量精度,把精確到小數(shù)點后一位改為精確到小數(shù)點后三位。
6.5系統(tǒng)功能分析
本課題是利用單片機設計一個數(shù)字電壓表,能夠測量0-5V之間的直流電壓值,四位數(shù)碼顯示,使用的元器件數(shù)目較少。外界電壓模擬量輸入到A/D轉換部分的輸入端,通過A/D轉換變?yōu)閿?shù)字信號,輸送給單片機。然后由單片機給數(shù)碼管數(shù)字信號,控制其發(fā)光,從而顯示數(shù)字。
七、設計體會
經(jīng)過近二周的單片機課程設計,終于完成了我的數(shù)字電壓表的設計,基本達到設計要求。
對于此次課程設計,有許多的感觸與體會,遇到的難題多,學習到的知識也就更多。
第一,硬件電路遇到了ADC0809無內部時鐘,需外接外部時鐘,如何解決這個問題,我們小組進行了多次討論,最終確定了在程序中提供時鐘信號,大大降低了硬件電路的復雜度。
第二,則是解決程序設計的問題,而程序設計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個設計的靈魂所在。因此在整個設計過程中大部分時間是用在程序上面的。其中,我遇到了很多的問題,雖然以前還做過這樣的設計,但是以前的都是用C語言進行編程。而此次運用匯編語言編程,著實讓我當頭一棒,因為除了微機原理實驗進行過相關編程,匯編語言的編程能力還停留在理論階段。在此次編程中,首先,我是先用C語言編程,進行調試后,成功的達到了課程設計的要求。其次,查找匯編語言的相關資料,經(jīng)過不懈的努力與調試,終于將匯編語言版的成功編程出來。
第三,在一個課題中,要設計一個成功的電路,必須要有耐心,要有堅持的毅力。在整個電路的設計過程中,重要的是各個單元電路的連接及電路的細節(jié)設計上,如在多種方案的選擇中,我們仔細比較分析其原理以及可行的原因。這就要求我們對硬件系統(tǒng)中各組件部分有充分透徹的理解和研究,并能對之靈活應用。完成這次設計后,我在書本理論知識的基礎上又有了更深層次的理解。
第四,在本次設計的過程中,我還學會了高效率的查閱資料、運用工具書、利用網(wǎng)絡查找資料。我發(fā)現(xiàn),在我們所使用的書籍上有一些知識在實際應用中其實并不是十分理想,各種參數(shù)都需要自己去調整,這就要求我們應更加注重實踐環(huán)節(jié)。
最后,還要在此感謝課程設計的指導老師們和我的組員們,他們在整個過程中都給予了我充分的幫助與支持。
八、參考文獻
[1] 李華.MCS-51系列單片機實用接口技術[M].1989.
[2] 周立功。單片機實驗與實踐。北京:北京航空航天大學出版社。
[3] 吳國經(jīng)。單片機應用技術。北京:中國電力出版社,2003.
[4] 徐惠民 安德寧 丁玉珍。單片微型計算機原理、接口及應用。北京:北京郵電大學出版社,2007年。
[5] 徐愛鈞。《智能化測量控制儀表原理與設計》(第二版)[M]。北京:北京航空航天大學出版社,2004.
評論