基于單片機(jī)的頻率計(jì)
摘要:數(shù)字頻率計(jì)是一種基本的測(cè)量?jī)x器。它被廣泛應(yīng)用于航天、電子、測(cè)控等領(lǐng)域,還被應(yīng)用在計(jì)算機(jī)及各種數(shù)學(xué)儀表中。一般采用的是十進(jìn)制數(shù)字,顯示被測(cè)信號(hào)頻率;竟δ苁菧y(cè)量正弦信號(hào),方波信號(hào)以及其他各種單位時(shí)間內(nèi)變壞的物理量。由于其使用十進(jìn)制數(shù)顯示,測(cè)量迅速精確,顯示直觀,所以經(jīng)常被用來(lái)使用。
本文主要介紹數(shù)字頻率計(jì)的設(shè)計(jì)和調(diào)試,本作品是基于STC89C52單片機(jī)作為平臺(tái),基本原理是通過(guò)STC89C52單片機(jī)進(jìn)行頻率的采集和分析工作,在通過(guò)程序使其顯示在LCD1602的液晶顯示屏上,通過(guò)液晶顯示屏,讓使用者能夠直觀的看到當(dāng)前的輸入頻率是多少。
由于STC89C52單片機(jī)只能處理數(shù)字信號(hào)因此系統(tǒng)需要先把信號(hào)放大成方波信號(hào),再通過(guò)施密特觸發(fā)器整形方波,又由于單片機(jī)能處理的頻率有限,所以這次我們先用74HC390芯片對(duì)輸入的信號(hào)進(jìn)行了分頻,使其降低了100倍,才送去給單片機(jī)處理,如果頻率高于200KHZ的時(shí)候就計(jì)算分頻后的頻率,得到數(shù)據(jù)再換算成真實(shí)的頻率。
1 引言
1.1 目的和意義
在電子測(cè)量領(lǐng)域中,頻率測(cè)量的精確度是最高的。因此,在生產(chǎn)過(guò)程中許多物理量,例如溫度、壓力、流量、液位、PH值、振動(dòng)、位移、速度、加速度,乃至各種氣體的百分比成分等均用傳感器轉(zhuǎn)換成信號(hào)頻率,然后用數(shù)字頻率計(jì)來(lái)測(cè)量,以提高精確度。
國(guó)際上數(shù)字頻率計(jì)的分類很多。按功能分類,因計(jì)數(shù)式頻率計(jì)的測(cè)量功能很多,用途很廣。所以根據(jù)儀器具有的功能,電子計(jì)數(shù)器有通用和專用之分。一、通用型計(jì)數(shù)器:通用型計(jì)數(shù)器是一種具有多種測(cè)量功能、多種用途的萬(wàn)能計(jì)數(shù)器。它可測(cè)量頻率、周期、多周期平均值、時(shí)間間隔、累加計(jì)數(shù)、計(jì)時(shí)等;若配上相應(yīng)插件,就可測(cè)相位、電壓、電流、功率、電阻等電量;配上適當(dāng)?shù)膫鞲衅,還可進(jìn)行長(zhǎng)度、重量、壓力、溫度、速度等非電量的測(cè)量。二、專用計(jì)數(shù)器:專用計(jì)數(shù)器指專門用來(lái)測(cè)量某種單一功能的計(jì)數(shù)器。如頻率計(jì)數(shù)器,只能專門用來(lái)測(cè)量高頻和微波頻率;時(shí)間計(jì)數(shù)器,是以測(cè)量時(shí)間為基礎(chǔ)的計(jì)數(shù)器,其測(cè)時(shí)分辨力和準(zhǔn)確度很高,可達(dá)ns數(shù)量級(jí);特種計(jì)數(shù)器,它具有特種功能,如可逆計(jì)數(shù)器、閾值計(jì)數(shù)器、差值計(jì)數(shù)器、倒數(shù)計(jì)數(shù)器等,用于工業(yè)和自控技術(shù)等方面。數(shù)字頻率計(jì)按頻段分類:①低速計(jì)數(shù)器:最高計(jì)數(shù)頻率<10MHz;②中速計(jì)數(shù)器:最高計(jì)數(shù)頻率10—100MHz;③高速計(jì)數(shù)器:最高計(jì)數(shù)頻率>100MHz;④微波頻率計(jì)數(shù)器:測(cè)頻范圍1—80GHz或更高。
由于大規(guī)模和超大規(guī)模數(shù)字集成電路技術(shù)、數(shù)據(jù)通信技術(shù)與單片機(jī)技術(shù)的結(jié)合,數(shù)字頻率計(jì)發(fā)展進(jìn)入了智能化和微型化的新階段。其功能進(jìn)一步擴(kuò)大,除了測(cè)量頻率、頻率比、周期、時(shí)間、相位、相位差等基本功能外,還具有自撿、自校、自診斷、數(shù)理統(tǒng)計(jì)、計(jì)算方均根值、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)通信等功能。可見(jiàn),頻率計(jì)是很有工業(yè)價(jià)值的。本作品即為一個(gè)基于單片機(jī)的數(shù)字頻率計(jì),它通74HC390芯片進(jìn)行分頻,克服了單片機(jī)難以處理高頻信號(hào)的困難,并使用LCD1602液晶顯示進(jìn)行顯示。
1.2 研究概況與發(fā)展趨勢(shì)
由于當(dāng)今社會(huì)的需要,對(duì)信息傳輸和處理的要求不斷提高,對(duì)頻率的測(cè)量的精度也需要更高更準(zhǔn)確的時(shí)頻基準(zhǔn)和更精密的測(cè)量技術(shù)。而頻率測(cè)量所能達(dá)到的精度,主要取決于作為標(biāo)準(zhǔn)頻率源的精度以及所使用的測(cè)量設(shè)備和測(cè)量方法。目前,測(cè)量頻頻的方法有直接測(cè)頻法、內(nèi)插法、游標(biāo)法、頻差倍增法等等。直接測(cè)頻的方法較簡(jiǎn)單,但精度不高。頻差倍增多法和周期法是一種頻差倍增法和差拍法相結(jié)合的測(cè)量方法,這種方法是將被測(cè)信號(hào)和參考信號(hào)經(jīng)頻差倍增使被測(cè)信號(hào)
的相位起伏擴(kuò)大,再通過(guò)混頻器獲得差拍信號(hào),用電子計(jì)數(shù)器在低頻下進(jìn)行多周期測(cè)量,能在較少的倍增次數(shù)和同樣的取樣時(shí)間情況下,得到比測(cè)頻法更高的系統(tǒng)分辨率和測(cè)量精度,但是仍然存在著時(shí)標(biāo)不穩(wěn)而引入的誤差和一定的觸發(fā)誤差。
在電子系統(tǒng)廣泛的應(yīng)用領(lǐng)域中,到處看見(jiàn)處理離散信息的數(shù)字電路。供消費(fèi)用的冰箱和電視、航空通訊系統(tǒng)、交通控制雷達(dá)系統(tǒng)、醫(yī)院急救系統(tǒng)等在設(shè)計(jì)過(guò)程中都用到數(shù)字技術(shù)。 數(shù)字頻率計(jì)是現(xiàn)代通信測(cè)量設(shè)備系統(tǒng)中必不可少的測(cè)量?jī)x器,不但要求電路產(chǎn)生頻率的準(zhǔn)確度和穩(wěn)定度都高的信號(hào),也要能方便的改變頻率。
數(shù)字頻率計(jì)的實(shí)現(xiàn)方法主要有:直接式、鎖相式、直接數(shù)字式和混合式
(1)直接式
優(yōu)點(diǎn):速度快、相位噪聲低,但結(jié)構(gòu)復(fù)雜、雜散多,一般只應(yīng)用在地面雷達(dá)中。
(2)鎖相式
優(yōu)點(diǎn):相位同步的自動(dòng)控制,制作頻率高,功耗低,容易實(shí)現(xiàn)系列化、小型化、模塊化和工程化。
(3)直接數(shù)字式
優(yōu)點(diǎn):電路穩(wěn)定、精度高、容易實(shí)現(xiàn)系列化、小型化、模塊化和工程化。
1.3 本系統(tǒng)主要功能
本系統(tǒng)設(shè)計(jì)制作一個(gè)基于單片機(jī)的頻率計(jì)。能實(shí)現(xiàn)以下幾種功能:
(1)能夠?qū)?HZ對(duì)10MHZ正弦波、三角波、方波信號(hào)等周期信號(hào)的頻率進(jìn)行測(cè)量
(2)系統(tǒng)能夠把測(cè)量信號(hào)的頻率和周期顯示在液晶屏幕上。
2. 總體方案論證與設(shè)計(jì)
根據(jù)所要實(shí)現(xiàn)的功能劃分,系統(tǒng)一共需要以下幾個(gè)模塊:主控模塊、顯示模塊、時(shí)鐘模塊、溫度檢測(cè)模塊,以下就針對(duì)這幾個(gè)模塊的選型和論證進(jìn)行討論。
2.1主控模塊的選型和論證
方案一:
采用MSP430系列單片機(jī),該單片機(jī)是TI公司1996年開始推向市場(chǎng)的一種16位超低功耗的混合信號(hào)處理器。其內(nèi)部集成了很多模擬電路、數(shù)字電路和微處理器,提供強(qiáng)大的功能。不過(guò)該芯片昂貴不適合一般的設(shè)計(jì)開發(fā)。
方案二
采用51系列的單片機(jī),該單片機(jī)是一個(gè)高可靠性,超低價(jià),無(wú)法解密,高性能的8位單片機(jī),32個(gè)IO口,且STC系列的單片機(jī)可以在線編程、調(diào)試,方便地實(shí)現(xiàn)程序的下載與整機(jī)的調(diào)試。
因此選用方案二中的51系列單片機(jī)作為主控芯片。
2.2顯示模塊的選型和論證
方案一:
采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較合適,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以不用此種作為顯示。
方案二:
采用LED數(shù)碼管動(dòng)態(tài)掃描,LED數(shù)碼管價(jià)格雖適中,對(duì)于顯示數(shù)字也最合適,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用單片機(jī)口線少。但是由于數(shù)碼管動(dòng)態(tài)掃描需要借助74LS164移位寄存器進(jìn)行移位,該芯片在電路調(diào)試時(shí)往往有很多障礙,所以不采用LED數(shù)碼管作為顯示。
方案三:
采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見(jiàn),對(duì)于本設(shè)計(jì)而言一個(gè)LCD1602的液晶屏即可,價(jià)格也還能接受,需要的借口線較多,但會(huì)給調(diào)試帶來(lái)諸多方便。
所以本設(shè)計(jì)中方案三中的LCD1602液顯示屏作為顯示模塊。
2.3放大電路的選型和論證
方案一:
采用集成運(yùn)放作為放大電路,該電路只需要在外部配置少量電阻電容則能完成放大功能,十分方便設(shè)計(jì),但是本設(shè)計(jì)需要放大1HZ到10MHZ的信號(hào),通頻帶比較寬,因此對(duì)集成運(yùn)放的要求較高,一般能處理寬帶信號(hào)的集成運(yùn)放成本比較高。
方案二:
采用三極管或者場(chǎng)效應(yīng)管作為放大電路,三極管放大電路所需要原件較為簡(jiǎn)單容易購(gòu)置,而且電路較為成熟,三極管的價(jià)格也十分低廉,而且三極管電路性能優(yōu)越,是作為一個(gè)低成本的放大電路的不二之選。
所以本設(shè)計(jì)中選用三極管為放大電路中使用。
2.4系統(tǒng)整體設(shè)計(jì)概述
本系統(tǒng)以單片機(jī)為控制核心,對(duì)系統(tǒng)進(jìn)行初始化,主要完成液晶顯示、頻率測(cè)量、放大整形濾波等功能的控制,起到總控和協(xié)調(diào)各模塊之間工作的作用。
圖2-1系統(tǒng)結(jié)構(gòu)框圖
本系統(tǒng)結(jié)構(gòu)如圖2-1所示,本設(shè)計(jì)可分為以下模塊:三極管放大電路、整形電路、分頻電路、液晶模塊。下面對(duì)各個(gè)模塊的設(shè)計(jì)方案逐一進(jìn)行論證分析。
3.系統(tǒng)硬件電路設(shè)計(jì)
3.1主控模塊
主控模塊模塊在整個(gè)系統(tǒng)中起著統(tǒng)籌的作用,需要檢測(cè)鍵盤,溫度傳感器等各種參數(shù),同時(shí)驅(qū)動(dòng)液晶顯示相關(guān)參數(shù),在這里我們選用了51系列單片機(jī)中的STC89C52單片機(jī)作為系統(tǒng)的主控芯片。
(見(jiàn)附件)
3.2 LCD液晶顯示器簡(jiǎn)介
由于本設(shè)計(jì)中要求顯示界面顯示一些參數(shù),因此這里選用了LCD1602作為界面顯示,可以把一些相關(guān)的參數(shù)進(jìn)行顯示。
3.2.1 液晶原理介紹
液晶顯示器(LCD)英文全稱為L(zhǎng)iquid Crystal Display,它一種是采用了液晶控制透光度技術(shù)來(lái)實(shí)現(xiàn)色彩的顯示器。和CRT顯示器相比,LCD的優(yōu)點(diǎn)是很明顯的。由于通過(guò)控制是否透光來(lái)控制亮和暗,當(dāng)色彩不變時(shí),液晶也保持不變,這樣就無(wú)須考慮刷新率的問(wèn)題。
顯示接口用來(lái)顯示系統(tǒng)的狀態(tài),命令或采集的電壓數(shù)據(jù)。本系統(tǒng)顯示部分用的是LCD液晶模塊,采用一個(gè)16×2的字符型液晶顯示模塊。
點(diǎn)陣圖形式液晶由 M 行×N 列個(gè)顯示單元組成,假設(shè) LCD 顯示屏有64行,每行有 128列,每 8列對(duì)應(yīng) 1 個(gè)字節(jié)的 8 個(gè)位,即每行由 16 字節(jié),共 16×8=128個(gè)點(diǎn)組成,屏上 64×16 個(gè)顯示單元和顯示 RAM 區(qū) 1024 個(gè)字節(jié)相對(duì)應(yīng),每一字節(jié)的內(nèi)容和屏上相應(yīng)位置的亮暗對(duì)應(yīng)。一個(gè)字符由 6×8 或 8×8點(diǎn)陣組成,即要找到和屏上某幾個(gè)位置對(duì)應(yīng)的顯示 RAM區(qū)的 8 個(gè)字節(jié),并且要使每個(gè)字節(jié)的不同的位為‘1’,其它的為‘0’,為‘1’的點(diǎn)亮,為‘0’的點(diǎn)暗,這樣一來(lái)就組成某個(gè)字符。但對(duì)于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō),顯示字符就比較簡(jiǎn)單了,可讓控制器工作在文本方式,根據(jù)在LCD 上開始顯示的行列號(hào)及每行的列數(shù)找出顯示 RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。
3.2.2液晶模塊簡(jiǎn)介
LCD1602液晶模塊采用HD44780控制器,hd44780具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計(jì)數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來(lái)存儲(chǔ)顯示的字符,能存儲(chǔ)80個(gè)字符碼,CGROM由8位字符碼生成5*7點(diǎn)陣字符160中和5*10點(diǎn)陣字符32種.8位字符編碼和字符的對(duì)應(yīng)關(guān)系, CGRAM是為用戶編寫特殊字符留用的,它的容量?jī)H64字節(jié),可以自定義8個(gè)5*7點(diǎn)陣字符或者4個(gè)5*10點(diǎn)陣字符,AC可以存儲(chǔ)DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動(dòng)把地址碼裝入AC,同時(shí)選擇DDRAM或CGRAM,LCD1602液晶模塊的引腳圖如圖3-4所示。
圖3-4 LCD1602引腳圖
液晶寄存器選擇控制如表3-1。
表3-1寄存器選擇控制
| | |
| | |
| | 讀busy flag(DB7),以及讀取位址計(jì)數(shù)器(DB0~DB6)值 |
| | |
| | 從數(shù)據(jù)寄存器讀取數(shù)據(jù) |
3.2.3液晶顯示部分與STC89C52的接口
如圖3-5所示。用STC89C52的P0口作為數(shù)據(jù)線,用P1.2、P1.1、P1.0分別作為L(zhǎng)CD的EN、R/W、RS。其中EN是下降沿觸發(fā)的片選信號(hào),R/W是讀寫信號(hào),RS是寄存器選擇信號(hào)本模塊設(shè)計(jì)要點(diǎn)如下:顯示模塊初始化:首先清屏,再設(shè)置接口數(shù)據(jù)位為8位,顯示行數(shù)為1行,字型為5×7點(diǎn)陣,然后設(shè)置為整體顯示,取消光標(biāo)和字體閃爍,最后設(shè)置為正向增量方式且不移位。向LCD的顯示緩沖區(qū)中送字符,程序中采用2個(gè)字符數(shù)組,一個(gè)顯示字符,另一個(gè)顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應(yīng)的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個(gè)要顯示的字符或數(shù)據(jù)送到LCD的顯示緩沖區(qū),程序延時(shí)2.5ms,判斷是否夠顯示的個(gè)數(shù),不夠則地址加一取下一個(gè)要顯示的字符或數(shù)據(jù)。
圖3-5 LCD1602與STC89C52的接口
3.3三極管放大電路設(shè)計(jì)
圖3-6 三極管放大電路
由于單片機(jī)只能讀取數(shù)字信號(hào),當(dāng)輸入的信號(hào)比較小的時(shí)候單片機(jī)不能直接讀取,因此這里使用了一級(jí)三極管放大電路對(duì)輸入的信號(hào)進(jìn)行放大,其中電路中的R4和R5給三極管的基極提供和合適偏置;鶚O電壓可以由以下公式求得。
由于三極管的基極和發(fā)射極之間的壓降為0.65V,因此發(fā)射機(jī)的電壓可以由以下公式求得:
由于IC≈IE,IE=Ve/R6≈0.88ma,因此Vc=VCC-Ie*R3=2.64V。因此三極管放大電路的集電極輸出端的直流靜態(tài)工作點(diǎn)為2.64V。
因?yàn)楸驹O(shè)計(jì)只處理信號(hào),因此三極管放大電路的輸入端采用的大電容進(jìn)行交流耦合進(jìn)而隔絕交流成分,為了使整個(gè)頻率計(jì)能測(cè)量更小幅值的周期信號(hào),這個(gè)電路用旁路電容對(duì)發(fā)射極電阻進(jìn)行旁路從而提高其交流放大倍數(shù),放大倍數(shù)A可以由以下公式求得。
A≈R3/(R6//RC4//RC5)
其中RC4為C4交流等效阻抗,RC5為C4交流等效阻抗。但是放大倍數(shù)最終會(huì)受限于三極管的β(三極管的電流放大系數(shù))。因此最終放大倍數(shù)會(huì)限制在數(shù)百倍,由于這里只需要把輸入的周期信號(hào)放大到足夠大就可以通過(guò)整形電路整形成方波,因此這里放大倍數(shù)不需要很精確,放大后的波形出現(xiàn)截止失真也不會(huì)對(duì)測(cè)量結(jié)果造成。
3.4整形模塊設(shè)計(jì)
3.4.1施密特觸發(fā)器芯片介紹
施密特觸發(fā)器也有兩個(gè)穩(wěn)定狀態(tài),但與一般觸發(fā)器不同的是,施密特觸發(fā)器采用電位觸發(fā)方式,其狀態(tài)由輸入信號(hào)電位維持;對(duì)于負(fù)向遞減和正向遞增兩種不同變化方向的輸入信號(hào),施密特觸發(fā)器有不同的閾值電壓。
門電路有一個(gè)閾值電壓,當(dāng)輸入電壓從低電平上升到閾值電壓或從高電平下降到閾值電壓時(shí)電路的狀態(tài)將發(fā)生變化。施密特觸發(fā)器是一種特殊的門電路,與普通的門電路不同,施密特觸發(fā)器有兩個(gè)閾值電壓,分別稱為正向閾值電壓和負(fù)向閾值電壓。在輸入信號(hào)從低電平上升到高電平的過(guò)程中使電路狀態(tài)發(fā)生變化的輸入電壓稱為正向閾值電壓,在輸入信號(hào)從高電平下降到低電平的過(guò)程中使電路狀態(tài)發(fā)生變化的輸入電壓稱為負(fù)向閾值電壓。正向閾值電壓與負(fù)向閾值電壓之差稱為回差電壓。原理示意圖如圖3-7所示。
圖3-7 施密特觸發(fā)器原理示意圖
74HC14是一款高速CMOS器件,74HC14引腳兼容低功耗肖特基TTL(LSTTL)系列。74HC14遵循JEDEC標(biāo)準(zhǔn)no.7A。74HC14實(shí)現(xiàn)了6路施密特觸發(fā)反相器,可將緩慢變化的輸入信號(hào)轉(zhuǎn)換成清晰、無(wú)抖動(dòng)的輸出信號(hào)。其芯片引腳圖如圖3-8所示,芯片真值表如圖3-9所示。
圖3-8 74HC14芯片引腳圖
圖3-9 74HC14真值表
3.4.2 74HC14電路設(shè)計(jì)
由于三極管放大電路輸出的信號(hào)不是標(biāo)準(zhǔn)的方波信號(hào),存在著上升沿不夠陡峭,波形類似于正弦波等問(wèn)題,為了使單片機(jī)對(duì)信號(hào)更好的采集,這里使用了施密特觸發(fā)器74HC14對(duì)三極管放大電路輸出的信號(hào)進(jìn)行整形。電路圖如圖3-10所示。
圖3-10施密特觸發(fā)器電路原理圖
其中輸入信號(hào)從芯片的1號(hào)腳輸入,74HC14本身是一個(gè)芯片內(nèi)部帶有6個(gè)施密特觸發(fā)器,我這里為了充分利用芯片使用了其中三個(gè),實(shí)際上可以只使用一個(gè)。整形后的信號(hào)從芯片的6號(hào)腳輸出。
3.5分頻模塊設(shè)計(jì)
3.5.1 74HC390芯片介紹
分頻電路一般采用十進(jìn)制計(jì)數(shù)器如74HC290、74HC390等來(lái)實(shí)現(xiàn)時(shí)間計(jì)數(shù)單元的計(jì)數(shù)功能。本次設(shè)計(jì)中選擇74HC390。由其內(nèi)部邏輯框圖(如圖3)可知,其為雙2-5-10異步計(jì)數(shù)器,并每一計(jì)數(shù)器均有一個(gè)異步清零端(高電平有效)。由于我們要設(shè)計(jì)的是100分頻電路,因此74HC390內(nèi)部?jī)蓚(gè)計(jì)數(shù)器都用上,分別都設(shè)置成10計(jì)數(shù)器。
圖3-11 74HC390內(nèi)部邏輯框圖
3.5.2 74HC390分頻電路設(shè)計(jì)
由于單片機(jī)運(yùn)行速度有限,單片機(jī)運(yùn)行一條基礎(chǔ)指令需要1個(gè)機(jī)器周期即12個(gè)是時(shí)鐘周期,換算成時(shí)間為1us。因此當(dāng)頻率過(guò)高的時(shí)候單片機(jī)就不能很精確的換算出頻率。為了解決這個(gè)問(wèn)題,這設(shè)計(jì)加入了一個(gè)100分頻的計(jì)數(shù)器。當(dāng)頻率高于200KHZ的時(shí)候單片機(jī)計(jì)算分頻后的信號(hào),當(dāng)頻率低于200KHZ的時(shí)候計(jì)算分頻前的信號(hào)。這樣高低搭配可以擴(kuò)大單片機(jī)的測(cè)量頻率。最終換算出其真實(shí)對(duì)應(yīng)的頻率并在液晶上顯示。其中電路圖如圖3-12所示。
圖3-12 74HC390分頻電路原理圖
4.系統(tǒng)軟件設(shè)計(jì)
4.1系統(tǒng)軟件總體設(shè)計(jì)
4-1系統(tǒng)主流程圖
單片機(jī)上電后會(huì)先進(jìn)行一個(gè)初始化把設(shè)置的變量的值清0,然后開啟定時(shí)器首先對(duì)100分頻后的輸入信號(hào)進(jìn)行1S內(nèi)計(jì)數(shù),當(dāng)測(cè)量到頻率大于200KHZ的時(shí)候,單片機(jī)會(huì)顯示出當(dāng)前測(cè)量的頻率和周期,然后進(jìn)行下一次計(jì)數(shù),當(dāng)測(cè)量到的頻率少于200KHZ的時(shí)候,單片機(jī)會(huì)重新采集分頻前的數(shù)據(jù),把測(cè)量到的數(shù)據(jù)顯示出來(lái),然后再進(jìn)入到下一次的計(jì)數(shù)。
圖4-2 LCD1602初始化子函數(shù)流程圖
首先先調(diào)用液晶自定義的字庫(kù),設(shè)置好DDRAM地址后在第一行顯示,根據(jù)程序中的數(shù)據(jù)設(shè)置顯示數(shù)據(jù)的首地址并設(shè)置循環(huán)量,在循環(huán)過(guò)程中不斷的取字符代碼直到終止,第二行的顯示過(guò)程同一行的顯示過(guò)程一樣,兩行顯示完畢后便結(jié)束子程序。
4.2程序設(shè)計(jì)原理
軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計(jì)基本定型后,也就基本上決定下來(lái)了。
軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)做一個(gè)總體規(guī)劃。從軟件的功能來(lái)看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量,計(jì)算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計(jì)方法各有特色,執(zhí)行軟件的設(shè)計(jì)偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。
軟件任務(wù)分析時(shí),應(yīng)將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義(輸入輸出定義)。在各執(zhí)行模塊進(jìn)行定義時(shí),將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問(wèn)題也一并規(guī)劃好。
各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對(duì)來(lái)講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程序較易出問(wèn)題。這如同當(dāng)一名操作工人比較容易,而當(dāng)一個(gè)廠長(zhǎng)就比較難了。
軟件任務(wù)分析的另一個(gè)內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個(gè)系統(tǒng)軟件可分為后臺(tái)程序(背景程序)和前臺(tái)程序。后臺(tái)程序指主程序及其調(diào)用的子程序,這類程序?qū)?shí)時(shí)性要求不是太高,延誤幾十ms甚至幾百ms也沒(méi)關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序),顯示程序和打印程序等與操作者打交道的程序放在后臺(tái)程序中執(zhí)行;而前臺(tái)程序安排一些實(shí)時(shí)性要求較高的內(nèi)容,如定時(shí)系統(tǒng)和外部中斷(如掉電中斷)。也可以將全部程序均安排在前臺(tái),后臺(tái)程序?yàn)椤笆瓜到y(tǒng)進(jìn)入睡眠狀態(tài)”,以利于系統(tǒng)節(jié)電和抗干擾。