余雪兵 楊志浩 常曉明
摘 要:在電子相關(guān)領域頻率是一個較為重要的測量參數(shù),它可以反映出信號的一些特征,因此頻率的測量已成為電子領域較為主要的的測量之一。頻率計作為常用的測量儀器,廣泛應用在高校、軍事、科研機構(gòu)等方面。近些年隨著電子信息領域的蓬勃發(fā)展,人們對頻率測量的精度要求越來越高,所以數(shù)字化的電子產(chǎn)品越來越受到大家的青睞。數(shù)字頻率計具有可操作性強、精度高、功能齊全等優(yōu)點,因此在今后,數(shù)字頻率計必將是測量頻率的主流儀器。
關(guān)鍵詞:頻率計;單片機;計數(shù)器;定時器
1.引言
數(shù)字頻率計的使用十分廣泛,在許多電子設備中都需要測量頻率。盡管一些數(shù)字頻率計設計過程復雜,但是功能齊全操作簡單對使用者的要求很低。目前的數(shù)字頻率計正在向微型化和智能方向發(fā)展。本文基于以上考慮,利用AT89C51單片機的兩個定時計數(shù)器功能,來完成對采集到的信號進行頻率計數(shù),計數(shù)的頻率結(jié)果通過液晶顯示屏LCD1602顯示出來。預期設計結(jié)果能夠?qū)?-480KHZ的信號頻率進行準確計數(shù),計數(shù)誤差不超過±10HZ。
2.系統(tǒng)方案設計
2.1三種方案比較
2.1.1 方案一
頻率計需要的定時1S的時間由多諧振蕩器產(chǎn)生,其中多諧振蕩器由NE555定時器和電位器組成,在進行分頻操作就可以得到1S的脈沖;整形放大電路通過邏輯門電路和二極管組成;閘門電路用一個邏輯門,只在定時脈沖高電平時通過;計數(shù)電路可以通過5個十進制的計數(shù)器組成,計數(shù)器再將脈沖個數(shù)通過LED數(shù)碼管顯示出來。
2.1.2方案二
固定閘門信號1s,由555定時器和電容電阻構(gòu)成的多諧振蕩器產(chǎn)生脈寬1s的脈沖或晶振為32.768KHZ的晶振電路經(jīng)CD4060的14級2分頻得到2HZ的方波,再經(jīng)4分頻得到1s脈寬的脈沖。閘門信號和放大整形后的待測信號與非,多次十分頻后接74LS151,再送到計數(shù)端。用74LS90計最高位的QD腳的負跳變沿個數(shù),用來控制74LS151的信號通路,鎖存和清零都由74LS123產(chǎn)生。
原理:每次計數(shù)都是以HZ為單位,超量程時,最高位由0到9,再9到置數(shù)為1,74LS90輸出控制74LS151選擇,將后面的脈沖10分頻,有就是將最低位乘上10。74LS90同時控制小數(shù)點和量程的轉(zhuǎn)換,當然小數(shù)點和量程指示顯示要加鎖存。計數(shù)器記錄1s內(nèi)所有的脈沖個數(shù),但只保留了最高的3位。欠量程時有就是100HZ以下時,將高位的0消隱。(此方法只是個人想法,具體地電路設計還未嘗試)。
2.1.3方案三
用4MHZ的晶振電路產(chǎn)生4MHZ的基準信號,經(jīng)4分頻,經(jīng)過多次分頻,分別得到1MHZ,100kHZ,10kHZ,1kHZ,100HZ,10HZ,1HZ,0.1HZ的頻率接74LS151八選一數(shù)據(jù)選擇器,再經(jīng)D觸發(fā)器2分頻得到1us,10us,100us,1ms,10ms,100ms,1s,10s的閘門信號。用74LS123產(chǎn)生鎖存和清零信號。74LS192作為擴展電路控制74LS151和74LS138完成自動換擋功能,欠量程和超量程信號分別有中間位和最高位的進位產(chǎn)生。
2.2 方案選擇
方案一用的是555定時器,精度和穩(wěn)度都不高。是4位數(shù)碼管顯示,可擴展電路過于簡單,而且網(wǎng)上多采用這種方案。方案二是固定閘門信號的脈寬,靈活性太差,每次計數(shù)顯示等待時間為2s。小數(shù)點顯示和量程指示都要加鎖存,過于繁瑣。方案三對基準信號分頻得到不同的閘門信號,靈活性高,計數(shù)和顯示的時間可變。擴展電路采用74LS192可加可減計數(shù)器,量程可擴展。 它們的計算頻率的原理一樣: 閘門信號待測信號計數(shù)單位時間內(nèi)的脈沖個數(shù)。
通過比較三種方案,最終我們選擇顯示電路用:LCD1602液晶顯示電路;用51單片機T0計數(shù)、T1定時;波形整形電路較為簡單,就是通過一個NPN型三極管,利用三極管的開關(guān)特性來保護電路;電路還附帶一個由555構(gòu)成的方波發(fā)生電路作為整個系統(tǒng)的內(nèi)部信號,也可以通過選擇接入外部正弦波、三角波、鋸齒波等信號來測量頻率。以下所有電路及軟件都是按照此決定方案設計。
3.硬件簡介
3.1 單片機簡介
STC89C52單片機有40個引腳。包括時鐘信號引腳、控制信號引腳等。有4個8位并行I/O端口,1個全雙工異步串行端口,5個中斷源,2個優(yōu)先級,2個16位定時/計數(shù)器。其中在STC89C52單片機中的中斷系統(tǒng)可以實現(xiàn)二級中斷服務。當同一優(yōu)先級的中斷提出中斷請求時,則由單片機內(nèi)部的查詢邏輯來確定響應 的次序。此外,有兩個可編程定時/計數(shù)器的STC89C52單片機:它們可以作為定時器,也可以作為計數(shù)器。
3.2 LCD液晶顯示屏
1602液晶顯示屏是一種專門顯示字符、數(shù)字、字母、漢字等的點陣型顯示模塊。它的工作電壓為5V,控制簡單、成本較低、適用于普通的數(shù)據(jù)顯示。但是同時也具有功耗高、不能顯示曲線、圖像等缺點。通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線。VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,LCD1602模塊使用HD44780控制器,可以通過編程實現(xiàn)字符信息的傳送和現(xiàn)實。HD44780控制器通過指令(IR)和數(shù)據(jù)注冊(DR),RAM(DDRAM),字符發(fā)生器(CGRAM)字符發(fā)生器存儲器(CGRAM),地址計數(shù)器,RAM(AC)的顯示數(shù)量進行注冊。IR的功能是注冊指令代碼,只能寫入不能讀取,DR的功能用于注冊數(shù)據(jù)。
STC89C52單片機的P0口的8位作為數(shù)據(jù)傳輸口,P1口的0、1、2位分別連接LCD1602的EN、R/W、RS功能端。其中R/W端是信號的讀寫端、EN是信號的使能端、RS是寄存器的選擇端。這個模塊設計的關(guān)鍵步驟是顯示模塊的初始化。首先對屏幕進行清除并將端口數(shù)據(jù)設置為8位,接下來顯示行號和列號,最后設定一個無方向增量,將字符發(fā)送到LCD的BUFF區(qū)。經(jīng)過設計決定使用兩個字符數(shù)組,其中一個用于顯示具體字符,另外一個顯示電壓數(shù)值。要顯示的內(nèi)容被發(fā)送到相應的數(shù)組,通過串口傳送給LCD1602完成顯示。
3.3 NE555電路
使用555定時器可以簡便的組成多種振蕩器和整形電路。這類電路在定時、控制、自動化方面有極為廣泛的應用。多諧振蕩器是555應用的電路之一,所謂多諧振蕩器是指電路沒有穩(wěn)定狀態(tài),只有兩個暫時的穩(wěn)態(tài),功能就是產(chǎn)生一定頻率和幅度的矩形信號,輸出狀態(tài)不斷在高低電平之間切換。
3.4 電源電路
本設計的電源是一款自己設計的數(shù)控直流穩(wěn)壓電源。此電源電路由直流帶能源、顯示電路、單片機控制電路組成。具體是采用單片機作為控制器,通過改變輸入數(shù)字量來改變輸出電壓值,經(jīng)過集成運算放大器輸出,間接的改變輸出電壓的大小。與常用的穩(wěn)壓電源相比較,具有操作簡單,可調(diào)節(jié)電壓值、功能豐富、可顯示等優(yōu)點。
4.軟件設計
4.1程序流程
4.2程序設計
程序設計內(nèi)容 :首先需要定時/計數(shù)器的工作方式設置, 需要明確T0是工作在計數(shù)狀態(tài)下,對采集到的信號進行頻率計數(shù),由基本原理可以知道對工作在計數(shù)狀態(tài)下的T0,最大計數(shù)值為FOSC=1/24,由于我們采用的晶振電路FOSC=12MHz,因此:T0的最大計數(shù)頻率為250KHz。頻率的概念是在一秒內(nèi)脈沖的個數(shù)就是頻率值。所以T1工作在定時狀態(tài)下,每定時1秒中到,就停止T0的計數(shù),而從T0的計數(shù)單元中讀取計數(shù)的數(shù)值,然后進行數(shù)據(jù)處理,就能夠得到頻率值。送到1602液晶屏顯示出來。
4.3 程序內(nèi)容
程序設計應用C語言編寫,主要分為四個模塊。模塊一用于設置定時器工作方式,開中斷。模塊二是T0計數(shù)的子程序;模塊三是T1定時的子程序;模塊四是液晶屏讀寫程序。
5.測試結(jié)果
經(jīng)過我們的測試可以得出結(jié)論:本頻率計在誤差允許的范圍內(nèi)可以接受信號的峰峰值為1.2v以上,可測頻率范圍為1hz~480khz左右。可接受的信號類型為方波、正弦波、三角波等。相對來說頻率范圍還是太小,主要問題出在我們的信號處理模塊,后期我們會基礎提升這一塊。
參考文獻:
[1]孫安青編著.AT89S51單片機實驗及基礎教程. 桂林電子科技大學,2003年
[2]江曉安編著.數(shù)字電路. 西安電子科技大學出版社, 2002年
[3]楊振江編著.單片機原理與實踐指導.中國電力出版社,2008年