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