簡易直流數(shù)字電壓表_第1頁
簡易直流數(shù)字電壓表_第2頁
簡易直流數(shù)字電壓表_第3頁
簡易直流數(shù)字電壓表_第4頁
簡易直流數(shù)字電壓表_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 基于單片機(jī)的簡易數(shù)字電壓表的設(shè)計電子設(shè)計競賽設(shè)計報告摘要:設(shè)計的任務(wù)為制作一臺簡易直流數(shù)字電壓表,其中AD轉(zhuǎn)換器模塊使用分立元件制作雙積分型AD轉(zhuǎn)換器。利用運(yùn)算放大器和比較器搭建積分電路,由四位數(shù)碼管構(gòu)成顯示電路,AT89C52單片機(jī)構(gòu)成控制模塊。本設(shè)計完成了基本功能和一部分?jǐn)U展功能,具有較高的精度和穩(wěn)定性。關(guān)鍵詞:AD轉(zhuǎn)換器 單片機(jī) 四位數(shù)碼5一、總體方案設(shè)計1. 自行設(shè)計制作系統(tǒng)供電電源,輸入為220VAC,禁止使用任何成品電源。2. AD部分禁止使用成品AD芯片。要求僅使用運(yùn)算放大器、電子開關(guān)、基準(zhǔn)源、阻容元件等分立元件設(shè)計一個雙積分型AD轉(zhuǎn)換器。3. 直流電壓測量范圍為02V,要求分

2、辨率達(dá)到0.01V,滿量程測量精度優(yōu)于3%。4. 電壓采樣周期小于1s。5. 顯示器必須使用LED數(shù)碼管顯示器制作,禁止使用LCD。6. 結(jié)構(gòu)設(shè)計合理,外表整潔美觀。二、原理描述雙積分式AD轉(zhuǎn)換器又稱雙斜式AD轉(zhuǎn)換器,其原理框圖和工作波形圖如下圖所示。整個邏輯轉(zhuǎn)換過程在控制器的控制下按一下三個階段進(jìn)行:圖2-1 雙積分AD轉(zhuǎn)換器原理圖圖2-2 雙積分型AD轉(zhuǎn)換器波形1. 預(yù)備階段邏輯控制電路發(fā)出復(fù)位指令,使積分器的輸出為零。2. 定時積分階段T1定時積分階段,電子開關(guān)接通輸入端和待測電壓,同時打開定時器,當(dāng)定時器計滿時,進(jìn)入定時器中斷。3. 定值積分階段T2定時積分階段結(jié)束后,打開電子開關(guān)使輸

3、入端接通基準(zhǔn)電壓,開始反向積分,積分器的輸出在比較器的輸入端與地電壓進(jìn)行比較,當(dāng)積分器的輸出為正值時積分器產(chǎn)生下降沿,觸發(fā)單片機(jī)外部中斷,同時記錄T2值。積分器輸出電壓有以下公式推導(dǎo)可得因此只要記錄T2值即可求得輸入電壓Ux的值。三、 模塊設(shè)計本設(shè)計分為三大模塊:控制模塊、顯示模塊、AD轉(zhuǎn)換模塊。圖3-1 設(shè)計總框圖1. AD轉(zhuǎn)換模塊:圖3-2 AD轉(zhuǎn)換模塊AD轉(zhuǎn)換模塊由基準(zhǔn)電壓源、電子開關(guān)、運(yùn)放、比較器組成。運(yùn)算放大器完成正向積分和反向積分,經(jīng)由比較器將脈沖輸入單片機(jī)。2. 時序控制模塊:圖3-3 控制模塊本設(shè)計由單片機(jī)AT89C52控制AD轉(zhuǎn)換器的時序和顯示模塊的控制。4. 顯示模塊:圖3

4、-4 顯示模塊本設(shè)計由四位共陽數(shù)碼管完成對待測電壓值的顯示。5. 程序框圖圖3-5 程序框圖四、結(jié)果測試表4-1 結(jié)果測試表待測電壓值測量結(jié)果0.0250.0380.1240.1230.2650.3010.5470.5441.2011.211.4971.5041.6441.6411.8411.8392.0042.01結(jié)果分析:由表4-1可觀察測量結(jié)果基本準(zhǔn)確,誤差均在可控范圍之內(nèi)。四、總結(jié)本設(shè)計基本完成了基本要求和部分?jǐn)U展功能的設(shè)計,不足之處有:1. 電壓顯示不夠穩(wěn)定。2. 精度有所缺失。改進(jìn)措施:1. 采用基準(zhǔn)源,提高基準(zhǔn)電壓的精度和穩(wěn)定性。2. 積分電路采用精密電阻和積分電容,提高積分時間

5、的精確性。3. 采用數(shù)字校準(zhǔn),提高精度和減小誤差。附錄:代碼:#include "reg52.h"/* macro */sfr WD = 0xE1;#define CLR 0#define TIM 1#define VAL 2/#define Time1 50000sbit AddrA = P30;sbit AddrB = P31;#define LED P0#define SEL P2#define nAve 23 /*25取平均*/#define FEED WD=0x3B/* global */int stateFlag; /* 不同階段定時標(biāo)志位 */unsigned

6、 short nCount=0,savenAve=0,Time2=0,tCount=0,buff=0;unsigned char code CODE16=0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71;/* fun dec */void delay1ms(int T); / 12MHz12Tvoid ClearSW(); / 校準(zhǔn)void TimeSW(); / 定時積曋void ValueSW(); / 定值積曋void StartADC() ; /*

7、 校準(zhǔn):10000us */ unsigned short Ave(unsigned short* Array);void Display(unsigned short Show,int flag) ;void main()unsigned short Show,flashCount;TMOD = 0x01; /* 定時器0暯式1 , 定時器1暯式2*/ TH1 = TL1 = 56;/ ET1 = 1;/ TR1 = 1; /* Run TIM1 */EA = 1; /* 全局中斷 */IT0 = 1; /* 外部中斷觸暍模式 */StartADC(); /* First Conversio

8、n */while(1) for(flashCount=0 ; flashCount<28 ; flashCount+)Show = 2L*Time2/50;/* Adjustment */if(Show)Show += 10;Display(Show , 0);for(flashCount=0; flashCount<28; flashCount+)Show = 2L*Time2/50;if(Show)Show += 10;if(Show>=2200)Display(Show , 1);elseDisplay(Show , 0);void Display(unsigned

9、short Show,int flag)/* Display LED */char i ,k,show4 ;show3 = Show/1000;show2 = Show%1000/100;show1 = Show%100/10;show0 = Show%10;k = 0x0E;for(i=0;i<4;i+)if(flag)LED = 0xFF;elseif(i=3)LED = 0x7F&(CODEshowi); /* Dot */elseLED = CODEshowi; SEL = k;k = (15-k)<<1);delay1ms(2);LED = 0xFF; /*

10、void TIM1_ISR() interrupt 3if(tCount=3500)tCount=0;StartADC();elsetCount+; */* Start ADC Conversion */void StartADC() /* 校準(zhǔn):10000us */FEED;/*/stateFlag = CLR;TH0 = (65536-1200)/256 ; /*55536 */TL0 = (65536-1200)%256 ;TR0 = 1;ClearSW(); /* 打開校準(zhǔn)開關(guān) */ET0 = 1;EX0 = 0; /* 關(guān)閉外部中斷 */* 定時器中斷 */void TIM0_ISR

11、() interrupt 1FEED;/*/if(stateFlag = CLR) /* 校準(zhǔn)結(jié)束 */stateFlag = TIM; /* 定時積曋開始:50000us */TH0 = 60; /* 15536 */TL0 = 176;TimeSW(); /* 定時積曋開關(guān) */else if(stateFlag = TIM) /* 定時積曋結(jié)束 */ET0 = 0; /* 關(guān)閉定時中斷 */TH0 = TL0 = 0; /* Clear T0 */ValueSW();/* Clear EXT0 PendingBit */IE0 = 0;EX0 = 1;void EXT0_ISR() in

12、terrupt 0 /* 定值積曋結(jié)束 */FEED;savenCount+ = TH0*256 + TL0;if(nCount=nAve)nCount = 0; /* A New ADC Period*/Time2 = Ave(save);/* Disable T0 and EXT0 */EX0 = 0;ET0 = 0;StartADC(); /* Another ADC Period */void delay1ms(int T) / 12MHz-12T unsigned char a,b;/while(c-)while(T-) for(b=39;b>0;b-) for(a=1;a>0;a-); /* 去極端值取均值 */unsigned short Ave(unsigned short* Array) int i;unsigned long su

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論