1 緒 論
1.1 課題的引入在電子技術(shù)中,頻率是一種計(jì)算單位時(shí)間內(nèi)的信號(hào)變化的數(shù)值的儀器,是最基本的參數(shù)之一,由于頻率信號(hào)抗干擾能力強(qiáng)、易于傳輸,可以獲得較高的測(cè)量精度,并且與許多電參量的測(cè)量方案、測(cè)量結(jié)果都有十分密切的關(guān)系。因此,頻率的測(cè)量就顯得更為重要。
隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的迅速發(fā)展,特別是單片機(jī)的出現(xiàn)和發(fā)展,使傳統(tǒng)的電子測(cè)量?jī)x器在原理、功能、精度及自動(dòng)化水平等方面都發(fā)生了巨大的變化,形成一種完全突破傳統(tǒng)概念的新一代測(cè)量?jī)x器。從80年代單片機(jī)引入我國(guó)至今,單片機(jī)已廣泛地應(yīng)用于電子設(shè)計(jì)中,使頻率計(jì)智能化水平在廣度和深度上產(chǎn)生了質(zhì)的飛躍,數(shù)字化也成為了電子設(shè)計(jì)的必由之路。運(yùn)用單片機(jī)設(shè)計(jì)頻率計(jì),并采用適當(dāng)?shù)乃惴ㄈ〈鷤鹘y(tǒng)電路,克服了傳統(tǒng)頻率計(jì)結(jié)構(gòu)復(fù)雜、穩(wěn)定性差、精度不高的弊端,其體積小、保密性強(qiáng)、設(shè)計(jì)簡(jiǎn)單、成本低,不僅大大降低了設(shè)計(jì)成本和實(shí)現(xiàn)復(fù)雜度,而且頻率計(jì)性能也將大幅提高,可實(shí)現(xiàn)精度較高、等精度和寬范圍頻率計(jì)的要求。[15]
1.2 產(chǎn)生背景頻率計(jì)作為測(cè)量?jī)x器的一種,常稱為電子計(jì)數(shù)器,它的基本功能是測(cè)量信號(hào)的頻率和周期頻率計(jì)的應(yīng)用范圍很廣,它不僅應(yīng)用于一般的簡(jiǎn)單儀器測(cè)量,而且還廣泛應(yīng)用于教學(xué)、科研、高精度儀器測(cè)量、工業(yè)控制等其它領(lǐng)域。
20世紀(jì)70年代,微電子技術(shù)正處于發(fā)展階段,集成電路屬于中規(guī)模發(fā)展時(shí)期,各種新材料新工藝尚未成熟,美國(guó)仙童(Fairchild)公司研制出世界上第一臺(tái)單片微型機(jī)F8。此時(shí)單片機(jī)仍處在初級(jí)的發(fā)展階段,元件集成規(guī)模還比較小,功能比較簡(jiǎn)單,一般均把CPU、RAM有的還包括了一些簡(jiǎn)單的I/O口集成到芯片上,它還需配上外圍的其他處理電路方才構(gòu)成完整的計(jì)算系統(tǒng)。
問(wèn)世以來(lái),單片機(jī)開(kāi)始迅速發(fā)展,其功能不斷增強(qiáng)和完善,應(yīng)用領(lǐng)域也越來(lái)越廣泛,現(xiàn)已成為微型計(jì)算機(jī)的重要分支。目前,單片機(jī)發(fā)展具體體現(xiàn)在CPU功能增強(qiáng)內(nèi)部資源增多引腳的多功能化和低電壓低功耗等方面。
隨著嵌入式系統(tǒng)式系統(tǒng)片上系統(tǒng)等概念的提出.普遍接受及應(yīng)用,單片機(jī)的發(fā)展又進(jìn)入了一個(gè)新的階段,單片機(jī)的體積更小功能更齊全可靠性更高.由于起明顯的優(yōu)勢(shì),單片機(jī)在工業(yè)控制、數(shù)據(jù)采集、智能儀器儀表、家用電器、智能玩具、通信系統(tǒng)、機(jī)械加工等各個(gè)領(lǐng)域都獲得了廣泛的應(yīng)用,極大的提高了這些領(lǐng)域的技術(shù)水平和自動(dòng)化程度。單片機(jī)技術(shù)已成為現(xiàn)代電子技術(shù)應(yīng)用領(lǐng)域十分重要的技術(shù)之一,是電子技術(shù)應(yīng)用領(lǐng)域工程技術(shù)人員必備的知識(shí)和技能,它能夠是我們?cè)O(shè)計(jì)的產(chǎn)品更具智能性和先進(jìn)性。
從80年代單片機(jī)引入我國(guó)至今,單片機(jī)已廣泛地應(yīng)用于電子設(shè)計(jì)中,使頻率計(jì)智能化水平在廣度和深度上產(chǎn)生了質(zhì)的飛躍,數(shù)字化也成為了電子設(shè)計(jì)的必由之路。運(yùn)用51系列單片機(jī)和高速計(jì)數(shù)器的組合設(shè)計(jì)頻率計(jì),并采用適當(dāng)?shù)乃惴ㄈ〈鷤鹘y(tǒng)電路,不僅能克服傳統(tǒng)頻率計(jì)結(jié)構(gòu)復(fù)雜、穩(wěn)定性差、精度不高的弊端,而且頻率計(jì)性能也將大幅提高,可實(shí)現(xiàn)精度較高、等精度和寬范圍頻率計(jì)的要求。
1.3 國(guó)內(nèi)外研究現(xiàn)狀20世紀(jì)70年代,美國(guó)仙童(Fairchild)公司研制出世界上第一臺(tái)單片微型機(jī)F8。單片機(jī)的問(wèn)世和飛速發(fā)展掀起了計(jì)算機(jī)工程應(yīng)用的一場(chǎng)新革命,使計(jì)算機(jī)技術(shù)沖破了實(shí)驗(yàn)室和機(jī)房的界限,廣泛應(yīng)用與工業(yè)控制系統(tǒng)數(shù)據(jù)采集系統(tǒng)自動(dòng)測(cè)試系統(tǒng)只能儀表和接口以及各類功能模塊等廣闊的領(lǐng)域。隨著嵌入式系統(tǒng)式系統(tǒng)片上系統(tǒng)等概念的提出.普遍接受及應(yīng)用,單片機(jī)的發(fā)展又進(jìn)入了一個(gè)新的階段,單片機(jī)的體積更小功能更齊全可靠性更高。由于起明顯的優(yōu)勢(shì),單片機(jī)在工業(yè)控制、數(shù)據(jù)采集、智能儀器儀表、家用電器、智能玩具、通信系統(tǒng)、機(jī)械加工等各個(gè)領(lǐng)域都獲得了廣泛的應(yīng)用,極大的提高了這些領(lǐng)域的技術(shù)水平和自動(dòng)化程度。單片機(jī)技術(shù)已成為現(xiàn)代電子技術(shù)應(yīng)用領(lǐng)域十分重要的技術(shù)之一,是電子技術(shù)應(yīng)用領(lǐng)域工程技術(shù)人員必備的知識(shí)和技能,它能夠是我們?cè)O(shè)計(jì)的產(chǎn)品更具智能性和先進(jìn)性。51系列單片機(jī)是國(guó)內(nèi)目前應(yīng)用最廣泛的一種8位單片機(jī)之一,隨著嵌入式系統(tǒng)、片上系統(tǒng)等概念的提出和普遍接受及應(yīng)用,51系列及其衍生單片機(jī)還會(huì)在繼后很長(zhǎng)一段時(shí)間占據(jù)嵌入式系統(tǒng)產(chǎn)品的低端市場(chǎng)。[5]
頻率計(jì)也是一種應(yīng)用較廣泛的電子測(cè)量?jī)x器。隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的迅速發(fā)展,特別是單片微機(jī)的出現(xiàn)和發(fā)展,使傳統(tǒng)的電子側(cè)量?jī)x器在原理、功能、精度及自動(dòng)化水平等方面都發(fā)生了巨大的變化,形成一種完全突破傳統(tǒng)概念的新一代測(cè)量?jī)x器。頻率計(jì)廣泛采用了高速集成電路和大規(guī)模集成電路,使儀器在小型化、耗電、可靠性等方面都發(fā)生了重大的變化。
1.4 單片機(jī)頻率計(jì)設(shè)計(jì)的目的及意義在電子技術(shù)中,頻率是一種計(jì)算單位時(shí)間內(nèi)的信號(hào)變化的數(shù)值的儀器,是最基本的參數(shù)之一,并且與許多電參量的測(cè)量方案、測(cè)量結(jié)果都有十分密切的關(guān)系,因此,頻率的測(cè)量就顯得更為重要。頻率計(jì)作為測(cè)量?jī)x器的一種,常稱為電子計(jì)數(shù)器,它的基本功能是測(cè)量信號(hào)的頻率和周期頻率計(jì)的應(yīng)用范圍很廣,它不僅應(yīng)用于一般的簡(jiǎn)單儀器測(cè)量,而且還廣泛應(yīng)用于教學(xué)、科研、高精度儀器測(cè)量、工業(yè)控制等其它領(lǐng)域。目前市場(chǎng)上的頻率計(jì)產(chǎn)品很多,但基本上都是采用專用計(jì)數(shù)芯片和數(shù)字邏輯電路組成,由于這些芯片本身的工作頻率不高,從而限制了產(chǎn)品工作頻率的提高,遠(yuǎn)不能滿足在一些特殊的場(chǎng)合需要測(cè)量很高的頻率的要求,而且測(cè)量精度也受到芯片本身極大的限制。從80年代單片機(jī)引入我國(guó)至今,單片機(jī)已廣泛地應(yīng)用于電子設(shè)計(jì)中,使頻率計(jì)智能化水平在廣度和深度上產(chǎn)生了質(zhì)的飛躍,數(shù)字化也成為了電子設(shè)計(jì)的必由之路。運(yùn)用51系列單片機(jī)和高速計(jì)數(shù)器的組合設(shè)計(jì)頻率計(jì),并采用適當(dāng)?shù)乃惴ㄈ〈鷤鹘y(tǒng)電路,不僅能克服傳統(tǒng)頻率計(jì)結(jié)構(gòu)復(fù)雜、穩(wěn)定性差、精度不高的弊端,而且頻率計(jì)性能也將大幅提高,可實(shí)現(xiàn)精度較高、等精度和寬范圍頻率計(jì)的要求。隨著單片機(jī)技術(shù)的不斷發(fā)展,單片機(jī)能實(shí)現(xiàn)更加靈活的邏輯控制功能,具有很強(qiáng)的數(shù)據(jù)處理能力,可以用單片機(jī)通過(guò)軟件設(shè)計(jì)直接用十進(jìn)制數(shù)字顯示被測(cè)信號(hào)頻率。頻率計(jì)是電子測(cè)試、自動(dòng)化控制等設(shè)備中不可或缺的重要模塊。在電子工程、資源勘探、儀器儀表等相關(guān)應(yīng)用中,頻率計(jì)是工程技術(shù)人員必不可少的測(cè)量工具,頻率測(cè)量也是電子測(cè)量技術(shù)中最基本最常見(jiàn)的測(cè)量之一。不少物理量的測(cè)量,如轉(zhuǎn)速、振動(dòng)頻率等的測(cè)量都涉及到或可以轉(zhuǎn)化為頻率的測(cè)量。
目前,市場(chǎng)上有各種多功能、高精度、高頻率的數(shù)字頻率計(jì),但價(jià)格不菲。為適應(yīng)實(shí)際工作的需要,本次設(shè)計(jì)給出了一種較小規(guī)模和單片機(jī)(AT89S52)相結(jié)合的頻率計(jì)的設(shè)計(jì)方案,不但切實(shí)可行,而且體積小、保密性強(qiáng)、設(shè)計(jì)簡(jiǎn)單、成本低、精度高、可測(cè)頻帶寬,大大降低了設(shè)計(jì)成本和實(shí)現(xiàn)復(fù)雜度。
2 AT89S52單片機(jī)介紹及其發(fā)展概況2.1 單片機(jī)的介紹2.1.1 單片機(jī)概述單片機(jī)(Single-Chip-Microcomputer),又稱單片微控器,是一種集成電路芯片,采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力(如算術(shù)運(yùn)算、邏輯運(yùn)算、數(shù)據(jù)傳送、中斷處理)的微處理器(CPU),隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)、只讀程序存儲(chǔ)器(ROM)、輸入/輸出電路(I/O)、定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)、串行通訊口,可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模數(shù)轉(zhuǎn)換等電路集成到一個(gè)半導(dǎo)體芯片上,構(gòu)成一個(gè)最小而又完善的計(jì)算機(jī)系統(tǒng)。它們之間相互連接的結(jié)構(gòu)框圖如下圖所示。這些電路能在軟件的控制下準(zhǔn)確、迅速、高效地完成程序設(shè)計(jì)者事先規(guī)定的任務(wù)。單片機(jī)結(jié)構(gòu)上的設(shè)計(jì),在硬件.指令系統(tǒng)及I/O能力等方面都有獨(dú)到之處,具有較強(qiáng)而有效的控制功能。其結(jié)構(gòu)圖為2-1所示。
圖2-1 單片機(jī)結(jié)構(gòu)圖
雖然單片機(jī)只是一個(gè)芯片,但無(wú)論從組成還是從其邏輯功能上看,都具有微機(jī)系統(tǒng)的含義。另一方面,單片機(jī)畢竟是一個(gè)芯片,只有外加所需的輸入輸出設(shè)備,才能構(gòu)成實(shí)用的單片機(jī)應(yīng)用系統(tǒng)。單片機(jī)有著微處理器所不具備的功能,它可單獨(dú)完成現(xiàn)代工業(yè)控制所要求的智能化控制功能,這是單片機(jī)最大的特征。[8]
然而單片機(jī)又不同于單板機(jī),芯片在沒(méi)有開(kāi)發(fā)前,它只具備功能極強(qiáng)的超大規(guī)模集成電路,如果賦于它特定的程序,它便是一個(gè)最小的、完整的微型計(jì)算機(jī)控制系統(tǒng),它與單板機(jī)或個(gè)人電腦有著本質(zhì)的區(qū)別。單片機(jī)的應(yīng)用屬于芯片級(jí)應(yīng)用,需要用戶了解單片機(jī)芯片的結(jié)構(gòu)和指令系統(tǒng),以及其它集成電路應(yīng)用技術(shù)和系統(tǒng)設(shè)計(jì)所需要的理論與技術(shù),用這樣特定的芯片設(shè)計(jì)應(yīng)用程序,從而使該芯片具備特定的功能。
單片機(jī)的應(yīng)用極為廣泛,它涉及智能儀器儀表、工業(yè)控制、計(jì)算機(jī)網(wǎng)絡(luò)和通信以及醫(yī)用設(shè)備等領(lǐng)域。它以無(wú)與倫比的高性能、低價(jià)位贏得了廣大電子開(kāi)發(fā)者的喜愛(ài)。
2.1.2 單片機(jī)的發(fā)展1976年Intel公司推出了真正意義上的單片機(jī)MCS—48,它以體積小、功能全、價(jià)格低等自身魅力贏得了廣泛的應(yīng)用,為單片機(jī)的發(fā)展奠定了基礎(chǔ),成為單片機(jī)發(fā)展史上一個(gè)重要的里程碑。在MCS—48的帶領(lǐng)下,許多半導(dǎo)體芯片在生產(chǎn)廠商競(jìng)相研制和發(fā)展自己的單片機(jī)系列。到80年代末,世界各地已相繼研制出大約50個(gè)系列300多個(gè)品種的單片機(jī)產(chǎn)品,其中包括Motorola公司的6801,6802,Zilog公司的Z-8系列,Rockwell公司的6501,6502等。此外,日本的NEC公司,日立公司等也不甘落后,相繼推出了各自的單片機(jī)品種如Zilog公司的Z80、Motorola公司的6801、6802系列等。[7]目前我國(guó)使用做多的是Intel公司在MCS-48的基礎(chǔ)上于20世紀(jì)80年代初發(fā)展起來(lái)的 8位的單片機(jī)MCS-51,直到現(xiàn)在仍不失為單片機(jī)的主流系列。繼8位單片機(jī)之后,又出現(xiàn)了16位單片機(jī),1983年Intel公司推出的MCS-96系列單片機(jī)就是其中的典型代表。
51系列單片機(jī)是國(guó)內(nèi)目前應(yīng)用最廣泛的一種8位單片機(jī)之一,隨著嵌入式系統(tǒng)、片上系統(tǒng)等概念的提出和普遍接受及應(yīng)用。51系列及其衍生單片機(jī)還會(huì)在繼后很長(zhǎng)一段時(shí)間占據(jù)嵌入式系統(tǒng)產(chǎn)品的低端市場(chǎng)。
縱觀單片機(jī)近30年的發(fā)展歷程,單片機(jī)今后將向多功能、高性能、高速度、低電壓、低功耗、低價(jià)格、外圍電路簡(jiǎn)單化以及片內(nèi)存儲(chǔ)器容量增加的方向發(fā)展。但其位數(shù)不一定會(huì)繼續(xù)增加,盡管現(xiàn)在已經(jīng)有了32位單片機(jī),但使用的并不多。可以預(yù)言,今后的單片機(jī)將是功能更強(qiáng),集成度和可靠性更高而功耗更低,以及使用更方便等特點(diǎn)。此外,專用化也是單片機(jī)的一個(gè)發(fā)展方向,針對(duì)單一用途的專用單片機(jī)將會(huì)越來(lái)越多。[12]
2.1.3 單片機(jī)的特點(diǎn)及應(yīng)用一塊單片機(jī)芯片就是具有一定規(guī)模的微型計(jì)算機(jī),在加上必要的外圍器件,就可以構(gòu)成完整的計(jì)算機(jī)硬件系統(tǒng)。由于單片機(jī)的這種特殊的結(jié)構(gòu)形式,使其具有很多顯著的優(yōu)點(diǎn),單片機(jī)在各個(gè)領(lǐng)域內(nèi)的應(yīng)用都得到迅猛的發(fā)展。
1) 單片機(jī)的應(yīng)用特點(diǎn)
① 具有較高的性價(jià)比。高性能、低價(jià)格是單片機(jī)最顯著的一個(gè)特點(diǎn),其應(yīng)用系統(tǒng)具有印制板小、接插件少、安裝調(diào)試簡(jiǎn)單方便等特點(diǎn),使單片機(jī)應(yīng)用系統(tǒng)的性價(jià)比高于一般危機(jī)系統(tǒng)。
② 體積小、可靠性高。
③ 控制功能強(qiáng)。單片機(jī)采用面向控制的指令系統(tǒng),實(shí)時(shí)控制功能特別強(qiáng)。
④ 使用方便、容易產(chǎn)品化。
單片機(jī)開(kāi)發(fā)開(kāi)發(fā)工具具有很強(qiáng)的軟硬件調(diào)試功能,使研制單片機(jī)應(yīng)用系統(tǒng)極為方便,加之現(xiàn)場(chǎng)運(yùn)行環(huán)境的可靠性,因此使單片機(jī)能滿足許多小型對(duì)象的嵌入式應(yīng)用要求,可廣泛用在儀器儀表、家用電器、智能玩具、控制系統(tǒng)等領(lǐng)域。
2) 單片機(jī)的應(yīng)用領(lǐng)域
單片機(jī)由于其體積小、功耗低、價(jià)格低廉,而且具有邏輯判斷、定時(shí)計(jì)數(shù)、程序控制等多種功能,廣泛應(yīng)用于工業(yè)控制、數(shù)據(jù)采集、智能儀器儀表、家用電器、智能玩具、通信系統(tǒng)、機(jī)械加工等領(lǐng)域。可以毫不夸張的說(shuō),凡是能想到的地方,單片機(jī)都可以用得上。
① 智能儀器
② 工業(yè)控制
③ 家用電器
④ 機(jī)電一體化
單片機(jī)除以上各方面應(yīng)用外,還廣泛應(yīng)用于辦公自動(dòng)化領(lǐng)域、汽車(chē)電路、通信系統(tǒng)、計(jì)算機(jī)外圍設(shè)備等,稱為計(jì)算機(jī)發(fā)展和應(yīng)用的一個(gè)重要方向。單片機(jī)從其問(wèn)世和發(fā)展以來(lái)從工業(yè)測(cè)控對(duì)象環(huán)境接口特點(diǎn)出發(fā),向著增強(qiáng)控制功能提高工業(yè)環(huán)境的可靠性靈活方便地構(gòu)成應(yīng)用計(jì)算機(jī)系統(tǒng)的界面接口的方向發(fā)展。
2.2 AT89S52系列單片機(jī)ATMEL公司是美國(guó)20世紀(jì)80年代中期成立并發(fā)展起來(lái)的半導(dǎo)體公司。該公司的技術(shù)優(yōu)勢(shì)在于推出Flash存儲(chǔ)器技術(shù)和高質(zhì)量、高可靠性的生產(chǎn)技術(shù),它率先將獨(dú)特的Flash存儲(chǔ)技術(shù)注入單片機(jī)產(chǎn)品中。其推出的AT89系列單片機(jī),在世界電子技術(shù)行業(yè)中引起了極大的反響,在國(guó)內(nèi)也受到廣大用戶歡迎。AT89S系列單片機(jī)時(shí)繼AT89C系列之后推出的功能更強(qiáng)的新產(chǎn)品。
2.2.1 AT89系列單片機(jī)AT89系列單片機(jī)是以8051為內(nèi)核,結(jié)合自己的技術(shù)優(yōu)勢(shì)構(gòu)成的,所以它和8051是兼容的。因此,AT89系列對(duì)于以8051為基礎(chǔ)的應(yīng)用系統(tǒng)而言,是十分容易進(jìn)行取代和構(gòu)成的。
1) AT89系列單片機(jī)具有以下優(yōu)點(diǎn):
① 和AT8051接插相兼容
AT89系列單片機(jī)的引腳和8051是一樣的,其封裝是按軍工標(biāo)準(zhǔn)進(jìn)行的,有很高的質(zhì)量標(biāo)準(zhǔn)和產(chǎn)品穩(wěn)定性。
② 以EEPROM電可擦除和Flash技術(shù)為主導(dǎo)的存儲(chǔ)器
ATMEL公司把EEPROM和Flash技術(shù)巧妙相結(jié)合形成特殊的集成電路,從而使應(yīng)用領(lǐng)域擴(kuò)大。
③ 靜態(tài)時(shí)鐘方式
AT89系列單片機(jī)采用靜態(tài)時(shí)鐘方式,可以節(jié)省帶電能。這對(duì)于降低便攜類產(chǎn)品的功耗十分有用。
④ 可反復(fù)進(jìn)行應(yīng)用系統(tǒng)試驗(yàn)
采用AT89系列單片機(jī)設(shè)計(jì)的應(yīng)用系統(tǒng),可以反復(fù)進(jìn)行系統(tǒng)試驗(yàn)。每次試驗(yàn)可以編制不同的程序,這樣可以保證用戶的系統(tǒng)設(shè)計(jì)達(dá)到最優(yōu)。
⑤ 高標(biāo)準(zhǔn)的質(zhì)量檢測(cè)
ATMEL公司能夠?qū)Ω鞣N集成電路進(jìn)行嚴(yán)格且高標(biāo)準(zhǔn)的質(zhì)量檢測(cè)。其軍品集成電路工作性能是完全符合軍品標(biāo)準(zhǔn)的,在-55~125℃范圍內(nèi)其集成電路仍能實(shí)現(xiàn)正常的輸出功能。因此,產(chǎn)品在航空航天儀器、雷達(dá)系統(tǒng)、導(dǎo)彈、智能自適應(yīng)儀、機(jī)器人、各種武器電子系統(tǒng)、抗惡劣環(huán)境電子系統(tǒng)等領(lǐng)域都被廣泛應(yīng)用。
AT89S系列于AT89C系列相比,預(yù)算速度有了較大的提高,它的靜態(tài)工作頻率為0~33MHZ,片內(nèi)集成有雙數(shù)據(jù)指針DPTR、定時(shí)監(jiān)視器、低功耗休閑狀態(tài)及關(guān)電方式、關(guān)電方式下的中斷恢復(fù)等諸多功能,極大地滿足了各種不同的應(yīng)用要求。AT89S52單片機(jī)是AT89S系列中增強(qiáng)型高檔產(chǎn)品,它片內(nèi)存儲(chǔ)器容量是AT89S51的一倍,即片內(nèi)8K的Flash程序存儲(chǔ)器和256B的RAM。另外,它還增加了一個(gè)功能極強(qiáng)的、具有獨(dú)特應(yīng)用的16位定時(shí)/計(jì)數(shù)器2等多種功能。AT89S52系列單片機(jī)與MCS-51系列全兼容,它是在MCS-51的技術(shù)內(nèi)核為主導(dǎo)的基礎(chǔ)上傾注了ATMEL公司優(yōu)良技術(shù)進(jìn)行新的設(shè)計(jì)與開(kāi)發(fā),使之功能更強(qiáng),更具特色,從而能夠較快的學(xué)習(xí)和掌握,并具備廣泛的開(kāi)發(fā)環(huán)境,使開(kāi)發(fā)應(yīng)用更方便。[3]
2.2.2 AT89S52系列單片機(jī)的基本結(jié)構(gòu)AT89S52單片機(jī)是AT89S系列中增強(qiáng)型高檔產(chǎn)品,它片內(nèi)存儲(chǔ)器容量是AT89S51的一倍,即片內(nèi)8K的Flash程序存儲(chǔ)器和256B的RAM。另外,它還增加了一個(gè)功能極強(qiáng)的、具有獨(dú)特應(yīng)用的16位定時(shí)/計(jì)數(shù)器2等多種功能。AT89S52系列單片機(jī)與MCS-51系列全兼容,它是在MCS-51的技術(shù)內(nèi)核為主導(dǎo)的基礎(chǔ)上傾注了ATMEL公司優(yōu)良技術(shù)進(jìn)行新的設(shè)計(jì)與開(kāi)發(fā),使之功能更強(qiáng),更具特色,從而能夠較快的學(xué)習(xí)和掌握,并具備廣泛的開(kāi)發(fā)環(huán)境,使開(kāi)發(fā)應(yīng)用更方便。
1) AT89S52單片機(jī)介紹及其硬件結(jié)構(gòu)
AT89S52是一個(gè)低功耗、高性能,采用CMOS工藝制造的8位單片機(jī),是Atmel公司AT89系列中的一款性能相當(dāng)優(yōu)異的高檔型產(chǎn)品,兼容標(biāo)準(zhǔn)MCS—51指令系統(tǒng)及其引腳結(jié)構(gòu),與Atmel公司其它產(chǎn)品相比AT89S52的最大特點(diǎn)是:能在線編程,且編程連線極簡(jiǎn)單。AT89S52片內(nèi)含8KB ISP(In-system programmable)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器。
AT89S52具有如下特征參數(shù):40個(gè)引腳、8KB Flash片內(nèi)程序存儲(chǔ)器、256KB的RAM,4個(gè)可編程I/O口、5個(gè)帶2級(jí)中斷嵌套的中斷、3個(gè)16位可編程定時(shí)計(jì)數(shù)器、1個(gè)全雙工串行通訊口、看門(mén)狗(WDT)電路、片內(nèi)時(shí)鐘振蕩器。
此外,AT89S52設(shè)計(jì)和配置了振蕩頻率可為0HZ并可通過(guò)軟件設(shè)置省電模式。空閑掉電模式下,CPU暫停工作,而RAM、定時(shí)/計(jì)數(shù)器、串行口、外中斷系統(tǒng)可繼續(xù)工作;掉電模式下,“凍結(jié)”振蕩器而保存RAM的數(shù)據(jù),停止芯片其他功能直至外中斷激活或硬件復(fù)位。
AT89S52單片機(jī)的主要功能:
8位字長(zhǎng)CPU;
振蕩器和時(shí)鐘電路,全靜態(tài)操作:0~33MHZ;
8KB系統(tǒng)內(nèi)部可編程Flash存儲(chǔ)器;
256KB內(nèi)部RAM;
4個(gè)I/O共32位線;
3個(gè)16位定時(shí)/計(jì)數(shù)器;
全雙工(UART)串行口通道;
ISP端口;
定時(shí)監(jiān)視器(看門(mén)狗);
雙數(shù)據(jù)指針(DPTR);
20多個(gè)特殊功能寄存器;
電源下降標(biāo)志。
2) AT89S52單片機(jī)的幾種封裝形式
AT89S52其有效引腳為40條,具有PDIP、TQFP、PLCC三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。
3) AT89S52單片機(jī)的引腳功能說(shuō)明
① 主電源引腳
Vss(GND)(20腳):電源地電平
Vcc(40腳):電源供電電壓4.0~5.0V
外接晶振或外部振蕩器引腳
XTAL1(19腳):當(dāng)外接晶振時(shí),接外部晶振的一個(gè)引腳。
XTAL2(18腳):接外部晶振的另一個(gè)引腳
② 多功能I/O引腳
P0口(39~32腳):8位并行I/O口
P1口(1~8腳):內(nèi)接上拉電阻的8位準(zhǔn)雙向I/O口,能負(fù)擔(dān)4個(gè)TTL負(fù)載。它的第二功能如下:
P1.0(1腳):定時(shí)/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入
P1.1(2腳):定時(shí)/計(jì)數(shù)器T2捕獲/再裝入觸發(fā)及方向控制
P1.5(6腳):MOSI(用于系統(tǒng)內(nèi)部編程)
P1.6(7腳):MOSO(用于系統(tǒng)內(nèi)部編程)
P1.7(8腳):SCK(用于系統(tǒng)內(nèi)部編程)
P2口(21~28腳):內(nèi)接上拉電阻的8位準(zhǔn)雙向I/O口,能接4個(gè)TTL負(fù)載
P3口(10~17腳):內(nèi)接上拉電阻的8位準(zhǔn)雙向I/O口,能接4個(gè)TTL負(fù)載,其第二功能為:
P3.0(10腳):RXD(串行接收端口)
P3.1(11腳):TXD(串行發(fā)送端口)
P3.2(12腳):INT0(外部中斷0請(qǐng)求端)
P3.3(13腳):INT1(外部中斷1請(qǐng)求端)
P3.4(14腳):T0(定時(shí)/計(jì)數(shù)器0外部計(jì)數(shù)輸入端)
P3.5(15腳):T1(定時(shí)/計(jì)數(shù)器1外部計(jì)數(shù)輸入端)
P3.6(16腳):WR(外部數(shù)據(jù)寫(xiě)選通)
P3.7(17腳):RD(外部數(shù)據(jù)讀選通)
③ 控制、選通和復(fù)位引腳
RST(9腳):復(fù)位信號(hào)輸入端
ALE/PROG(30腳):ALE地址鎖存使能端,PROG為Flash編程時(shí)輸入編程脈沖
PSEN(29腳):訪問(wèn)外部程序存儲(chǔ)器讀選通信號(hào)
EA/Vpp(31腳):EA為訪問(wèn)內(nèi)部或外部程序存儲(chǔ)器選擇信號(hào),Vpp為Flash編程電壓。
3 頻率計(jì)總體方案設(shè)計(jì)3.1 頻率計(jì)設(shè)計(jì)原理頻率的測(cè)量實(shí)際上就是在1s時(shí)間內(nèi)對(duì)信號(hào)進(jìn)行計(jì)數(shù),計(jì)數(shù)值就是信號(hào)頻率。用單片機(jī)設(shè)計(jì)頻率計(jì)通常采用兩種辦法,第一種方法是使用單片機(jī)自帶的計(jì)數(shù)器對(duì)輸入脈沖進(jìn)行計(jì)數(shù);第二種方法是單片機(jī)外部使用計(jì)數(shù)器對(duì)脈沖信號(hào)進(jìn)行計(jì)數(shù),計(jì)數(shù)值再由單片機(jī)讀取。第一種方法的好處是設(shè)計(jì)出的頻率計(jì)系統(tǒng)結(jié)構(gòu)和程序編寫(xiě)簡(jiǎn)單,成本低廉,不需要外部計(jì)數(shù)器,直接利用所給的單片機(jī)最小系統(tǒng)就可以實(shí)現(xiàn)。這種方法的缺陷是受限于單片機(jī)計(jì)數(shù)的晶振頻率,輸入的時(shí)鐘頻率通常是單片機(jī)晶振頻率的幾分之一甚至是幾十分之一,在本次設(shè)計(jì)使用的AT89S52單片機(jī),由于檢測(cè)一個(gè)由“1”到“0”的跳變需要兩個(gè)機(jī)器周期,前一個(gè)機(jī)器周期測(cè)出“1”,后一個(gè)周期測(cè)出“0”。故輸入時(shí)鐘信號(hào)的最高頻率不得超過(guò)單片機(jī)晶振頻率的二十四分之一。第二種方法的好處是輸入的時(shí)鐘信號(hào)頻率可以不受單片機(jī)晶振頻率的限制,可以對(duì)相對(duì)較高頻率進(jìn)行測(cè)量,但缺點(diǎn)是成本比第一種方法高,設(shè)計(jì)出來(lái)的系統(tǒng)結(jié)構(gòu)和程序也比較復(fù)雜。由于成本有限,本次設(shè)計(jì)中采用第一種方法,因此輸入的時(shí)鐘信號(hào)最高頻率不得高于12MHz/24=500KHz。對(duì)外部脈沖的占空比無(wú)特殊要求。
3.1.1 頻率檢測(cè)實(shí)現(xiàn)方法1) 計(jì)數(shù)法測(cè)頻率
使用計(jì)數(shù)方法實(shí)現(xiàn)頻率測(cè)量時(shí),外部的待測(cè)信號(hào)為單片機(jī)定時(shí)/計(jì)數(shù)器0的計(jì)數(shù)源,利用定時(shí)/計(jì)數(shù)器1定時(shí)實(shí)現(xiàn)計(jì)數(shù)閘門(mén)。頻率計(jì)的工作過(guò)程為:定時(shí)/計(jì)數(shù)器0的計(jì)數(shù)寄存器清0,運(yùn)行控制位TR置1,啟動(dòng)定時(shí)/計(jì)數(shù)器工作;同時(shí)運(yùn)行定時(shí)/計(jì)數(shù)器1定時(shí)1s,定時(shí)/計(jì)數(shù)器0對(duì)外部的待測(cè)信號(hào)進(jìn)行計(jì)數(shù),定時(shí)/計(jì)數(shù)器1定時(shí)1s時(shí)間到TR清0,停止計(jì)數(shù)。從計(jì)數(shù)寄存器0讀出測(cè)量數(shù)據(jù),測(cè)量數(shù)據(jù)在完成數(shù)據(jù)處理后,由顯示電路顯示量結(jié)果。單片機(jī)外接晶振為12MHz,單片機(jī)指令周期為1μs,當(dāng)被測(cè)頻率信號(hào)過(guò)高時(shí)單片機(jī)不能測(cè)量。
2) 定時(shí)法測(cè)頻率
使用定時(shí)方法實(shí)現(xiàn)頻率測(cè)量時(shí),外部的待測(cè)信號(hào)通過(guò)頻率計(jì)的分頻器二分頻變成寬度等于待測(cè)信號(hào)周期的方波,該方波加至定時(shí)/計(jì)數(shù)器1的輸入腳,及外部中斷INT1口,由INT1口高電平和軟件置位TR1,同時(shí)控制啟動(dòng)定時(shí)/計(jì)數(shù)器1對(duì)單片機(jī)的機(jī)器周期的計(jì)數(shù),并檢測(cè)方波高電平是否結(jié)束;當(dāng)判定高電平結(jié)束時(shí)TR1清0,停止計(jì)數(shù),然后從計(jì)數(shù)寄存器讀出測(cè)量數(shù)據(jù)。這時(shí)讀出的數(shù)據(jù)反映的是待測(cè)信號(hào)的周期,通過(guò)數(shù)據(jù)處理把周期值變換成頻率值,由顯示電路顯示測(cè)量結(jié)果。
3.1.2 頻率計(jì)測(cè)頻原理頻率計(jì)開(kāi)始工作或者完成一次頻率測(cè)量,系統(tǒng)軟件都進(jìn)行測(cè)量初始化。首先定時(shí)/計(jì)數(shù)器的計(jì)數(shù)寄存器清0,運(yùn)行控制位TR置1,啟動(dòng)對(duì)待測(cè)信號(hào)的計(jì)數(shù)。計(jì)數(shù)閘門(mén)由軟件延時(shí)程序?qū)崿F(xiàn),從計(jì)數(shù)閘門(mén)的最小值(即測(cè)量頻率的高量程)開(kāi)始測(cè)量,計(jì)數(shù)閘門(mén)結(jié)束時(shí)TR清0,停止計(jì)數(shù)。計(jì)數(shù)寄存器中的數(shù)值經(jīng)過(guò)數(shù)制轉(zhuǎn)換程序從十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。判斷該數(shù)的最高位,若該位不為0,滿足測(cè)量數(shù)據(jù)有效位數(shù)的要求,測(cè)量值和量程信息一起送到顯示模塊;若該位為0,將計(jì)數(shù)閘門(mén)的寬度擴(kuò)大10倍,重新對(duì)待測(cè)信號(hào)的計(jì)數(shù),直到滿足測(cè)量數(shù)據(jù)有效位數(shù)的要求。
當(dāng)上述測(cè)量判斷過(guò)程直到計(jì)數(shù)閘門(mén)寬度達(dá)到1s(對(duì)應(yīng)的頻率測(cè)量范圍為100~999Hz)時(shí)測(cè)量結(jié)果仍不具有3位有效數(shù)字,頻率計(jì)則使用定時(shí)方法測(cè)量待測(cè)信號(hào)的周期。定時(shí)/計(jì)數(shù)器的工作被設(shè)置為定時(shí)器方式,定時(shí)/計(jì)數(shù)器的計(jì)數(shù)寄存器清0,在判斷待測(cè)信號(hào)的上跳沿到來(lái)后,運(yùn)行控制位TR置為1,以單片機(jī)工作周期為單位進(jìn)行計(jì)數(shù),直至信號(hào)的下跳沿到來(lái),運(yùn)行控制位TR清0,停止計(jì)數(shù)。16位定時(shí)/計(jì)數(shù)器的最高計(jì)數(shù)值為65 535,當(dāng)待測(cè)信號(hào)的頻率較低時(shí),定時(shí)/計(jì)數(shù)器將發(fā)生溢出。產(chǎn)生溢出時(shí),程序進(jìn)入定時(shí)器中斷服務(wù)程序,對(duì)溢出次數(shù)進(jìn)行計(jì)數(shù)。待測(cè)信號(hào)的周期由3個(gè)字節(jié)組成:定時(shí)/計(jì)數(shù)器溢出次數(shù)、定時(shí)/計(jì)數(shù)器的高8位和低8位。信號(hào)的頻率f與信號(hào)的周期T之間的關(guān)系為:f=1/T。
完成信號(hào)的周期測(cè)量后,需要做一次倒數(shù)運(yùn)算才能獲得信號(hào)的頻率。為提高運(yùn)算精度,采用浮點(diǎn)數(shù)算術(shù)運(yùn)算。浮點(diǎn)數(shù)由3個(gè)字節(jié)組成:第1字節(jié)最高位為數(shù)符,其余7位為階碼;第2字節(jié)為尾數(shù)的高字節(jié);第3字節(jié)為尾數(shù)的低字節(jié)。待測(cè)信號(hào)周期的3個(gè)字節(jié)定點(diǎn)數(shù)通過(guò)截取高16位、設(shè)置數(shù)符和計(jì)算階碼轉(zhuǎn)換為上述格式的浮點(diǎn)數(shù)。然后浮點(diǎn)數(shù)算術(shù)運(yùn)算對(duì)其進(jìn)行處理,獲得用浮點(diǎn)數(shù)格式表達(dá)的信號(hào)頻率值。再通過(guò)浮點(diǎn)數(shù)到ASCII碼轉(zhuǎn)換模塊把用浮點(diǎn)數(shù)格式表達(dá)的信號(hào)頻率值變換成本頻率計(jì)的顯示格式,送到顯示模塊顯示待測(cè)信號(hào)的頻率值。完成顯示后,頻率計(jì)都開(kāi)始下一次信號(hào)的頻率測(cè)量。
3.2 設(shè)計(jì)思路及方法本頻率計(jì)的結(jié)構(gòu)主要包括時(shí)鐘信號(hào)發(fā)生電路、分頻電路、單片機(jī)控制電路和LCD顯示電路組成。頻率計(jì)的主要核心部件是采用AT89S52來(lái)產(chǎn)生定時(shí)和記錄脈沖變化次數(shù),運(yùn)用AT89S52來(lái)構(gòu)成計(jì)數(shù)器,突破了大部分運(yùn)用數(shù)字電路模板來(lái)構(gòu)成計(jì)數(shù)器。本設(shè)計(jì)主要采用AT89S52芯片和LCD數(shù)碼管來(lái)實(shí)現(xiàn),軟件編程主要是采用C51語(yǔ)言來(lái)編程。其系統(tǒng)結(jié)構(gòu)如下圖所示:
圖3-1 頻率計(jì)系統(tǒng)結(jié)構(gòu)圖
3.2.1 頻率計(jì)方案概述本頻率計(jì)的設(shè)計(jì)以AT89S52單片機(jī)為核心,利用他內(nèi)部的定時(shí)/計(jì)數(shù)器完成待測(cè)信號(hào)周期/頻率的測(cè)量。單片機(jī)AT89S52內(nèi)部具有3個(gè)16位定時(shí)/計(jì)數(shù)器,定時(shí)/計(jì)數(shù)器的工作可以由編程來(lái)實(shí)現(xiàn)定時(shí)、計(jì)數(shù)和產(chǎn)生計(jì)數(shù)溢出時(shí)中斷要求的功能。在定時(shí)器工作方式下,在被測(cè)時(shí)間間隔內(nèi),每來(lái)一個(gè)機(jī)器周期,計(jì)數(shù)器自動(dòng)加1(使用12 MHz時(shí)鐘時(shí),每1μs加1),這樣以機(jī)器周期為基準(zhǔn)可以用來(lái)測(cè)量時(shí)間間隔。在計(jì)數(shù)器工作方式下,加至外部引腳的待測(cè)信號(hào)發(fā)生從1到0的跳變時(shí)計(jì)數(shù)器加1,這樣在計(jì)數(shù)閘門(mén)的控制下可以用來(lái)測(cè)量待測(cè)信號(hào)的頻率。外部輸入在每個(gè)機(jī)器周期被采樣一次,這樣檢測(cè)一次從1到0的跳變至少需要2個(gè)機(jī)器周期(24個(gè)振蕩周期),所以最大計(jì)數(shù)速率為時(shí)鐘頻率的1/24(使用12MHz時(shí)鐘時(shí),最大計(jì)數(shù)速率為500 kHz)。定時(shí)/計(jì)數(shù)器的工作由運(yùn)行控制位TR控制,當(dāng)TR置1,定時(shí)/計(jì)數(shù)器開(kāi)始計(jì)數(shù);當(dāng)TR清0,停止計(jì)數(shù)。
本設(shè)計(jì)綜合考慮了頻率測(cè)量精度和測(cè)量反應(yīng)時(shí)間的要求。例如當(dāng)要求頻率測(cè)量結(jié)果為3位有效數(shù)字,這時(shí)如果待測(cè)信號(hào)的頻率為1 Hz,則計(jì)數(shù)閘門(mén)寬度必須大于1000 s。為了兼顧頻率測(cè)量精度和測(cè)量反應(yīng)時(shí)間的要求,把測(cè)量工作分為兩種方法:
① 當(dāng)待測(cè)信號(hào)的頻率>100Hz時(shí),定時(shí)/計(jì)數(shù)器構(gòu)成為計(jì)數(shù)器,以機(jī)器周期為基準(zhǔn),由軟件產(chǎn)生計(jì)數(shù)閘門(mén),計(jì)數(shù)閘門(mén)寬度>1s時(shí),即可滿足頻率測(cè)量結(jié)果為3位有效數(shù)字;
② 當(dāng)待測(cè)信號(hào)的頻率<100Hz時(shí),定時(shí)/計(jì)數(shù)器構(gòu)成為定時(shí)器,由頻率計(jì)的予處理電路把待測(cè)信號(hào)變成方波,方波寬度等于待測(cè)信號(hào)的周期。這時(shí)用方波作計(jì)數(shù)閘門(mén),當(dāng)待測(cè)信號(hào)的頻率=100Hz,周期為10ms,使用12MHz時(shí)鐘時(shí)的最小計(jì)數(shù)值為10000,完全滿足測(cè)量精度的要求。
3.2.2 頻率計(jì)的量程自動(dòng)切換使用計(jì)數(shù)方法實(shí)現(xiàn)頻率測(cè)量時(shí),外部的待測(cè)信號(hào)為單片機(jī)定時(shí)/計(jì)數(shù)器的計(jì)數(shù)源,利用軟件延時(shí)程序?qū)崿F(xiàn)計(jì)數(shù)閘門(mén)。頻率計(jì)的工作過(guò)程為:定時(shí)/計(jì)數(shù)器的計(jì)數(shù)寄存器清0,運(yùn)行控制位TR置1,啟動(dòng)定時(shí)/計(jì)數(shù)器工作;運(yùn)行軟件延時(shí)程序,同時(shí)定時(shí)/計(jì)數(shù)器對(duì)外部的待測(cè)信號(hào)進(jìn)行計(jì)數(shù),延時(shí)結(jié)束時(shí)TR清0,停止計(jì)數(shù)。從計(jì)數(shù)寄存器讀出測(cè)量數(shù)據(jù),測(cè)量數(shù)據(jù)在完成數(shù)據(jù)處理后,由顯示電路顯示測(cè)量結(jié)果。
使用定時(shí)方法實(shí)現(xiàn)頻率測(cè)量時(shí),外部的待測(cè)信號(hào)通過(guò)頻率計(jì)的預(yù)處理電路變成寬度等于待測(cè)信號(hào)周期的方波,該方波同樣加至定時(shí)/計(jì)數(shù)器的輸入腳。工作高電平是否加至定時(shí)/計(jì)數(shù)器的輸入腳;當(dāng)判定高電平加至定時(shí)/計(jì)數(shù)器的輸入腳,運(yùn)行控制位TR置1,啟動(dòng)定時(shí)/計(jì)數(shù)器對(duì)單片機(jī)的機(jī)器周期的計(jì)數(shù),同時(shí)檢測(cè)方波高電平是否結(jié)束;當(dāng)判定高電平結(jié)束時(shí)TR清0,停止計(jì)數(shù),然后從計(jì)數(shù)寄存器讀出測(cè)量數(shù)據(jù)。這時(shí)讀出的數(shù)據(jù)反映的是待測(cè)信號(hào)的周期,通過(guò)數(shù)據(jù)處理把周期值變換成頻率值,由顯示電路顯示測(cè)量結(jié)果。
測(cè)量結(jié)果的顯示格式采用科學(xué)計(jì)數(shù)法,即有效數(shù)字乘以10為底的冪。這里設(shè)計(jì)的頻率計(jì)用5位數(shù)碼管顯示測(cè)量結(jié)果:前3位為測(cè)量結(jié)果的有效數(shù)字;第4位為指數(shù)的符號(hào);第5位為指數(shù)的值。采用這種顯示格式既保證了測(cè)量結(jié)果的顯示精度,又保證了測(cè)量結(jié)果的顯示范圍(0.100Hz~9.99MHz)。
頻率計(jì)測(cè)量量程自動(dòng)轉(zhuǎn)換的過(guò)程由頻率計(jì)測(cè)量量程的高端開(kāi)始。由于只顯示3位有效數(shù)字,測(cè)量量程的高端計(jì)數(shù)閘門(mén)不需要太寬,例如在進(jìn)入計(jì)數(shù)器的信號(hào)頻率范圍在10.0~99.9kHz,計(jì)數(shù)閘門(mén)寬度為10ms即可。頻率計(jì)開(kāi)始工作時(shí)使用計(jì)數(shù)方法實(shí)現(xiàn)頻率測(cè)量,并使計(jì)數(shù)閘門(mén)寬度為最窄,完成測(cè)量后判斷測(cè)量結(jié)果是否具有3位有效數(shù)字,如果成立,將結(jié)果送去顯示,完成測(cè)量工作;否則將計(jì)數(shù)閘門(mén)寬度擴(kuò)大10倍,繼續(xù)進(jìn)行測(cè)量判斷,直到計(jì)數(shù)閘門(mén)寬度達(dá)到1s,這時(shí)對(duì)應(yīng)的進(jìn)入單片機(jī)的待測(cè)信號(hào)頻率范圍為100~999Hz。如果測(cè)量結(jié)果仍不具有3位有效數(shù)字,頻率計(jì)則使用定時(shí)方法實(shí)現(xiàn)頻率測(cè)量。
定時(shí)方法測(cè)量的是待測(cè)信號(hào)的周期,這種方法只設(shè)一種量程,測(cè)量結(jié)果通過(guò)浮點(diǎn)數(shù)運(yùn)算模塊將信號(hào)周期轉(zhuǎn)換成對(duì)應(yīng)的頻率值,再將結(jié)果送去顯示。無(wú)論采用何種方式,只要完成一次測(cè)量,頻率計(jì)自動(dòng)開(kāi)始下一個(gè)測(cè)量循環(huán),因此該頻率計(jì)具有連續(xù)測(cè)量的功能,同時(shí)實(shí)現(xiàn)量程的自動(dòng)轉(zhuǎn)換。
4 系統(tǒng)的硬件設(shè)計(jì)本頻率計(jì)的硬件電路主要由時(shí)鐘信號(hào)發(fā)生器、頻率計(jì)控制電路和LCD顯示電路組成。頻率計(jì)的主要核心部件是采用AT89S52的內(nèi)部定時(shí)/計(jì)數(shù)器來(lái)產(chǎn)生定時(shí)和記錄脈沖變化次數(shù)。主要用到的元器件有晶振器件、電阻、74LS04、74LS74、74LS00、AT89S52單片機(jī)、LCD1602等。其硬件系統(tǒng)框圖如3-2所示:
圖3-2 硬件系統(tǒng)框圖
4.1 時(shí)鐘信號(hào)發(fā)生器時(shí)鐘信號(hào)發(fā)生器是頻率計(jì)的頻率信號(hào)產(chǎn)生電路,它是由一個(gè)晶振、兩個(gè)電阻、一個(gè)電容及兩個(gè)非門(mén)74LS04構(gòu)成的工作于串聯(lián)諧振狀態(tài)的TTL門(mén)電路振蕩器。當(dāng)電路頻率為串聯(lián)諧振頻率時(shí),晶體的等效電抗接近零(發(fā)生串聯(lián)諧振),串聯(lián)諧振頻率信號(hào)最容易通過(guò)閉環(huán)回路,這個(gè)頻率信號(hào)通過(guò)兩級(jí)反相后形成反饋振蕩,晶體同時(shí)也擔(dān)任著選頻作用,在工作于串聯(lián)諧振狀態(tài)的振蕩電路,它的頻率取決于晶體本身具有的頻率參數(shù)。也就是說(shuō),石英晶體多諧多諧振蕩器的振蕩頻率取決于石英晶體的固有諧振頻率,與外接電阻、電容無(wú)關(guān)。圖4-1為頻率計(jì)的時(shí)鐘信號(hào)發(fā)生電路的原理圖:
圖4-1 時(shí)鐘信號(hào)發(fā)生原理圖
4.2 AT89S52 控制寄存器4.2.1 AT89S52中斷控制系統(tǒng)AT89S52的中斷系統(tǒng)共有8個(gè)中斷源,6個(gè)中斷矢量,兩級(jí)中斷優(yōu)先級(jí),可有軟件設(shè)定實(shí)現(xiàn)兩級(jí)嵌套,可通過(guò)軟件來(lái)屏蔽或響應(yīng)個(gè)對(duì)應(yīng)的中斷請(qǐng)求。
1) AT89S52中斷源
AT89S52的中斷系統(tǒng)有8個(gè)中斷源,對(duì)應(yīng)有6個(gè)中斷矢量。其外部中斷有兩種觸發(fā)中斷的方式,即低電平觸發(fā)和跳轉(zhuǎn)觸發(fā)。各種中斷請(qǐng)求信號(hào)分別由定時(shí)/計(jì)數(shù)器控制寄存器TCON和串行通信控制寄存器SCON的相應(yīng)位鎖存,提供給主機(jī)查詢和采樣。
TCON控制寄存器是由定時(shí)計(jì)數(shù)器和中斷請(qǐng)求兩者合用,其格式如表4-1:
表4-1 TCON控制寄存器
各位含義如下:
TF1:定時(shí)/計(jì)數(shù)器1回0溢出中斷請(qǐng)求標(biāo)志位
TR1:定時(shí)/計(jì)數(shù)器1啟/停控制位
TF0:定時(shí)/計(jì)數(shù)器0回0溢出中斷請(qǐng)求標(biāo)志位
TR0:定時(shí)/計(jì)數(shù)器0啟/停控制位
IE1:外部中斷(INT1)請(qǐng)求標(biāo)志位
IE0:外部中斷(INT0)請(qǐng)求標(biāo)志位
IT1:用軟件置位/復(fù)位IT1來(lái)選擇外部中斷INT1是跳變還是電平觸發(fā)中斷請(qǐng)求
IT0:用軟件置位/復(fù)位IT1來(lái)選擇外部中斷INT1是跳變還是電平觸發(fā)中斷請(qǐng)求
2) 中斷控制
AT89S52的中斷是可編程的,即可通過(guò)軟件來(lái)實(shí)現(xiàn)對(duì)中斷系統(tǒng)功能進(jìn)行設(shè)置和控制。
AT89S52的中斷均屬可屏蔽中斷,即通過(guò)軟件對(duì)特殊功能寄存器IE的設(shè)置,實(shí)現(xiàn)對(duì)各中斷源的中斷請(qǐng)求開(kāi)放或屏蔽的控制。中斷控制寄存器IE的格式及各位含義如表4-2所示:
表4-2 中斷控制寄存器IE的格式
EA(IE.7):全部中斷允許/禁止位。
X(IE.6):保留位,無(wú)意義。
ET2(IE.5):定時(shí)/計(jì)數(shù)器2回0溢出或捕獲中斷響應(yīng)控制。
ES(IE.4):串行通信接收/發(fā)送中斷響應(yīng)控制位。
ET1(IE.3):定時(shí)/計(jì)數(shù)器1回0溢出或捕獲中斷響應(yīng)控制。
EX1(IE.2):外部中斷INT1中斷響應(yīng)控制位。
ET0(IE.1):定時(shí)/計(jì)數(shù)器0回0溢出或捕獲中斷響應(yīng)控制。
EX0(IE.0):外部中斷INT0中斷響應(yīng)控制位。
從上可見(jiàn)AT89S52的中斷響應(yīng)為兩級(jí)控制,EA為總的中斷響應(yīng)控制位,各對(duì)應(yīng)的中斷源還有中斷響應(yīng)控制位。
3) 中斷優(yōu)先級(jí)
AT89S52的中斷設(shè)有兩級(jí)優(yōu)先級(jí),每個(gè)中斷源均可通過(guò)軟件對(duì)中斷優(yōu)先級(jí)寄存器IP的對(duì)應(yīng)位進(jìn)行設(shè)置,變成為高優(yōu)先級(jí)或低優(yōu)先級(jí),置1為高優(yōu)先級(jí),清0為低優(yōu)先級(jí)。正在執(zhí)行的低優(yōu)先級(jí)中斷服務(wù)程序可以被高優(yōu)先級(jí)的中斷請(qǐng)求所中斷,但不能被同級(jí)或低優(yōu)先級(jí)中斷源中斷請(qǐng)求所中斷;正在執(zhí)行的高優(yōu)先級(jí)的中斷服務(wù)程序不能被任何中斷源中斷請(qǐng)求所中斷。兩個(gè)或兩個(gè)以上的中斷源同時(shí)請(qǐng)求中斷時(shí),主機(jī)只響應(yīng)優(yōu)先級(jí)高的中斷請(qǐng)求。為了實(shí)現(xiàn)上訴述規(guī)則,中斷系統(tǒng)內(nèi)部設(shè)有兩個(gè)不可尋址的中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器,其中一個(gè)用于指示正在服務(wù)于高優(yōu)先級(jí)的中斷,并阻止所有其他一切中斷請(qǐng)求的響應(yīng),另外一個(gè)則用于指示正在服務(wù)于低高優(yōu)先級(jí)的中斷,除能被高優(yōu)先級(jí)中斷請(qǐng)求所終端外,阻止其他同級(jí)或低于它的中斷請(qǐng)求所中斷。
中斷優(yōu)先級(jí)控制器IP,其地址字節(jié)為B8H,具有位尋址功能,可通過(guò)軟件設(shè)定各個(gè)中斷源的中斷優(yōu)先級(jí)。IP控制寄存器的格式如表4-3所示:
表4-3 IP控制寄存器格式
各位含義如下:
X、X (IP.6、IP.7):保留位,無(wú)定意義。
PT2(IP.5):定時(shí)/計(jì)數(shù)器2的中斷優(yōu)先級(jí)設(shè)置位。
PS(IP.4):串行通信中斷優(yōu)先級(jí)設(shè)置位。
PT1(IP.3):定時(shí)/計(jì)數(shù)器1的中斷優(yōu)先級(jí)設(shè)置位。
PX1(IP.2):外部中斷INT1中斷優(yōu)先級(jí)設(shè)置位
PT0(IP.1):定時(shí)/計(jì)數(shù)器0的中斷優(yōu)先級(jí)設(shè)置位。
PX0(IP.0)::外部中斷INT0中斷優(yōu)先級(jí)設(shè)置位
復(fù)位后IP的內(nèi)容為00H。
4.2.2 AT89S52定時(shí)/計(jì)數(shù)器的控制AT89S52片內(nèi)集成了3個(gè)16位定時(shí)/計(jì)數(shù)器,定時(shí)/計(jì)數(shù)器0和1是通用的定時(shí)計(jì)數(shù)器,定時(shí)計(jì)數(shù)器2集定時(shí)、計(jì)數(shù)和捕獲三種功能于一體,功能更強(qiáng)。
組成定時(shí)/計(jì)數(shù)器的核心是一個(gè)16位的加1計(jì)數(shù)器。這個(gè)16位的計(jì)數(shù)器是兩個(gè)8位的計(jì)數(shù)器(THx、TLx)組成。提供給計(jì)數(shù)器實(shí)現(xiàn)加1計(jì)數(shù)的信號(hào)有兩個(gè)來(lái)源:一個(gè)是由外部提供的計(jì)數(shù)脈沖通過(guò)引腳Tx端口送加1計(jì)數(shù)器;另一個(gè)則由單片機(jī)內(nèi)部的時(shí)鐘脈沖經(jīng)12分頻后送加1計(jì)數(shù)器。因此,既可用于定時(shí)方式,又可用于對(duì)外部事件的計(jì)數(shù)方式,對(duì)于定時(shí)/計(jì)數(shù)器2還有“捕獲”方式。工作方式是通過(guò)軟件對(duì)特殊功能寄存器TMOD和T2CON的設(shè)置來(lái)進(jìn)行選擇。本次頻率計(jì)的設(shè)計(jì)中只用到定時(shí)/計(jì)數(shù)器的定時(shí)和計(jì)數(shù)功能,應(yīng)此只需用到定時(shí)計(jì)數(shù)器0、1。
AT89S52單片機(jī)為定時(shí)計(jì)數(shù)器設(shè)有特殊功能寄存器TMOD、TCON和T2CON,用于定義他們的工作方式及其控制功能的實(shí)現(xiàn)。當(dāng)每執(zhí)行一條改變上述特殊功能寄存器內(nèi)容的指令時(shí),其改變內(nèi)容將鎖存于寄存器中,并在該指令的下一條指令的第一個(gè)機(jī)器的S1P1開(kāi)始生效。
定時(shí)/計(jì)數(shù)器0和1的的操作模式和工作方式由控制寄存器來(lái)定義的,其格式如下:
表4-4 定時(shí)/計(jì)數(shù)器工作方式寄存器
TMOD寄存器內(nèi)容分為兩部分,低4位用于定時(shí)/計(jì)時(shí)器0,高4位用于定時(shí)/計(jì)數(shù)器1。兩部分的操作功能完全相同。各位具體功能如下:
M1、M2為工作方式選擇位,其定義為:
表4-5 M1、M2工作方式選擇位
| | |
| | |
| | |
| | 自動(dòng)再裝入8位定時(shí)計(jì)數(shù)器 |
| | 將定時(shí)/計(jì)數(shù)器0分為兩個(gè)8位計(jì)數(shù)器 |
C/T:選擇定時(shí)計(jì)數(shù)其操作模式。1為計(jì)數(shù)模式,0位定時(shí)模式。
GATE:選通控制位。
TMOD的字節(jié)地址為89H,不能位尋址,復(fù)位后TMOD所有位均為0.因此,復(fù)位后定時(shí)/計(jì)數(shù)器0和1自動(dòng)置為定時(shí)模式和工作方式0。
4.3 LCD1602顯示電路在頻率計(jì)設(shè)計(jì)中,顯示部分對(duì)整個(gè)系統(tǒng)來(lái)說(shuō)是非常重要的。整個(gè)系統(tǒng)的設(shè)計(jì)最終結(jié)果都要通過(guò)顯示器來(lái)反應(yīng)出來(lái)。本次頻率計(jì)系統(tǒng)的設(shè)計(jì)采用的顯示器為L(zhǎng)CD1602。圖4-2為L(zhǎng)CD1602的顯示電路:
圖4-2 LCD顯示電路
其各引腳定義如下:
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:V0為液晶顯示器對(duì)比度調(diào)整端。
第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。
第5腳:RW為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和RW共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平RW為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。
第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
4.3.1 LCD1602的主要技術(shù)參數(shù)及接口說(shuō)明1) LCD的主要技術(shù)參數(shù):
表4-6 LCD主要技術(shù)參數(shù)
2) 接口信號(hào)說(shuō)明:
表4-7 LCD接口信號(hào)說(shuō)明
4.3.2 控制器接口及時(shí)序1) 基本操作時(shí)序:
讀狀態(tài):輸入 RS=L,RW=H,E=H 輸出 D0~D7=狀態(tài)字
寫(xiě)指令:輸入 RS=L,RW=L,D0~D7=指令碼,E=高脈沖 輸出 無(wú)
讀數(shù)據(jù):輸入 RS=H,RW=H,E=H 輸出 D0~D7=數(shù)據(jù)
寫(xiě)數(shù)據(jù):輸入 RS=H,RW=L, D0~D7=數(shù)據(jù),E=高脈沖 輸出 無(wú)
2) 狀態(tài)字說(shuō)明
表4-8 LCD狀態(tài)字說(shuō)明(1)
表4-8 LCD狀態(tài)字說(shuō)明(2)
| 當(dāng)前數(shù)據(jù)地址指針的值 |
|
| | |
3) 指令說(shuō)明:
顯示模式設(shè)置:
表4-9 LCD顯示模式設(shè)置
| |
| | | | | | | | 設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口 |
顯示開(kāi)關(guān)及光標(biāo)設(shè)置:
表4-10 LCD顯示開(kāi)關(guān)及光標(biāo)設(shè)置
| |
| | | | | | | | D=1 開(kāi)顯示; D=0 關(guān)顯示 C=1 顯示光標(biāo) C=0 不顯示光標(biāo) B=1 光標(biāo)閃爍 B=0光標(biāo)不顯示 |
| | | | | | | | N=1,當(dāng)讀寫(xiě)一個(gè)字符后地址指針加1,光標(biāo)加1 N=0,當(dāng)讀寫(xiě)一個(gè)字符后地址指針減1,光標(biāo)減1 S=1,當(dāng)寫(xiě)一個(gè)字符,整屏顯示左移或右移 S=0, 當(dāng)寫(xiě)一個(gè)字符,整屏顯示不移動(dòng) |
4.3.3 頻率計(jì)硬件電路整體設(shè)計(jì)整個(gè)頻率計(jì)的硬件電路設(shè)計(jì)主要由包括時(shí)鐘信號(hào)發(fā)產(chǎn)生器、LCD1602顯示電路、頻率計(jì)的控制電路這三大部分電路組成。圖4-3為頻率計(jì)的電路原理圖:
圖4-3 頻率計(jì)電路原理圖
在頻率計(jì)的硬件設(shè)計(jì)當(dāng)中主要用到了單片機(jī)的P0口、外部震蕩器引腳XATL1和XTAL2以及P3.2和P3.5,其各引腳定義如下:
P0口(39~32腳):8位并行I/O口,作為輸出口時(shí),每個(gè)管腳可帶8個(gè)TTL負(fù)載。在外擴(kuò)存儲(chǔ)器時(shí),它定義為低8位地址/數(shù)據(jù)總線。當(dāng)定義為I/O口時(shí),為準(zhǔn)雙向I/O口,需外接上拉電阻,在寫(xiě)入“1”后就成為高阻抗輸入口。在對(duì)片內(nèi)Flash編程時(shí)P0口接收字節(jié)碼,在程序校驗(yàn)時(shí)輸出字節(jié)代碼。程序校驗(yàn)期間應(yīng)接上拉電阻。
XTAL1(19腳):外接晶振時(shí),接外部晶振的一個(gè)引腳。片內(nèi)振蕩器由一個(gè)單級(jí)反相器組成,XTAL1為反相器的輸入。當(dāng)外部振蕩器提供時(shí)鐘信號(hào)時(shí),則由XTAL1端輸入。
XTAL2(18腳):接外部晶振的另一個(gè)引腳,片內(nèi)為單級(jí)反向反相器的輸出。當(dāng)由外部時(shí)鐘源提供時(shí)鐘信號(hào)時(shí),則本引腳浮空。
P3.4(14腳):T0(定時(shí)計(jì)數(shù)器0外部計(jì)數(shù)輸入端)。
P3.5(15腳):T1(定時(shí)計(jì)數(shù)器1外部計(jì)數(shù)輸入端)。
整個(gè)電路原理圖的元件清單圖4-4所示:
圖4-4 頻率計(jì)電路元件清單
5 系統(tǒng)的軟件設(shè)計(jì)在軟件開(kāi)發(fā)上我們采用KeilC做為開(kāi)發(fā)工具,KeilC是WINDOWS平臺(tái)下的單片機(jī)開(kāi)發(fā)工具,同時(shí)支持C語(yǔ)言和匯編語(yǔ)言編程,考慮到在頻率測(cè)量過(guò)程中有比較多的數(shù)學(xué)運(yùn)算,所以在編程工具上我們采用了C語(yǔ)言,這樣開(kāi)發(fā)過(guò)程就變的更加輕松了。其整個(gè)程序流程如下圖5-1所示:
圖5-1 程序流程圖
5.1 Keil C簡(jiǎn)介51的編程語(yǔ)言常用的有二種,一種是匯編語(yǔ)言,一種是C語(yǔ)言。匯編語(yǔ)言的機(jī)器代碼生成效率很高但可讀性卻并不強(qiáng),復(fù)雜一點(diǎn)的程序就更是難讀懂,而C 語(yǔ)言在大多數(shù)情況下其機(jī)器代碼生成效率和匯編語(yǔ)言相當(dāng),但可讀性和可移植性卻遠(yuǎn)遠(yuǎn)超過(guò)匯編語(yǔ)言,而且C 語(yǔ)言還可以嵌入?yún)R編來(lái)解決高時(shí)效性的代碼編寫(xiě)問(wèn)題。因此在頻率計(jì)的程序設(shè)計(jì)過(guò)程中使用的C語(yǔ)言,使用C 語(yǔ)言肯定要使用到C 編譯器,以便把寫(xiě)好的C 程序編譯為機(jī)器碼,這樣單片機(jī)才能執(zhí)行編寫(xiě)好的程序。KEIL uVISION2 是眾多單片機(jī)應(yīng)用開(kāi)發(fā)軟件中優(yōu)秀的軟件之一,它支持眾多不同公司的MCS51 架構(gòu)的芯片,它集編輯,編譯,仿真等于一體,同時(shí)還支持,PLM,匯編和C 語(yǔ)言的程序設(shè)計(jì),它的界面和常用的微軟VC++的界面相似,界面友好,易學(xué)易用,在調(diào)試程序,軟件仿真方面也有很強(qiáng)大的功能。
在使用Keil C軟件之前當(dāng)然要先進(jìn)行安裝,之后就可以在其環(huán)境下建立自己的C語(yǔ)言項(xiàng)目,并且我們還可以通過(guò)Keil軟件仿真看到程序運(yùn)行的結(jié)果。
5.2 頻率計(jì)程序的建立過(guò)程首先運(yùn)行Keil C軟件,打開(kāi)之后首先出現(xiàn)如圖5-2所示畫(huà)面:
圖5-2 Keil C運(yùn)行界面
接著按下面的步驟建立項(xiàng)目:
⑴ 點(diǎn)擊Project 菜單,選擇下拉式菜單中的New Project,接著彈出一個(gè)標(biāo)準(zhǔn)Windows 文件對(duì)話窗口,在“文件名”中輸入一個(gè)C 程序項(xiàng)目名稱,這里我們用“plj”,“保存”后的文件擴(kuò)展名為uv2,這是KEILuVision2 項(xiàng)目文件擴(kuò)展名,以后我們可以直接點(diǎn)擊此文件以打開(kāi)先前做的項(xiàng)目。圖5-3為建立程序項(xiàng)目界面:
圖5-2 建立程序項(xiàng)目界面
⑵ 如圖5-5所示,選擇所要的單片機(jī),這里我們選擇所需要用的Ateml 公司的AT89S52,其功能、特點(diǎn)在右邊有簡(jiǎn)單的介紹。完成上面步驟后,就可以進(jìn)行程序的編寫(xiě)了。
圖5-5 選擇所需要的單片機(jī)類型
⑶ 首先我們要在項(xiàng)目中創(chuàng)建新的程序文件。如圖5-6,通過(guò)菜單File-New 或快捷鍵Ctrl+N就會(huì)出現(xiàn)一個(gè)新的文字編輯窗口。然后在這個(gè)窗口中進(jìn)行代碼的編寫(xiě)。
圖5-6 建立一個(gè)代碼編輯窗口
⑷ 創(chuàng)建兩個(gè)文字編輯窗口,并在其中編寫(xiě)如下兩段代碼,并分別將他們命名位LCD1602.h和main.c,保存在項(xiàng)目所在的目錄中。這是Keil的C語(yǔ)法檢查生效,單詞呈現(xiàn)不同顏色。然后如圖5-6,在屏幕左邊的Source Group1 文件夾圖標(biāo)上右擊彈出菜單,選則“ Add File to Group ‘SourceGroup 1’”彈出文件窗口,選擇剛剛保存的文件,點(diǎn)擊ADD 按鈕,關(guān)閉文件窗,將編寫(xiě)好的兩段程序添加到項(xiàng)目中去。
圖5-6 將建立好的程序文件添加到項(xiàng)目中
⑸ 如圖5-7和圖5-8所示,在屏幕左邊Target圖標(biāo)上右擊彈出菜單中單擊”O(jiān)ptions for Target ‘Target 1’”,在彈出界面中選擇“Output”選項(xiàng)卡將其中的”Creat HEX Fi”,確定之后選擇Project-Build Target或快捷鍵進(jìn)行編譯并生成二進(jìn)制的字節(jié)碼文件。
圖5-7 在輸出選項(xiàng)中選擇創(chuàng)建二進(jìn)制代碼文件
圖5-8 將編寫(xiě)的程序文件進(jìn)行編譯鏈接
⑹ 編譯成功后生成的所有文件如圖5-9所示,其中以.hex結(jié)尾就是在后面進(jìn)行軟件仿真是所需要的二進(jìn)制代碼文件。
圖5-9 運(yùn)行Keil C編譯成功后生成的所有文件
5.3 軟件功能模塊設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì)主要包括9大模塊,分別為測(cè)量初始化模塊、顯示模塊、信號(hào)頻率測(cè)量模塊、量程自動(dòng)轉(zhuǎn)換模塊、信號(hào)周期測(cè)量模塊、定時(shí)器中斷服務(wù)模塊、浮點(diǎn)數(shù)格式化模塊、浮點(diǎn)數(shù)算術(shù)運(yùn)算模塊、浮點(diǎn)數(shù)到BCD碼轉(zhuǎn)換模塊。其系統(tǒng)軟件框圖如圖5-10。
圖5-10 頻率計(jì)系統(tǒng)軟件框圖
5.3.1 LCD初始化設(shè)置模塊LCD初始化主要進(jìn)行顯示器顯示模式設(shè)置和顯示開(kāi)關(guān)及光標(biāo)設(shè)置,在本次設(shè)計(jì)中定義其顯示模式為:8位數(shù)據(jù)端口,5*7矩陣,16*2顯示,并且開(kāi)啟顯示無(wú)光標(biāo)。具體實(shí)現(xiàn)代碼為:
void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38); //8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //開(kāi)啟顯示, 無(wú)光標(biāo)
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC遞增, 畫(huà)面不動(dòng)
}
5.3.2 浮點(diǎn)數(shù)到ASCII碼轉(zhuǎn)換模塊在LCD1602的顯示中,數(shù)據(jù)是以ASCII碼的形式在屏幕上顯示出來(lái)的,而通過(guò)系統(tǒng)測(cè)量出的頻率值為浮點(diǎn)數(shù)形式,因此必須將浮點(diǎn)數(shù)形式的數(shù)據(jù)轉(zhuǎn)化為ASCII碼的形式才能顯示出來(lái)。將浮點(diǎn)數(shù)轉(zhuǎn)換為ASCII碼的代碼為:
void IntToStr(unsigned int t, unsigned char *str, unsigned char n)
{
unsigned char a[5]; char i, j;
a[0]=(t/10000)%10; //取得整數(shù)值到數(shù)組
a[1]=(t/1000)%10;
a[2]=(t/100)%10;
a[3]=(t/10)%10;
a[4]=(t/1)%10;
for(i=0; i<5; i++) //轉(zhuǎn)成ASCII碼
a=a+'0';
for(i=0; a=='0' && i<=3; i++);
for(j=5-n; j<i; j++) //填充空格
{ *str=' '; str++; }
for(; i<5; i++)
{ *str=a; str++; } //加入有效的數(shù)字
*str='\0';
}
5.3.3 定時(shí)/計(jì)數(shù)器初始化模塊在系統(tǒng)測(cè)頻之前,首先要進(jìn)行定時(shí)/計(jì)數(shù)器0和1的初始化,這一部分主要是進(jìn)行定時(shí)/計(jì)數(shù)器0和1的工作方式和中斷優(yōu)先級(jí)的設(shè)置,在實(shí)驗(yàn)中通過(guò)設(shè)置定時(shí)/計(jì)數(shù)器 0和1的工作方式控制寄存器TMOD的操作模式和工作方式,我們?cè)O(shè)置定時(shí)器1為16位定時(shí)器方式,定時(shí)器0為16位計(jì)數(shù)器方式,并通過(guò)中斷優(yōu)先級(jí)控制寄存器IP設(shè)定定時(shí)器1為高優(yōu)先級(jí)中斷。其具體代碼為:
void Time01_Init(void)
{
EA=0; //關(guān)總中斷
TR0=0; //關(guān)定時(shí)器0
TR1=0; //關(guān)定時(shí)器1
IE=0x0A; //允許TF1/TF0標(biāo)志位(TCON7/TCON5)的中斷請(qǐng)求 TMOD=0x15; //定時(shí)器1是16位定時(shí)器方式,定時(shí)器0是16為計(jì)數(shù)器方式
IP=0x08; //定時(shí)器1是高優(yōu)先級(jí)中斷
TH1=0x3C;
TL1=0xB0;
}
5.3.4 定時(shí)器中斷服務(wù)模塊子程序在頻率測(cè)量過(guò)程中,我們使用單片機(jī)的定式計(jì)數(shù)器來(lái)實(shí)現(xiàn)頻率的測(cè)量。當(dāng)計(jì)數(shù)器0工作一段時(shí)間后,我們要讀取計(jì)數(shù)值進(jìn)行頻率計(jì)算時(shí),首先要關(guān)閉定時(shí)器1來(lái)切斷外部信號(hào),然后讀取計(jì)數(shù)器中的數(shù)值來(lái)進(jìn)行計(jì)算。其相應(yīng)功能代碼即定時(shí)器T1中斷服務(wù)子程序?yàn)椋?/div>
void TIMER1_ISR (void) interrupt 3 using 1
{
EA=0; //關(guān)總中斷
TR0=0; //關(guān)定時(shí)器0
TR1=0; //關(guān)定時(shí)器1
flag=!flag;
TH1=0x3c;
TL1=0xB0;
frequence=(TH0*0x100+TL0)/200;
if(flag)
P3=P3|1<<5;
else
P3=P3&(~(1<<5));
TH0=0x00;
TL0=0x00;
TR1=1; // 開(kāi)定時(shí)器1
TR0=1; // 開(kāi)定時(shí)器0
EA=1; // 開(kāi)總中斷
}
6 系統(tǒng)的模擬及仿真本次基于單片機(jī)的頻率計(jì)設(shè)計(jì)是通過(guò)Proteus ISIS軟件來(lái)進(jìn)行模擬和仿真的。Proteus是目前最好的模擬單片機(jī)外圍器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外圍電路(如LCD、RAM、鍵盤(pán)、馬達(dá)、LED、AD/DA等)。
6.1 Proteus ISIS簡(jiǎn)介6.1.1 Proteus ISIS的概況簡(jiǎn)介及特點(diǎn)Proteus ISIS 是英國(guó)Labcenter 公司開(kāi)發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows 操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路。Proteus 與其它單片機(jī)仿真軟件不同的是,它不僅能仿真單片機(jī)CPU 的工作情況,也能仿真單片機(jī)外圍電路或沒(méi)有單片機(jī)參與的其它電路的工作情況。因此在仿真和程序調(diào)試時(shí),關(guān)心的不再是某些語(yǔ)句執(zhí)行時(shí)單片機(jī)寄存器和存儲(chǔ)器內(nèi)容的改變,而是從工程的角度直接看程序運(yùn)行和電路工作的過(guò)程和結(jié)果。
該軟件的特點(diǎn)是:
① 實(shí)現(xiàn)了單片機(jī)仿真和SPICE 電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232 動(dòng)態(tài)仿真、I2C 調(diào)試器、SPI 調(diào)試器、鍵盤(pán)和LCD 系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。
② 支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000 系列、8051 系列、AVR 系列、PIC12 系列、PIC16 系列、PIC18 系列、Z80 系列、HC11系列以及各種外圍芯片。
③ 提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2 等軟件。
④ 具有強(qiáng)大的原理圖繪制功能。總之,該軟件是一款集單片機(jī)和SPICE 分析于一身的仿真軟件,功能極其強(qiáng)大。
6.1.2 Proteus ISIS的運(yùn)行概況1) proteus的工作過(guò)程
運(yùn)行proteus 的ISIS 程序后,進(jìn)入該仿真軟件的主界面。在工作前,要設(shè)置view 菜單下的捕捉對(duì)齊和system下的顏色、圖形界面大小等項(xiàng)目。通過(guò)工具欄中的p(從庫(kù)中選擇元件命令)命令,在pick devices 窗口中選擇電路所需的元件,放置元件并調(diào)整其相對(duì)位置,元件參數(shù)設(shè)置,元器件間連線,編寫(xiě)程序;在source 菜單的Definecode generation tools 菜單命令下,選擇程序編譯的工具、路徑、擴(kuò)展名等項(xiàng)目;在source 菜單的Add/removesource files 命令下,加入單片機(jī)硬件電路的對(duì)應(yīng)程序;通過(guò)debug 菜單的相應(yīng)命令仿真程序和電路的運(yùn)行情況。
2) Proteus軟件所提供的各種資源
Proteus 軟件所提供了30 多個(gè)元件庫(kù),數(shù)千種元件。元件涉及到數(shù)字和模擬、交流和直流等。
對(duì)于一個(gè)仿真軟件或?qū)嶒?yàn)室,測(cè)試的儀器儀表的數(shù)量、類型和質(zhì)量,是衡量實(shí)驗(yàn)室是否合格的一個(gè)關(guān)鍵因素。在Proteus 軟件包中,不存在同類儀表使用數(shù)量的問(wèn)題。
Proteus 還提供了一個(gè)圖形顯示功能,可以將線路上變化的信號(hào),以圖形的方式實(shí)時(shí)地顯示出來(lái),其作用與示波器相似但功能更多。
Proteus 提供了比較豐富的測(cè)試信號(hào)用于電路的測(cè)試。這些測(cè)試信號(hào)包括模擬信號(hào)和數(shù)字信號(hào)。
對(duì)于單片機(jī)硬件電路和軟件的調(diào)試,Proteus提供了兩種方法:一種是系統(tǒng)總體執(zhí)行效果,一種是對(duì)軟件的分步調(diào)試以看具體的執(zhí)行情況。
對(duì)于總體執(zhí)行效果的調(diào)試方法,只需要執(zhí)行debug 菜單下的execute 菜單項(xiàng)或F12 快捷鍵啟動(dòng)執(zhí)行,用debug菜單下的pause animation 菜單項(xiàng)或pause 鍵暫停系統(tǒng)的運(yùn)行;或用debug 菜單下的stop animation菜單項(xiàng)或shift-break 組合鍵停止系統(tǒng)的運(yùn)行。其運(yùn)行方式也可以選擇工具欄中的相應(yīng)工具進(jìn)行。
對(duì)于軟件的分步調(diào)試,應(yīng)先執(zhí)行debug 菜單下的start/restart debugging 菜單項(xiàng)命令,此時(shí)可以選擇stepover、step into和step out命令執(zhí)行程序(可以用快捷鍵F10、F11 和ctrl+F11),執(zhí)行的效果是單句執(zhí)行、進(jìn)入子程序執(zhí)行和跳出子程序執(zhí)行。在執(zhí)行了start / restart debuging命令后,在debug菜單的下面要出現(xiàn)仿真中所涉及到的軟件列表和單片機(jī)的系統(tǒng)資源等,可供調(diào)試時(shí)分析和查看。
6.1.3 用Proteus 軟件虛擬單片機(jī)實(shí)驗(yàn)的優(yōu)點(diǎn)采用Proteus 仿真軟件進(jìn)行虛擬單片機(jī)實(shí)驗(yàn),具有比較明顯的優(yōu)勢(shì),其實(shí)驗(yàn)實(shí)習(xí)內(nèi)容全面、硬件投入少、可自行實(shí)驗(yàn)、實(shí)驗(yàn)過(guò)程中損耗小、與工程實(shí)踐最為接近等。當(dāng)然其存在的缺點(diǎn)也是有的。其有點(diǎn)有以下幾點(diǎn):
① 內(nèi)容全面
② 硬件投入少,經(jīng)濟(jì)優(yōu)勢(shì)明顯
③ 學(xué)可自行實(shí)驗(yàn),鍛煉解決實(shí)際工程問(wèn)題的能力
④ 實(shí)驗(yàn)過(guò)程中損耗小,基本沒(méi)有元器件的損耗問(wèn)題
⑤ 與工程實(shí)踐最為接近,可以了解實(shí)際問(wèn)題的解決過(guò)程
⑥ 大量的范例,可供參考處理
⑦ 協(xié)作能力的培養(yǎng)和鍛煉
Proteus不僅可以作為學(xué)校單片機(jī)(電子等)實(shí)驗(yàn)的模擬仿真,也可以作為個(gè)人工作室的仿真實(shí)驗(yàn)。作為電子技術(shù)或控制類相關(guān)專業(yè)的學(xué)生和工程技術(shù)人員,在學(xué)習(xí)了該軟件后,可以充分地利用它所提供的資源,幫助自己提高工程應(yīng)用能力。
6.2 系統(tǒng)的模擬與仿真過(guò)程1) 進(jìn)入Proteus ISIS
雙擊桌面上的ISIS 6 Professional 圖標(biāo)或者單擊屏幕左下方的“開(kāi)始”→“程序”→“Proteus 6 Professional” →“ISIS 6 Professional”,出現(xiàn)如圖6-1所示屏幕,表明進(jìn)入Proteus ISIS 集成環(huán)境。
圖 6-1 運(yùn)行Proteus ISIS的開(kāi)始界面
2) 工作界面
Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面,如圖6-2所示。包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對(duì)象選擇按鈕、預(yù)覽對(duì)象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對(duì)象選擇器窗口、圖形編輯窗口。
圖6-2 Proteus ISIS的工作界面
3) 在Proteus中進(jìn)行仿真圖的設(shè)計(jì)和運(yùn)行
如圖6-3,首先單擊工作界面右邊的對(duì)象選擇按鈕“P”,在彈出的窗口中通過(guò)關(guān)鍵字“Keywords”選擇仿真圖所需要的的器件將其添加到對(duì)象選擇窗口中。
圖6-3 在器件選擇窗口中選擇所需要的元器件
然后,選擇對(duì)象選擇窗口中已經(jīng)添加的元器件,將其放到圖形編輯窗口中,并進(jìn)行單片機(jī)仿真圖的設(shè)計(jì)。如圖6-4和6-5所示,仿真圖的核心器件有:AT89S52單片機(jī)、74LS00、74LS74、LM016L(LCD) 。
圖6-4 在圖形編輯窗口中添加元件
圖6-5 系統(tǒng)仿真圖
其次,在仿真圖中雙擊單片機(jī)芯片,在彈出的如圖6-6的窗口“Edit Component”中為“Prograom File”選擇二進(jìn)制文件“plj-s52.hex”,該文件為軟件設(shè)計(jì)中由Keil C編譯程序所生成的二進(jìn)制文件。
圖6-6 為單片機(jī)加載二進(jìn)制代碼
最后,在單片機(jī)的屬性窗口中為其添加系統(tǒng)時(shí)鐘頻率為3MHZ,則對(duì)應(yīng)的機(jī)器周期為250ms。并為信號(hào)發(fā)生器選擇適當(dāng)?shù)念l率為4KHZ,并點(diǎn)擊左下角的“Play”按鈕進(jìn)行頻率計(jì)的軟件模擬與仿真。其仿真結(jié)果為圖6-7所示:
圖6-7 頻率計(jì)的仿真結(jié)果
6.3 頻率計(jì)系統(tǒng)仿真分析在頻率計(jì)的軟件仿真中為了觀察頻率計(jì)的工作狀況和測(cè)試系統(tǒng)的工作狀態(tài),在頻率計(jì)的仿真圖中添加一個(gè)示波器來(lái)觀察幾個(gè)重要節(jié)點(diǎn)的波形狀況。其頻率計(jì)的仿真測(cè)試如圖6-8所示。
圖6-8 頻率計(jì)仿真測(cè)試圖
示波器有四個(gè)通道,從上至下依次為通道A、B、C、D。A通道測(cè)試系統(tǒng)所測(cè)試的頻率信號(hào),D通道測(cè)試單片機(jī)對(duì)外圍電路的同步信號(hào),C通道測(cè)試經(jīng)過(guò)外圍電路同步后的測(cè)頻信號(hào)。我們?cè)O(shè)置頻率信號(hào)為10KHZ,選擇單片機(jī)系統(tǒng)時(shí)鐘信號(hào)頻率為3MHZ,運(yùn)行后所得到的測(cè)頻結(jié)果如圖6-9所示。
圖6-9 頻率計(jì)測(cè)頻結(jié)果
所測(cè)試節(jié)點(diǎn)的信號(hào)的波形圖如圖6-10和圖6-11所示。
圖6-10 所測(cè)節(jié)點(diǎn)信號(hào)的波形圖(1)
圖6-11所測(cè)節(jié)點(diǎn)信號(hào)的波形圖(2)
由波形圖中可以看出,當(dāng)定時(shí)器1給出一個(gè)信號(hào)后,頻率信號(hào)和定時(shí)器信號(hào)通過(guò)外圍同步電路將選通信號(hào)送入單片機(jī)的定時(shí)計(jì)數(shù)器中進(jìn)行計(jì)數(shù),從而測(cè)出所給的頻率值。由于所用到的示波器是由軟件模擬的,所得到的波形可能和實(shí)際波形有很大的誤差,這是由于其軟件本身缺陷造成的。
圖6-11 系統(tǒng)仿真圖元件清單
在整個(gè)系統(tǒng)的仿真中所用到元件清單如圖6-12所示,在頻率計(jì)仿真圖中主要用到了五種元件。其中U1.U2.U2為集成電路元件:U1為單片機(jī)AT89S52,U2為3個(gè)與非門(mén)74LS00,U3為一個(gè)鎖存器74LS74。還有一個(gè)16引腳值為L(zhǎng)M016L的液晶顯示器LCD用于顯示頻率值,一個(gè)阻值為10K的上拉電阻。其中U2和U3組成仿真圖的控制電路,來(lái)實(shí)現(xiàn)頻率信號(hào)與單片機(jī)測(cè)頻信號(hào)的同步。
結(jié)束語(yǔ)在現(xiàn)代電子技術(shù)中頻率計(jì)作為測(cè)量?jī)x器的一種,常稱為電子計(jì)數(shù)器,它的基本功能是測(cè)量信號(hào)的頻率和周期頻率計(jì)的應(yīng)用范圍很廣,它不僅應(yīng)用于一般的簡(jiǎn)單儀器測(cè)量,而且還廣泛應(yīng)用于教學(xué)、科研、高精度儀器測(cè)量、工業(yè)控制等其它領(lǐng)域。
隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的迅速發(fā)展,特別是單片機(jī)的出現(xiàn)和發(fā)展,使傳統(tǒng)的電子側(cè)量?jī)x器在原理、功能、精度及自動(dòng)化水平等方面都發(fā)生了巨大的變化,形成一種完全突破傳統(tǒng)概念的新一代側(cè)量?jī)x器。頻率計(jì)廣泛采用了高速集成電路和大規(guī)模集成電路,使儀器在小型化、耗電、可靠性等方面都發(fā)生了重大的變化。單片機(jī)是20世紀(jì)中期發(fā)展起來(lái)的一種面向控制的大規(guī)模集成電路模塊,具有功能強(qiáng)、體積小、可靠性高、價(jià)格低廉等特點(diǎn),在工業(yè)控制、數(shù)據(jù)采集、智能儀表、機(jī)電一體化、家用電器等領(lǐng)域得到了廣泛的應(yīng)用,極大的提高了這些領(lǐng)域的技術(shù)水平和自動(dòng)化程度。目前,市場(chǎng)上有各種多功能、高精度、高頻率的數(shù)字頻率計(jì),但價(jià)格不菲。為適應(yīng)實(shí)際工作的需要,本次設(shè)計(jì)給出了一種較小規(guī)模和單片機(jī)(AT89S52)相結(jié)合的頻率計(jì)的設(shè)計(jì)方案,不但切實(shí)可行,而且體積小、保密性強(qiáng)、設(shè)計(jì)簡(jiǎn)單、成本低、精度高、可測(cè)頻帶寬,大大降低了設(shè)計(jì)成本和實(shí)現(xiàn)復(fù)雜度。
歸納起來(lái),在整個(gè)論文的設(shè)計(jì)中,首先介紹了頻率計(jì)的產(chǎn)生背景以及國(guó)內(nèi)外的發(fā)展現(xiàn)狀,并針對(duì)其優(yōu)缺點(diǎn)提出了進(jìn)行基于單片機(jī)的頻率計(jì)設(shè)計(jì)的目的及意義。然后介紹了AT89S52單片機(jī)的功能及特點(diǎn),并針對(duì)其特性給出了頻率計(jì)的設(shè)計(jì)原理、思路及方法。最后具介紹了進(jìn)行系統(tǒng)硬件和軟件設(shè)計(jì)以及系統(tǒng)模擬與仿真的具體實(shí)現(xiàn)過(guò)程。通過(guò)系統(tǒng)實(shí)現(xiàn)和論文設(shè)計(jì)的過(guò)程,是我對(duì)基于單片機(jī)的頻率計(jì)的原理及應(yīng)用有了更進(jìn)一步的認(rèn)識(shí),并且熟練掌握了進(jìn)行計(jì)算機(jī)硬件系統(tǒng)設(shè)計(jì)的一般原理及方法。
通過(guò)幾個(gè)月的努力,即將完成論文,當(dāng)然由于本人精力和時(shí)間有限,本論文中或多或少會(huì)存在一些缺點(diǎn),所設(shè)計(jì)的軟件難免存在一些不足,還懇請(qǐng)各位老師和同學(xué)給與批評(píng)和指正。
致 謝
光陰似箭、日月如梭,四年的本科學(xué)習(xí)很快就要過(guò)去了,在論文即將完成之際,我衷心的感謝所有指導(dǎo)、關(guān)心和幫助我的老師、同學(xué)和朋友。
首先感謝我的導(dǎo)師張坤鰲教授!本文的研究工作是在付老師的悉心指導(dǎo)和嚴(yán)格要求下完成的。在課題的研究和論文的寫(xiě)作過(guò)程中,張坤鰲老師給了我很多耐心的指導(dǎo)和啟發(fā)。張老師淵博的學(xué)識(shí)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、敬業(yè)的精神和平易近人的態(tài)度,給我留下了深刻的印象,在付老師的教導(dǎo)下,我在學(xué)習(xí)生活方面都得到了很多的進(jìn)步!他既是良師又是益友,不僅讓我學(xué)到了專業(yè)知識(shí),還讓我學(xué)到了很多做人的道理,會(huì)不斷激勵(lì)著我?jiàn)^發(fā)學(xué)習(xí)、努力進(jìn)步。這些都將使我的一生受益匪淺!老師的諄諄教誨將令我終身難忘。在此,請(qǐng)?jiān)试S我表示我深深的敬意和衷心的感謝。
于此同時(shí),我還要感謝計(jì)算機(jī)學(xué)院的各位老師給我們提供了一次鍛煉和學(xué)習(xí)的機(jī)會(huì),感謝我的同學(xué)和室友,他們?cè)谖业膶W(xué)習(xí)和生活中給了我很大的幫助。
最后,我要感謝所有在我論文完成過(guò)程中給予了幫助和關(guān)心的朋友。
完整的Word格式文檔51黑下載地址(含程序):