基于單片機(jī)高性價(jià)比頻率計(jì)的設(shè)計(jì)與實(shí)現(xiàn)
該系統(tǒng)以8051單片機(jī)為核心,應(yīng)用單片機(jī)的運(yùn)算和控制功能并采用led顯示器實(shí)時(shí)地將所測(cè)頻率顯示出來(lái),既滿足測(cè)量的精度要求, 又具有很好的性能價(jià)格比。 1 系統(tǒng)測(cè)量原理 測(cè)量方法采用多周期同步測(cè)量法,保證了測(cè)量精度?! 《嘀芷谕綔y(cè)量原理與傳統(tǒng)的頻率和周期的測(cè)量原理不同,時(shí)鐘信號(hào)(f0)經(jīng)同步電路作用后與被測(cè)信號(hào)同步。主門(mén) 與主門(mén) 在時(shí)間t 內(nèi)被同時(shí)打開(kāi),于是計(jì)數(shù)器 和計(jì)數(shù)器 便分別對(duì)被測(cè)信號(hào)和時(shí)鐘信號(hào)的周期數(shù)進(jìn)行累計(jì)。在t內(nèi),事件計(jì)數(shù)器的累加數(shù)為na;時(shí)間計(jì)數(shù)器的累加數(shù)為nb。再由單片機(jī)運(yùn)算得出被測(cè)頻率為(na/nb)×f。由于d觸發(fā)器的同步作用,計(jì)數(shù)器 所記錄的na值已不存正負(fù)1誤差的影響。但由于時(shí)鐘信號(hào)與閘門(mén)的開(kāi)和關(guān)無(wú)確定的相位關(guān)系,計(jì)數(shù)器 所記錄的nb值仍存在正負(fù)1誤差的影響,由于時(shí)鐘頻率很高,正負(fù)1誤差影響小,所以測(cè)量精度與被測(cè)信號(hào)頻率無(wú)關(guān),且在全頻段的測(cè)量精度是均衡的?! ? 系統(tǒng)硬件設(shè)計(jì) 在頻率計(jì)設(shè)計(jì)中,硬件電路采用了8051單片機(jī)、雙四位二進(jìn)制計(jì)數(shù)器74ls393、緩存器74ls244、8155帶ram和定時(shí)器/計(jì)數(shù)器的可編程并行接口芯片、16k程序存儲(chǔ)器擴(kuò)展芯片2716、十倍分頻器74s196、反向器74ls14、反向驅(qū)動(dòng)器7406、7407等。所采用的芯片技術(shù)成熟,性能可靠,性價(jià)比較高。 系統(tǒng)硬件主要由四部分組成:通道部分、計(jì)數(shù)器部分、單片機(jī)控制和接口部分、顯示部分?! ?.1通道部分 本頻率計(jì)的輸入通道由兩部分組成,第一部分就是常見(jiàn)的信號(hào)預(yù)處理電路,包括對(duì)被測(cè)信號(hào)的放大、整形、濾波等等。第一級(jí)由開(kāi)關(guān)三極管構(gòu)成的零偏置放大器,三極管采用開(kāi)關(guān)三極管以保證放大器具有良好的高頻響應(yīng)。第二級(jí)是由74ls14施密特觸發(fā)器構(gòu)成的電路。施密特觸發(fā)器一方面起到整形作用,用于把放大器生成的單相脈沖信號(hào)轉(zhuǎn)換成與ttl/cmos兼容的方波信號(hào)。另一方面其滯后帶寬可以有效抑制信號(hào)中的干擾。第三級(jí)是由74ls196構(gòu)成的分頻器電路。本機(jī)設(shè)計(jì)測(cè)頻范圍20hz~100mhz,當(dāng)被測(cè)頻率大于10 mhz時(shí),需經(jīng)分頻電路分頻后再送入計(jì)數(shù)器電路。第四級(jí)是由4n25構(gòu)成的光電隔離電路,用于把輸入的電信號(hào)轉(zhuǎn)化為光信號(hào)進(jìn)行傳輸,從而把測(cè)量電路與外界干擾隔開(kāi),能有效地保證測(cè)量精度?! 〉诙糠质峭介T(mén)電路,它的作用是保證被測(cè)信號(hào)和頻率基準(zhǔn)信號(hào)同時(shí)進(jìn)入測(cè)量電路。其構(gòu)成主要包括由與門(mén)組成的主門(mén)i和主門(mén)ii,以及由d觸發(fā)器構(gòu)成的同步門(mén)控制電路,主門(mén)i控制被測(cè)信號(hào)fx的通過(guò),主門(mén)ii控制時(shí)鐘信號(hào)f的通過(guò)?! ?.2計(jì)數(shù)器部分 計(jì)數(shù)器包括時(shí)間計(jì)數(shù)器和事件計(jì)數(shù)器兩部分,它們是完全相同的計(jì)數(shù)電路。分別由前后兩級(jí)組成,前級(jí)電路由高速的ttl計(jì)數(shù)器74ls393構(gòu)成八位二進(jìn)制計(jì)數(shù)器;后級(jí)由單片機(jī)內(nèi)的計(jì)數(shù)器構(gòu)成十六位二進(jìn)制計(jì)數(shù)器。計(jì)數(shù)前,先由p1.3發(fā)計(jì)數(shù)器清零信號(hào),計(jì)數(shù)后通過(guò)74ls244 緩沖器將測(cè)量結(jié)果讀入內(nèi)存。這樣設(shè)計(jì)既充分利用了硬件資源,又大大提高了測(cè)量頻率范圍。 2.3 單片機(jī)控制和接口部分 8051單片機(jī)的任務(wù)是進(jìn)行整機(jī)測(cè)量過(guò)程的控制、故障的自動(dòng)檢測(cè)以及測(cè)量結(jié)果的處理與顯示等。 p1口與p2 口被用于施加各種控制信號(hào),其中:p1.0 作為預(yù)置閘門(mén)時(shí)間的控制線;p1.1作為同部門(mén)控制電路的復(fù)位信號(hào)線;p1.2用于查詢閘門(mén)時(shí)間的狀態(tài)線;p1.3作為計(jì)數(shù)器復(fù)位信號(hào)線。 單片機(jī)內(nèi)部有兩個(gè)16位二進(jìn)制定時(shí)/計(jì)數(shù)器,用做兩個(gè)主計(jì)數(shù)器的一部分,并通過(guò)t0,t1分別與外部事件計(jì)數(shù)器和時(shí)間計(jì)數(shù)器的進(jìn)位端相接。外部的時(shí)間計(jì)數(shù)器和事件計(jì)數(shù)器的測(cè)量結(jié)果分別通過(guò)擴(kuò)展輸入口與p0口相連?! ?155作為單片機(jī)的擴(kuò)展i/o口,主要用來(lái)與顯示電路接口, 8155內(nèi)部的14 位計(jì)數(shù)器被用來(lái)作為本機(jī)的閘門(mén)時(shí)間計(jì)數(shù)器,定時(shí)器的輸入信號(hào)取自單片機(jī)ale端;定時(shí)器的輸出與單片機(jī)的int1相連,作為中斷信號(hào)。 2.4 顯示部分 采用8 位led數(shù)碼管進(jìn)行顯示。這是一個(gè)較為典型的采用8155并行口組成的顯示電路。八位led顯示采用了動(dòng)態(tài)顯示軟件譯碼工作方式。led顯示器選用共陰極,段碼由8155pa口提供,位選碼8155pb口提供。其中7406反向驅(qū)動(dòng)器做作為位選碼驅(qū)動(dòng)器,這是因?yàn)?155pb口正邏輯輸出的位控與共陰極led要求的低電平點(diǎn)亮正好相反,即當(dāng)pb口位控線輸出高電平時(shí),點(diǎn)亮一位led。7407是同相驅(qū)動(dòng)器,作段選碼驅(qū)動(dòng)器?! ? 系統(tǒng)軟件設(shè)計(jì) 軟件采用匯編語(yǔ)言編寫(xiě),應(yīng)用模塊化設(shè)計(jì)方法,主要包括中斷監(jiān)控服務(wù)程序,數(shù)值比較子程序,數(shù)據(jù)處理子程序,十進(jìn)制轉(zhuǎn)換子程序,led顯示子程序。主流程圖如下: 程序編寫(xiě)較難的部分是數(shù)據(jù)處理部分,它涉及到多字節(jié)的乘除法。因?yàn)槌藬?shù)和被乘數(shù)各為三字節(jié),因此需要進(jìn)行九次乘法運(yùn)算,得到九個(gè)部分積。我們知道m(xù)ul ab 指令,把累加器a和寄存器b中的兩個(gè)無(wú)符號(hào)8位數(shù)相乘,所得的16位乘積結(jié)果,低位字節(jié)放在a中,高位字節(jié)放在b中。假定部分積的高字節(jié)以“h ”