基于51單片機(jī)的電壓采集與顯示系統(tǒng)的設(shè)計(jì)與開發(fā)_第1頁(yè)
基于51單片機(jī)的電壓采集與顯示系統(tǒng)的設(shè)計(jì)與開發(fā)_第2頁(yè)
基于51單片機(jī)的電壓采集與顯示系統(tǒng)的設(shè)計(jì)與開發(fā)_第3頁(yè)
基于51單片機(jī)的電壓采集與顯示系統(tǒng)的設(shè)計(jì)與開發(fā)_第4頁(yè)
基于51單片機(jī)的電壓采集與顯示系統(tǒng)的設(shè)計(jì)與開發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ課程設(shè)計(jì)題 目:51單片機(jī)的電壓采集與顯示系統(tǒng)設(shè)計(jì) 專 業(yè): 電氣工程及其自動(dòng)化 班 級(jí): 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 2010 年 9 月5 日 摘 要隨著電子科技的不斷發(fā)展與進(jìn)步,電壓測(cè)量成為廣大電子領(lǐng)域中必須掌握的過程,并且對(duì)測(cè)量的精度和采集功能的要求也越來越高,而電壓的測(cè)量與顯示系統(tǒng)甚為重要。本文介紹的重點(diǎn)是電壓數(shù)據(jù)的采集與顯示系統(tǒng),數(shù)據(jù)采集與通信控制采用了模塊化的設(shè)計(jì),數(shù)據(jù)采集與通信控制采用了單片機(jī)8051來實(shí)現(xiàn),硬件部分是以單片機(jī)為核心,還包括模-數(shù)轉(zhuǎn)換模塊,顯示模塊,和串行接口部分,還有一些簡(jiǎn)單

2、的外圍電路。8路被測(cè)電壓通過通用ADC0809模-數(shù)轉(zhuǎn)換,實(shí)現(xiàn)對(duì)采集到的數(shù)據(jù)進(jìn)行模擬量到數(shù)字量的轉(zhuǎn)換,由單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理,用數(shù)碼管顯示模塊來顯示所采集的結(jié)果,由相關(guān)控制器完成數(shù)據(jù)接收和顯示,VB程序編寫了更加明了化數(shù)據(jù)顯示界面。本系統(tǒng)主要包括四大模塊:數(shù)據(jù)采集模塊、控制模塊、顯示模塊、A/D轉(zhuǎn)換模塊。繪制電路原理圖與工作流程圖,并進(jìn)行調(diào)試,最終設(shè)計(jì)完成了該系統(tǒng)的硬件電路。在軟件編程上,采用了C語(yǔ)言進(jìn)行編程,開發(fā)環(huán)境使用相關(guān)集成開發(fā)環(huán)境。開發(fā)了顯示模塊程序、通道切換程序、A/D轉(zhuǎn)換程序。關(guān)鍵詞:?jiǎn)纹瑱C(jī), ADC0809,A/D轉(zhuǎn)換,模塊顯示 電壓測(cè)量AbstractAlong with th

3、e development of electronic technology progress, voltage measurement of electronic fields become broad must grasp of the process, and the accuracy of measurement and collection function requirements, and more and more is also high voltage measurement and display system is very important. This paper

4、focuses on voltage data acquisition and display system, data collection and communication control using modular design, data collection and communication control adopted MCU 8051, hardware part is, still include singlechip mode - several conversion module, display module, and the serial interface, a

5、nd some simple outer circuit. 8 and the voltage to be measured by general ADC0809 mode - and to count the collected data for analog to digital, by SCM processing of data, using a digital display module to show the tube, the related results of collecting data receiving and display controller, VB prog

6、ramming and the data showed that the interface. This system mainly including four modules: the data acquisition module, control module, display module, A/D conversion module. Draw circuit principle diagram and the work flow, and debugging, finally completed the system design of hardware circuit. In

7、software programming, the C language program development environment, use the integrated development environment. Develop A display module procedures, channel switching procedures, A/D conversion program.Keywords: SCM, ADC0809, A/D conversion, module display voltage measurements.HGFDSJHF JHFJK HFKSD

8、 JKFJDSKJF DSJF;DS 目 錄1引言62課程設(shè)計(jì)題目、任務(wù)及要求及方案73電路原理說明93.1 ADC0809模數(shù)轉(zhuǎn)換芯片93.2 AT89C51單片機(jī)103.3八段數(shù)碼管和74LS47103.4 系統(tǒng)整體工作原理113.41硬件原理113.42軟件原理分析124設(shè)計(jì)總體框圖1641硬件總體框圖164.2程序總體框圖164.3待測(cè)信號(hào)源單元電路174.4 AT89C51單片機(jī)184.5單片機(jī)控制單元194.51外部時(shí)鐘電路194.52復(fù)位電路204.53數(shù)碼管顯示模塊215調(diào)試報(bào)告226 總結(jié)及設(shè)計(jì)心得23參考文獻(xiàn)24附錄25 引言數(shù)字電壓表(Digital Voltmeter)

9、簡(jiǎn)稱DVM,它是采用數(shù)字化測(cè)量技術(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ù)字電壓表,已被廣泛用于電子及電工測(cè)量、工業(yè)自動(dòng)化儀表、自動(dòng)測(cè)試系統(tǒng)等智能化測(cè)量領(lǐng)域,示出強(qiáng)大的生命力。與此同時(shí),由DVM擴(kuò)展而成的各種通用及專用數(shù)字儀器儀表,也把電量及非電量測(cè)量技術(shù)提高到嶄新水平。本章重點(diǎn)介紹51單片機(jī)的電壓采集與顯示系統(tǒng)的基于單片機(jī)的數(shù)字電壓表的工作原理,該設(shè)計(jì)首先簡(jiǎn)要介紹

10、了設(shè)計(jì)電壓表的主要方式以及單片機(jī)系統(tǒng)的優(yōu)勢(shì);然后詳細(xì)介紹了直流數(shù)字電壓表的數(shù)據(jù)采集與顯示的設(shè)計(jì)流程,以及硬件系統(tǒng)和軟件系統(tǒng)的設(shè)計(jì),并給出了硬件電路的設(shè)計(jì)細(xì)節(jié),包括各部分電路的走向、芯片的選擇以及方案的可行性分析等。2課程設(shè)計(jì)題目、任務(wù)要求及方案題目:基于51單片機(jī)的電壓采集與顯示系統(tǒng)的設(shè)計(jì)(1)課程設(shè)計(jì)主要任務(wù):A、復(fù)習(xí)有關(guān)課程,例如數(shù)字電路、單片機(jī)等;B、以89c51為核心,根據(jù)設(shè)計(jì)指標(biāo)設(shè)計(jì)電路的框圖;C、根據(jù)要求設(shè)計(jì)出硬件電路圖和軟件裝配圖;D、查閱資料,確定所需各元器件型號(hào)和相關(guān)技術(shù)參數(shù);E、擬定調(diào)整測(cè)試方法,并調(diào)試電路使其達(dá)到設(shè)計(jì)指標(biāo)要求;F、實(shí)現(xiàn)對(duì)電壓的數(shù)據(jù)采集與顯示,完成課程設(shè)計(jì)工

11、作。(2)課程設(shè)計(jì)的要求A、以89c51單片機(jī)為核心芯片,采用ADC0809設(shè)計(jì)一個(gè)單通道模擬電壓采集電路,要求對(duì)所接通道變化的模擬電壓值進(jìn)行采集,采集來的數(shù)字量一路送至數(shù)碼管指示,通過相關(guān)轉(zhuǎn)換在數(shù)碼管上精確顯示出來;B、能夠?qū)χ绷麟妷哼M(jìn)行相應(yīng)的采集和轉(zhuǎn)換;C、利用led對(duì)電壓值進(jìn)行顯示,精確到小數(shù)點(diǎn)后兩位;D、設(shè)計(jì)系統(tǒng)的硬件與軟件電路,并寫出相關(guān)程序進(jìn)行調(diào)試;E、用相關(guān)軟件(如PROTEL、VISIO制圖軟件)畫出各個(gè)分電路;F、完成對(duì)設(shè)計(jì)方案的論證,并做好分析和總結(jié)工作。(3)課程設(shè)計(jì)的方案:依據(jù)綜合課程設(shè)計(jì)的要求,以51單片機(jī)為核心,采用ADC0809設(shè)計(jì)一個(gè)單通道模擬電壓采集電路,要求

12、對(duì)所接通道變化的模擬電壓值進(jìn)行采集,采集來的數(shù)字量一路送至數(shù)碼管指示,通過相關(guān)轉(zhuǎn)換在數(shù)碼管上精確顯示出來,每行顯示5個(gè)數(shù)據(jù),采集完100個(gè)數(shù)據(jù)后停止采集過程,顯示的電壓值可以保留到小數(shù)點(diǎn)后兩位。電壓表的作用即是測(cè)直流電壓的大小,通過對(duì)電壓值的采集與處理,而由所學(xué)微控制器的知識(shí)可知,可以利用單片機(jī)的模數(shù)轉(zhuǎn)換來實(shí)現(xiàn)這一設(shè)計(jì),進(jìn)一步把相應(yīng)的電壓值精確顯示出來。 模數(shù)轉(zhuǎn)換就是利用單片機(jī)控制模數(shù)轉(zhuǎn)換芯片(A/D),讓它對(duì)外部的一個(gè)模擬信號(hào)進(jìn)行采樣、量化、編碼然后轉(zhuǎn)化為一個(gè)離散的數(shù)字量,提供給控制器作進(jìn)一步處理。對(duì)于常用的A/D轉(zhuǎn)換芯片有ADC0809、ADC0808等。它們都是8位的模數(shù)轉(zhuǎn)換芯片,就是把

13、模擬量轉(zhuǎn)換為一個(gè)8位的二進(jìn)制數(shù)。利用單片機(jī)89c51與ADC0808設(shè)計(jì)一個(gè)數(shù)字電壓表,將模擬信號(hào)05 V之間的直流電壓值轉(zhuǎn)換成數(shù)字量信號(hào)0FF,以數(shù)碼管顯示。Protel軟件啟動(dòng)仿真,當(dāng)前輸入電壓為25 0V,轉(zhuǎn)換成數(shù)字值為7FH,用鼠標(biāo)指針調(diào)節(jié)電位器尺,可改變輸入模數(shù)轉(zhuǎn)換器ADc0808的電壓,并通過虛擬電壓表觀察ADc0808模擬量輸入信號(hào)的電壓值,LED數(shù)碼管實(shí)時(shí)顯示相應(yīng)的數(shù)值量。此次電壓表總體的方案就是用單片機(jī)的I/O口輸出信號(hào)來控制A/D啟動(dòng)轉(zhuǎn)換,將送入的模擬量轉(zhuǎn)換為一個(gè)8位數(shù)字量,然后再通過I/O口送回單片機(jī)內(nèi)部進(jìn)行處理,單片機(jī)進(jìn)行一系列的運(yùn)算和校準(zhǔn)后,通過數(shù)碼管將電壓值顯示出來

14、。而在方案的實(shí)現(xiàn)上由兩部分組成:硬件部分和軟件部分。硬件即電子元器件的選擇且將它們連接成一個(gè)可行的硬件系統(tǒng),軟件是硬件系統(tǒng)功能化的重要組成部分。硬件的設(shè)計(jì)可以在Protel,VISIO上進(jìn)行,軟件可以用Protel自帶的匯編工具或是KEIL C51等工具編寫C語(yǔ)言,然后在Protel將硬軟件相結(jié)合,進(jìn)行仿真,再根據(jù)結(jié)果不斷對(duì)硬件進(jìn)行改進(jìn),對(duì)軟件進(jìn)行調(diào)試,實(shí)現(xiàn)電壓的采集與顯示功能。3電路原理說明3.1 ADC0809模數(shù)轉(zhuǎn)換芯片 ADC0809是采樣分辨率為8位的、以逐次逼近原理進(jìn)行模/數(shù)轉(zhuǎn)換的器件。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行

15、A/D轉(zhuǎn)換。ADC0808是ADC0809的簡(jiǎn)化版本,功能基本相同。一般在硬件仿真時(shí)采用ADC0808進(jìn)行A/D轉(zhuǎn)換,實(shí)際使用時(shí)采用ADC0809進(jìn)行A/D轉(zhuǎn)換。DIP封裝的引腳如圖1所示。圖1 ADC0809引腳圖其內(nèi)部結(jié)構(gòu)如圖11所示。ADC0809芯片有28條引腳,各引腳定義: 引腳15,2628(IN0IN7):8路模擬量輸入端。 引腳8,14,15,1721:8位數(shù)字量輸出端。 引腳22(ALE):地址鎖存允許信號(hào),輸入,高電平有效。 6腳(START): AD轉(zhuǎn)換啟動(dòng)脈沖輸入端,輸入一個(gè)正脈沖(至少100ns寬)使其啟動(dòng)(脈沖上升沿使0809復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換)。 7腳(E

16、OC): AD轉(zhuǎn)換結(jié)束信號(hào),輸出,當(dāng)AD轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。 9腳(OE):數(shù)據(jù)輸出允許信號(hào),輸入,高電平有效。當(dāng)AD轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。 10腳(CLK):時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640KHZ. 12腳(VREF(+)、16(VREF(-):參考電壓輸入端. 11腳(Vcc):主電源輸入端。 13腳(GND):地。 引腳2325(ADDA、ADDB、ADDC):3位地址輸入線,用于選通8路模擬輸入中的一路.3.2 AT89C52單片機(jī)AT89C51是51系列的一個(gè)型號(hào),它是ATMEL公司生產(chǎn)的。 AT8

17、9C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,AT89C51有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,AT89C51可以按照常規(guī)方法進(jìn)行編程,但不可以在線編程。AT89C51的主要功能特性有:兼容MCS51指令系統(tǒng),8k可反復(fù)擦寫(>1000次)Fl

18、ash ROM ,32個(gè)雙向I/O口,256x8bit內(nèi)部RAM,3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷,時(shí)鐘頻率0-24MHz,2個(gè)串行中斷,可編程UART串行通道, 2個(gè)外部中斷源,共8個(gè)中斷源,2個(gè)讀寫中斷口線,3級(jí)加密位,低功耗空閑和掉電模式 ,軟件設(shè)置睡眠和喚醒功能。而在本次設(shè)計(jì)中只需要用到最基本的4個(gè)輸入輸出I/O口功能。通過匯編或是C語(yǔ)言編程,可以用指令對(duì)單片機(jī)的各輸入輸出進(jìn)行控制,還可以進(jìn)行各種基本運(yùn)算。3.3八段數(shù)碼管和74LS47八段數(shù)碼管比七段數(shù)碼管多路一位小數(shù)點(diǎn),實(shí)際是8個(gè)LED擺放排列而成。當(dāng)特定的某幾個(gè)數(shù)碼管點(diǎn)亮?xí)r,就顯示了特定的數(shù)字形狀。有共陽(yáng)極和共陰極之分,共陽(yáng)極是指

19、8個(gè)輸入端a、b、c、d、e、f、g、dp要輸入低電平才會(huì)是相應(yīng)LED點(diǎn)亮,共陰極則須輸入高電平。本次設(shè)計(jì)用的是共陽(yáng)極的數(shù)碼管。圖2是其結(jié)構(gòu)原理圖。圖2 八段數(shù)碼管結(jié)構(gòu)74LS47譯碼芯片74LS47是常用的BCD對(duì)七段顯示器譯碼器/驅(qū)動(dòng)器,可對(duì)共陽(yáng)極七段數(shù)碼管進(jìn)行譯碼功能。引腳圖如圖3所示例。如當(dāng)輸入DCBA=0010 則輸出abcdefg=0010010。故使顯示器顯示"2"。其四位BCD碼與對(duì)應(yīng)的譯碼及數(shù)碼管顯示關(guān)系為:DCBA=0000,abcdefg=1000000,數(shù)碼管顯示0;DCBA=0001,abcdefg=1111001,數(shù)碼管顯示1;DCBA=0010

20、,abcdefg=0100100,數(shù)碼管顯示2;DCBA=0011,abcdefg=0110000,數(shù)碼管顯示3;DCBA=0100,abcdefg=0011001,數(shù)碼管顯示4;DCBA=0101,abcdefg=0010010,數(shù)碼管顯示5;DCBA=0110,abcdefg=0000011,數(shù)碼管顯示6;DCBA=0111,abcdefg=1111000,數(shù)碼管顯示7;DCBA=1000,abcdefg=0000000,數(shù)碼管顯示8;DCBA=1001,abcdefg=0011000,數(shù)碼管顯示9;圖3 74LS47芯片3.4 系統(tǒng)整體工作原理現(xiàn)對(duì)整體系統(tǒng)的硬件和軟件工作原理進(jìn)行分析。3

21、.41硬件原理將各單元電路整合后可以得到完整的系統(tǒng)硬件電路,原理:由單片機(jī)的P3口的幾根口線控制ADC0809的幾個(gè)控制端,當(dāng)P3口的幾根口線依次輸出地址選擇、地址所存信號(hào)、開始(START)信號(hào)等的有效電平后,A/D被啟動(dòng),從相應(yīng)的模擬輸入通道采入模擬量,并經(jīng)行轉(zhuǎn)換,轉(zhuǎn)換完成后,AD的標(biāo)志端口EOC有低電平變?yōu)楦唠娖?,單片機(jī)查詢到這一狀態(tài)后,由P3.4對(duì)AD的OE置有效,使轉(zhuǎn)換后的八位二進(jìn)制數(shù)從鎖存器中輸出到單片機(jī)的P0口。單片機(jī)內(nèi)部對(duì)這一二進(jìn)制數(shù)進(jìn)行計(jì)算等必要處理后從P1口輸出到數(shù)碼管顯示部分顯示出來。然后單片機(jī)啟動(dòng)A/D進(jìn)行下一路通道的轉(zhuǎn)換,這就是通過改變P0-P3輸出到A/D的地址辦到

22、的。地址不同,選擇通道不同。其它的控制方法不變。本次設(shè)計(jì)只用到兩路,故轉(zhuǎn)換會(huì)在兩路之間循環(huán)進(jìn)行。其中待測(cè)信號(hào)源由兩個(gè)滑阻分壓形成,改變滑線端位置,則分壓改變,輸入到A/D的模擬電壓值變化?;璧姆謮涸?-10V變化,對(duì)此,可改變A/D的基準(zhǔn)電壓Vref(+),Vref(-)接地不變。Vref(+)接5V時(shí),則可對(duì)0-5V的電壓進(jìn)行準(zhǔn)確的轉(zhuǎn)換。若超出,則轉(zhuǎn)換后的值一直是8位1,即11111111。不能正確量化。此時(shí),將Vref(+)接10V,則可對(duì)0-10V的模擬電壓進(jìn)行正確的量化轉(zhuǎn)換。由以上可知圖中的雙刀雙擲開關(guān)實(shí)際上起到了電壓表量程選擇的作用。一路開關(guān)選擇5V或10V電壓,另一路選擇高低電平

23、將與量程對(duì)應(yīng)的信號(hào)傳到單片機(jī)的P2.0口,達(dá)到對(duì)電壓值的顯示。3.42軟件原理分析對(duì)上面的硬件部分,按照軟件流程框圖進(jìn)行軟件設(shè)計(jì)。用C語(yǔ)言進(jìn)行程序的編寫。程序如下:#include<reg52.h>#define uc unsigned char#define ui unsigned intsbit L_OE=P34;/對(duì)各控制引腳進(jìn)行定義;sbit L_EOC=P35;sbit L_ALE=P36;sbit L_START=P37;sbit L2=P20;void delay(ui x) /延時(shí)子程序,延時(shí)時(shí)間由實(shí)參傳值確定;uc i;while(x-)for(i=0;i<

24、10;i+) ;/主程序;void main()void display5in0(uc zhi);/各個(gè)子程序的聲明,延時(shí)程序在前則不必;void warning(uc zhi);void display10in0(uc zhi);void display5in1(uc zhi);void display10in1(uc zhi);void AD_IN0();void AD_IN1();uc aa,bb;while(1)/設(shè)置大循環(huán),模數(shù)轉(zhuǎn)換不停進(jìn)行;AD_IN0();/調(diào)用通道0轉(zhuǎn)換子程序;aa=P0;/將轉(zhuǎn)換后的數(shù)字量給變量aa;if(aa=0xff)/判斷是否超出量程; warning(

25、aa);/超出則調(diào)用警告子程序; else if(L2=0)display5in0(aa);/*判斷量程,若是5V,則調(diào)用通道0的5V顯示子程序;*/else if(L2=1)display10in0(aa);/否則調(diào)用通道0的10V顯示子程序;AD_IN1();/通道1轉(zhuǎn)換子程序;bb=P0; /同上,將轉(zhuǎn)換后的數(shù)字量傳給變量bb;if(bb=0xff)/判斷是否超出量程; warning(bb);/超出則警告; else if(L2=0)display5in1(bb);/*判斷量程,為5V則調(diào)用通道1的5V顯示程序;*/else if(L2=1)display10in1(bb);/否則調(diào)用

26、通道1的10V顯示子程序; /5V量程通道0顯示程序;void display5in0(uc zhi)uc shu1,shu2;zhi=zhi+3;/用準(zhǔn)確電壓表校準(zhǔn),對(duì)數(shù)字量稍加修正;shu2=zhi/51;/對(duì)數(shù)字量除以256,再乘以量程5,則為顯示值的個(gè)位; shu2=shu2+0x20;/* 個(gè)位和片選信號(hào)相加,0x20是二進(jìn)制0010 0000,對(duì)低四位BCD數(shù)據(jù)值不影響,即P1.5選中一片數(shù)碼管點(diǎn)亮,方便的進(jìn)行動(dòng)態(tài)掃描;*/ shu1=zhi%51;/求上次運(yùn)算的余數(shù);shu1=shu1/5;/余數(shù)乘以10,乘以5,再除以256,表示小數(shù)點(diǎn)位;shu1=shu1+0x10; /四位

27、BCD值加上片選信號(hào),0x10選擇P1.4對(duì)應(yīng)數(shù)碼管;P1=shu2;/點(diǎn)亮一片數(shù)碼管,顯示個(gè)位數(shù)值,其它均關(guān)閉; delay(1);/稍加延時(shí),1毫秒以內(nèi); P1=shu1;/點(diǎn)亮另一片數(shù)碼管,顯示小數(shù)位數(shù)值,其它的關(guān)閉;delay(1);/稍加延時(shí);/10V量程通道0顯示程序,各語(yǔ)句含義通上;void display10in0(uc zhi)uc shu3,shu4; zhi=zhi+5; shu4=zhi/26; shu4=shu4+0x20; shu3=zhi%26;shu3=shu3/2.6;shu3=shu3+0x10;P1=shu4; delay(1); P1=shu3;dela

28、y(1);/5V量程通道1顯示程序,同上;void display5in1(uc zhi)uc shu5,shu6; zhi=zhi+3;shu6=zhi/51; shu6=shu6+0x80; shu5=zhi%51;shu5=shu5/5;shu5=shu5+0x40;P1=shu6; delay(1); P1=shu5;delay(1);/10V量程通道1顯示程序,同上;void display10in1(uc zhi)uc shu7,shu8;zhi=zhi+5; shu8=zhi/26; shu8=shu8+0x80; shu7=zhi%26;shu7=shu7/2.6;shu7=s

29、hu7+0x40;P1=shu8; delay(1); P1=shu7;delay(1);/超出量程警告程序,若判斷超出量程,數(shù)碼管顯示零并閃爍;void warning(uc zhi) P1=0xf0;delay(3000); P1=0xff; delay(3000);/通道0轉(zhuǎn)換程序void AD_IN0()/通道0 P3=0;/通道0地址 L_ALE=1;/地址所存;L_START=1;/啟動(dòng)轉(zhuǎn)換;L_START=0; while(L_EOC!=1) /判斷轉(zhuǎn)換是否完成; L_OE=1;/完成則輸出數(shù)字量;/通道1轉(zhuǎn)換程序,同通道0;void AD_IN1() P3=1; L_ALE=1

30、;L_START=1;L_START=0; while(L_EOC!=1);L_OE=1;4設(shè)計(jì)總體框圖41硬件總體框圖該系統(tǒng)硬件總體框圖由四個(gè)模塊組成,如下圖5所示。在芯片的選擇中,一般的A/D芯片具有多路轉(zhuǎn)換通道,我們可利用多路通道設(shè)計(jì)成多通道的直流電壓表,對(duì)測(cè)量電壓值進(jìn)行采集與處理,進(jìn)而比較準(zhǔn)確的顯示其大小。我們還可以通過改變A/D芯片的參考電壓來改變其量程,達(dá)到對(duì)電壓值的多樣化顯示。A/D芯片將輸入的模擬電壓值轉(zhuǎn)換為一個(gè)8位的二進(jìn)制數(shù)字,再輸送到單片機(jī)控制單元,經(jīng)過處理顯示出相應(yīng)電壓值。 圖5 4.2程序總體框圖設(shè)計(jì)程序部分時(shí),主要應(yīng)包括主函數(shù)和和幾個(gè)功能子函數(shù)。根據(jù)電壓表的特性,設(shè)計(jì)

31、了A/D準(zhǔn)換的子函數(shù),包括通道0和通道1,還有數(shù)碼管顯示子函數(shù),包括5V和10V量程兩個(gè)。程序總體框圖如下圖4所示。4.3待測(cè)信號(hào)源單元電路待測(cè)信號(hào)源就是直流電壓表應(yīng)用時(shí),所須測(cè)電壓值的信號(hào)源,實(shí)際上不屬于電壓表的內(nèi)部結(jié)構(gòu),但在此開發(fā)研究時(shí),設(shè)計(jì)它以供仿真。其電路圖如圖6所示。圖6 待測(cè)信號(hào)源模塊圖3 待測(cè)信號(hào)源該部分實(shí)際上是兩個(gè)滑動(dòng)變阻器均接在電源和地兩端,中間的滑線端提供兩路待測(cè)信號(hào),這兩路分別提供給模數(shù)轉(zhuǎn)換的通道0和通道1。4.4 AT89C51/52單片機(jī)(下圖7所生) 圖7 AT89C52單片機(jī)芯片4.5單片機(jī)控制單元單片機(jī)控制單元是整個(gè)系統(tǒng)的核心中樞,對(duì)外圍進(jìn)行控制,對(duì)數(shù)據(jù)進(jìn)行運(yùn)算

32、處理,是連接各部分的紐帶。它主要包括51單片機(jī)芯片和其工作所必須的外圍電路,如時(shí)鐘振蕩電路和復(fù)位電路等。4.51外部時(shí)鐘電路主要是通過一個(gè)12MHZ的時(shí)鐘晶振產(chǎn)生時(shí)鐘信號(hào),以作為單片機(jī)工作的外部時(shí)鐘,其XTAL1和XTAL2分別接入到單片機(jī)上相對(duì)應(yīng)的引腳。電路圖如圖8。 圖8 外部時(shí)鐘電路外部時(shí)鐘的晶振頻率為12MHZ,則通過該電路提供給單片機(jī)的時(shí)鐘也為12MHZ.4.52復(fù)位電路當(dāng)對(duì)單片機(jī)的的reset引腳加超過兩個(gè)機(jī)器周期以上的高電平時(shí),可使單片機(jī)復(fù)位,即程序從頭開始執(zhí)行。設(shè)計(jì)的復(fù)位電路如圖10所示: 圖10 復(fù)位電路當(dāng)按一次鍵后,形成的RC電路會(huì)使RST端的高電平保持兩個(gè)機(jī)器周期以上,使

33、單片機(jī)復(fù)位。4.53數(shù)碼管顯示模塊選用了兩片集成的共陽(yáng)極數(shù)碼管,每片是由兩塊8端數(shù)碼管組成(包括小數(shù)點(diǎn)位)。這四塊8斷數(shù)碼管共用相同的數(shù)據(jù)輸入線,每塊有一根片選線,只有選中了該數(shù)碼管,它才會(huì)點(diǎn)亮并顯示。而通過動(dòng)態(tài)掃描原理可以使接在同一數(shù)據(jù)線的幾塊數(shù)碼管顯示不同的數(shù)。其中的74LS47芯片是BCD轉(zhuǎn)7段數(shù)碼管的譯碼器。在DCBA輸入BCD碼值,通過74LS47轉(zhuǎn)換就可以在數(shù)碼管上顯示十進(jìn)制數(shù)字。其中有兩塊電壓表起校準(zhǔn)對(duì)比作用。圖9 數(shù)碼管顯示模塊5調(diào)試報(bào)告在Protel仿真軟件平臺(tái)上搭建硬件電路,在keil uv2上編寫軟件并經(jīng)編譯連接生產(chǎn)可執(zhí)行的.hex文件,把該文件添加到在Protel平臺(tái)上

34、搭建好的電路的單片機(jī)里。運(yùn)行進(jìn)行仿真調(diào)試。仿真時(shí),兩塊數(shù)碼管均有各自示數(shù),在標(biāo)準(zhǔn)電壓表的示數(shù)附近,說明各模塊均在正常工作,只是軟件上對(duì)數(shù)據(jù)的處理有待改善。開始時(shí),程序的顯示子程序里沒有修正的過程,仿真的結(jié)果精度不達(dá)要求:例如,在5V量程下,標(biāo)準(zhǔn)電壓表的顯示值2.53V,而數(shù)碼管顯示2.40;標(biāo)準(zhǔn)電壓表顯示4.09V,數(shù)碼管示值為3.9 2。在10V量程則偏差更大。據(jù)此在程序中對(duì)值進(jìn)行修正,依照標(biāo)準(zhǔn)電壓表進(jìn)行嘗試性修正,各顯示子程序中的語(yǔ)句“zhi=zhi+3;”或“zhi=zhi+5;”等都是對(duì)偏小的結(jié)果進(jìn)行的修正。修正后發(fā)現(xiàn),若在5V量程上測(cè)5V以內(nèi)的模擬電壓或是在10V量程上測(cè)5到10V電

35、壓,則能精確到小數(shù)點(diǎn)后兩位:如,5V時(shí):標(biāo)準(zhǔn)電壓表的顯示值2.83V,而數(shù)碼管顯示2.80;標(biāo)準(zhǔn)電壓表的顯示值3.68V,而數(shù)碼管顯示3.71。10V時(shí):標(biāo)準(zhǔn)電壓表的顯示值6.84V,而數(shù)碼管顯示6.83;標(biāo)準(zhǔn)電壓表的顯示值7.27V,而數(shù)碼管顯示7.33;兩路通道顯示均如此,是四舍五入保留到小數(shù)點(diǎn)后兩位的值。同時(shí)發(fā)現(xiàn),用5V量程測(cè)超出的電壓時(shí),數(shù)碼管顯示“00”并閃爍,說明警告程序工作。此外若用10量程測(cè)5V以內(nèi)的電壓,則精確度大大下降,誤差達(dá)到0.20V。故為求精確,要求使用者用適當(dāng)?shù)牧砍虦y(cè)量待測(cè)電壓,獲得較高的精度。此外,數(shù)碼管在正常工作顯示時(shí),仍有一些閃爍跳動(dòng),這主要是因?yàn)橛脛?dòng)態(tài)掃描法顯示,而在兩路通道間

溫馨提示

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

評(píng)論

0/150

提交評(píng)論