基于單片機(jī)的電阻測量設(shè)計(jì)修改_第1頁
基于單片機(jī)的電阻測量設(shè)計(jì)修改_第2頁
基于單片機(jī)的電阻測量設(shè)計(jì)修改_第3頁
基于單片機(jī)的電阻測量設(shè)計(jì)修改_第4頁
基于單片機(jī)的電阻測量設(shè)計(jì)修改_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于單片機(jī)的電阻測量設(shè)計(jì)修改 作者: 日期:1設(shè)計(jì)目的及其意義本設(shè)計(jì)基于單片機(jī)和AD轉(zhuǎn)換器實(shí)現(xiàn)電阻的測量。采用ADC0809,實(shí)現(xiàn)由模擬電壓轉(zhuǎn)換到數(shù)字信號(hào),通過單片機(jī)系統(tǒng)處理后,由LCD顯示被測量電阻的阻值。測量范圍為15K,精度大于98%。2方案設(shè)計(jì)2.1 總體設(shè)計(jì)思路本設(shè)計(jì)包括硬件和軟件設(shè)計(jì)兩個(gè)部分。模塊劃分為電壓測量(數(shù)據(jù)采集)、模數(shù)轉(zhuǎn)換、阻值顯示等子模塊。電路結(jié)構(gòu)可劃分為:電壓測量,電壓轉(zhuǎn)換電阻,阻值顯示及相關(guān)的控制管理軟件組成。用戶終端完成信息采集、處理、數(shù)據(jù)傳送、顯示等功能。從設(shè)計(jì)的要求來分析該設(shè)計(jì)須包含如下結(jié)構(gòu):電壓測量電路,電壓轉(zhuǎn)換電路,阻值顯示電路、單片機(jī)及相關(guān)的控制軟件組成

2、;它們之間的構(gòu)成框圖如圖1總體設(shè)計(jì)框圖所示:AT89C51LCD顯示電壓轉(zhuǎn)換電阻(ADC0809)電壓測量測量精度選擇圖1 總體設(shè)計(jì)框圖處理器采用51系列單片機(jī)AT89C51。整個(gè)系統(tǒng)是在系統(tǒng)軟件控制下工作的。當(dāng)測量一個(gè)電阻時(shí),經(jīng)過電壓采集,電壓轉(zhuǎn)換為電阻,電阻顯示三個(gè)部分可以在LCD上顯示該被測電阻的阻值。當(dāng)被測電阻為100范圍以內(nèi)時(shí),通過開關(guān)選擇測量量程,再次測量該電阻,以減小誤差。2.2 具體電路模塊設(shè)計(jì)2.2.1 電壓測量的設(shè)計(jì)如圖2所示為被測電阻電壓測量。電壓經(jīng)過已知電阻R1和被測電阻Rx接到地。通過OUT輸出被測電阻Rx上的電壓。送到ADC0809的IN0口。圖2 被測電阻電壓測量

3、圖2.2.2 模數(shù)ADC轉(zhuǎn)換的設(shè)計(jì)由電壓測量得到的電壓經(jīng)過ADC模數(shù)轉(zhuǎn)換可得到8位的電壓值,經(jīng)過歐姆定律(即電壓之比等于電阻之比)可得到被測電阻的阻值的大小。公式如下本設(shè)計(jì)用到的R1的阻值為600和300。由被測電阻得到的電壓值經(jīng)ADC0809的26腳IN0輸入,經(jīng)過內(nèi)部的AD轉(zhuǎn)換,在OUT17輸出數(shù)字電壓量,經(jīng)過上述公式的轉(zhuǎn)變,在P2口上的顯示的數(shù)字量為被測電阻的阻值數(shù)字量。如圖3所示為被測電阻電壓量轉(zhuǎn)換為阻值量。圖3 被測電阻電壓量轉(zhuǎn)換為阻值量圖2.2.3 液晶顯示電路的設(shè)計(jì)經(jīng)過ADC0809模數(shù)轉(zhuǎn)換得到的電阻值數(shù)字量,在MCU的P2口輸入,MCU系統(tǒng)處理后在P0口由LCD1602顯示出來

4、該被測電阻的阻值。如圖4所示為被測電阻阻值顯示。圖4 被測電阻阻值顯示圖2.2.4 時(shí)鐘電路的設(shè)計(jì)XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。因?yàn)橐粋€(gè)機(jī)器周期含有6個(gè)狀態(tài)周期,而每個(gè)狀態(tài)周期為2個(gè)振蕩周期,所以一個(gè)機(jī)器周期共有12個(gè)振蕩周期,如果外接石英晶體振蕩器的振蕩頻率為12MHZ,一個(gè)振蕩周期為1/12us,故而一個(gè)機(jī)器周期為1us。如圖5所示為時(shí)鐘電路。圖5 時(shí)鐘電路圖2.2.5 復(fù)位電路的設(shè)計(jì)復(fù)位方法一般有上電自動(dòng)復(fù)位和外部按鍵手動(dòng)復(fù)位,單片機(jī)在時(shí)鐘電路工作以后, 在RE

5、SET端持續(xù)給出2個(gè)機(jī)器周期的高電平時(shí)就可以完成復(fù)位操作6。例如使用晶振頻率為12MHz時(shí),則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)不小于2us。本設(shè)計(jì)采用的是外部手動(dòng)按鍵復(fù)位電路。如圖6所示為復(fù)位電路。圖6 復(fù)位電路圖2.2.6 電源電路的設(shè)計(jì)本設(shè)計(jì)使用USB接口給電路提供+5V電壓。電路中所有的高電平全部接在VCC端,地接在USB接口的4號(hào)腳上。通電時(shí)紅燈LED-R亮。如圖7所示為電源電路。圖7 電源電路圖2.2.7 下載電路的設(shè)計(jì)本設(shè)計(jì)使用串口RS232以及燒錄芯片MAX232組成的下載電路。MAX232的11和12號(hào)腳(R1OUT、T1IN)與MCU的10和11號(hào)腳(RXD、TXD)連接,即可向MCU燒錄

6、程序。圖8所示為下載電路。圖8 下載電路圖2.3 系統(tǒng)硬件電路的選擇及說明硬件電路的設(shè)計(jì)見附圖示,從以上的分析可知本設(shè)計(jì)中要用到如下器件:STC89C52RC、ADC0809轉(zhuǎn)換器、LCD1602、按鍵等一些單片機(jī)外圍應(yīng)用電路,以及單片機(jī)的手工復(fù)位,單片機(jī)電源電路等。其中R3,R6電阻為已知電阻,R4,R5為不同測量精度下的未知電阻,開始工作時(shí)可在LCD上觀察到被測電阻的阻值。電路設(shè)有2個(gè)按鍵,S1鍵作為阻值測量精度的選擇鍵,S2鍵作為電路復(fù)位鍵。2.4 軟件的程序?qū)崿F(xiàn)2.4.1主程序工作流程圖按上述工作原理和硬件結(jié)構(gòu)分析可知系統(tǒng)主程序流程圖如下圖9所示。開始系統(tǒng)初始化選擇測量精度開關(guān)S1,重

7、測此電阻(重新)放置電阻初次顯示300無正常顯示 正常顯示最終顯示結(jié)束圖9 主程序工作流程圖3軟件仿真本設(shè)計(jì)通過利用Proteus仿真,將所編寫的程序用Keil軟件編譯,所仿真原理圖見附錄二。本設(shè)計(jì)所要求達(dá)到的目標(biāo)是測量一個(gè)電阻,在誤差允許范圍內(nèi),通過LCD1602顯示出該電阻的阻值。測量的部分電阻的阻值如下表1所示。表1 仿真測量電阻阻值4結(jié)束語本設(shè)計(jì)研究了一種基于單片機(jī)技術(shù)的電阻測量。由電路知識(shí)可以容易測出一個(gè)電阻上的電壓,通過歐姆定律又能得到該電阻的阻值。由于測量的電壓是模擬量,故用ADC轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字量,再由單片機(jī)系統(tǒng)處理即可完成電阻的阻值測量。由于數(shù)字量在數(shù)值上是離散的,通過此種方

8、法得到的阻值存在著誤差,為了盡可能的減小此誤差,在選擇已知電阻上,試用了很多電阻。通過大量數(shù)據(jù)與實(shí)際電阻的阻值相比較,以及實(shí)驗(yàn)室能提供的電阻,選用了600和300的已知電阻,用不同的量程可以盡可能的減小誤差。表1中給出了部分電阻的硬件電路測量結(jié)果,從中可以得知,同一電阻,用不同的量程測量得到不同的阻值,存在的誤差也很明顯。本設(shè)計(jì)只采用了兩種已知電阻,也就是2個(gè)量程測量電阻,測量范圍從15K,精度大于98%。若提高測量精度,只需增加更大的量程,即可完成大電阻的阻值測量。由于硬件電路的連接,元器件不理想等原因,實(shí)際測量電阻的阻值與仿真得到的阻值還是有一定誤差的。雖然硬件電路能正常工作,但程序以及元

9、器件的選擇不足,使得這次設(shè)計(jì)并沒有達(dá)到很好的測量效果,對(duì)微歐姆級(jí)和K歐姆級(jí)電阻無法測量,還是感到不理想。通過此次設(shè)計(jì),尤其硬件電路的焊接,對(duì)單片機(jī)系統(tǒng)有了更好的認(rèn)識(shí)。在以后的學(xué)習(xí)中,會(huì)更加注重設(shè)計(jì)原理與硬件電路的相結(jié)合,做好每一個(gè)設(shè)計(jì),達(dá)到理想的要求。參考文獻(xiàn):1 史翔,張?jiān)罎?基于AT89C51單片機(jī)微電阻測量系統(tǒng)J. 甘肅科技,2007年8月2 周瑞景. Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例M. 北京:電子工業(yè)出版社,20063 李全利.單片機(jī)原理及接口技術(shù)M.2版. 北京:高等教育出版社,20104 王東峰,王會(huì)良.單片機(jī)C語言應(yīng)用100例M.北京:電子工業(yè)出版社,20

10、105 彭偉. 單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例基于8051+Proteus仿真.北京:電子工業(yè)出版社,2010附錄一 設(shè)計(jì)編程程序/*頭文件及宏定義* #include includes.h#define TIME0H 0x3C#define TIME0L 0xB0#define K1 P1_0#define CLK P1_1/*全局變量* unsigned char uc_Clock=0;/定時(shí)器0中斷計(jì)數(shù)bit b_DATransform=0;/void vShowRes(unsigned int uiNumber)unsigned char ucaNumber4,ucCount;uca

11、Number0=uiNumber/1000;/把計(jì)算數(shù)字的每個(gè)位存入數(shù)組。ucaNumber1=(uiNumber-1000*(int)ucaNumber0)/100;ucaNumber2=(uiNumber-1000*(int)ucaNumber0-100*(int)ucaNumber1)/10;ucaNumber3=uiNumber-1000*(int)ucaNumber0-100*(int)ucaNumber1-10*(int)ucaNumber2; for(ucCount=0;ucCount4;ucCount+)vShowOneChar(ucaNumberucCount+48);/從首

12、位到末位逐一輸出。 /*主函數(shù)* void main()/TMOD=0x21;/定時(shí)器0,模式1。定時(shí)器1,模式2TH0=TIME0H; /對(duì)定時(shí)器0賦初值TL0=TIME0L;TH1=0x14; /對(duì)定時(shí)器1賦初值TL1=0x00;TR0=1;/啟動(dòng)定時(shí)器0。ET0=1;/開定時(shí)器0中斷。TR1=1; /啟動(dòng)定時(shí)器1。ET1=1; /開定時(shí)器1中斷。EA=1;/開總中斷 P1=0xFF;vdInitialize();vWriteCMD(0x80); /寫入顯示起始地址(第一行第一個(gè)位置)vShowChar(Resistance:);vWriteCMD(0xCD);vShowChar(); /

13、顯示歐姆符號(hào)while(1)if(b_DATransform=1)b_DATransform=0;vWriteCMD(0xC4);vShowRes(uiADTransform();/void Time0() interrupt 1if(uc_Clock=0)uc_Clock=5;b_DATransform=1;elseuc_Clock-;TH0=TIME0H; /恢復(fù)定時(shí)器0。TL0=TIME0L;void Time1() interrupt 3CLK=!CLK;/*驅(qū)動(dòng)程序*/#include SMC1602.h/void vWriteCMD(unsigned char ucCommand)

14、 vDelay();/先延時(shí)。LCDE=1;/然后把改為寫入命令狀態(tài)。LCDRS=0;LCDRW=0;LCDPORT=ucCommand;/再輸出命令。LCDE=0;/最后執(zhí)行命令。/void vWriteData(unsigned char ucData) vDelay(); /先延時(shí)。LCDE=1; /然后把改為寫入數(shù)據(jù)狀態(tài)。LCDRS=1;LCDRW=0;LCDPORT=ucData; /再輸出數(shù)據(jù)。LCDE=0; /最后顯示數(shù)據(jù)。void vShowOneChar(unsigned char ucChar)switch(ucChar)case : vWriteData(0x20);br

15、eak;case : vWriteData(0x3A);break;case (: vWriteData(0x28);break;case ): vWriteData(0x29);break;case 0: vWriteData(0x30);break;case 1: vWriteData(0x31);break;case 2: vWriteData(0x32);break;case 3: vWriteData(0x33);break;case 4: vWriteData(0x34);break;case 5: vWriteData(0x35);break;case 6: vWriteData

16、(0x36);break;case 7: vWriteData(0x37);break;case 8: vWriteData(0x38);break;case 9: vWriteData(0x39);break;case R: vWriteData(0x52);break;case a: vWriteData(0x61);break;case c: vWriteData(0x63);break;case e: vWriteData(0x65);break;case i: vWriteData(0x69);break; case n: vWriteData(0x6E);break;case s:

17、 vWriteData(0x73);break;case t: vWriteData(0x74);break;case : vWriteData(0xF4);break; /顯示default: break;void vShowChar(unsigned char ucaChar)unsigned char ucCount;for(ucCount=0;ucCount+)vShowOneChar(ucaCharucCount);if(ucaCharucCount+1=0)break;/void vDelay()unsigned int uiCount;for(uiCount=0;uiCount250;uiCount+);/#include #define START P3_4 /ATART,ALE接口。0-1-0:啟動(dòng)AD轉(zhuǎn)換。#define EOC P3_3 /轉(zhuǎn)換完畢由0變1.#define OUTPORT P2 #define K1 P1_0/AD轉(zhuǎn)換函數(shù),返回轉(zhuǎn)換結(jié)果。/轉(zhuǎn)換結(jié)果是3位數(shù)unsigned int uiADTransform()float uiResult;START=1; /啟動(dòng)A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論