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

下載本文檔

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

文檔簡介

1、用 AVR 單片機制作的電容表這種用 AVR 單片機制作的數(shù)顯直讀式電容表,具有能測量小至1pF 的電容,量程廣(1pF-470uF ),能自動換擋,使用方便等優(yōu)點。( 1)硬件電路用分立元件電路測量電容的容量,至少要一個電壓比較器,一個時間計數(shù)器以及一些邏輯電路,而用AVR 單片機 AT90S2313 就可以實現(xiàn)這些功能。1) 工作原理用 AVR 單片機制作的數(shù)顯直讀模式電容表的電路圖如圖1圖 1該電路由 AT90S2313 單片機帶輸出鎖存和三態(tài)控制的串入/并出轉(zhuǎn)換器以及 4 位共陽數(shù)碼管等組成,所用元件不多,硬件電路非常簡單。該電路采用小,整機工作電流僅32mA 左右。CD40949V穩(wěn)

2、壓塊 78L05 ,疊層電池供電,功耗較(2)工作過程將待測電容Cx 插入 JP2,在測量從低量程開始,單片機先將阻 R16 對 Cx 充電,500ms 內(nèi)將會觸發(fā)以下測量過程。PB3 置為高電平,使Q1 截止,斷開3.3k 電阻R15,僅通過3.3M電單片機開始計時, Cx 上的電壓經(jīng) R14 送單片機內(nèi)比較器的 AIN0 端,并與 AIN1 端的電壓 0.5Vcc 比較,如果在 130ms 內(nèi) AIN0 端的電壓 Vc 達不到 0.5Vcc ,說明 Cx 大于 57Nf ,應(yīng)切換到高量程,反之,單片機將充電時間換算成 Cx 如果需要切換到高量程,則單片機會將的容量,連同容量的單位通過數(shù)碼管

3、顯示出來;PB0 口置低, Cx 通過 PB0 放電,放電完成后再將PB3 置低,使 Q1 導(dǎo)通,切換到高量程,R15 R16 并聯(lián)向 Cx 充電(加快充電時間),并重新計時,如果 1 秒內(nèi) Cx 上的電壓 Vc 達不到 0.5Vcc ,說明 Cx 大于 440uF,超量程,數(shù)碼管顯示 “ E2”,表示測量失敗,反之,單片機將充電時間換算成Cx 的容量,連同容量的單位通過數(shù)碼管顯示出來。( 3)源程序.include“ 2313def.inc ”.include“ avr.inc.def _0=r15;零寄存器.def _Stm1=r14;系統(tǒng)定時器.def _Stm2=r13;系統(tǒng)定時器.d

4、ef _Flags=r25;標(biāo)志寄存器;b0:結(jié)果為 minus;b1: 捕獲完畢;b2:累計時間溢出;b7:有鍵按下;-數(shù)據(jù)存儲器定義 -;. RAMTOPDispPtr:.byte1;顯示緩沖區(qū)DispBuf:.byte4KeyScan:.byte2Comp1:.byte2; 低量程校準.Comp2:.byte2;高量程校準.Comp3:.byte2;零校準值StrBuf:.byte 10;十進制轉(zhuǎn)換緩沖區(qū);-程序區(qū)-;.csegrjmp reset;復(fù)位rjmp 0;外中斷 INT0rjmp 0;外中斷 INT1rjmp tc0_cap;TC1 捕獲rjmp 0;TC1 捕獲rjmp t

5、c1_ovf;TC1 溢出rjmp tc0_ovf;TC0 溢出;rjmp 0;Rx 接收寄存器準備好;rjmp 0;Tx 發(fā)送寄存器準備好;rjmp 0;Tx sfr 空;rjmp 0;模擬比較器;-初始化 -;reset:outi SPL,low(RAMEND)clr_0;清零寄存器ldiw Z, RAMTOP清 RAM;ldiAL, 128stZ+,_0decALbrne PC2outi PORTD,0b0111100outi DDRD,0b1111111outi PORTB,0b01111000outi DDRB,0b10001101outi TCCR0,0b100;TC0 時鐘 =3

6、9kHzouti TIMSK,0b00000010;TC0 溢出允許sbi ACSR, ACIC;接 AC0 至 TC1 輸入捕獲clr _Flagsseildiw Y , DisoBuf; 顯示測試 (500ms)ldiAL, 1stdY+0, ALstdY+1, ALstdY+2, ALstdY+3, ALldiAL, 125rcalldlyrcallload_eep;讀增量校準值breqPC+6ldiwZ, form3*2rcall put_formedldiAL, 250rcalldly;-主程序 -;main:ldi AL, 25等待 100ms,定時器 2erapsedmov _S

7、tm1,ALcbr _Flags,bit7sbrc _Flags,7rjmp btn_pressedtst _Stm1brne PC5ldi AL,125; 啟動定時器 2( 500ms)mov _Stm2,ALrcall measure;低量程測量brcc PC+3;超時,試高量程cbiPORTB,3rcall measurercall adjust_zero;刷新顯示rcall adjust_gainrcall disp_valsbiPORTB,3;置為低量程rjmpmainbtn_pressed:ldiAL,4;延時 16msrcall dlysbis PINB,6;ISP1-3 短路?

8、rjmp cal_low;是,校準低量程sbis PINB,5;ISP4-6 短路?rjmp cal_high;是,校準高量程rjmp can_offset;否則,校零cal_high:cbi PORTB,3;測大容量標(biāo)準電容rcall measuresbiPORTB,3ldiw C,0;X:D:C=1000*65536;(100nF 標(biāo)準電容 )ldiw D,1000ldiw X,0ldiw Z,Comp2cal_low:rcall measure; 測小容量標(biāo)準電容rcall adjust_zeroldiw C,0;X:D:C=1000*65536;(1nF 標(biāo)準電容 )ldiw D,10

9、000ldiw X,0ldiw Z,Comp1cal_copm:clrwTO;X:D:C/=B:A;clrw T2ldi EL,48lslw Crolw Drolw Xrolw T0rolw T2cpw T0,Acpcw T2,Binc CLdec ELbrne PC21or DL,DH;溢出檢測or DL,XLor DL,XHbrne cal_errstdw Z+0,Crcall clr_disprcall save_eeprjmp maincan_offset:rcall measure;測量電容為零or BL, BH;檢測精度范圍brne cal_errcpi BH, high(2000

10、)brcc cal_errstsw Comp3,A; 設(shè)此值為零點rcall clr_disprjmp maincal_err:ldiw Z,form4*2rcall put_formedldi AL,250rcall dlyrjmp maindly: mov _Stm1,ALtst _Stm1brne PC1ret;-測電容 -;measure:outTCNT1H,_0; 清 TC1 并置時限outTCNT1L,_0clrT2LldiAL, 20sbisPORTB, 3ldiAL, 152movT2H, ALoutiTIFR,0b10001000; 允許 TC1 溢出, TC1 捕獲outi

11、TIMSK,0b10001010cbr_Flags,bit0+bit1+bit2outiTCCR1B,0b01000001;開 TC1cbiDDRB,0; 開始充電sbrc _Flags, 2;等待累計結(jié)束rjmp mea_oversbrs _Flags,1rjmp PC-3outi TCCR1B, 0b01000000;關(guān) TC1movew A,T4;取結(jié)果movew B, T6clcretmea_over:outiTCCR1B,0b01000000;關(guān) TC1ldi AL,4;等待 16msrcalldlyldi BH, 1secretadjust_zero:sbis PORTB,3; 高

12、量程,跳一行rjmp PC+19ldsw C,Comp3;B:A -=Comp3subw A,Csbc BL,_0sbc BH,_0brcc PC+10;CY=0,B:A *= 1;置符號標(biāo)志sbr _Flags,bit0comw Acomw Badc AL,_0adc AH,_0adc BL,_0adc BH,_0retadjust_gain:ldiw Y ,Comp1sbis PORTB,3;增益調(diào)整adiw YL,2; 據(jù)量程取校準值送 Dlddw D,Y+0subw C, C;B:A = B:A * D / 65536;ldi EL,33brcc PC+3addw C,Drorw Cr

13、orw Brorw Adec ELbrne PC10movew A,Bmovew B,Cret;-顯示 B:A 值,單位 0.1pF-;disp_val:diw X,StrBuf;十進制轉(zhuǎn)換緩沖區(qū)clrDL;十進制數(shù)incDL;-Digits+clrCL;-/=10;lslw Arolw BrolCLcpiCL,10brcs PC+3subi CL,10inc ALdec CHbrne PC10st X+,CLcp AL,_0cpc AH,_0cpc BL,_0cpc BH,_0brne PC19cpiDL,2;調(diào)整 0.0pF 數(shù)brcc PC+3stX+,_0incDLsbis PORTB

14、, 3;高量程,數(shù)字調(diào)整addi DL,3ldiw Z, form2*2 4;模式選擇sbrs _Flags, 0adiw ZL,16adiw ZL,4decDLcpiDL,2brcc PC3put_formed:clr AHldiw Y ,DispBuflpmadiw ZL,1mov AL,TOLcltcpiAL,2brcc PC+3bstAL,0ld AL, Xpushw Zldiw Z,seg7*2addwZ,AlpmpopwZbldT0L,0stY+,T0LcpiYL,DispBuf+4brne PC20retclr_disp:ldiwY,DispBufstY+,_0cpiYL,Dis

15、pBuf+4brne PC2retform4:.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;000n.db1,0,0,11;0.00u.db0,1,0,11;00.0u.db0,0,0,11;000u.db14,2,15

16、,15;E2.db14,2,15,15;E2.db14,2,15,15;E2seg7:.db0 xfc,0 x60,0 xda,0 xf2,0 x66,0 xb6,0 xbe,0 xe00, 1,2,3,4,5,6,7.db0 xfe,0 xf6,0 x02,0 x4e,0 xc4,0 xce,0 x9e,0 x008 , 9 , - , u , n , p , E ,;-EEPROM 讀寫 -;load_eep:ldiwY,Comp1; 取校準數(shù)據(jù)ldiw C,0 x5501rcall read_eepst Y+,ALadd CH, ALcpi YL,Comp1+4brne PC-4rcal

17、l read_eep;和校驗cp AL,CHbreq PC+6sti Y, 1st Y,ALst Y,ALst Y,ALretsave_eep:ldiwY,Comp1;存校準值ldiw C,0 x5501ld AL, Y+add CH,ALrcall write_eepcpi YL,Comp1+4brne PC4mov AL,CHwrite_eep:outEEAR,CLinc CLout EEDR,AL; 存校驗和SUMclisbi EECR,EEMWEsbi EECR,EEWEseisbic EECR,EEWErjmp PC 1retread_eep:out EEAR,CLinc CLsbi

18、 EECR,EEREinAL,EEDRret;-TC1 溢出中斷處理 -;T2L 計數(shù)溢出form TCNT1;置超時錯標(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:pushAL;結(jié)束測量in AL,SREGpush ALsbis DDRB,2;轉(zhuǎn)移by測量脈沖rjmp tc1c_edtc1c_st:in T4L,IC

19、R1L;Vc 達到 0.17Vccin T4H,ICR1H;取 T1movT6L,T2LcbiDDRB,2;置 Vth 為 0.5VccldiAL,20decALbrne PC1outi TIFR,0b00001000rjmp tc1c_etc1c_ed:mov T6H,T4L;Vc 達到 0.5Vccin T4L,ICR1L;取 t2t1sub T4L,T6Hmov T6H,T4Hin T4H,ICR1Hsbc T4H,T6Hmov T6H,T6Lmov T6L,T2LclrT6HsbiDDRB,2; 置 Vth 為 0.17Vcc.sbiDDRB,0; 電容放電outi TIMSK,0b0

20、0000010;中斷屏蔽sbr _Flags,bit1;測量結(jié)束tc1c_e:pop ALout SREG,ALpop ALreti;-TC0 溢出中斷處理(1kHz ) -;刷新顯示 .鍵盤掃描 .減 _Stm1 和 _Stm2.(250Hz)tc0_ovf:pushALouti TCNT0, 39seiin AL,SREGpushw Apushw Zldiw Z,DispPtr;下一個顯示數(shù)據(jù)ld AH,Zinc AHcpi AH,4brcs PC+3rcall scan_keyclr AHst Z+,AHouti PORTD,0b0111100;關(guān)顯示add ZL,AHldi AL,bit6lsr ALsubi AH,1brcc PC2com ALandi AL,0b0111100ld AH,Z;取段碼ldi ZL,8;段碼送 sregsbrs AH,0sbi POR

溫馨提示

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

評論

0/150

提交評論