1、引言
由于單片機(jī)具有簡單實用、高可靠性、良好的性能價格比以及體積小等優(yōu)點,已經(jīng)在各個技術(shù)領(lǐng)域得到了迅猛發(fā)展。數(shù)字電壓表(digitalvoltmeter)簡稱dvm,它是采用數(shù)字化測量技術(shù),把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。傳統(tǒng)的指針式電壓表功能單一、精度低,不能滿足數(shù)字化時代的需求,采用單片機(jī)的數(shù)字電壓表,由精度高、抗*力強(qiáng),可擴(kuò)展性強(qiáng)、集成方便,還可與pc進(jìn)行實時通信。目前,由各種單片a/d轉(zhuǎn)換器構(gòu)成的數(shù)字電壓表,已被廣泛用于電子及電工測量、工業(yè)自動化儀表、自動測試系統(tǒng)等智能化測量領(lǐng)域,示出強(qiáng)大的生命力。與此同時,由dvm擴(kuò)展而成的各種通用及數(shù)字儀器儀表,也把電量及非電量測量技術(shù)提高到嶄新水平。本設(shè)計重點介紹單片a/d轉(zhuǎn)換器以及由它們構(gòu)成的基于單片機(jī)的數(shù)字電壓表的工作原理。
2、總體設(shè)計方案
2.1設(shè)路計思路
按系統(tǒng)功能要求,決定控制系統(tǒng)采用at89s51單片機(jī),a/d轉(zhuǎn)換采用adc0809.系統(tǒng)除能確保實現(xiàn)要求的功能外,還可以方便地進(jìn)行其功能的擴(kuò)展。本文采用at89s51作為核心元件,at89s51是一個低功耗,高性能cmos8位單片機(jī),片內(nèi)含4kbytesisp(in-systemprogrammable)的可反復(fù)擦寫1000次的flash只讀程序存儲器,器件采用atmel公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng)及80c51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ispflash存儲單元,功能強(qiáng)大的微型計算機(jī)的at89s51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。
采用ns公司的分辨率為8位的逐次比較型的高精度的模數(shù)轉(zhuǎn)換器adc0809,adc0809是帶有8位a/d轉(zhuǎn)換器、8路多路開關(guān)以及微處理機(jī)兼容的控制邏輯的cmos組件。它是逐次逼近式a/d轉(zhuǎn)換器,可以和單片機(jī)直接接口。把采取的電壓進(jìn)行處理然后通過單片機(jī)的p口送到單片機(jī)然后經(jīng)過程序處理,由led電路把電壓數(shù)值顯示出來。單片機(jī)加上外圍的串口顯示電路由74ls245和數(shù)碼管三極管組成。
器件采用atmel公司的高密度,非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集flash程序存儲器,既可在線編程(isp)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,atmel公司的功能強(qiáng)大,低價at89s51單片機(jī)可為您提供許多高性價比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。
2.2設(shè)計方框圖
圖1數(shù)字電壓表系統(tǒng)設(shè)計方案
3、設(shè)計原理分析
3.1單片機(jī)at89s51
at89s51單片機(jī)是美國atmel公司生產(chǎn)的低功耗,高性能cmos8位單片機(jī),片內(nèi)含4kbytes的可系統(tǒng)編程的flash只讀程序存儲器,器件采用atmel公司的高密度,非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集flash程序存儲器,既可在線編程(isp)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,atmel公司的功能強(qiáng)大,低價at89s51單片機(jī)可為您提供許多高性價比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。
3.2at89s51的特點
40個引腳,4kbytesflash片內(nèi)程序存儲器,128bytes的隨機(jī)存取數(shù)據(jù)存儲器(ram),32個外部雙向輸入/輸出(i/o)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(wdt)電路,片內(nèi)時鐘振蕩器此外,at89s51設(shè)計和配置了振蕩頻率可為0hz并可通過軟件設(shè)置省電模式??臻e模式下,cpu暫停工作,而ram定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存ram的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時該芯片還具有pdip、tqfp和plcc等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。
主要特性在:
●與mcs-51單片機(jī)產(chǎn)品兼容
●4k字節(jié)在系統(tǒng)可編程flash存儲器
●1000次擦寫周期
●全靜態(tài)工作:0hz-33mhz
●32個可編程i/o口線
●2個16位定時器/計數(shù)器
●6個中斷源
●全雙工uart串行通道
●低功耗空閑和掉電模式
●掉電后中斷可喚醒
●看門狗定時器
●雙數(shù)據(jù)指針
●靈活的isp編程(字或字節(jié)模式)
●4.0---5.5v電壓工作范圍
3.3adc0809的內(nèi)部邏輯結(jié)構(gòu)
八路數(shù)字電壓表主要利用a/d轉(zhuǎn)換器,處理過程是先用a/d轉(zhuǎn)換器對各路電壓值進(jìn)行采樣,得到相應(yīng)的數(shù)字量,再按數(shù)字量與模擬量成正比關(guān)系運算得到對應(yīng)的模擬電壓值,然后把模擬值通過顯示器顯示出來。設(shè)計時假設(shè)待測的輸入電壓為八路,電壓值的范圍為0~5v,要求能在4位led數(shù)碼管上輪流顯示或單路選擇顯示。測量的zui小分辨率為0.0119v,c測量誤差為±0.02v。
adc0809是8路8位adc芯片,片內(nèi)有8路模擬開關(guān)、地址鎖存與譯碼、256電阻梯形網(wǎng)絡(luò)、電子開關(guān)樹、逐次逼近寄存器、比較器和3態(tài)輸出鎖存器等,特別適合與微機(jī)接口。時鐘頻率=1.26mhz,轉(zhuǎn)換時間=100μs,轉(zhuǎn)換誤差≤±1lsb,內(nèi)含8路數(shù)據(jù)選擇器以便進(jìn)行8路adc。8路8位2進(jìn)制碼lsttl電平輸出,28腳封裝。adc0809多路開關(guān)可選通8個模擬通道,允許8路模擬量分時輸入,共用a/d轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。三態(tài)輸出鎖器用于鎖存a/d轉(zhuǎn)換完的數(shù)字量,當(dāng)oe端為高電平時,才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。adc0809的內(nèi)部邏輯結(jié)構(gòu)如圖3.1所示。
圖2adc0809的內(nèi)部邏輯結(jié)構(gòu)
3.4引腳結(jié)構(gòu)
adc0809具有8路模擬量輸入通道in0~in7,通過3位地址輸入端c、b、a(因腳23、24、25)進(jìn)行選擇。引腳22為地址鎖存控制端ale,當(dāng)輸入為高電平時,c、b、a引腳輸入的地址鎖存與adc0809內(nèi)部的鎖存器中,經(jīng)內(nèi)部譯碼電路譯碼選中相應(yīng)的模擬通道。引腳6為啟動轉(zhuǎn)換控制端start,當(dāng)輸入一個2us寬的高電平脈沖時,就啟動adc0809開始對輸入通道的模擬量進(jìn)行轉(zhuǎn)換。引腳7為a/d轉(zhuǎn)換的結(jié)束信號eoc。adc0809為逐次比較型a/d轉(zhuǎn)換器,當(dāng)開始轉(zhuǎn)換時,eoc信號為低電平,經(jīng)過一定時間,轉(zhuǎn)換結(jié)束,轉(zhuǎn)換結(jié)束信號eoc輸出高電平,轉(zhuǎn)換結(jié)果存放與adc0809內(nèi)部的輸出數(shù)據(jù)鎖存器中。引腳9為a/d轉(zhuǎn)換數(shù)據(jù)輸出允許控制端oe,當(dāng)oe為高電平時,存放與輸出數(shù)據(jù)存儲器中的數(shù)據(jù)通過adc0809的數(shù)據(jù)線d0~d7輸出。引腳10為adc0809的時鐘信號輸入端clock。在連接時,adc0809的數(shù)據(jù)線d0~d7與at89s51的p0口相連,adc0809的地址引腳、地址鎖存端ale、啟動信號start、數(shù)據(jù)輸出允許控制端oe分別與at89s51的p2口相連,轉(zhuǎn)換結(jié)束信號eoc與at89s51的p3.7口相連。時鐘信號輸入端clock信號,由單片機(jī)的地址鎖存控制端ale提供。單片機(jī)的系統(tǒng)時鐘為12mhz。
in0-in7:8條模擬量輸入通道。adc0809對輸入模擬量要求:信號單極性,電壓范圍是0-5v,若信號太小,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過程中保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。
地址輸入和控制線:4條。ale為地址鎖存允許輸入線,高電平有效。當(dāng)ale線為高電平時,地址鎖存與譯碼器將a,b,c三條地址線的地址信號進(jìn)行鎖存,經(jīng)譯碼后被選中的通道的模擬量進(jìn)轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。a,b和c為地址輸入線,用于選通in0-in7上的一路模擬量輸入。數(shù)字量輸出及控制線:11條。st為轉(zhuǎn)換啟動信號,當(dāng)st上跳沿時,所有內(nèi)部寄存器清零;下跳沿時,開始進(jìn)行a/d轉(zhuǎn)換;在轉(zhuǎn)換期間,st應(yīng)保持低電平。eoc為轉(zhuǎn)換結(jié)束信號。當(dāng)eoc為高電平時,表明轉(zhuǎn)換結(jié)束;否則,表明正在進(jìn)行a/d轉(zhuǎn)換。oe為輸出允許信號,用于控制三條輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。oe=1,輸出轉(zhuǎn)換得到的數(shù)據(jù);oe=0,輸出數(shù)據(jù)線呈高阻狀態(tài)。d7-d0為數(shù)字量輸出線。
clk為時鐘輸入信號線。因adc0809的內(nèi)部沒有時鐘電路,所需時鐘信號必須由外界提供,通常使用頻率為1mhz,vref(+),vref(-)為參考電壓輸入。
3.dc0809應(yīng)用說明
adc0809內(nèi)部帶有輸出鎖存器,可以與at89s51單片機(jī)直接相連。初始化時,使st和oe信號全為低電平。送要轉(zhuǎn)換的哪一通道的地址到a,b,c端口上。在st端給出一個至少有100ns寬的正脈沖信號。是否轉(zhuǎn)換完畢,我們根據(jù)eoc信號來判斷。當(dāng)eoc變?yōu)楦唠娖綍r,這時給oe為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸出給單片機(jī)。
3.6adc0809工作原理
8路模擬信號由adc0809的in0~in7端輸入,at89s51單片機(jī)的ale端口輸出的脈沖信號送adc0809的10腳作為adc的時鐘信號(產(chǎn)生clk信號的方法就得用軟件來產(chǎn)生)。a/d轉(zhuǎn)換完成之后,從eoc端返回at89s51一個轉(zhuǎn)換結(jié)束信號,單片機(jī)隨即用信號將a/d轉(zhuǎn)換的數(shù)字輸出從d0~d7端經(jīng)p0口數(shù)據(jù)總線讀入自己的存儲器中。a/d轉(zhuǎn)換過程全部結(jié)束。再經(jīng)軟件程序轉(zhuǎn)換成a~g7段碼輸出,驅(qū)動led數(shù)碼管。各位數(shù)碼管由位控信號p3.0、p3.1、p3.2、p3.3控制,由74ls245反相驅(qū)動將依次巡回點亮數(shù)碼管。
3.7復(fù)位電路的設(shè)計
本設(shè)計采用了上電自動復(fù)位和手動復(fù)位,上電自動復(fù)位是再加電瞬間電容通過充電來實現(xiàn)的,其電路如圖3.2所示。在充電瞬間,電容c通過復(fù)位電阻r充電,rst端出現(xiàn)正脈沖,以復(fù)位。只要電源vcc的上升時間不超過1ms,就可以實現(xiàn)自動復(fù)位,既接通電源就完成了系統(tǒng)的復(fù)位初始化,手動復(fù)位是通過按鈕實現(xiàn)的。
圖3復(fù)位電路
3.8時鐘電路的設(shè)計
任何一塊單片機(jī)的正常工作都離不開時鐘信號,本設(shè)計中利用8951內(nèi)部的高增益反相放大器,外加石英晶體以及兩個電容就構(gòu)成了穩(wěn)定的自激振蕩器。給單片機(jī)提供了時鐘信號,保持單片機(jī)按正常的時序工作。
圖4時鐘電路