用AVR單片機(jī)制作的電容表_第1頁
用AVR單片機(jī)制作的電容表_第2頁
用AVR單片機(jī)制作的電容表_第3頁
用AVR單片機(jī)制作的電容表_第4頁
用AVR單片機(jī)制作的電容表_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、用AVR單片機(jī)制作的電容表-470uF),這種用AVR單片機(jī)制作的數(shù)顯直讀式電容表,具有能測量小至1pF的電容,量程廣(1pF-能自動(dòng)換擋,使用方便等優(yōu)點(diǎn)。(1)硬件電路用分立元件電路測量電容的容量,至少要一個(gè)電壓比較器,一個(gè)時(shí)間計(jì)數(shù)器以及一些邏輯電路,而用 AVR單片機(jī)AT90S2313就可以實(shí)現(xiàn)這些功能。1)工作原理 用AVR單片機(jī)制作的數(shù)顯直讀模式電容表的電路圖如圖1GND話E-GND GND9K10K-CZFR11R13 '-CO-39h:I C3Q_d 器) 二 ds色 5- 二;|;- <_ K 一: gadcdz NdorJ Eadaog 3 啟d gEDdotfl

2、邑 一山 mUJH zsdoe.-9015C5 *S2mOUT -=-焉L .RI -Lf iDDaprrGND 雖 fIflaOuF-O-4ZZZI -TO-AQ28Q4O6Q6Q7Q6WESIDOQGND圖1該電路由AT90S2313單片機(jī) 帶輸出鎖存和三態(tài)控制的串入/并出轉(zhuǎn)換器CD4094穩(wěn)壓塊78L05 ,以及4位共陽數(shù)碼管等組成,所用元件不多,硬件電路非常簡單。該電路采用9V疊層電池供電,功耗較小,整機(jī)工作電流僅 32mA左右。(2)工作過程將待測電容Cx插入JP2,在500ms內(nèi)將會(huì)觸發(fā)以下測量過程。測量從低量程開始,單片機(jī)先將PB3置為高電平,使 Q1截止,斷開3.3k電阻R15

3、,僅通過3.3M電阻R16對Cx充電,單片機(jī)開始計(jì)時(shí),Cx上的電壓經(jīng)R14送單片機(jī)內(nèi)比較器的 AIN0端,并與AIN1端的電壓0.5Vcc比較, 如果在130ms內(nèi)AIN0端的電壓 Vc達(dá)不到0.5Vcc,說明Cx大于57Nf,應(yīng)切換到高量程,反之,單片機(jī)將充電時(shí)間換算成 Cx 的容量,連同容量的單位通過數(shù)碼管顯示出來;如果需要切換到高量程,則單片機(jī)會(huì)將PB0 口置低,Cx通過PB0放電,放電完成后再將 PB3置低,使 Q1 導(dǎo)通,切換到高量程,R15 R16并聯(lián)向Cx充電(加快充電時(shí)間),并重新計(jì)時(shí),如果 1秒內(nèi)Cx上的電壓 V達(dá)不到0.5Vcc,說明Cx大于440uF超量程,數(shù)碼管顯示 “

4、 E2表示測量失敗,反之,單片機(jī)將充電時(shí)間換算成Cx的容量,連同容量的單位通過數(shù)碼管顯示出來。( 3)源程序.include “ 2313def.inc.include“ avr.inc.def _0=r15; 零寄存器.def _Stm1=r14;系統(tǒng)定時(shí)器.def _Stm2=r13;系統(tǒng)定時(shí)器.def _Flags=r25; 標(biāo)志寄存器;bO:結(jié)果為minus;b1:捕獲完畢;b2:累計(jì)時(shí)間溢出;b7:有鍵按下;-數(shù)據(jù)存儲(chǔ)器定義J. RAMTOPDispPtr:.byte1; 顯示緩沖區(qū)DispBuf:.byte4KeyScan:.byte2Comp1:.byte2; 低

5、量程校準(zhǔn).Comp2:.byte2; 高量程校準(zhǔn).Comp3:.byte2;零校準(zhǔn)值StrBuf:.byte 10; 十進(jìn)制轉(zhuǎn)換緩沖區(qū);-程序區(qū) -J.csegrjmp reset;復(fù)位rjmp 0; 外中斷 INT0rjmp 0; 外中斷 INT1rjmp tc0_cap;TC1 捕獲rjmp 0;TC1 捕獲rjmp tc1_ovf;TC1 溢出rjmp tc0_ovf;TC0 溢出;rjmp 0;Rx 接收寄存器準(zhǔn)備好;rjmp 0;Tx 發(fā)送寄存器準(zhǔn)備好;rjmp 0;Tx sfr 空;rjmp 0;模擬比較器;- 初始化 -;reset:outi SPL,low(RAMEND)clr

6、 _0; 清零寄存器ldiw Z, RAMTOP ldi AL, 128 st Z+,_0 dec ALbrne PC outi PORTD,0b0111100 outi DDRD,0b1111111 outi PORTB,0b01111000 outi DDRB,0b10001101 outi TCCR0,0b100 outi TIMSK,0b00000010 sbi ACSR, ACIC clr _Flags sei ldiw Y, DisoBufIdi AL,-std Y+0, AL std Y+1, AL std Y+2, AL std Y+3, AL Idi AL, 125 rcaI

7、I dIy rcaII Ioad_eep breq PC+6Idiw Z, form3*2 rcaII put_formed Idi AL, 250 rcaII dIy;-主程序 -;main:Idi AL, 25等待100ms,定時(shí)器 mov _Stm1,AL cbr _FIags,bit7 sbrc _FIags,7 rjmp btn_pressed tst _Stm1 brne PC -5 Idi AL,125 mov _Stm2,AL rcaII measure brcc PC+3 cbi PORTB,3 rcaII measure rcaII adjust_zero清 RAM;TC0

8、 時(shí)鐘 =39kHz;TC0 溢出允許 ;接 AC0 至 TC1 輸入捕獲;顯示測試 (500ms);讀增量校準(zhǔn)值2erapsed; 啟動(dòng)定時(shí)器 2(500ms);低量程測量;超時(shí),試高量程;刷新顯示rcall adjust_gain rcall disp_valsbi PORTB,3 rjmp main btn_pressed:ldi AL,4 rcall dly sbis PINB,6 rjmp cal_low sbis PINB,5 rjmp cal_high rjmp can_offset cal_high:cbi PORTB,3 rcall measure sbi PORTB,3 l

9、diw C,0ldiw D,1000ldiw X,0 ldiw Z,Comp2 cal_low:rcall measure rcall adjust_zero ldiw C,0ldiw D,10000ldiw X,0ldiw Z,Comp1 cal_copm:clrw TO clrw T2 ldi EL,48 lslw C rolw D rolw X rolw T0 rolw T2 cpw T0,A cpcw T2,B inc CL dec ELbrne PC-21or DL,DH or DL,XL or DL,XH brne cal_err stdw Z+0,C;置為低量程;延時(shí) 16ms;

10、ISP1-3 短路? ;是,校準(zhǔn)低量程;ISP4-6 短路?;是,校準(zhǔn)高量程;否則,校零 ;測大容量標(biāo)準(zhǔn)電容;X:D:C=1000*65536;(100nF 標(biāo)準(zhǔn)電容 );測小容量標(biāo)準(zhǔn)電容;X:D:C=1000*65536 ;(1nF 標(biāo)準(zhǔn)電容 );X:D:C/=B:A;溢出檢測rcall clr_disp rcall save_eep rjmp main can_offset:rcall measure or BL, BH brne cal_err cpi BH, high(2000) brcc cal_err stsw Comp3,A rcall clr_disp rjmp main ca

11、l_err:ldiw Z,form4*2rcall put_formedldi AL,250 rcall dly rjmp main dly: mov _Stm1,ALtst _Stm1 brne PC ret ;-測電容 - ; measure:out TCNT1H,_0out TCNT1L,_0clr T2Lldi AL, 20 sbis PORTB, 3 ldi AL, 152 mov T2H, AL outi TIFR,0b10001000 outi TIMSK,0b10001010 cbr _Flags,bit0+bit1+bit2 outiTCCR1B,0b01000001cbiD

12、DRB,0sbrc _Flags, 2 rjmp mea_over sbrs _Flags,1 rjmp PC-3outi TCCR1B, 0b01000000 movew A,T4 movew B, T6 clcretmea_over:outi TCCR1B,0b01000000 ldi AL,4;測量電容為零;檢測精度范圍;設(shè)此值為零點(diǎn); 清 TC1 并置時(shí)限; 允許 TC1 溢出, TC1 捕獲;開 TC1 ;開始充電 ;等待累計(jì)結(jié)束;關(guān) TC1;取結(jié)果;關(guān) TC1;等待 16msrcall dlyIdi BH,-secretadjust_zero:sbis PORTB,3rjmp PC

13、+19Idsw C,Comp3subw A,Csbc BL,_0sbc BH,_0brcc PC+10;CY=0,B:A *= -sbr _FIags,bit0comw Acomw Badc AL,_0adc AH,_0adc BL,_0adc BH,_0retadjust_gain:Idiw Y ,Comp1sbis PORTB,3adiw YL,2Iddw D,Y+0subw C, CIdi EL,33brcc PC+3addw C,Drorw Crorw Brorw Adec ELbrne PC -0movew A,Bmovew B,Cret;-顯示 B:A 值,單位 0.1pF-;di

14、sp_vaI:diw X,StrBufcIr DLinc DLcIr CLIsIw AroIw BroI CLcpi CL,10; 高量程,跳一行;B:A -=Comp3; 置符號(hào)標(biāo)志; 增益調(diào)整; 據(jù)量程取校準(zhǔn)值送 D;B:A = B:A * D / 65536;十進(jìn)制轉(zhuǎn)換緩沖區(qū);十進(jìn)制數(shù);-Digits+;-/=10;調(diào)整 0.0pF 數(shù);高量程,數(shù)字調(diào)整;模式選擇brcs PC+3 subi CL,10 inc AL dec CH brne PC -0 st X+,CL cp AL,_0 cpc AH,_0 cpc BL,_0 cpc BH,_0 brne PC-19 cpi DL,2

15、brcc PC+3 st X+,_0 inc DL sbis PORTB, 3 addi DL,3 ldiw Z, form2*2 -4 sbrs _Flags, 0 adiw ZL,16 adiw ZL,4 dec DL cpi DL,2 brcc PC-3 put_formed:clr AHldiw Y ,DispBuf lpm adiw ZL,1 mov AL,TOL clt cpi AL,2 brcc PC+3 bst AL,0 ld AL, -X pushw Z ldiw Z,seg7*2 addwZ,Alpm popwZbld T0L,0 st Y+,T0L cpi YL,Disp

16、Buf+4 brne PC-20 retclr_disp:ldiw Y,DispBuf st Y+,_0 cpi YL,DispBuf+4brne PC retform4:.db14,5,15,15;E5form3:.db14,4,15,15;E4form2:.db10,1,0,13;-0.0p.db10,0,0,13;-00p.db14,3,15,15;E3.db14,3,15,15;E3form1:.db15,1,0,13;0.0p.db0,1,0,13;00.0p.db0,0,0,13;000p.db1,0,0,12;0.00n.db0,1,0,12;00.0n.db0,0,0,12;0

17、00n.db1,0,0,11;0.00u.db0,1,0,11;00.0u.db0,0,0,11;000u.db14,2,15,15;E2.db14,2,15,15;E2.db14,2,15,15;E2seg7:.db0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe00 , 1 , 2, 3, 4 , 5 , 6 , 7.db0xfe,0xf6,0x02,0x4e,0xc4,0xce,0x9e,0x008 , 9 , -, u ,n , p , E ,;-EEPROM讀寫 -Jload_eep:ldiw Y,Comp1; 取校準(zhǔn)數(shù)據(jù)ldiw C,0x5501 rca

18、ll read_eep st Y+,AL add CH, AL cpi YL,Comp1+4brne PC-4rcall read_eep;和校驗(yàn)cp AL,CHbreq PC+6sti -,-st 訐,ALst 訐,ALst 訐,ALretsave_eep:ldiw Y,Comp1;存校準(zhǔn)值ldiw C,0x5501ld AL, Y+add CH,ALrcall write_eepcpi YL,Comp1+4brne PC mov AL,CH write_eep:out EEAR,CLinc CLout EEDR,ALclisbi EECR,EEMWEsbi EECR,EEWEseisbic

19、 EECR,EEWErjmp PC retread_eep:out EEAR,CLinc CLsbi EECR,EEREin AL,EEDRret;-TC1 溢出中斷處理 -;T2L 計(jì)數(shù)溢出 form TCNT1 ;置超時(shí)錯(cuò)標(biāo)志 .Tc1_ovf:push ALin AL,SREGpush ALinc T2Lcp T2L,T2Hbrcs PC+6sbi DDRB,2sbi DDRB,0sbr _Flags,bit2outi TIMSK,0b00000010pop ALout SREG,ALpop ALreti;-TC1 捕獲中斷 -;tc1_eep:pushALin AL,SREGpush

20、AL; 存校驗(yàn)和 SUM;結(jié)束測量;轉(zhuǎn)移 by 測量脈沖sbis DDRB,2rjmp tc1c_edtc1c_st:in T4L,ICR1L;Vc 達(dá)到 0.17Vccin T4H,ICR1H;取 T1mov T6L,T2Lcbi DDRB,2;置 Vth 為 0.5Vccldi AL,20dec ALbrne PC outi TIFR,0b00001000rjmp tc1c_etc1c_ed:mov T6H,T4L;Vc 達(dá)到 0.5Vccin T4L,ICR1L;取 t2 -1sub T4L,T6Hmov T6H,T4Hin T4H,ICR1Hsbc T4H,T6Hmov T6H,T6L

21、mov T6L,T2LclrT6HsbiDDRB,2;置 Vth 為 0.17VCC.sbiDDRB,0; 電容放電outi TIMSK,0b00000010; 中斷屏蔽sbr _Flags,bit1; 測量結(jié)束tc1c_e:pop ALout SREG,ALpop ALreti;-TC0 溢出中斷處理(1kHz) -;刷新顯示 .鍵盤掃描 .減_Stm1 和 _Stm2.(250Hz)tc0_ovf:push ALouti TCNTO, 439seiin AL,SREGpushw Apushw Zldiw Z,DispPtr; 下一個(gè)顯示數(shù)據(jù)ld AH,Zinc AHcpi AH,4brcs PC+3rcall scan_keyclr AHst Z+,AHouti PORTD,0b0111100; 關(guān)顯示add ZL,AH ldi AL,bit6 lsr AL subi AH,1 brcc PC com AL andi AL,0b0111100 ld AH,Z ldi ZL,8 sbrs AH,0 sbi PORTD,1

溫馨提示

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

評論

0/150

提交評論