資源描述:
《項(xiàng)目9 數(shù)字式電壓表的設(shè)計(jì).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在PPT專區(qū)-天天文庫。
1、項(xiàng)目9數(shù)字式電壓表的設(shè)計(jì)★知識(shí)目標(biāo):1.A/D轉(zhuǎn)換器相關(guān)的基本知識(shí);2.A/D轉(zhuǎn)換器與單片機(jī)的接口技術(shù)?!锬芰δ繕?biāo):1.能夠正確使用A/D轉(zhuǎn)換器;2.能夠設(shè)計(jì)單片機(jī)與A/D轉(zhuǎn)換器的接口并編程控制A/D轉(zhuǎn)換器;3.會(huì)用KeilC51軟件對(duì)源程序進(jìn)行編譯調(diào)試及與Protues軟件聯(lián)調(diào),實(shí)現(xiàn)電路仿真。項(xiàng)目9數(shù)字式電壓表的設(shè)計(jì)1.提出任務(wù)利用單片機(jī)和A/D轉(zhuǎn)換器設(shè)計(jì)一個(gè)測量系統(tǒng),可以實(shí)現(xiàn)0-5V的模擬電壓,并在數(shù)碼管上顯示出來。電壓表應(yīng)用非常廣泛,在電力工業(yè)生產(chǎn)中經(jīng)常要用電壓表來檢測電網(wǎng)電壓,在儀器、儀表及家用電器的維修中經(jīng)常要用電壓表來檢測電壓。以下介紹用AT89S51單片機(jī)
2、設(shè)計(jì)實(shí)現(xiàn)這一功能的方法。項(xiàng)目9數(shù)字式電壓表的設(shè)計(jì)(1)硬件電路設(shè)計(jì)系統(tǒng)要求的是實(shí)現(xiàn)模擬電壓的測量,并實(shí)現(xiàn)數(shù)字顯示,由于單片機(jī)輸入量和輸出量信號(hào)都是數(shù)字量,因此需要一種特殊的電路,將模擬量轉(zhuǎn)換為單片機(jī)能夠識(shí)別的數(shù)字量。A/D轉(zhuǎn)換器就是用來實(shí)現(xiàn)這一過程的電路。根據(jù)數(shù)字式電壓表的實(shí)現(xiàn)功能,硬件電路的設(shè)計(jì)與器件選擇,也可從如下4個(gè)方面考慮:A/D轉(zhuǎn)換電路、單片機(jī)控制器電路、LED顯示電路等。這里選擇具有內(nèi)部程序存儲(chǔ)器的AT89S51單片機(jī)作為控制電路,加上典型的8位并得傳輸?shù)腁/D轉(zhuǎn)換芯片ADC0809作為模/數(shù)轉(zhuǎn)換器,硬件電路原理圖如圖9.1所示。由于ADC0809的時(shí)鐘最大
3、是1280kHz,而在系統(tǒng)中使用的是12MHz,超出了ADC0809的極限。在程序設(shè)計(jì)中為了簡化電路,使用定時(shí)器來完成ADC0809的時(shí)鐘輸入。電路中使用P2.7作為脈沖輸入端。項(xiàng)目9數(shù)字式電壓表的設(shè)計(jì)ADC0809芯片的EOC與單片機(jī)P2.0連接,START和ALE與單片機(jī)P2.6連接,OE與單片機(jī)P2.5連接,單片機(jī)P0定義為數(shù)據(jù)讀入端口,ADC0809芯片的ADDA、ADDB和ADDC接地。顯示使用的是LED數(shù)碼管,采用動(dòng)態(tài)顯示的方式實(shí)現(xiàn)電壓的顯示。P1.0至P1.4接是數(shù)碼管的位選,P3接的是數(shù)碼管的段碼。基準(zhǔn)電電壓接的是正電源+5V,RV2分壓輸出作為輸入的測
4、試電壓,接入ADC0809芯片的INO通道。仿真試驗(yàn)時(shí)可采用A/D轉(zhuǎn)換集成電路ADC0808芯片來進(jìn)行仿真分析。有些Proteus仿真軟件未帶A/D轉(zhuǎn)換集成電路ADC0809芯片。項(xiàng)目9數(shù)字式電壓表的設(shè)計(jì)圖9.1數(shù)字電壓表電路圖項(xiàng)目9數(shù)字式電壓表的設(shè)計(jì)(2)軟件設(shè)計(jì)思路對(duì)于顯示采用動(dòng)態(tài)顯示。為了使人能夠更好地觀看顯示結(jié)果,顯示數(shù)據(jù)的頻率不能過快,程序中設(shè)定間隔為1S電壓轉(zhuǎn)換一次。對(duì)于ADC0809數(shù)據(jù)的是如何讀取的呢?主要有以下幾個(gè)步驟:(1)初始化時(shí)使START和OE信號(hào)全為低電平(2)將要轉(zhuǎn)換的通道地址送A、B、C端口上,在ALE上加鎖存脈沖(3)在START端給出
5、一個(gè)至少有100ns寬的正脈沖信號(hào)(4)是否轉(zhuǎn)換完畢根據(jù)EOC信號(hào)來判斷。如果EOC為低電平,表示在轉(zhuǎn)換過程中;如果EOC變?yōu)楦唠娖剑硎巨D(zhuǎn)換完畢。(5)使OE為高電平,轉(zhuǎn)換數(shù)據(jù)就輸出給單片機(jī)。當(dāng)數(shù)據(jù)傳送完畢后,將OE置為低電平,使ADC0809輸出為高阻狀態(tài),讓出數(shù)據(jù)線。項(xiàng)目9數(shù)字式電壓表的設(shè)計(jì)根據(jù)程序流程圖編寫的源程序如下://文件名dy9-1.c#include#defineucharunsignedchar#includecodeucharTAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
6、0xf8,0x80,0x90};//定義數(shù)碼管顯示數(shù)值ucharstr_TME[4]={0,0,0,0,};//定義數(shù)碼管顯示初始值voiddelay(ucharms)//定義延遲程序{uchari;while(ms--)for(i=0;i<125;i++);}uchartmel=0;ucharad_dat;bitsim=1;3.源程序編寫項(xiàng)目9數(shù)字式電壓表的設(shè)計(jì)/***********************計(jì)數(shù)器中斷函數(shù),用于控制電壓轉(zhuǎn)****************************************時(shí)間間隔,此程序設(shè)定間隔為1S電壓轉(zhuǎn)換一次*****
7、**********/voidtme_tr0(void)interrupt1{TL0=0xb0;TH0=0x3c;if(++tmel==20){tmel=0;sim=1;}}/*****************定義數(shù)碼管顯示***************************/sbitk1=P1^0;sbitk2=P1^1;sbitk3=P1^2;sbitk4=P1^3;voidVAL_xs(){P3=(TAB[str_TME[0]])&0x7f;//顯示小數(shù)點(diǎn)k1=1;delay(5);3.源程序編寫項(xiàng)目9數(shù)字式電壓表的設(shè)計(jì)k1=0;