版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 基于單片機的直流電壓電流檢測的設(shè)計一設(shè)計要求用單片機做一個電壓,電流檢測裝置。(1)電壓的范圍:DC10-36V,要求精度1%以內(nèi)。(2)電流DC 0.1-3A,要求精度1%以內(nèi)。(3)用液晶顯示電壓,電流值(4)通過按鍵可切換電壓,電流顯示。(5)每組做一個實物,實物要求用通用板焊接完成,單片機自選。二設(shè)計簡介:利用單片機系統(tǒng)與模數(shù)轉(zhuǎn)換芯片、顯示模塊,按鍵選擇等的結(jié)合構(gòu)建直流電壓電流表。由于單片機的發(fā)展已經(jīng)成熟,利用單片機系統(tǒng)的軟硬件結(jié)合,可以組裝出許多的應(yīng)用電路來。此方案的原理是模數(shù)(A/D)轉(zhuǎn)換芯片的基準(zhǔn)電壓端,被測量電壓輸入端分別輸入基準(zhǔn)電壓和被測電壓。模數(shù)(A/D)轉(zhuǎn)換芯
2、片通過按鍵選擇模塊將被測量電壓或電流輸入端所采集到的模擬電壓或電流信號轉(zhuǎn)換成相應(yīng)的數(shù)字信號,然后通過對單片機系統(tǒng)進行軟件編程,使單片機系統(tǒng)能按規(guī)定的時序來采集這些數(shù)字信號,通過一定的算法計算出被測量電壓或電流的值。最后單片機系統(tǒng)將計算好了的被測電壓電流值按一定的時序送入顯示電路模塊加以顯示。三單片機簡介及本設(shè)計單片機的選擇在這一設(shè)計中,我們涉及到了一個關(guān)鍵系統(tǒng)模塊單片機系統(tǒng)模塊,而目前單片機的種類是很繁多的,主要有主流的8位單片機和高性能的32位單片機,結(jié)合本設(shè)計各方面因素,8位單片機對于本設(shè)計已經(jīng)是綽綽有余了,但將用哪一種類8的單片機呢。單片機是指一個集成在一塊芯片上的完整計算機系統(tǒng),具有一
3、個完整計算機所需要的大部分部件:CPU,內(nèi)存,總線系統(tǒng)等。而目前常用的單片機的8位有51系列單片機,AVR單片機,PIC單片機。應(yīng)用最廣的8位單片機還是intel的51系列單片機。51系列單片機的特點是:硬件結(jié)構(gòu)合理,指令系統(tǒng)規(guī)范,加之生產(chǎn)歷史悠久,世界有許多芯片公司都買了51的芯片核心專利技術(shù),并在其基礎(chǔ)上擴充其性能,使得芯片的運行速度變得更快,性價比更高。AVR單片機是atmel公司推出較新的單片機,它的顯著特點是:高性能,低功能,高速度,指令單周期為主,但性格方面比51單片機要高。有專門的I/O方向寄存器。雖然有轉(zhuǎn)強的驅(qū)動電壓,但I/O口使用不比51單片機方便。 PIC單片機系列是美國微
4、芯公司的產(chǎn)品,也是市面上增長最快的單片機之一,屬精簡指令集單片機,其特點是:高速度,高性能,但在性格方面比51單片機要高,也有專門的I/O方向寄存器,I/O口使用不比51單片機方便。 MSP430系列單片機是美國德州儀器(TI)1996年開始推向市場的一種16位超低功耗、具有精簡指令集(RISC)的混合信號處理器(Mixed Signal Processor)。稱之為混合信號處理器,是由于其針對實際應(yīng)用需求,將多個不同功能的模擬電路、數(shù)字電路模塊和微處理器集成在一個芯片上,以提供“單片”解決方案。該系列單片機多應(yīng)用于需要電池供電的便攜式儀器儀表中。 51系列和msp430系列有學(xué)過,比較熟悉,
5、其他的比較陌生,因此優(yōu)先考慮51系列和msp430系列。方案一:采用TI 公司的msp430f149單片機,該單片機是超低功耗的16位自帶ADC,含豐富的外設(shè)。片內(nèi)有12位的ADC,分表率高,可滿足1%的精度要求。該單片機的工作電壓是1.8v-3.3v。需要電源轉(zhuǎn)換電路。msp430f149最小系統(tǒng)電路。將轉(zhuǎn)換電路的輸出接到msp430f149的P6口,該端口是ADC轉(zhuǎn)換器的模擬輸入通道。MSP430F149自帶12位AD,無需外接AD轉(zhuǎn)換器,很方便,編程也相對簡單,但是市場上只有貼片芯片,焊接很困難,且價格比較貴。方案二:采用Inntel生產(chǎn)的89C52。采用51系列的AT89C52,它是低
6、電壓、低功耗、高性能的CMOS8位單片機,片內(nèi)含8KB的可反復(fù)擦寫的只讀程序存儲器和256B的隨機存取數(shù)據(jù)存儲器,32個I/O口線,3個16位定時/計數(shù)器,片內(nèi)振蕩器及時鐘電路,并與MCS-51系列單片機兼容。在設(shè)計中,單片機起著連接硬件電路與程序運行及存儲數(shù)據(jù)的任務(wù),一方面,它將A/D轉(zhuǎn)換器、顯示器和語音芯片等通過I/O口地址線和數(shù)據(jù)線連接起來。芯片沒有AD轉(zhuǎn)換部分,需要外接AD轉(zhuǎn)換芯片。89C52我們比較熟悉,價格便宜,直插式,方便焊接,且符合實驗要求。對比考慮下,我們選擇51系列的89C52芯片。四模數(shù)(A/D)轉(zhuǎn)換芯片的選擇在本設(shè)計中,模數(shù)(A/D)轉(zhuǎn)換模塊是一個重要的模塊,它關(guān)系到最
7、后數(shù)電壓電流值的精確度。所以,A/D芯片的選擇是設(shè)計過程中一個很重要的環(huán)節(jié)。1 常用的A/D芯片簡介常用的A/D芯片有AD0809,AD0832,TLC2543C等幾種。下面簡單介紹一下這三種芯片。AD0809是8位逐次逼近型A/D轉(zhuǎn)換器,它是由一個8路的模擬開關(guān)、一個地址鎖存譯碼器、一個A/D 轉(zhuǎn)換器和一個三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個模擬通道,允許8 路模擬量分時輸入,共用A/D 轉(zhuǎn)換器進行轉(zhuǎn)換。些A/D轉(zhuǎn)換器是的特點是8位精度,屬于并行口,如果輸入的模擬量變化大快,必須在輸入之前增加采樣電路。AD0832也是8位逐次逼近型A/D轉(zhuǎn)換器,可支持致命傷個單端輸入通道和一個差分輸入通道
8、。它易于和微處理器接口或獨立使用;可滿量程工作;可用地址邏輯多路器選通各輸入通道。TLC2543C是12位開關(guān)電容逐次逼近A/D轉(zhuǎn)換,每個器件有三個控制輸入端,片選,輸入/輸出時鐘以及地址輸入端。它可以從主機高速傳輸轉(zhuǎn)換數(shù)據(jù)。它有高速的轉(zhuǎn)換,通用的控制能力,具有簡化比率轉(zhuǎn)換,刻度以及模擬電路與邏輯電路和電源噪聲隔離,耐高溫等特點。綜合上述幾種A/D轉(zhuǎn)換芯片的特點,前兩種芯片的性能和精度都不如第三種芯片。在本設(shè)計中,我們的目標(biāo)是設(shè)計精度1%以內(nèi)的高精度電壓電流測量,因此在此,我們選擇精度為12位的TLC2543芯片。2模數(shù)(A/D)芯片TLC2543的資料綜合本設(shè)計的各方面考慮,我們選了TLC2
9、543模數(shù)轉(zhuǎn)換芯片。下面就介紹此芯片的各方面資料。TLC2543芯片的封裝引腳圖和引腳說明如下: 引腳說明:引腳號名稱I/O說明1-9,11,12AIN0-AIN10I模擬輸入端。15CSI片選端。17Data inputI串行數(shù)據(jù)輸入端。16Data outO用于A/D轉(zhuǎn)換結(jié)果輸也的3態(tài)串行輸出端19EOCO轉(zhuǎn)換結(jié)束端10GND接地端18I/O clkI輸入/輸出時鐘端14REF+I正基準(zhǔn)電壓端13REF-I負(fù)基準(zhǔn)電壓端20VCC正電壓端各引腳的使用詳細(xì)介紹。1 AIN0-AIN10這11個模擬信號輸入由內(nèi)部多路選器選擇。對4.1MHZ的I/O clk,驅(qū)動源阻抗必須小于或等于50歐并且能夠
10、將模擬電壓由60PF的電容來限制其斜率。2 在CS端的一個由高低低變化將復(fù)位內(nèi)部計數(shù)器并控制使能data out,data input和I/O clk。一個由低至高的變化將在一個設(shè)置時間內(nèi)禁止data input和I/O clk.3 串行數(shù)據(jù)輸入端data input是一個4位的串行地址選擇下一個即將被轉(zhuǎn)換的所需的模擬輸入或測試電壓。串行數(shù)據(jù)以MSB為前導(dǎo)并在I/O clk的前4個上升沿被移入。在4個地址位被讀入地址寄存器后,I/O clk 將剩下的幾位依次輸入。4 Data out在CS為高時處于高阻抗?fàn)顟B(tài),而當(dāng)CS為低時處于激活狀態(tài)。CS一旦有效,按照前一次轉(zhuǎn)換結(jié)果的MSB/LSB值將da
11、ta out從高阻抗?fàn)顟B(tài)轉(zhuǎn)變成相應(yīng)的邏輯電平,I/O clk 的下一個下降沿將根據(jù)下一個MSB/LSB將data out驅(qū)動成相應(yīng)的邏輯電平,剩下的各位依次移出。5 EOC在最后的I/O clk 下降沿之后,從高電平變?yōu)榈碗娖讲⒈3值椭钡睫D(zhuǎn)換完成及數(shù)據(jù)準(zhǔn)備傳輸。6 GND端是內(nèi)部電路的地回路端,除加有說明外,所有電壓測量都相對于GND7 I/O clk端串行輸入并完成以下四個功能:第一,在I/O clk的前8個上升沿,它將8個輸入數(shù)據(jù)信鍵入輸入數(shù)據(jù)寄存器。在第4個上升沿之后為多路器的地址。第二,在I/O clk的第4個下降沿,在選定的多路器的輸入端上的模擬輸入電壓開始和電容器充電并繼續(xù)到I/O
12、 clk的最后一個下降沿。第三,它將前一次轉(zhuǎn)換的數(shù)據(jù)的其余11位移出data out端。在I/O clk的下降沿時數(shù)據(jù)變化。第四,在I/O clk的最后一個下降沿它將轉(zhuǎn)換的控制信號傳送到內(nèi)部的狀態(tài)控制位。8 REF+端通常接VCC,最大輸入電壓范圍取決于加于本端與加于REF-端的電壓差。9 REF-端通常接地。五液晶顯示器的選擇方案一采用1602液晶芯片1602液晶是工業(yè)字符型液晶,能夠同時顯示16*2即32個字符。1602液晶模塊內(nèi)部的字符發(fā)生存儲器已經(jīng)存儲了160個不同的點陣字符圖形,這些字這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼。使
13、用時直接編寫軟件程序按一定的時序驅(qū)動即可。它的特點是顯示字跡清楚,價格相對便宜。方案二采用12864液晶芯片12864液晶也是一種工業(yè)字符型液晶,它不僅能夠顯示1602液晶所可以顯示的字符,數(shù)字等信息,而且還可以顯示8*4個中文漢字和一些簡單的圖片,顯示信息也非常的清楚。使用時也直接編寫軟件程序按一定的時序驅(qū)動即可。不過它的價格比1602液晶貴了很多。在本設(shè)計中,我們只需要顯示最后電電壓或的數(shù)字值,綜合上面各種顯示器件的特點:而點陣顯示器件驅(qū)動顯示軟件程序編寫麻煩,占用的引腳相對也較多。也不是理解的顯示器件。所以在本設(shè)計中,我們考慮用液晶顯示器件,雖然12864液晶比1602液晶的功能強,不過
14、在價格方面卻貴了好多。而1602液晶也足夠滿足本設(shè)計的需要。因此,在本設(shè)計實驗我們選擇1602液晶顯示器件。21602液晶的參數(shù)資料我們選擇了1602液晶做為本設(shè)計的顯示模塊的顯示器件。以下是1602液晶的各方面參數(shù):1接口信號說明:編號符號引腳說明1VSS電源地2VDD電源正極3VL液晶顯示偏壓信號4RS數(shù)據(jù)/命令選擇端5R/W讀/寫選擇端6E使能信號8-14D0-D7Data I/O15BLA背光源正極16BLK背光源負(fù)極2基本操作時序:1. 讀狀態(tài):輸入:RS=0,RW=1,E=1。輸出:D0-D7為狀態(tài)字2. 寫狀態(tài):輸入:RS=0,RW=0,D0-D7為指令碼,E為高脈沖。輸出:無3
15、. 讀數(shù)據(jù):輸入:RS=1,RW=1,E=1。輸出:D0-D7為數(shù)據(jù)。4. 寫數(shù)據(jù):輸入:RS=1,RW=0,D0-D7為數(shù)據(jù),E為高脈沖。輸出:無3狀態(tài)字說明STA7STA6STA5STA4STA3STA2STA1STA0STA0-6當(dāng)前數(shù)據(jù)地址指針的數(shù)值STA7讀寫操作使能1:禁止 0:允許 4指令的說明。 顯示模式設(shè)置 指令碼 功能00111000設(shè)置16*2顯示,5*7點陣,8位數(shù)據(jù)口 顯示開/關(guān)及光標(biāo)設(shè)置 指令碼 功能00001DCBD=1開顯示;D=0關(guān)顯示C=1顯示光標(biāo);C=0不顯示關(guān)標(biāo)B=1光標(biāo)閃爍;B=0光標(biāo)不顯閃爍000001NSN=1當(dāng)讀寫一個字條款后地址指針加一,且光標(biāo)
16、加一。N=0當(dāng)讀或?qū)懸粋€字符后地址指針減一,且光標(biāo)減一。S=1當(dāng)寫一個安條款,整屏顯示左移(N=1)或右移(N=0),以得到光標(biāo)不移動而屏幕移動的效果。S=0當(dāng)寫一個字符,整屏顯示不移動。數(shù)據(jù)控制: 指令碼 功能80H+地址碼(0-27H,40H-67H)設(shè)置數(shù)據(jù)地址指針01H顯示清屏:1,數(shù)據(jù)指針清0 2,所有顯示清002H顯示回車:數(shù)據(jù)指針清0六硬件總體設(shè)計:1設(shè)計方案:根據(jù)上述,我們選擇單片機與A/D轉(zhuǎn)換芯片結(jié)合的方法實現(xiàn)本設(shè)計。使用的基本元器件是:AT89C51單片機,TLC2543模數(shù)轉(zhuǎn)換芯片,1602液晶顯示器,開關(guān),按鍵,電容,電阻,晶振,標(biāo)準(zhǔn)電源等等。設(shè)計的基本框圖如下:單片機
17、系統(tǒng)模塊1602液晶顯示模塊A/D轉(zhuǎn)換模塊輸入電路模塊按鍵選擇模塊七硬件電路系統(tǒng)模塊的設(shè)計1單片機系統(tǒng)單片機最小系統(tǒng)包括晶振電路,復(fù)位電路,電源。其原理圖如下:轉(zhuǎn)換電路模塊根據(jù)設(shè)計要求,要檢測直流電壓電流并顯示。直流電壓是10v-36v,電流是0.1A-3A。這些都不滿足ADC對模擬量的要求,故要通過轉(zhuǎn)換電路轉(zhuǎn)換后輸入到ADC中去。轉(zhuǎn)換電路如下:1.直流電壓轉(zhuǎn)換電路該電路通過串聯(lián)兩個高精度的電阻分壓、再通過低通濾波器濾波后連接一個電壓跟隨器。待測量進入ADC或者單片機之前必須要濾波處理,提高抗干擾性。若前級的電阻精度不高,導(dǎo)致被ADC采集的數(shù)據(jù)與待測的數(shù)據(jù)有誤差,加上ADC轉(zhuǎn)換、顯示等的誤差,
18、這樣就綜合誤差較大,可能不能達到百分之一的精度要求。故這兩個電阻需要一定的精度。電阻選用精度為千分之一的精密電阻51k和4.7k。電容選擇100uf的鉭電容,運放選擇LM358這個電壓范圍滿足ADC的要求。2.直流電流轉(zhuǎn)換電路0.1A-3A的直流電流需要先轉(zhuǎn)換成直流電壓,通過取樣電阻轉(zhuǎn)換成小電壓信號,取樣電阻選擇為0.01。這里轉(zhuǎn)換后的電壓由于過小,所以需要采取一些抗干擾措施,比如在電源的引入端加電源退耦電容,或在輸入端加低通濾波器。對于這個小電壓信號,可采用隔離放大器7840隔離后再將信號放大,這種放大器能隔離放大器是一種輸入電路和輸出電路之間電氣絕緣的放大器,對模擬信號進行隔離,并按照一定
19、的比例放大。在這個隔離、放大的過程中要保證輸出的信號失真要小,線性度、精度、帶寬、隔離耐壓等參數(shù)都要達到使用要求。對被測對象和數(shù)據(jù)采集系統(tǒng)予以隔離,從而提高共模抑制比,同時保護電子儀器設(shè)備和人身安全。不過這種放大器成本比較高,這里不采用。儀表放大器是一種精密差分電壓放大器,它具有高共模抑制比、高輸入阻抗、低噪聲、低線性誤差、低失調(diào)漂移增益設(shè)置靈活和使用方便等特點,使其在數(shù)據(jù)采集、傳感器信號放大中使用比較多。運放A1,A2為同相差分輸入方式,同相輸入可以大幅度提高電路的輸入阻抗,減小電路對微弱輸入信號的衰減;差分輸入可以使電路只對差模信號放大,而對共模輸入信號只起跟隨作用,使得送到后級的差模信號
20、與共模信號的幅值之比(即共模抑制比CMRR)得到提高。這個儀表放大器可以通過三個運放外接一些電阻來實現(xiàn)。成本低又能滿足要求,故采用這種方式。儀表放大器的放大倍數(shù)是;由以上兩式可算得Uo=0.1v3v滿足ADC的要求。若要電路的抗干擾性能更高,還可以在兩個差分的運放的反饋回路加高頻消燥電容。 也可以采用電阻來分流,將0.1A-3A的電流分成0.1A-1A和1A-3A的兩個量程的電流,然后通過小電阻轉(zhuǎn)換成電壓,對于小電壓信號可以采用運放放大,大電壓信號經(jīng)濾波后輸入到ADC中去。由于這樣不能實時采集信號,需要更換通道,故在這里采用儀表放大器來實現(xiàn)。由于3A的直流電流比較大,可能會發(fā)生過流對人和電路有
21、損害,需要考慮加過流保護裝置。一般的過流保護采用成本比較低的保險絲,采用普通熔絲的保護電路,其過電流反應(yīng)是較遲鈍的,因而不能作為靈敏的保護裝置。電子保護電路具有高速斷流、恢復(fù)容易的特點,可應(yīng)用于任何直流電路中作過流保護裝置。這里考慮當(dāng)過流時需要切斷電路而又能快速恢復(fù)電路使測試能繼續(xù)進行。采用電子保護電路。其電路圖如下:電子保護電路如所示。當(dāng)微動開關(guān)接通時,單向晶閘管導(dǎo)通,直流電路也導(dǎo)通。當(dāng)用電量增大到超過規(guī)定的允許值時,檢測電阻上的電壓大于時,晶體管導(dǎo)通,此時晶體管集電極和基極間的電壓下降到低于維持電壓,BG,SCR關(guān)斷,切斷供電電路。元件選擇:當(dāng)電路兩端電壓100時,用3DD15C,單向晶閘
22、管SCR可用6400。的阻值是根據(jù)電源所允許的電流確定的,即0.73(3為電源允許電流)。若電路的耗電是,阻值為0.35的線繞電阻,允許通過的電流為3。兩個轉(zhuǎn)換電路的輸出接到ADC的模擬通道。通過按鍵選擇不同的通道來實現(xiàn)對電壓或者電流的采集。3A/D轉(zhuǎn)換芯片與單片機的連接此設(shè)計中選擇的是A/D轉(zhuǎn)換芯片的通道0和1,A/D芯片的數(shù)據(jù)輸入口連接單片機的P1.3口,數(shù)據(jù)輸出口連接單片機的P1.4口,芯片使能端連接單片機的P1.5口,脈沖端連接單片機的P1.6口。模塊連接如下圖所示。41602液晶與單片機連接此模塊液晶的RS,RW和E端分別連接單片機的P2.0,P2.1和P2.2口;液晶的數(shù)據(jù)各端口連
23、接單片機的P0口。具體如下圖所示。5.鍵盤與單片機的連接如下該鍵盤的功能:當(dāng)鍵盤1被按下時,選擇電壓測量;當(dāng)鍵盤2被按下時,選擇電流測量。八系統(tǒng)軟件的設(shè)計主程序設(shè)計包括以下方面:按照硬件電路對單片機位定義。編寫延時模塊程序。編寫驅(qū)動1602液晶顯示模塊程序。編寫驅(qū)動A/D轉(zhuǎn)換模塊程序。編寫鍵盤掃描切換模塊程序。主程序的總體流程如下圖:開始對液晶,定時器初始化A/D轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換顯示瞬時電壓或電流值鍵盤判斷選擇電壓測量還是電流測量九程序清單:1 用按鍵選擇調(diào)用子函數(shù)的方法實現(xiàn)電壓電流測量的切換。按鍵一選擇電壓測量,按鍵二選擇電流測量。#include<reg52.h>#include&
24、lt;stdio.h>#define uchar unsigned char#define uint unsigned intuchar code tab0="WELCOME TO USE"/預(yù)定義宏uchar code tab1="PRESS KEY CHOOSE"uchar code tab2="VOLTAGE IS"uchar code tab3="V"uchar code tab4="CURRENT IS"uchar code tab5="A"long floa
25、t dat; sbit rs=P25;/1602液晶寫命令/數(shù)據(jù)標(biāo)志,0時寫命令sbit rw=P26;/1602液晶寫入/讀出標(biāo)志,0時寫入數(shù)據(jù)sbit ep=P27;sbit input=P13;sbit output=P14;sbit cs=P15;sbit clk=P12;sbit key1=P32;sbit key2=P33; void delay(int z)/延時函數(shù)int x,y;for(x=z;x>0;x-)for(y=10;y>0;y-);void write_com(uchar com)/往1602液晶寫命令函數(shù)rs=0;P0=com;delay(5);ep=
26、1;delay(5);ep=0;void write_dat(long float dat)/往1602液晶寫數(shù)據(jù)函數(shù)rs=1;P0=dat;delay(5);ep=1;delay(5);ep=0;void init_1602()/對1602液晶的初始化函數(shù)rs=0; rw=0; write_com(0x38);/顯示模式設(shè)置write_com(0x0c);delay(1);write_com(0x06);delay(1);write_com(0x01);delay(1);write_com(0x80+0x10);delay(1);void display(uchar x,uchar y,ui
27、nt dat)/顯示電壓值的函數(shù),x行y列開始顯示uint add;uchar i,a5;switch(x)case 0:add=0x80;break;case 1:add=0x80+0x40;break; add=add+y; write_com(add); for(i=0;i<5;i+)ai=dat%10;dat=dat/10; write_dat(a4+0x30); write_dat(a3+0x30); write_dat('.'); write_dat(a2+0x30); write_dat(a1+0x30); write_dat(a0+0x30);void d
28、isplay_zifu(uchar x,uchar y,uchar *str)/顯示字符函數(shù),x行y列開始顯示uint add;switch(x)case 0:add=0x80;break;case 1:add=0x80+0x40;break; add=add+y;write_com(add);while(*str!='0')write_dat(*str);str+;uint read_AD(uchar con_way)/讀取AD轉(zhuǎn)換值操作函數(shù)uint dat=0;uchar i;cs=0;clk=0;con_way<<=4;for(i=0;i<12;i+)c
29、on_way<<=1; input=CY;dat<<=1;if(output)dat=dat|0x01;delay(2);clk=1;delay(5);clk=0;cs=1;return dat;uint read_Vvalue()/電壓的數(shù)值處理long float dq;long float dat_V;dq=read_AD(0); dat_V=(62250*dq)/4096;dat=dat_V;return dat; uint read_Avalue()/電流的數(shù)值處理 long float dq;long float dat_A;dq=read_AD(1); d
30、at_A=(5000*dq)/4096;dat=dat_A;return dat;void test()/電壓電流按鍵選擇切換子函數(shù)函數(shù) int N=50; int j; long float sum = 0; if(key1=0) delay(10); if(key1=0) init_1602(); delay(10); for(j=0;j<N;j+)/平均值濾波去干擾 sum+=read_Vvalue();dat=(sum/N);display_zifu(0,0,tab2);display(1,5,dat);display_zifu(1,12,tab3); if(key2=0) de
31、lay(10);if(key2=0) init_1602(); delay(10); for(j=0;j<=N;j+)/平均值濾波去干擾 sum+=read_Avalue(); dat=(sum/N);display_zifu(0,0,tab4);display(1,5,dat);display_zifu(1,12,tab5);void main()/主函數(shù) init_1602();delay(10); display_zifu(0,1,tab0);display_zifu(1,0,tab1); while(1) test(); 2. 用中斷方法實現(xiàn)電壓電流測量的切換。按鍵一外部中斷0選
32、擇電壓測量,按鍵二外部中斷1選擇電流測量。#include<reg52.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intuchar code tab0="WELCOME TO USE"/預(yù)定義宏uchar code tab1="PRESS KEY CHOOSE"uchar code tab2="VOLTAGE IS"uchar code tab3="V"uchar code tab4="C
33、URRENT IS"uchar code tab5="A"long float dat; sbit rs=P25;/1602液晶寫命令/數(shù)據(jù)標(biāo)志,0時寫命令sbit rw=P26;/1602液晶寫入/讀出標(biāo)志,0時寫入數(shù)據(jù)sbit ep=P27;sbit input=P13;sbit output=P14;sbit cs=P15;sbit clk=P12;sbit key1=P32;sbit key2=P33;void delay(int z)/延時函數(shù)int x,y;for(x=z;x>0;x-)for(y=10;y>0;y-);void write
34、_com(uchar com)/往1602液晶寫命令函數(shù)rs=0;P0=com;delay(5);ep=1;delay(5);ep=0;void write_dat(long float dat)/往1602液晶寫數(shù)據(jù)函數(shù)rs=1;P0=dat;delay(5);ep=1;delay(5);ep=0;void init_1602()/對1602液晶的初始化函數(shù)rs=0; rw=0; write_com(0x38);/顯示模式設(shè)置write_com(0x0c);delay(1);write_com(0x06);delay(1);write_com(0x01);delay(1);write_com
35、(0x80+0x10);delay(1);void display(uchar x,uchar y,uint dat)/顯示電壓值的函數(shù),x行y列開始顯示uint add;uchar i,a5;switch(x)case 0:add=0x80;break;case 1:add=0x80+0x40;break; add=add+y; write_com(add); for(i=0;i<5;i+)ai=dat%10;dat=dat/10; write_dat(a4+0x30); write_dat(a3+0x30); write_dat('.'); write_dat(a2+
36、0x30); write_dat(a1+0x30); write_dat(a0+0x30);void display_zifu(uchar x,uchar y,uchar *str)/顯示字符函數(shù),x行y列開始顯示uint add;switch(x)case 0:add=0x80;break;case 1:add=0x80+0x40;break; add=add+y;write_com(add);while(*str!='0')write_dat(*str);str+;uint read_AD(uchar con_way)/讀取AD轉(zhuǎn)換值操作函數(shù)int dat=0;uchar i;cs=0;clk=0;con_way<<=4;for(i=0;i<12;i+)con_way<<=1; input=CY;dat<<=1;if(output)dat=dat|0x01;delay(2);clk=1;delay(5);clk=0;cs=1;return dat;uint read_Vvalue()/電壓數(shù)值處理函數(shù) long float
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康技術(shù)虛擬護理行業(yè)市場調(diào)研分析報告
- 動物清潔行業(yè)相關(guān)項目經(jīng)營管理報告
- 汽車發(fā)動機冷卻用散熱器水管產(chǎn)品供應(yīng)鏈分析
- 醫(yī)療咨詢行業(yè)經(jīng)營分析報告
- 快遞服務(wù)信件或商品行業(yè)經(jīng)營分析報告
- 嬰兒用驅(qū)蚊貼產(chǎn)品供應(yīng)鏈分析
- 外科器械的消毒行業(yè)營銷策略方案
- 健康監(jiān)測設(shè)備行業(yè)相關(guān)項目經(jīng)營管理報告
- 反不正當(dāng)競爭法法律服務(wù)行業(yè)營銷策略方案
- 醫(yī)用足底按摩拖鞋產(chǎn)品供應(yīng)鏈分析
- 個人生涯發(fā)展展示
- 生涯發(fā)展報告
- 人教版(PEP)五年級英語上冊 unit 4《What can you do》A let's learn課件
- 可填充顏色的地圖(世界、中國、各省份)
- 《顳下頜關(guān)節(jié)疾病》
- 調(diào)研報告調(diào)研過程(共7篇)
- 小學(xué)美術(shù)教學(xué)工作坊工作總結(jié)(共8篇)
- 畢業(yè)設(shè)計(論文)淺析汽車制動系統(tǒng)
- 世界各洲國家及首都名稱(中英對照帶音標(biāo))
- 上海百匯醫(yī)院新建項目 施工組織設(shè)計方案
- 德國職業(yè)教育的發(fā)展演變、特點及啟示-最新教育文檔
評論
0/150
提交評論