畢業(yè)設(shè)計(論文)基于AT89S52單片機(jī)的毫歐表電路設(shè)計_第1頁
畢業(yè)設(shè)計(論文)基于AT89S52單片機(jī)的毫歐表電路設(shè)計_第2頁
畢業(yè)設(shè)計(論文)基于AT89S52單片機(jī)的毫歐表電路設(shè)計_第3頁
畢業(yè)設(shè)計(論文)基于AT89S52單片機(jī)的毫歐表電路設(shè)計_第4頁
畢業(yè)設(shè)計(論文)基于AT89S52單片機(jī)的毫歐表電路設(shè)計_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、中南林業(yè)科技大學(xué)涉外學(xué)院基于at89s52單片機(jī)的毫歐表電路設(shè)計學(xué)生學(xué)號: 學(xué)生姓名: 班級 計算機(jī)一班 專業(yè)名稱 計算機(jī)科學(xué)與技術(shù) 論文提交日期2007年05月 日 論文答辯日期 2007年05月18日 答辯委員會主席 評 閱 人 2007 年 05 月 18 日摘要基于at89s52單片機(jī)的毫歐表設(shè)計是采用伏安法測量電阻。采用tlc5615數(shù)模轉(zhuǎn)換芯片和lm358運(yùn)算放大器及三極管tip41構(gòu)成的壓控恒流源提拱恒定的電流。測量電阻時可選擇的電流分別為1ma,10ma,100ma。測量電阻的量程分別為40.00、4000m、400.0m。測量的電壓信號通過lm358運(yùn)算放器放大100倍后經(jīng)過

2、tlc1549模數(shù)芯片傳入單片機(jī)進(jìn)行計算處理并在數(shù)碼管上輸出電阻值!關(guān)鍵字:毫歐表壓控恒流源目 錄:一.總體方案設(shè)計:4二.方案選擇:52.1.1 方案一比較法測電阻:52.1.2 方案二替代法測電阻:52.1.3 方案三直流電橋測電阻52.1.4 方案四伏安法測電阻62.2 壓控恒流源方案:62.2.1 方案一62.2.2 方案二62.2.3 方案三6三.單元模塊設(shè)計:73.1 數(shù)控恒流源73.2 電壓放大模塊設(shè)計83.3 ad轉(zhuǎn)換與單片機(jī)處理93.4 da轉(zhuǎn)換93.5 按鍵的輸入及數(shù)碼管的顯示輸出9四.軟件設(shè)計114.1 主程序流程圖115.1 系統(tǒng)實現(xiàn)的功能,125.2 測量電阻方法:1

3、25.3 實際測試結(jié)果135.4 對測理結(jié)果的分析:15六.設(shè)計總結(jié)16七.參考文獻(xiàn)17八.附:188.1 電路仿真原理圖189.2 程序:19一.總體方案設(shè)計: 采用伏安法測電阻,通以恒定的電流,測量電阻上的電壓。因為uri由于電阻為毫歐,如果電流為毫安的話,則所得的電壓值很小,難以通過adc識別出來。可以采用大電流的方法和把電壓信號放大的方法來使adc芯片識別出來并由通過單片機(jī)計算得出電阻值。采用大電流的話,由于很多小電阻無法承受較大的電流,通過電阻的電流較大時,產(chǎn)生的熱量也多,會帶來較大的誤差。所以采用把電壓信號放大的方法,把微小的電壓信號放大后經(jīng)過ad轉(zhuǎn)換,把信號送入單片機(jī),然后由單片

4、機(jī)計算并顯示出電阻值。測量范圍測量電流最大輸出電壓電壓放大100倍40.001ma40mv4v4000m10 ma40mv4v400.0m100 ma40mv4v上圖為測試電阻的范圍及測量時的電流:二.方案選擇:2.1電阻測量方案2.1.1 方案一比較法測電阻:在乙圖中,k1閉合,k2斷開測得u1;k1斷開,k2閉合測得u2,使用條件:在乙圖中應(yīng)保證ab間電壓恒定。上圖中的比較法測量電阻值的阻值非常小時,電阻r0難以選取。并且要用電壓表測量兩處電阻的電壓。其中的導(dǎo)體接觸間的電阻也會對測量結(jié)果造成一定的誤差,并且對電壓表的要求高。沒有采用此方案。2.1.2 方案二替代法測電阻:步驟:k1打開,k

5、2接1,調(diào)節(jié)r1為最大,電阻箱r0為最大。閉合k1。調(diào)節(jié)r1使、指針指在2/3處,讀數(shù)。k2接2,保持r1不動,調(diào)節(jié)r-0,使、讀數(shù)不變。rx=電阻箱讀數(shù)。條件:被測量的部份電路電流或電壓不變。上圖但不適合于測量小電阻。因為電阻箱的阻值一般都較大。測量的電阻精度低。2.1.3 方案三直流電橋測電阻直流電橋又分直流單電橋和直流雙電橋。采用上面的兩種方法時要用很多操作需要手動操作,并且對元件選取要求高,是通過數(shù)字電位器來改變需要的電阻參數(shù),雖然可以達(dá)到數(shù)控的目的,但數(shù)字電位器的每一級步進(jìn)電阻比較大,調(diào)節(jié)困難,需要采用數(shù)控電阻,用單片機(jī)處理計算雜復(fù)并且測量時操作不方便。2.1.4 方案四伏安法測電阻

6、采用伏安法測量電阻時,恒流源電路產(chǎn)生恒定的電流源通過被測電阻rx,只需要測量出rx上的電壓大小,然后用rxu / i 即可算出電阻的阻值大小。方便單片機(jī)進(jìn)行處理。實際操作起來相對也比較簡單。方案四,操作簡單,計算方便。精度比方案一和方案二高,但操作和計算比方安三更簡單和方案。所以采用方案四伏安法測電阻。2.2 壓控恒流源方案:2.2.1 方案一 iu/(r1+r2),若r1r2,則電流i約為iu/r1;可以采用一個恒定的電壓,然后除以一個大電阻,測試時由時所測的電阻很小,基本上可以看作電流是恒定的。但這種方案測量的電阻阻值越大,電流變化較大,電流精度不高。2.2.2 方案二 采用恒流二極管或者

7、恒流三極管,精度比較高,但這種電路能實現(xiàn)的恒流范圍很小,只能達(dá)到十幾毫安,不能達(dá)到題目的要求。2.2.3 方案三壓控恒流源,通過改變恒流源的外圍電壓,利用電壓的大小來控制輸出電流的大小。電壓控制電路采用數(shù)控的方式,利用單片機(jī)送出數(shù)字量,經(jīng)過d/a轉(zhuǎn)換轉(zhuǎn)變成模擬信號,再送到運(yùn)算放大器和大功率三極管進(jìn)行放大輸出電流。該方案通過軟件方法實現(xiàn)輸出電流穩(wěn)定,易于功能的實現(xiàn),便于操作,故選擇此方案。原理圖如下面的數(shù)控恒流源中的原理圖。三.單元模塊設(shè)計:3.1 數(shù)控恒流源數(shù)控恒流源為電阻測量提供恒定的電流。單片機(jī)由測量所需的電流而控制輸出恒定電流的大小。實際電路中采用的三極管為tip41,三極管本身在這里不

8、具備控制電流大小的作用,但是起到驅(qū)動和擴(kuò)流的作用。前面是一個電壓跟隨,后面一個負(fù)反饋。r9上的電壓為輸入的電壓vin。理論計算i1=vr1/r1=(vi-v+)/r1;i2=vr2/r2=(v+-va)/r2;因為i+=0,得i1 = i2所以va=(v+-vi)r2/r1+v+;i3=vr3/r3=v-/r1;i4=vr4/r4=(vo-v-)/r4;因為i-=0,得i3 = i4所以vo= v- (r3/r4+1);從而可得r5上電壓為ur5vo-va=(r4/r3)v- - (r2/r1)v+ +(v-v+) + (r2/r1)vi,若r2=r1,r3=r4,且 v-v+則ur5vi(輸

9、入電壓)假設(shè)i5=il可得va/rlvi/r5,由上式的va=(v+-v-)r2/r1+v+;及r2=r1;可得(v+-v-)/rl vi / r5 即(v+/v-)-1 rl/ r5;當(dāng)v+vi 和rlr5, r3+r4rl,時可滿足rl上電流恒定。3.2 電壓放大模塊設(shè)計需要把測量到的直流電壓信號放大100倍后,即可傳給ad芯片再由單片機(jī)處量。原理圖如下通過調(diào)節(jié)r2與r1的比值即可以改變電壓放大倍數(shù)。上圖為lm358的pdf里提供的電路原理圖,實際電路中采用的電阻r21m,r1由3296電位器構(gòu)成,阻值調(diào)成10k。上圖是采用的單個運(yùn)算放大一百倍。也可以采用兩個運(yùn)算,每個放大十倍。實際電路制

10、作過程中,上面兩種方法都進(jìn)行測試,發(fā)現(xiàn)采用單個運(yùn)算放大一百倍效果相對要好。所以實際電路中是采用的單個運(yùn)算放大100倍的方法。3.3 ad轉(zhuǎn)換與單片機(jī)處理電阻測量所取得的電壓信號放大100倍后,通過ad-in傳入adc轉(zhuǎn)換芯片。再由單片機(jī)計算,用所得的電壓除以測量時恒定的電流可得電阻的阻值大小,但此時的電阻阻值還不是實際所測得的電阻阻值,因為電壓是放大一百倍后所得的。所以結(jié)果應(yīng)縮小100倍即可得到真實的電阻阻值大小。3.4 da轉(zhuǎn)換由單片機(jī)控制dac5615芯片分別產(chǎn)生40mv、400mv、4000mv的電壓即可獲得需要測量的電流分別為1ma (40mv/40)、10ma (400mv/40)、

11、100ma (4000mv/40)。實際電路中只需要選擇好相應(yīng)的電阻測量范圍即可。不需要手機(jī)選擇測試電流,電流將由單片機(jī)控制電壓控制電流源電路輸出所需要的電流。3.5 按鍵的輸入及數(shù)碼管的顯示輸出采用了串行接口8位led數(shù)碼管及64鍵鍵盤智能控制芯片hd7279芯片來處理按鍵的輸入及位數(shù)碼管的輸出顯示。本電路只采用了44的按鍵及位數(shù)碼管顯示輸出。四.軟件設(shè)計4.1 主程序流程圖開始初始化延時等待是否有按鍵按鍵識別調(diào)用相應(yīng)的程序yesnoyesno延時等待按鍵說明1:1ma 電流測量電阻2:10ma電流測量電阻3:100ma電流測量電阻4:顯示測量電壓值5:備用(清除顯示)6:備用(清除顯示)7

12、:暫停時鐘進(jìn)入調(diào)整8:調(diào)整時鐘的數(shù)值9:啟動并顯示時鐘0:自動調(diào)零(測量值減去導(dǎo)線電值)上:產(chǎn)生正弦波下:產(chǎn)生方波左:產(chǎn)生三角波右:皮生距齒波enter:備用(清除顯示)esc:備用(清除顯示)五.系統(tǒng)功能,指標(biāo)參數(shù)5.1 系統(tǒng)實現(xiàn)的功能,(1)電阻的測量,測量電阻范量為0.1m40。(理論值可達(dá)到0.1m)(2)產(chǎn)生方波,正弦波,方波,鋸齒波。(3)時鐘的顯示功能。并可調(diào)整時間。(4)測量0-4v間的直流電壓值。(5)壓控恒流源輸入0-4v的電壓,產(chǎn)生恒定的電流為0-100ma。5.2 測量電阻方法:用小鱷魚夾接好電阻,選估計被測電阻的范圍,再按下按鍵來選擇測試的電流。其中,在100ma電流

13、(按鍵3)中設(shè)了自動調(diào)零技術(shù)??梢赃x用把測試導(dǎo)線直接短接后,選按下數(shù)字鍵,再按一下自動調(diào)零按鍵(數(shù)字0)即可。測量出的電阻顯示的是,測量值減去導(dǎo)線間的電阻值。注意:1必須在測試之前,確定被測電阻可以安全流過最大測試電流!尤其在使用 0.4 (100ma)檔時! 2調(diào)零時,先把兩根測試導(dǎo)線短接。按下要用的量程鍵(數(shù)字鍵3)之后,再按下調(diào)零鍵(數(shù)字鍵0)。此時,數(shù)碼管會顯示出當(dāng)前導(dǎo)線間的電阻值一秒鐘并保存。再按下量程鍵(數(shù)字鍵3)即可進(jìn)行測量。5.3 實際測試結(jié)果被測電阻全部為四色壞的碳膜電阻。0.24、2、2.2、3.9由于測試時電阻有限,所以下面測試中部分電阻阻值是采用以上電阻串聯(lián)或并聯(lián)起來作

14、為一個被測電阻。三個量程測試的數(shù)據(jù)分別如下:1ma電流的量程,測得電阻阻值如下表量程電阻標(biāo)稱值測量電阻值絕對誤差相對誤差 %1ma4010.990.011.00 1ma4022.110.115.50 1ma402.22.060.146.36 1ma403.93.880.020.51 1ma4044.040.041.00 1ma4066.280.284.67 1ma4088.450.455.62 1ma401010.560.565.60 1ma401212.880.887.33 1ma401413.940.060.43 1ma401616.340.342.13 1ma401818.820.824

15、.56 1ma402020.740.743.70 1ma402222.780.783.55 平均3.71 10ma電流的量程,測得電阻阻值如下表量程電阻標(biāo)稱值測量電阻值絕對誤差相對誤差 %10ma40.120.1200.00 10ma40.240.2400.00 10ma40.480.5080.0285.83 10ma40.720.7680.0486.67 10ma411.0240.0242.40 10ma422.0520.0522.60 10ma42.22.2160.0160.73 10ma43.93.9280.0280.72 10ma444.0480.0481.20 平均2.24 100m

16、a電流的量程,測得電阻阻值如下表量程電阻標(biāo)稱值m測量電阻值m絕對誤差相對誤差 %100ma0.46061.41.42.33 100ma0.48083.53.54.38 100ma0.4120125.45.44.50 100ma0.4240255.815.86.58 平均4.45 5.4 對測理結(jié)果的分析:1在采用1ma電流測試時,當(dāng)被測電阻小于2時,所得的測試結(jié)果平均比電阻標(biāo)稱值要小0.23。當(dāng)被測的電阻大于14歐時,所得的測試結(jié)果平均比電阻標(biāo)稱值要大1.38。在編程中對上面問題進(jìn)行了軟件修正。2分析原因,當(dāng)測量電流為1ma,電阻小于2歐時,產(chǎn)生的電壓也小于2mv。由于lm358器件原因,而使

17、得輸出結(jié)果小0.23。被測電阻大于14歐時,所得結(jié)果偏大的原因,估計由時測試時的14,16,18,20,22的電阻都是由一單獨(dú)阻值為2的碳膜電阻串聯(lián)而成的。在兩電阻間的接觸處沒有用電烙鐵等工具焊接起來,而且直接用把電阻引腳綁定在一起。每個電阻連結(jié)處的電阻給測量結(jié)果帶來的較大的偏差。3測試結(jié)果表明,所測得的電阻在一定程度上與電阻本身標(biāo)稱值相同,當(dāng)工作電流太小,或在比較大的電流范圍時誤差有所增加。引起這些誤差的因素是多方面的,主要由測量儀器的系統(tǒng)誤差以及電阻采用的是四環(huán)的碳膜電阻受溫度影響較大,電流源工作在大電流時受溫度影響所致。4本系統(tǒng)如果采如精度更高,溫度特性更好的電阻和導(dǎo)線,可提高測量的精度

18、。六.設(shè)計總結(jié)在制作毫歐表的過程中,我深切的體會到電路理論與實際相結(jié)合的重要。以及用電腦軟件仿真與電路理論及電路實際的不同。自己制作過程是先實際再理論最后再實際的過程。自己最初制作的毫歐表是采用的是穩(wěn)定的電壓除以大電阻的恒流源方案。測量的結(jié)果不是很穩(wěn)定。而且每次換量程時還需要手動改變電流,操作繁瑣。后面打算單片機(jī)通過控制繼電器來改變電流開關(guān)。需要占用較多的單片機(jī)資源。而且成本增加。后面發(fā)現(xiàn)了壓控恒流源方案來恒定電流,接著花了很長時間查資料學(xué)習(xí)及實驗采用的壓控恒流源的方法來提拱恒定的電流。在整個制作過程中,主要是離不開上學(xué)期電子培訓(xùn)課上老師所教的知識及提供的條件,讓自己學(xué)到了更多的知識。其次是網(wǎng)

19、上電子愛好者及電子類的論壇給了自己很大的幫助,在整個制作過程中所遇到的問題大部分是通過網(wǎng)絡(luò)上雖互不認(rèn)識但都愛好電子的電子愛好者給予的解答。用途:測量直流類 m數(shù)十 的小電阻,主要用于電動機(jī),揚(yáng)聲器,繼電器等線圈的直流電阻,由于它們的直流電阻數(shù)值不大,普通萬用表實際很難測量到準(zhǔn)確讀數(shù).使用毫歐表可以解決大部分這種測量.七.參考文獻(xiàn)1:周塵.單片機(jī)c語言輕松入門.北京航空航一大學(xué)出版社.20062:康華光,陳大欽編.電子技術(shù)基本.高等教育出版社.20043:周潤景.張麗娜.基于proteusr的電路及單片機(jī)系統(tǒng)設(shè)計與仿真.20064: 杰龍電子單片機(jī)毫歐表5: 八.附:8.1 電路仿真原理圖在pr

20、oteus電路仿真軟件中的仿真的壓控恒流源電路原理圖如下:在multisim 9電路仿真軟件中的仿真的壓控恒流源電路原理圖如下:9.2 程序:#include #include/*函數(shù)聲明*/void write7279(unsigned char, unsigned char);/寫入到hd7279unsigned char read7279(unsigned char);/從hd7279讀出void send_byte(unsigned char); /發(fā)送一個字節(jié)unsigned char receive_byte(void); /接收一個字節(jié)void delay10ms(unsigne

21、d char time); /延時程序void short_delay(void); /短延時unsigned int adc1549(void);/adc tlc1549的驅(qū)動程序void daconv(unsigned int dadat);/dac tlc5615的驅(qū)動程序unsigned int lubo(void);/濾波程序void zhenxianbo(void);/正弦波void sanjiaobo(void);/三角波void juchibo(void);/鋸齒波void fangbo(void);/方波void displaytime();/顯示時鐘void adc(voi

22、d);/顯示測量出的電壓值void resistance1ma(); /1ma計算電阻值void resistance10ma();/10ma 計算電阻值void resistance100ma();/100ma 計算電阻值void abc();/ 計算導(dǎo)線間的電阻值void overflow(unsigned char d3,unsigned char d2,unsigned char d1,unsigned char d0);/ 溢出顯示1/* hd7279a指令 *#define cmd_reset 0xa4#define cmd_test 0xbf#define decode0 0x8

23、0#define decode1 0xc8#define cmd_read 0x15#define undecode 0x90#define rtl_cycle 0xa3#define rtr_cycle 0xa2#define rtl_uncyl 0xa1#define rtr_uncyl 0xa0#define actctl 0x98#define segon 0xe0#define segoff 0xc0#define blinkctl 0x88/* 鍵盤按鍵代碼 *#define one 0x3a#definetwo 0x39#definethree 0x38#definefour 0

24、x32#define five 0x31#define six 0x30#define seven 0x2a#define eight 0x29#define nine 0x28#define esc 0x22#define zero 0x21#define enter 0x20#define up 0x3f#define left 0x37#define right 0x2f#define down 0x27#define uint unsigned int#define uchar unsigned char/* 變量及i/o口定義 *unsigned char key_number,ho

25、ur=0,minute=0,second=0;unsigned int tmr;unsigned int u1=0,u=0,res=0,dadate;sbit cs=p03; / hd7279sbit clk=p02; / hd7279sbit dat=p00; / hd7279sbit key=p01; / hd7279sbit ad_clk = p22; /adc1549sbit ad_cs= p20; /adsbit ad_dout= p21; /adsbit din=p23;/dac5615 sbit dacs=p24;/dasbit dasclk=p25;/da/*正弦波數(shù)值表*/v

26、oid da5615(unsigned int);void fangbo(void);void juchibo(void);void sanjiaobo(void);void zhenxianbo(void);void set_time (void);code unsigned char tab= 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae, 0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4

27、,0xd6,0xd8, 0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xef,0xf1,0xf2,0xf3,0xf4,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6, 0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,

28、0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda, 0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc9,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1, 0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51, 0x4e,0x4c,0x48,0x45,0

29、x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27, 0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a, 0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x00,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0

30、d, 0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b, 0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57, 0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80;main() unsigned char a,*p;while(1) for (tmr=0;tmr3)a=0; write7279(blin

31、kctl,0xff); /清除閃爍設(shè)置 displaytime();/顯示時鐘daconv(0);delay10ms(100);break;case eight:*p=*p+1;if(second59|minute59)*p=0;/當(dāng) 分 或 秒 顯示為59時變?yōu)?if(hour23)*p=0;/當(dāng) 時 顯示為23時變?yōu)? displaytime();/顯示時鐘delay10ms(100); daconv(0);break;case nine: do ea=1;/開總中斷 displaytime();/顯示時鐘 delay10ms(100); daconv(0);while(key);brea

32、k;case up:do zhenxianbo();/正弦波 while(key);break;case left:do sanjiaobo();/三角波 while(key);break;case right:do juchibo();/鋸齒波 while(key);break;case down:do fangbo();/方波 while(key);break; /* 定時器0中斷 */void timer0() interrupt 1 /定時器0中斷 static count=0;/靜態(tài)變量計數(shù)器th0=0xdc;tl0=0x00;count+; if(count=100)count=0

33、; second=second+1; /判斷時間是否到 1s 了? if(second=60)second=0; minute+=1;if(minute=60)minute=0;hour+=1; if( hour=23 & minute=59 & second=59) second=0; minute=0; hour=0; /* 顯示時鐘 */void displaytime()/顯示時鐘 write7279(decode0+1,second/10); /顯示 秒的 十位write7279(decode0+0,second%10); /顯示 秒的 個位write7279(decode0+2,1

34、0); write7279(decode0+4,minute/10); /顯示 分的 十位write7279(decode0+3,minute%10); /顯示 分的 個位write7279(decode0+5,10); write7279(decode0+7,hour/10); /顯示 時的 十位write7279(decode0+6,hour%10); /顯示 時的 個位 /* adc數(shù)碼管顯示轉(zhuǎn)換后的電壓值數(shù)值*/void adc(void) unsigned char d0,d1,d2,d3; unsigned int a; u1=lubo();a=u1200&a14000&a4077

35、0)a=a-1380;/修正電阻值 當(dāng)電阻值大于14歐姆時,顯示結(jié)果為測量值減去1.38歐d3=a/10000; d2=a/1000%10;d2=d2|0x80; /顯示小數(shù)點d1=a/100%10;d0=a/10%10;overflow(d3,d2,d1,d0);/* 10ma 計算電阻值*/void resistance10ma() unsigned char d0,d1,d2,d3;unsigned int a; u1=lubo();a=u12; /* a=u1*4; */d3=a/1000;d2=a/100%10;d1=a/10%10;d0=a%10;overflow(d3,d2,d1

36、,d0);/* 100ma 計算電阻值*/void resistance100ma() unsigned char d0,d1,d2,d3; unsigned int a; u1=lubo();a=u12; /* a=u1*4; */if(a!=4092) a=a-res;d3=a/1000; d2=a/100%10;d1=a/10%10; d1=d1|0x80; /顯示小數(shù)點 d0=a%10;write7279(decode0+7,d3);/ 第八位數(shù)碼管write7279(decode0+6,d2);/ 第七位數(shù)碼管write7279(decode0+5,d1); / 第六位數(shù)碼管writ

37、e7279(decode0+4,d0); / 第五位數(shù)碼管 elsewrite7279(decode0+7,1); / 超出范轉(zhuǎn)顯示1 write7279(decode0+6,0x0f);/ 第七位數(shù)碼管 空write7279(decode0+5,0x0f); / 第六位數(shù)碼管空write7279(decode0+4,0x0f); / 第五位數(shù)碼管 空/* 溢出顯示1*/void overflow(unsigned char d3,unsigned char d2,unsigned char d1,unsigned char d0) if(d3=4 & d1=9)/ 超出范轉(zhuǎn)顯示1 write

38、7279(decode0+7,1); / 超出范轉(zhuǎn)顯示1 write7279(decode0+6,0x0f);/ 第七位數(shù)碼管 空write7279(decode0+5,0x0f); / 第六位數(shù)碼管空write7279(decode0+4,0x0f); / 第五位數(shù)碼管 空 else write7279(decode0+7,d3);/ 第八位數(shù)碼管write7279(decode0+6,d2);/ 第七位數(shù)碼管write7279(decode0+5,d1); / 第六位數(shù)碼管write7279(decode0+4,d0); / 第五位數(shù)碼管 /* 計算導(dǎo)線間的電阻值*/void abc()

39、unsigned int a; unsigned char d0,d1,d2,d3; a=lubo();a=a=3000) res=0; write7279(decode0+3,d3);/ 第八位數(shù)碼管 write7279(decode0+2,d2);/ 第七位數(shù)碼管 write7279(decode0+1,d1); / 第六位數(shù)碼管 write7279(decode0+0,d0); / 第五位數(shù)碼管 elseres=a; write7279(decode0+3,d3);/ 第八位數(shù)碼管write7279(decode0+2,d2);/ 第七位數(shù)碼管write7279(decode0+1,d1

40、); / 第六位數(shù)碼管write7279(decode0+0,d0); / 第五位數(shù)碼管 delay10ms(100); /*a/dc1549轉(zhuǎn)換子程序*unsigned int adc1549(void) uchar i; ad_cs=0; ad_clk=0; ad_dout=1; u=0; for(i=0;i10;i+) /*read data */ ad_clk=0; short_delay(); u=u*2; if (ad_dout=1) u + ; ad_clk =1 ; /上升沿接受數(shù)據(jù)short_delay(); ad_dout=1; ad_cs=1; return u; /*r

41、eturn ad data */ short_delay(); /*濾波程序*unsigned int lubo(void)/濾波程序 unsigned char i; unsigned int a10,sum=0,value; for(i=0;i10;i+)/取值 ai=adc1549(); short_delay(); for(i=0;i10;i+) /求和 sum=sum+ai; value=sum/10;/計算平均值 return value; /*tlc5615轉(zhuǎn)換子程序*void daconv(uint dadat)/tlc5615的驅(qū)動程序,命令:daconv uchar i=0; dacs=1; _nop_(); _nop_(); din=0; d

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論