1 引言
單片機(jī)是一種集成電路芯片,,隨著計(jì)算機(jī)在社會(huì)領(lǐng)域的滲透, 單片機(jī)的應(yīng)用正在不斷地走向深入,,同時(shí)帶動(dòng)傳統(tǒng)控制檢測日新月益更新,。在實(shí)時(shí)檢測和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個(gè)核心部件來使用,,僅單片機(jī)方面知識(shí)是不夠的,,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點(diǎn)的軟件結(jié)合,,以作完善,。由于單片機(jī)具有簡單實(shí)用、高可靠性,、良好的性能價(jià)格比以及體積小等優(yōu)點(diǎn),,已經(jīng)在各個(gè)技術(shù)領(lǐng)域得到了迅猛發(fā)展。數(shù)字電壓表(Digital Voltmeter)簡稱DVM,,它是采用數(shù)字化測量技術(shù),,把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表,。傳統(tǒng)的指針式電壓表功能單一,、精度低,不能滿足數(shù)字化時(shí)代的需求,,采用單片機(jī)的數(shù)字電壓表,,由精度高、抗干擾能力強(qiáng),,可擴(kuò)展性強(qiáng),、集成方便,還可與PC進(jìn)行實(shí)時(shí)通信,。目前,,由各種單片A/D 轉(zhuǎn)換器構(gòu)成的數(shù)字電壓表,,已被廣泛用于電子及電工測量、工業(yè)自動(dòng)化儀表,、自動(dòng)測試系統(tǒng)等智能化測量領(lǐng)域,,示出強(qiáng)大的生命力。與此同時(shí),,由DVM擴(kuò)展而成的各種通用及專用數(shù)字儀器儀表,,也把電量及非電量測量技術(shù)提高到嶄新水平。本設(shè)計(jì)重點(diǎn)介紹單片A/D 轉(zhuǎn)換器以及由它們構(gòu)成的基于單片機(jī)的數(shù)字電壓表的工作原理,。
2 總體設(shè)計(jì)方案
2.1 設(shè)路計(jì)思路
按系統(tǒng)功能要求,,決定控制系統(tǒng)采用AT89S51單片機(jī),A/D轉(zhuǎn)換采用ADC0809.系統(tǒng)除能確保實(shí)現(xiàn)要求的功能外,,還可以方便地進(jìn)行其功能的擴(kuò)展,。本文采用AT89S51作為核心元件,AT89S51是一個(gè)低功耗,,高性能CMOS 8位單片機(jī),,片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度,、非易失性存儲(chǔ)技術(shù)制造,,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案,。
采用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公司的高密度,,非易失性存儲(chǔ)技術(shù)生產(chǎn),,兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序存儲(chǔ)器,,既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,,ATMEL公司的功能強(qiáng)大,低價(jià)AT89s51單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場合,,可靈活應(yīng)用于各種控制領(lǐng)域。
2.2 設(shè)計(jì)方框圖
圖1 數(shù)字電壓表系統(tǒng)設(shè)計(jì)方案
3 設(shè)計(jì)原理分析
3.1 單片機(jī)AT89S51
AT89S51單片機(jī)是美國ATMEL公司生產(chǎn)的低功耗,,高性能CMOS 8位單片機(jī),,片內(nèi)含4K bytes的可系統(tǒng)編程的Flash只讀程序存儲(chǔ)器,,器件采用ATMEL公司的高密度,非易失性存儲(chǔ)技術(shù)生產(chǎn),,兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳,。它集Flash程序存儲(chǔ)器,既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,,ATMEL公司的功能強(qiáng)大,,低價(jià)AT89S51單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域,。
3.2 AT89S51的特點(diǎn)
40個(gè)引腳,,4k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),,32個(gè)外部雙向輸入/輸出(I/O)口,,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,,2個(gè)全雙工串行通信口,,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器 此外,,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式,。空閑模式下,,CPU暫停工作,,而RAM定時(shí)計(jì)數(shù)器,串行口,,外中斷系統(tǒng)可繼續(xù)工作,,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位,。同時(shí)該芯片還具有PDIP,、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求,。
主要特性在:
● 與MCS-51單片機(jī)產(chǎn)品兼容
● 4K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器
● 1000次擦寫周期
● 全靜態(tài)工作:0Hz-33MHz
● 32個(gè)可編程I/O口線
● 2個(gè)16位定時(shí)器/計(jì)數(shù)器
● 6個(gè)中斷源
● 全雙工UART串行通道
● 低功耗空閑和掉電模式
● 掉電后中斷可喚醒
● 看門狗定時(shí)器
● 雙數(shù)據(jù)指針
● 靈活的ISP編程(字或字節(jié)模式)
● 4.0---5.5V電壓工作范圍
3.3 ADC0809的內(nèi)部邏輯結(jié)構(gòu)
八路數(shù)字電壓表主要利用A/D轉(zhuǎn)換器,,處理過程是先用A/D轉(zhuǎn)換器對各路電壓值進(jìn)行采樣,得到相應(yīng)的數(shù)字量,,再按數(shù)字量與模擬量成正比關(guān)系運(yùn)算得到對應(yīng)的模擬電壓值,,然后把模擬值通過顯示器顯示出來。設(shè)計(jì)時(shí)假設(shè)待測的輸入電壓為八路,,電壓值的范圍為0~5V,,要求能在4位LED數(shù)碼管上輪流顯示或單路選擇顯示。測量的最小分辨率為0.0119V,c測量誤差為±0.02V,。
ADC0809是8路8位ADC芯片,,片內(nèi)有8路模擬開關(guān),、地址鎖存與譯碼、256電阻梯形網(wǎng)絡(luò),、電子開關(guān)樹,、逐次逼近寄存器、比較器和3態(tài)輸出鎖存器等,,特別適合與微機(jī)接口,。時(shí)鐘頻率=1.26MHz,轉(zhuǎn)換時(shí)間=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個(gè)模擬通道,允許8路模擬量分時(shí)輸入,,共用A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,。三態(tài)輸出鎖器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時(shí),,才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù),。ADC0809的內(nèi)部邏輯結(jié)構(gòu)如圖3.1所示。
圖2 ADC0809的內(nèi)部邏輯結(jié)構(gòu)
3.4 引腳結(jié)構(gòu)
ADC0809具有8路模擬量輸入通道IN0~I(xiàn)N7,,通過3位地址輸入端C,、B、A(因腳23,、24,、25)進(jìn)行選擇。引腳22為地址鎖存控制端ALE,,當(dāng)輸入為高電平時(shí),,C、B,、A引腳輸入的地址鎖存與ADC0809內(nèi)部的鎖存器中,,經(jīng)內(nèi)部譯碼電路譯碼選中相應(yīng)的模擬通道。引腳6為啟動(dòng)轉(zhuǎn)換控制端START,,當(dāng)輸入一個(gè)2 us寬的高電平脈沖時(shí),,就啟動(dòng)ADC0809開始對輸入通道的模擬量進(jìn)行轉(zhuǎn)換。引腳7為A/D轉(zhuǎn)換的結(jié)束信號(hào)EOC,。ADC0809為逐次比較型A/D轉(zhuǎn)換器,,當(dāng)開始轉(zhuǎn)換時(shí),EOC信號(hào)為低電平,,經(jīng)過一定時(shí)間,,轉(zhuǎn)換結(jié)束,,轉(zhuǎn)換結(jié)束信號(hào)EOC輸出高電平,,轉(zhuǎn)換結(jié)果存放與ADC0809內(nèi)部的輸出數(shù)據(jù)鎖存器中,。引腳9為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制端OE,當(dāng)OE為高電平時(shí),,存放與輸出數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)通過ADC0809的數(shù)據(jù)線D0~D7輸出,。引腳10為ADC0809的時(shí)鐘信號(hào)輸入端CLOCK。在連接時(shí),,ADC0809的數(shù)據(jù)線D0~D7與AT89S51的P0口相連,,ADC0809的地址引腳、地址鎖存端ALE,、啟動(dòng)信號(hào)START,、數(shù)據(jù)輸出允許控制端OE分別與AT89S51的P2口相連,轉(zhuǎn)換結(jié)束信號(hào)EOC與AT89S51的P3.7口相連,。時(shí)鐘信號(hào)輸入端CLOCK信號(hào),,由單片機(jī)的地址鎖存控制端ALE提供。單片機(jī)的系統(tǒng)時(shí)鐘為12MHZ,。
IN0-IN7:8條模擬量輸入通道 ,。ADC0809對輸入模擬量要求:信號(hào)單極性,電壓范圍是0-5V,,若信號(hào)太小,,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過程中保持不變,,如若模擬量變化太快,,則需在輸入前增加采樣保持電路。
地址輸入和控制線:4條 ,。ALE為地址鎖存允許輸入線,,高電平有效。當(dāng)ALE線為高電平時(shí),,地址鎖存與譯碼器將A,,B,C三條地址線的地址信號(hào)進(jìn)行鎖存,,經(jīng)譯碼后被選中的通道的模擬量進(jìn)轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,。A,B和C為地址輸入線,,用于選通IN0-IN7上的一路模擬量輸入,。
數(shù)字量輸出及控制線:11條 。ST為轉(zhuǎn)換啟動(dòng)信號(hào),,當(dāng)ST上跳沿時(shí),,所有內(nèi)部寄存器清零,;下跳沿時(shí),開始進(jìn)行A/D轉(zhuǎn)換,;在轉(zhuǎn)換期間,,ST應(yīng)保持低電平。EOC為轉(zhuǎn)換結(jié)束信號(hào),。當(dāng)EOC為高電平時(shí),,表明轉(zhuǎn)換結(jié)束;否則,,表明正在進(jìn)行A/D轉(zhuǎn)換,。OE為輸出允許信號(hào),用于控制三條輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù),。OE=1,,輸出轉(zhuǎn)換得到的數(shù)據(jù);OE=0,,輸出數(shù)據(jù)線呈高阻狀態(tài),。D7-D0為數(shù)字量輸出線。
CLK為時(shí)鐘輸入信號(hào)線,。因ADC0809的內(nèi)部沒有時(shí)鐘電路,,所需時(shí)鐘信號(hào)必須由外界提供,通常使用頻率為1MHZ,,VREF(+),,VREF(-)為參考電壓輸入。
3.5 ADC0809應(yīng)用說明
ADC0809內(nèi)部帶有輸出鎖存器,,可以與AT89S51單片機(jī)直接相連,。 初始化時(shí),使ST和OE信號(hào)全為低電平,。送要轉(zhuǎn)換的哪一通道的地址到A,,B,C端口上,。在ST端給出一個(gè)至少有100ns寬的正脈沖信號(hào),。是否轉(zhuǎn)換完畢,我們根據(jù)EOC信號(hào)來判斷,。當(dāng)EOC變?yōu)楦唠娖綍r(shí),,這時(shí)給OE為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸出給單片機(jī),。
3.6 ADC0809工作原理
8路模擬信號(hào)由ADC0809的IN0~I(xiàn)N7端輸入,,AT89S51單片機(jī)的ALE端口輸出的脈沖信號(hào)送ADC0809的10腳作為ADC的時(shí)鐘信號(hào)(產(chǎn)生CLK信號(hào)的方法就得用軟件來產(chǎn)生)。A/D轉(zhuǎn)換完成之后,從EOC端返回AT89S51一個(gè)轉(zhuǎn)換結(jié)束信號(hào),,單片機(jī)隨即用信號(hào)將A/D轉(zhuǎn)換的數(shù)字輸出從D0~D7端經(jīng)P0口數(shù)據(jù)總線讀入自己的存儲(chǔ)器中,。A/D轉(zhuǎn)換過程全部結(jié)束。再經(jīng)軟件程序轉(zhuǎn)換成a~g 7段碼輸出,,驅(qū)動(dòng)LED數(shù)碼管,。各位數(shù)碼管由位控信號(hào)P3.0、P3.1,、P3.2,、P3.3控制,由74LS245反相驅(qū)動(dòng)將依次巡回點(diǎn)亮數(shù)碼管,。
3.7 復(fù)位電路的設(shè)計(jì)
本設(shè)計(jì)采用了上電自動(dòng)復(fù)位和手動(dòng)復(fù)位,上電自動(dòng)復(fù)位是再加電瞬間電容通過充電來實(shí)現(xiàn)的,,其電路如圖3.2所示,。在充電瞬間,電容C通過復(fù)位電阻R充電,,RST端出現(xiàn)正脈沖,,以復(fù)位。只要電源VCC的上升時(shí)間不超過1MS,就可以實(shí)現(xiàn)自動(dòng)復(fù)位,,既接通電源就完成了系統(tǒng)的復(fù)位初始化,,手動(dòng)復(fù)位是通過按鈕實(shí)現(xiàn)的。
圖3 復(fù)位電路
3.8 時(shí)鐘電路的設(shè)計(jì)
任何一塊單片機(jī)的正常工作都離不開時(shí)鐘信號(hào),,本設(shè)計(jì)中利用8951內(nèi)部的高增益反相放大器,,外加石英晶體以及兩個(gè)電容就構(gòu)成了穩(wěn)定的自激振蕩器。給單片機(jī)提供了時(shí)鐘信號(hào),,保持單片機(jī)按正常的時(shí)序工作,。
圖4 時(shí)鐘電路