基于MXT8051單片機(jī)的電磁波測試儀的研制
軟硬件設(shè)計(jì)
本文引用地址:http://www.ex-cimer.com/article/110406.htm硬件設(shè)計(jì)
如圖1所示,整個(gè)系統(tǒng)由單片機(jī)、信號(hào)采集、輸入輸出、電源、通訊接口五部分組成。系統(tǒng)工作流程如下:無線電波經(jīng)天線耦合成電信號(hào),再經(jīng)過高頻二極管檢波送到放大單元,放大單元由一個(gè)運(yùn)放和一個(gè)模擬開關(guān)組成可變?cè)鲆娣糯笃?,根?jù)用戶選擇對(duì)信號(hào)放大并送入單片機(jī)第一路ADC,轉(zhuǎn)換成數(shù)字信號(hào)。
程序?qū)υ摂?shù)字信號(hào)進(jìn)行處理,記錄單位時(shí)間內(nèi)的最大值或平均值,送到顯示器上,如果超過安全值,通過發(fā)光二極管和蜂鳴器報(bào)警。顯示部分為段碼LCD。另外系統(tǒng)還通過串口把檢測到的實(shí)時(shí)數(shù)據(jù)上傳,以便電腦進(jìn)行更復(fù)雜的分析。
電源部分采用兩節(jié)7號(hào)電池供電,為了保證電池電壓低的時(shí)候系統(tǒng)正常工作,用一顆升壓芯片L6920把電壓升到3.3V,同時(shí)用單片機(jī)的第二路ADC監(jiān)視電池電壓,如果電量過低,同樣報(bào)警。
本次設(shè)計(jì)選用了市面上一款現(xiàn)有產(chǎn)品的外殼,殼子上未留按鍵的位置,但是有一個(gè)帶開關(guān)的電位器的位置,在此做了一個(gè)變通設(shè)計(jì),即把它設(shè)計(jì)成一個(gè)單向飛梭,即用電位器不同的電阻值代替不同的按鍵,通過單片機(jī)的第三路ADC采集電位器分壓值,然后程序換算成不同的按鍵值,這樣剛好滿足本機(jī)的簡單輸入要求,實(shí)現(xiàn)系統(tǒng)的不同模式設(shè)置。該機(jī)設(shè)置了4種采集模式,如表1所列。
軟件設(shè)計(jì)
本項(xiàng)目代碼采用C語言編寫,分為三部分模塊,分別為主程序、定時(shí)器中斷程序和ADC中斷程序。其中定時(shí)器中斷程序用來產(chǎn)生ADC采樣的時(shí)基,ADC中斷程序用于轉(zhuǎn)存采樣結(jié)果和切換采集通道,這兩部分比較簡單,下面重點(diǎn)介紹一下主程序的執(zhí)行過程。
如圖2所示,為系統(tǒng)主程序流程圖。首先系統(tǒng)上電后單片機(jī)進(jìn)行各個(gè)模塊初始化。設(shè)置ADC進(jìn)行3個(gè)通道的順序轉(zhuǎn)換,點(diǎn)亮綠色發(fā)光管表示系統(tǒng)正常運(yùn)行,初始化串口,初始化PWM以驅(qū)動(dòng)蜂鳴器。
然后開始系統(tǒng)的大循環(huán)操作。先是不停判斷轉(zhuǎn)換完成標(biāo)志位,如果轉(zhuǎn)換完成,則分別對(duì)三個(gè)通道的數(shù)據(jù)進(jìn)行處理,包括去掉較大或較小的偽值,對(duì)數(shù)據(jù)取平均值。接下來先判斷電池電量是否低于預(yù)設(shè)值,如果是,則驅(qū)動(dòng)蜂鳴器發(fā)聲,同時(shí)在LCD上顯示電池欠壓符號(hào)。下面判斷電位器分壓值是否變化,如果變化范圍超過預(yù)設(shè)值,說明用戶進(jìn)行了操作,則根據(jù)轉(zhuǎn)換結(jié)果設(shè)置對(duì)應(yīng)的工作模式,改變?cè)鲆?,同時(shí)LCD上顯示切換到顯示對(duì)應(yīng)的模式代碼4秒鐘,在4秒內(nèi)如再無操作則LCD繼續(xù)顯示轉(zhuǎn)切換前的內(nèi)容。下一個(gè)運(yùn)算是根據(jù)前面得到的電磁波信號(hào)強(qiáng)度計(jì)算其具體示值,如果計(jì)算完成則顯示出來并通過串口發(fā)出去,同時(shí)判斷示值是否超出預(yù)設(shè)值,如超出,則驅(qū)動(dòng)蜂鳴器發(fā)聲,并點(diǎn)亮紅色發(fā)光二極管,進(jìn)行聲光報(bào)警。到此整個(gè)大循環(huán)執(zhí)行了一遍,然后繼續(xù)從判斷轉(zhuǎn)換完成標(biāo)志位開始執(zhí)行下一次循環(huán)。
評(píng)論