基于狀態(tài)機的信號發(fā)生器(共42頁)_第1頁
基于狀態(tài)機的信號發(fā)生器(共42頁)_第2頁
基于狀態(tài)機的信號發(fā)生器(共42頁)_第3頁
基于狀態(tài)機的信號發(fā)生器(共42頁)_第4頁
基于狀態(tài)機的信號發(fā)生器(共42頁)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目 錄摘要(zhiyo) .1英文摘要(zhiyo) .11 引言(ynyn) .21.1 信號發(fā)生器發(fā)展現(xiàn)狀概述 .21.2 設計指標21.2.1 設計任務31.3 狀態(tài)機概念闡述31.3.1 系統(tǒng)主要組成部分41.3.2 各部分性能與參數要求51.3.3 系統(tǒng)方案論證.52 系統(tǒng)硬件設計 .62.1 單片機電路設計72.2 數/模轉換電路.72.3 鍵盤控制電路82.4 顯示電路93 系統(tǒng)軟件件設計.103.1 主程序流程圖113.2 中斷服務流程圖.113.3 按鍵控制流程圖.113.4 液晶顯示流程圖124 系統(tǒng)測試與結果.124.1 測試方法.134.2 測試結果134.3 誤差分析

2、145 結束語.166 參考文獻.177 附錄18 附錄1.Protel 99See原理圖.18 附錄2.Proteus7.5仿真圖.19 附錄3.作品實物圖20 附錄4.程序清單21 附錄5.元件清單38 基于狀態(tài)機的信號發(fā)生器 基于(jy)狀態(tài)機的信號發(fā)生器職業(yè)技術教育(jioy)學院 應用(yngyng)電子技術教育專業(yè) 董仙懷(07440106) 指導老師 朱偉玲(講師)摘要:波形發(fā)生器是電子設計以及教學、科研中應用最廣泛的儀器之一。如果能用相對簡單的方式和較少的成本產生具有優(yōu)秀穩(wěn)定度和精確度的常用波形,無疑將在這些領域中得到廣泛的應用。本次作品設計是基于狀態(tài)機概念的功能特性來實現(xiàn)占空

3、比可調的矩形波、鋸齒波信號發(fā)生器。它主要是通過現(xiàn)軟件設計來實現(xiàn)波形選擇、占空比可調、頻率可按步進可調、輸出幅度可調等功能。本設計只要輔以簡單的外圍電路,就能實現(xiàn)一個低成本、多功能、高精度、輸出頻率步進可調的波形發(fā)生器,本文并對狀態(tài)機的運用以及它的軟件延伸作了比較詳細的論述。本次設計主要由89C51、DAC0832、1602、LM324芯片完成任務書所要求的指標。關鍵詞:狀態(tài)機;程序;單片機The Signal Generator Based On State MachineVocational Technical Education College Application of Electro

4、nic Technology Education Professional DONG Xian- Huai(07440106)Director: ZHU Wei -Ling(Lecture)Abstract:Waveform generator is one of the most widely used instruments in electronic design and teaching, scientific research. Waveform generator having a good stability and precision of common waveform by

5、 using relatively simple realization ways and less cost, will be widely applied in these areas undoubtedly. This design is based on state machine concepts to realize the functional characteristics of adjustable rectangle wave, sawtooth wave signal. Software writing is the main work of the design whi

6、ch has functions of waveform selection, occupies duty modulation, frequency stepping modulation, and output amplitude can be modulated. This design can achieve a low cost, multi-function, high-precision, output frequency stepping adjustable waveform generator for state machine by adapted complementa

7、ry with simple peripheral circuitry. This paper discussion the use of the software and its extends. This design consists mainly of 89C51, DAC0832, 1602and LM324 chips.Key Words: state machine; programme; SCM1 引言(ynyn) 隨著(su zhe)電子測量及其他部門對各類信號發(fā)生器的廣泛需求及電子技術的迅速發(fā)展,促使信號發(fā)生器種類增多,性能提高。尤其隨著70年代微處理器的出現(xiàn),更促使信號發(fā)

8、生器向著自動化、智能化方向發(fā)展?,F(xiàn)在,許多信號發(fā)生器帶有微處理器,因而(yn r)具備了自校、自檢、自動故障診斷和自動波形形成和修正等功能,可以和控制計算機及其他測量儀器一起方便的構成自動測試系統(tǒng)。當前信號發(fā)生器總的趨勢是向著寬頻率覆蓋、低功耗、高頻率精度、多功能、自動化和智能化方向發(fā)展。 1.1 信號發(fā)生器發(fā)展現(xiàn)狀概述 在科學研究、工程教育及生產實踐中,如工業(yè)過程控制、教學實驗、機械振動試驗、動態(tài)分析、材料試驗、生物醫(yī)學等領域,常常需要用到占空比可調的信號發(fā)生器。而在我們日常生活中,以及一些科學研究中,鋸齒波和正弦波、矩形波信號是常用的基本測試信號。譬如在示波器、電視機等儀器中,為了使電子按

9、照一定規(guī)律運動,以利用熒光屏顯示圖像,常用到鋸齒波產生器作為時基電路。信號發(fā)生器作為一種通用的電子儀器,在生產、科研、測控、通訊等領域都得到了廣泛的應用。但市面上能看到的儀器在頻率精度、帶寬、波形種類及程控方面都已不能滿足許多方面實際應用的需求。加之各類功能的半導體集成芯片的快速生產,都迫使我們研制一種占空比可調能產生多種波形并具有程控等低頻的信號發(fā)生器。 平時常用信號源產生正弦波,方波,三角波等常見波形作為待測系統(tǒng)的輸入,測試系統(tǒng)的性能。但在某些場合,我們需要特殊波形對系統(tǒng)進行測試,這是傳統(tǒng)的模擬信號發(fā)生器和數字信號發(fā)生器很難勝任的。利用單片機的強大功能,設計合適的人機交互界面,使用戶能夠通

10、過手動的設定,設置所需波形的各項參數是很有必要的。該作品的研究和制作需要對占空比可調信號發(fā)生系統(tǒng)有一個全面的了解。整個系統(tǒng)由單片機、顯示電路、鍵盤控制等組成,顯示和各模塊的連接通信等各個部分要熟練連接調試,能夠正確的了解常規(guī)芯片的使用方法、掌握簡單信號發(fā)生器應用系統(tǒng)軟硬件的設計方法,進一步鍛煉了我們在信號處理方面的實際工作能力。 1.2 設計(shj)指標 1.2.1 設計(shj)任務 設計制作一個(y )波形發(fā)生器,該波形發(fā)生器能產生占空比可調的矩形波、鋸齒波。 1)、具有產生占空比可調的矩形波、鋸齒波兩種周期性波形的功能。 2)、輸出為矩形波時,輸出電壓峰值為0-5V可調,可按步進0.1

11、V(峰-峰值)調 整。輸出信號頻率為100Hz-20kHz可調,正脈沖占主比為30-70可調; 輸出為鋸齒波時,輸出電壓峰值為0-5V可調,可按步進0.1V(峰-峰值)調整。輸出信號頻率為200Hz-20kHz可調。上升時間與周期之比為30-70可調。 3)、頻率步進間隔100Hz。4)、具有顯示輸出波形的類型、重復頻率(周期)和幅度的功能。以上這些任務我們可以用如下這個示意圖來表示: 占空比可調(30-70可調) 矩形波 幅度可調(0-5V可調) 頻率可調(200Hz-20kHz可調)產生 (輸出電壓步進0.1V可調,頻率步進可調間隔100Hz。) 占空比可調(30-70可調) 鋸齒波 幅度

12、可調(0-5V可調) 頻率可調(200Hz-20kHz可調) 1.3 狀態(tài)機概念闡述本次作品設計是基于狀態(tài)機的功能特性來實現(xiàn)占空比可調的矩形波、鋸齒波信號發(fā)生器。何謂狀態(tài)機呢?關于狀態(tài)機的一個極度確切的描述是它是一個有向圖形,由一組節(jié)點和一組相應的轉移函數組成。狀態(tài)機通過響應一系列事件而“運行”,每個事件都在屬于“當前”節(jié)點的轉移函數的控制范圍內,其中函數的范圍是節(jié)點的一個子集,函數返回“下一個”(也許是同一個)節(jié)點,這些節(jié)點中至少有一個必須是終態(tài),當到達終態(tài),狀態(tài)機停止。狀態(tài)機是軟件編程中的一個重要概念,比這個概念更重要的是對它的靈活應用。在一個思路清晰而且高效的程序中,基本上都會運用到狀態(tài)

13、機的概念。比如說一個按鍵命令解析程序,就可以被看做狀態(tài)機:本來在A狀態(tài)下,觸發(fā)一個按鍵后切換到了B狀態(tài);再觸發(fā)另一個鍵后切換到C狀態(tài),或者返回到A狀態(tài),這就是最簡單的按鍵狀態(tài)機例子。實際的按鍵解析程序會比這更復雜些,但這不影響我們對狀態(tài)機的認識。本次作品就是依賴狀態(tài)機的這個概念來設計的。狀態(tài)機簡寫(jinxi)為FSM(Finite State Machine),主要(zhyo)分為2大類:第一類,若輸出(shch)只和狀態(tài)有關而與輸入無關,則稱為Moore狀態(tài)機:第二類,輸出不僅和狀態(tài)有關而且和輸入有關系,則稱為Melay狀態(tài)機。要特別注意的是,因為Melay狀態(tài)機和輸入有關,輸出會受到輸入

14、的干擾,所以可能會產生毛刺(Gitch)現(xiàn)象,使用時應當注意。事實上現(xiàn)在市面上有很多EDA工具可以很方便的將采用狀態(tài)圖的描述轉換成可以綜合的VHDL程序代碼。狀態(tài)機描述的狀態(tài)有兩種大類,一類是任務運行似的邏輯。這種狀態(tài)圖的狀態(tài)通常是任務在等待某個條件達到,也就是任務處于“等待狀態(tài)”。通常任務本身是直接推動狀態(tài)機運作的發(fā)動機,任務本身檢查狀態(tài)機的事件達到情況并進行分發(fā)。任務狀態(tài)的變遷由某個事件的達成觸發(fā),可能要求任務間同步機制ITC具有回調能力,以便在條件成立時向狀態(tài)機事件隊列中壓入事件。這種狀態(tài)機明顯有異步邏輯特征,稱為“異步類狀態(tài)機”。第二種類型是算法邏輯,利用狀態(tài)機邏輯清晰的特性描述復雜的

15、算法。該狀態(tài)機通常嵌入在某個算法函數類部,幫助該函數完成功能。函數入口后,模擬任務等具有主動性的實體,向狀態(tài)機分發(fā)事件。這種狀態(tài)機明顯有同步函數調用特征,稱為“同步類狀態(tài)機”。同步狀態(tài)機的一次事件過程就是一次入口函數調用過程。入口函數調用返回時,狀態(tài)機必須處于一個明確定義的狀態(tài),不能是不確定的中間狀態(tài)。無論異步還是同步,特別是對異步狀態(tài)機而言,狀態(tài)機內部不能在某個狀態(tài)發(fā)生等待、阻塞等情況,而應該是標記狀態(tài)后返回,把執(zhí)行的機會讓給其他任務或邏輯體(狀態(tài)機的驅動實體)。之后在條件達到的情況下,通過事件分發(fā)機構調動狀態(tài)機的運行。 本次作品設計主要要實現(xiàn)以下功能:在實現(xiàn)能產生矩形、波鋸齒波的基礎上再實

16、現(xiàn)占空比調節(jié)、輸出電壓調節(jié)、頻率調節(jié)等?,F(xiàn)在引入一個狀態(tài)機的概念,即使單片機工作在某種特定狀態(tài)下,讓它實現(xiàn)占空比可調或輸出電壓可調或輸出頻率可調,且還能實現(xiàn)矩形波、鋸齒波兩種不同信號的輸出選擇。本次作品就采用鍵盤控制來實現(xiàn)單片機能工作在某種特定的狀態(tài)。狀態(tài)選擇主要是由單片機通過編程實現(xiàn)設計要求的功能再由鍵盤控制來實現(xiàn)的,所以本次作品的設計核心是軟件設計。1.3.1 系統(tǒng)主要組成部分本次作品設計主要由鍵盤控制電路、單片機核心電路、DAC0832數模轉換電路、信號放大電路及顯示電路組成等。系統(tǒng)框圖(kungt)如下圖1-1所示:圖1-1 系統(tǒng)(xtng)框圖采用鍵盤控制讓單片機工作在某種特定狀態(tài)下

17、,讓它實現(xiàn)占空比可調或輸出電壓可調或輸出頻率可調,且還能實現(xiàn)矩形波、鋸齒波兩種不同信號的輸出選擇。將單片機程序與DAC0832相容(xin rn)產生矩形波、鋸齒波,再將DAC0832產生的電流信號經LM324芯片轉換成電壓信號并將其放大輸出,將波形類型、占空比、頻率、幅度用LCD1602分兩行輸出。1.3.2 各部分性能與參數要求 1.3.3方案論證 為了實現(xiàn)占空比可調的矩形波、鋸齒波信號發(fā)生器,本人曾擬過各種方案與指導老師討論過,主要是以下幾種:方案一:用分立元件來實現(xiàn)該信號發(fā)生器。但通常是單函數發(fā)生器且頻率不高,其工作不很穩(wěn)定,不易調試。方案二:用晶體管、運放IC等通用器件制作,更多的則

18、是用專門的函數信號發(fā)生器IC產生。比如早期的函數信號發(fā)生器IC8038等,但它們的功能較少,精度不高,頻率上限只有300KHz,無法產生更高頻率的信號,調節(jié)方式也不夠靈活,頻率和占空比不能獨立調節(jié),二者互相影響。 方案三:利用單片集成芯片來實現(xiàn)該信號發(fā)生器,它能產生多種波形,達到較高的頻率,且易于調試。比如美國馬克西姆公司開發(fā)的函數信號發(fā)生器ICMAX038,但是該芯片價格昂貴且頻率不穩(wěn)定。方案四:利用專用直接數字合成DDS芯片的信號發(fā)生器:能產生任意波形并達到很高的頻率。但成本較高。方案五:基于狀態(tài)機來實現(xiàn)該信號發(fā)生器,主要是通過鍵盤控制和單片機編程來完成本次作品的各項性能參數。通過對以上五

19、種方案的比較,我們可以看出幾種方案的優(yōu)缺點:方案一:結構很簡單,制作容易,但是輸出信號有頻率線性度差、頻率穩(wěn)定度低、頻率分辨率低、頻率變換時間比較長,相位噪聲大以及人機界面不友好等缺點。方案二:電路結構簡單(jindn),但在頻率分辨率、頻率變換時間、相位噪聲等方面都不如方案三。方案(fng n)三:輸出頻率穩(wěn)定性高,但結構相對復雜。方案四:能產生(chnshng)任意波形且達到很高的頻率,但是成本較高。方案五:結構簡單,易于控制,且可以通過編程來實現(xiàn)多種波形,性價比高?;谖覀兊倪x擇標準,在滿足工作要求的前提下,性價比高的發(fā)生器是我們的首選。從上面的比較可以看出,方案一和方案二都有各自較大的

20、缺點,難以達到理想的設計要求。而方案三和方案四雖然能達到很好的要求,但是從價格方面考慮方案五具有優(yōu)勢。利用單片機采用程序設計方法來產生低頻信號,其頻率底線很低。具有線路相對簡單,結構緊湊,價格低廉,頻率穩(wěn)定度高,抗干擾能力強,用途廣泛等優(yōu)點,并且能夠對波形進行細微調整,改良波形,使其滿足系統(tǒng)的要求。只要對電路稍加修改,調整程序,即可完成功能升級。 2 系統(tǒng)硬件設計本次作品設計的硬件電路相對而言是比較簡單的,主要由鍵盤控制電路、單片機控制電路、數/模轉換電路、顯示電路等組成(實物圖見附錄1)。大家知道狀態(tài)機可以是多級的,在分層的多級狀態(tài)機系統(tǒng)里面,一個“父狀態(tài)”下可以劃分多個“子狀態(tài)”,這些子狀

21、態(tài)共同擁有上級父狀態(tài)的某些共性,同時又各自擁有自己的一些個性。有限狀態(tài)機的數學模型如下:(1)系統(tǒng)運行的狀態(tài)是有限的,并且在某個時刻系統(tǒng)只處在一個狀態(tài)。設系統(tǒng)的運行狀態(tài)是s0,s1,sl,可以定義系統(tǒng)狀態(tài)的集合是S。(2)系統(tǒng)運行狀態(tài)的轉移是由某個事件觸發(fā)的。沒有事件觸發(fā),是不可能發(fā)生狀態(tài)轉移的。設使系統(tǒng)狀態(tài)轉移的事件是0,1, n,可以定義觸發(fā)事件的集合是E。(3)系統(tǒng)運行的輸出。在系統(tǒng)從一個狀態(tài)轉移到另一個狀態(tài)時會相應執(zhí)行一些動作。這些動作就是系統(tǒng)的輸出。設系統(tǒng)的輸出是p0,p1pm,可以定義系統(tǒng)輸出的集合是P。在這些定義上可以簡單描述有限狀態(tài)機的實現(xiàn)過程。系統(tǒng)在某一時刻的狀態(tài)取值狀態(tài)集合

22、S 中的某一值,沒有事件的觸發(fā)是不可能有狀態(tài)的轉移,在某一時刻有事件產生,該事件的產生觸發(fā)了狀態(tài)的轉移,使得系統(tǒng)運行在新的狀態(tài)下,同時產生輸出p。所以本系統(tǒng)的線性狀態(tài)結構如下圖2 狀態(tài)結構圖所示。系統(tǒng)狀態(tài)矩形波鋸齒波幅度調節(jié)占空比調節(jié)頻率調節(jié)頻率調節(jié)幅度調節(jié)占空比調節(jié)圖2 狀態(tài)(zhungti)結構圖 2.1 單片機控制電路89C51是一種(y zhn)帶4K字節(jié)(z ji)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS8位微處理器,俗稱單片機。用89C51單片機構成最小應用系統(tǒng)

23、時,只要將單片機接上時鐘電路和復位電路即。本次設計主要用到P0口、P1口、P2口,將P0口與鍵盤控制電路相連,將P1口與顯示模塊連接,將P2口與數模轉換電路相連。P3口只用到P3.0、P.1、P3.2與LCD1602的RS、RW、EN腳相連。如下圖2-1 單片機外圍電路所示。圖2-1 單片機外圍電路 2.2 數/模轉換電路進行(jnxng)數/模轉換(zhunhun)時選用DAC0832,由于(yuy)其片內有輸入數據寄存器,故可以直接與單片機接口。其內部結構由一個8位輸入存儲器、一個8位DAC寄存器和一個D/A轉換器及邏輯控制電路組成。輸入鎖存器和DAC寄存器構成了兩級緩存,可以實現(xiàn)多通道同

24、步轉換輸出。DAC0832以電流的形式輸出,當需要轉換為電壓時,可外接運算放大器。此設計就用到這一點。利用差分方式外接了運算放大器LM324,是兩級運算放大電路。運算放大器外接+12V,-12V的電源,可以輸出雙極性的波形。運算放大器采用雙極性輸出。外接示波器,所編輯的波形就可以顯示出來。其主要參數如下:分辨率為8位,轉換時間為1s,滿量程誤差為1LSB,參考電壓為(+10-10)V,供電電源為(+5+15)V,邏輯電平輸入與TTL兼容。DAC0832個引腳功能定義如下:(1).DI7DI0:8位的數據輸入端,DI7為最高位。(2).IOUT1:模擬電流輸出端1,當DAC寄存器中數據全為1時,

25、輸出電流最大,當 DAC寄存器中數據全為0時,輸出電流為0。(3).IOUT2:模擬電流輸出端2,Iout2與Iout1的和為一個常數,即Iout1Iout2常數。(4).RFB:反饋電阻引出端,DAC0832內部已經有反饋電阻,所以RFB端可以直接接到外部運算放大器的輸出端,這樣相當于將一個反饋電阻接在運算放大器的輸出端和輸入端之間。(5).VREF:參考電壓輸入端,此端可接一個正電壓,也可接一個負電壓,它決定0至255的數字量轉化出來的模擬量電壓值的幅度,VREF范圍為(+10-10)V。(6).Vcc:芯片供電電壓,范圍為(+515)V。(7).AGND:模擬量地,即模擬電路接地端。 (

26、8).DGND:數字量地。 例如:已知運放輸出電路輸出電壓為Uout(D/256)*VREF,如果向DAC0832傳送的8位數據量40H(01000000B),則輸出電壓UOUT=(64/256)*5V=1.25V該模塊電路主要是將DAC0832的D0-D7口與單片機的P2口相連,如下圖2-2 DAC0832接口電路所示:圖2-2 DAC0832接口(ji ku)電路 2.3 鍵盤(jinpn)控制電路 鍵盤(jinpn)控制電路主用8個按鈕與單片機的P1口相連接,以實現(xiàn)所要求的各種功能。如下圖2-3 鍵盤控制電路所示: 圖2-3 鍵盤控制電路各個按鈕的功能分別是:Key1鍵功能:波形選擇,主

27、要是在矩形波與鋸齒波之間進行切換Key2鍵功能:當前波形頻率增加,它的步進分別是1Hz、10Hz、100Hz、 1000Hz。Key3鍵功能:當前波形頻率減小,它的步進分別是1Hz、10Hz、100Hz、 1000Hz。Key4鍵功能:當前波形幅值增加,它的步進分別是0.1V、1V。Key5鍵功能:當前波形幅值減小,它的步進分別是0.1V、1V。Key6鍵功能:當前波形占空比增加,它的步進分別是2%、10%。Key7鍵功能:當前波形占空比減小,它的步進分別是2%、10%。Key8鍵功能:該鍵主要是用來進行倍率選擇的(頻率、幅度、占空比的步進)。例如產生一個鋸齒波頻率增加、占空比減小、幅值增加的

28、控制方式的過程如下(不限步進大?。河捎诔绦虺跏蓟钱a生一個占空比為50%、頻率為1KHz、幅度為2.5V的矩形波,所以要按下Key1按鈕來選擇鋸齒波,然后按下Key1鍵進行頻率增大調節(jié),接著按下Key7鍵進行占空比減小調節(jié),最后按下Key4鍵進行幅值增大調節(jié),就這樣簡單的操作就完成了鋸齒波相關參數的調節(jié)。2.4 顯示(xinsh)電路本次顯示模塊主要(zhyo)是采用1602液晶來顯示(xinsh)的,它的主要技術參數是這樣的:顯示容量為16x2個字符;芯片工作電壓是+4.55.5V;工作電流是2.0mA(5.0V);模塊最佳工作電壓是5.0V。接口信號信號說明如下表格2-4-1所示:表2-

29、4-1接口信號說明編號符號引腳說明編號符號引腳說明12345678VSSVDDVLRSR/WED0D1電源地電源正極液晶顯示偏壓信號數據/命令選擇端(H/L)讀/寫選擇端(H/L)使能信號Data I/OData I/O910111213141516D2D3D4D5D6D7BLABLKData I/OData I/OData I/OData I/OData I/OData I/O背光源正極背光源負極LCD1602液晶顯示模塊主要是將其D0-D7數據口與單片機的P0口連接,在P0口接一個10K的排阻為上拉電阻。1602可以顯示16x2個字符,所以本次設計就將顯示分成兩行:第一行顯示用英語顯示波形

30、類型和P=xx%;第二行顯示格式F=xxxxxHz V=x.xV。實際模塊電路如下圖2-4顯示電路所示。圖2-4 顯示(xinsh)電路3 系統(tǒng)軟件(x tn run jin)設計 軟件設計是本次作品的核心部分,它包括波形產生、波形選擇、占空比調節(jié)、輸出電壓調節(jié)、輸出頻率調節(jié)等方面,實質上,基于狀態(tài)(zhungti)機的單片機程序設計方法是一種面向數據的方法。狀態(tài)和事件都是用數據的形式表示的,這些數據的取值決定了程序的走向。主程序的任務是不停地監(jiān)視事件隊列,一旦非空,應立即調用相應事件的處理子程序。該事件處理完畢, 令其出隊, 再轉入主程序的入口點。狀態(tài)機主要由3個元素組成狀態(tài)、輸出和輸入,所

31、以在本次設計中用按下按鈕來觸發(fā)狀態(tài)輸出,比如按下按鈕1就會使系統(tǒng)處在波形選擇狀態(tài),按下按鈕2使系統(tǒng)處在頻率增加狀態(tài),以此類推其他按鈕的功能。本次軟件設計用Keil uVision3 軟件編的,具體程序詳見附錄2。3.1 主程序流程圖 當單片機接通電源時,系統(tǒng)程序開始初始化,接著會根據所需輸出的波形的代碼來得到輸出的電壓,波形的選擇是根據代碼中查表程序而得的,再經過DAC0832將數字信號轉換為模擬信號后,再通過運算放大器LM324將電壓放大,最后輸出所需的波形。主程序流程圖如下圖3-1所示:開始初始化根據波形代碼自變量t求出當前要輸出的電壓D/A轉換波形輸出圖3-1 主程序流程圖3.2 中斷(

32、zhngdun)服務流程圖 如圖3-2所示,當系統(tǒng)在工作狀態(tài)中收到中斷請求時,它將對系統(tǒng)進行現(xiàn)場保護后,再重新(chngxn)設定它的初值,按照輸入值的需要來調整自變量,之后恢復現(xiàn)場,中斷返回后就能重新進行工作。T0中斷現(xiàn)場保護重裝定時初值調整自變量恢復現(xiàn)場中斷返回圖3-2 T0中斷(zhngdun)服務子程序流程圖 3.3 按鍵控制流程圖 如圖3-3所示,按鍵控制是通過用戶手動來調整自己所需的波形及功能選項,從而實現(xiàn)人為的控制。系統(tǒng)先將按鍵初始化,再通過掃描程序來判斷按鍵是否按下,若有按下就跳到相應的程序段,執(zhí)行該程序的命令,若沒有按下則返回(fnhu),再進行按鍵程序掃描。初始化按鍵掃描程

33、序判斷是否有鍵按下跳到相應的程序段 圖3-3 按鍵(n jin)控制流程圖3.4 液晶顯示流程圖開始LCD1602初始化延時設置第一行顯示位置顯示第一行內容設置第二行顯示位置顯示第一行內容液晶顯示程序(chngx)主要是先將LCD1602初始化,然后確定第一行的顯示位置,再將第一行內容顯示出來,接著確定第二行顯示位置,再將第二行內容顯示出來,以此來實現(xiàn)顯示波形類型、占空比大小、幅度大小、頻率大小信息。圖3-4 液晶顯示流程圖4 系統(tǒng)(xtng)測試與結果4.1 測試方法本次作品(zupn)用到的測試儀器有穩(wěn)壓電源、示波器、數字萬用表等。主要采用示波器來測試顯示波形選擇、占空比調節(jié)、輸出電壓和頻

34、率(pnl)可調等功能。4.2 測試結果以下是Proteus 7.5版仿真的結果:主要將矩形波、鋸齒波兩種波形各參量變化前后的進行比較,像圖3-5a是一個占空比為50%、頻率為1KHz、幅度為0.50V的矩形波,通過按鈕控制改變波形參數后的圖b是占空比為82%、頻率為400Hz、幅度為1.30V的矩形波;圖c是一個占空比為82%、頻率為400Hz、幅度為1.30V的鋸齒波,通過按鈕控制改變波形參數后的圖d是占空比為6%、頻率為1200Hz、幅度為2.2V的鋸齒波。所以,從以下圖形我們可以看出此設計是滿足任務書的要求的。 圖3-5a 矩形波初始參數 圖3-5b 矩形波改變參數后 圖3-5c 鋸齒

35、波初始參數 圖3-5d 鋸齒波改變參數后 以下(yxi)是Tektronix TDS1012數字(shz)示波器上拍到的波形(b xn):圖a是一個幅度到最大值的鋸齒波波形,圖b是頻率為2KHz的鋸齒波,圖c、圖d均為矩形波。 圖3-6a 圖3-6b 圖3-6c 圖3-6d4.3 誤差分析將上述的測試過程記錄的數據列于表4-3-1并進行誤差分析。以下表格的數據都是用Tektronix TDS1012數字示波器測量所得的,表4-3-1是在占空比為50%的情況下所測兩種波形頻率、幅度的參數;表4-3-2在頻率為1KHz的情況下所測兩種波形占空比、幅度的參數;表4-3-3在幅度為2.5V的情況下所測

36、兩種波形占空比、頻率的參數。表 4-3-1占空比為50%時鋸齒波、矩形波頻率、幅度的測試f0f1f2V0(V)V1(V)V2(V)f1(%)f2(%)V1(%)V2(%)0.215100.2041.1324.99810.02619.9230.2101.0135.00410.01220.004.15.01.4892.5033.1894.0875.0231.5012.4983.1874.0125.0210.47.71.01.22.1注:f0-作品(zupn)液晶顯示的頻率值; f1-示波

37、器上矩形(jxng)波的頻率值;f2-示波器上鋸齒(jch)波的頻率值; V0-作品液晶顯示的幅度值;V1-示波器上矩形波的幅度值;V2-示波器上鋸齒波的幅度值;f1= |f1-f0|/f0*100%; f2= |f2-f0|/f0*100%;V1= (V1-V0)/V*100%; V2=(V2-V0)/V0*100%。 其中f0、f1、f2的單位為KHz。表4-3-2頻率為1KHz時鋸齒波、矩形波的占空比、幅度測試d0%d1%d2%V0(V)V1(V)V2(V)d1d2V1V23030.0891.5010.010.100.0110.0014040.1240.032.5

38、2.5032.4980.120.030.0030.0025050.150.093.23.1893.1870.10.090.0110.0136060.12874.0130.0127070.0870.085.05.0235.0210.080.080.0230.021注:d0-液晶顯示的占空比大小值; d1-示波器上矩形波的占空比大??;d2 -示波器上鋸齒波的占空比大??;V0-作品液晶顯示的幅度值;V1-示波器上矩形波的幅度值; V2-示波器上鋸齒波的幅度值;V1= (V1-V0)/V0*100%; V2=(V2- V0)/ V0*100%; d1=

39、(d1-d0)/d0*100%; d2=(d2-d0)/d0*100%。表 4-3-3 幅度為2.5V時鋸齒波、矩形波占空比、頻率測試d0%d1%d2%f0f1f2d1d2f1f23030.0040.2100.010.100.0040.0104040.1240.0311.1321.0130.120.030.1320.0135050.150.0954.9985.0040.10.090.0020.0046060.1260.101010.02610.0260.0127070.0870.082019.92320.0090.080.080.0770.00

40、9 注:d0-作品液晶顯示的占空比大小值;d1-示波器上矩形波的占空比大??;d2-示波器上鋸齒(jch)波的占空比大??;f0-作品(zupn)液晶顯示的頻率值;f1-示波器上矩形(jxng)波的頻率值;f2-示波器上鋸齒波的頻率值;d1= (d1-d0)/d0*100%; d2= (d2-d0)/d0*100%;f1= (f1-f0)/f0*100%; f2= (f2-f0)/f0*100%; 其中f0、f1、f2的單位為KHz。引起誤差的原因是很多的,有些是由被測對象本身引起的誤差,比如它的性質、狀態(tài)、條件以及被測量的種類、狀態(tài);有些是檢測系統(tǒng)各環(huán)節(jié)動力源的變化引起的誤差,比如電流、電壓源變

41、化等;有些是檢測方法誤差引起的,比如檢測方法、采樣方法、測量重復次數、取樣時間不同而產生的誤差。 由于本次設計的液晶顯示頻率和占空比是顯示整數位,幅度是顯示小數點后兩位的,而現(xiàn)在從示波器上讀取的都是包括小數點后兩位的數值,所以這也是誤差產生的原因之一。還有本次設計的軟件編程里延時程序的使用和程序本身所包含語句實現(xiàn)功能所需要的時間也會產生誤差,所以誤差是存在的。5結束語通過這次畢業(yè)設計,不僅提高了自己綜合應用所學的理論知識解決實際電路設計和應用的能力,加強了自己動手、動腦和理論聯(lián)系實際的能力,還培養(yǎng)了自己敢于動手、善于動手和獨立自主解決設計實踐中遇到的各種問題的能力。畢業(yè)設計是一個系統(tǒng)性的能檢測

42、學生本專業(yè)知識掌握與應用情況的環(huán)節(jié),如果沒有實際的有針對性的設計,我們就不能很好的理解和掌握所學的技術知識,更缺乏解決實際問題的能力。所以通過有針對性的畢業(yè)設計,使自己學會系統(tǒng)地運用所學理論知識,提高在電子應用方面的開發(fā)與設計本領,系統(tǒng)地掌握單片機硬軟件設計方法。通過這次的設計,使自己熟悉和掌握狀態(tài)機原理的系統(tǒng)的軟件、硬件設計的方法、設計步驟。在獨立或集體討論設計題目的總體設計方案、編程、軟件硬件調試、編寫設計報告等問題等過程中,真正做到了理論聯(lián)系實際,提高了動手能力和分析問題、解決問題的能力。通過本次實驗使自己熟練掌握單片機系統(tǒng)與其外圍電路的設計方法,熟練應用C語言編寫應用程序和實際設計中的

43、硬軟件調試方法和步驟,也熟悉了單片機系統(tǒng)的硬軟件開發(fā)工具的使用方法。參考文獻1 杜丁丁(dn dn),馬坤茹.數字信號發(fā)生器的設計(shj)J;河北農業(yè)大學學報(xubo),2009,32(1):84862 游少芳.基于DDS的高精度方波信號發(fā)生器的研究:碩士學位論文.哈爾濱工程大學,2007 3 魯哨廷.多波形數字信號發(fā)生器的設計與實現(xiàn)J.微處理機,2008,29(2):149151. 4 趙濤,邢燦華,姚西霞,陳曉娟. HYPERLINK /Article/CJFDTOTAL-JDCP200804029.htm%09%09%09%09%09%09%09%09%09%09%09%09%09

44、t _blank 基于MAX038多功能信號發(fā)生器的設計J.機電產品開發(fā)與創(chuàng)新,2008,12(04):62645 王蓉,徐瓊燕.基于CPLD的函數信號發(fā)生器設計J.現(xiàn)代電子技術,2009(24):1571596 戴成梅,戴成建,周啟龍. HYPERLINK /Article/CJFDTOTAL-GWCL201006019.htm%09%09%09%09%09%09%09%09%09%09%09%09%09 t _blank 基于LabVIEW多功能信號發(fā)生器的設計與實現(xiàn)J.國外電子測量技術,2010年06期7 蘇坡,楊建華,候宏.基于DSP的任意波形信號發(fā)生器的設計與實現(xiàn)J.電氣自動化,20

45、10,32(3):80828 徐偉,周杏鵬.基于AD9834的高性價比信號發(fā)生器設計J.儀器儀表與分析檢測,2008(1):689 周克寧,吳飛飛.基于DDS的高準確度可調占空比方波發(fā)生器J.計量技術,2005(11):353610 任建新,余樂詠,張鵬.基于(jy)FPGA的高精度信號(xnho)發(fā)生器的實現(xiàn)與優(yōu)化J.測控(c kn)技術,2011,30(1):131611 石桂名,冀勇鋼,彭海龍.基于AD9850的信號發(fā)生器的設計與實現(xiàn)J.現(xiàn)代電子技術,2010年第1期總第312期:11711912 馮偉.簡易低頻正弦信號發(fā)生器的設計J.科技傳播,2010,(6):989913 張根選,吳

46、子懷.基于AT89S52單片機的信號發(fā)生器的設計J.湖南工程學院學報,2010,20(3):182014 劉巖,王曉君,李國立.基于SOPC的DDS信號發(fā)生器設現(xiàn)代電子術,2011,34(1):10710915 申加亮,崔維群,王金平,崔靈智.基于直接數字頻率合成芯片的信號發(fā)生器設計J.山東水利職業(yè)學院院刊,2009(1):121416 張俊.狀態(tài)機思路在單片機程序設計中的應用J.今日電子,2009,(2):373917 吳繼華,王誠.如何寫好狀態(tài)機J.Verilog設計與驗證,2008,(3):13716518 陳勇.有限狀態(tài)機的建模與優(yōu)化設計J.重慶工學院學報(自然科學版),2007,(5

47、):55-5819 徐建,周杏鵬.基于有限狀態(tài)機的SMS液晶顯示終端的研究與實現(xiàn)J.自動化技術與應用,2006,25(11):2426致謝要鄭重的感謝在本次畢業(yè)設計過程中耐心的指導(zhdo)和幫助的朱偉玲老師(losh)、萬旭老師,沒有你們的辛勤指導,就沒有我今天(jntin)的成果,真心的感謝你們!謝謝!附錄1.Protel 99See原理圖圖a-1-1 原理圖圖a-2-1 PCB圖附錄(fl)2.Proteus7.5仿真圖圖b-2-1 仿真(fn zhn)原理圖圖b-2-2 仿真(fn zhn)運行圖附錄(fl)3.作品實物圖附錄(fl)4.程序清單#include#define uin

48、t unsigned int#define uchar unsigned char#define U8 uchar#define U16 uint#define SystemClock 24000000/定義(dngy)晶振頻率#define T0_BEGIN 65536-(SystemClock/12)/1000/1ms定時,定時器的初值U8 SystemTimer10mS;/系統(tǒng)時間10mS累加U8 SystemTimer1mS;/系統(tǒng)時間1mS累加#define KeyInPin P1/定義按鍵輸入IO PINU8 KeyValue;/定義記錄按鍵值的變量#define mKeyNamb

49、erMax 10/U8 PrintBuffer32;/16字節(jié)的顯示緩存/015字節(jié)顯示第一行/1631字節(jié)顯示第二行U8 WaveBuffer50;/產生(chnshng)波形緩存/4KHz及以下(yxi)的波形一個周期有50個點,/4KHz以上的波形(b xn)一個周期就10個點/用24MHz晶振,在全頻率范圍至少可以保證每個波形據/可以有10個機器以上時間還取數據輸出數據#define mCDotTurnF 4000/ 以4000HZ分界一個周期波形是10個點或都50個點#define mDataDotMore 50/點數多的一個周期有50個點#define mDataDotSmall

50、10/點數少的一個周期有10個點bit ParaUpdataFlag;/參數數據更新標志bit PrinUpdataFlag;/顯示數據更新標志/bit ParaUpdataFlag;/參數數據更新標志#define mTriangleWave 1/三角波#define mRectangleWave 0/矩形波U8 WaveChoose;/波形選擇變量U16 WaveF;/波形頻率 最小1HZ步進U16 FScale;/頻率步進比例U8 WavePWM;/波形占空比 4KHZ以下的為2%步進,4KHZ以上的為10%步進,U8 PWMScale;/占空比調整比例U8 WaveV;/波形幅值 共2

51、50級U8 VScale;/電壓調比例U16 OutDataF;/頻率轉換成T1定時初值U8 code AsciiSJB=T,r,i,a,n,g,l,e, ;U8 code AsciiJXB=R,e,c,t,a,n,g,l,e, ;#define LcdLine1Begin 0 x80#define LcdLine2Begin 0 xc0sbit VDac0832CS=P34;sbit VDac0832WR=P35;#define ControlV(k) P0=k,VDac0832CS=0,VDac0832WR=0,VDac0832WR=1,VDac0832CS=1#define DACDat

52、aPin P2/P2口控制波形DAC/*RT1602_CONTROL*/sbit rs = P30;sbit rw = P31;sbit e = P32;sbit busy_1602 = P07;/*1602是否(sh fu)忙*/void lcd_busy()doe=1;P0=0 xff; rs=0; rw=1; e=0; e=0; e=1; while(busy_1602); /;/*1602寫一字節(jié)(z ji)*/void lcddr(uchar cmd)/寫數據(shj)到LCD rs=1; rw=0; P0=cmd; e=0; e=0; lcd_busy(); e=1;void lc

53、dir(uint dt)/寫指令到LCD rs=0; rw=0; P0=dt; e=0; e=0; lcd_busy(); e=1; /*1602初始化*/void lcdcsh(void) lcdir(0 x01); /清屏并光標(un bio)復位 lcdir(0 x38); / 設置顯示(xinsh)模式:8位2行5x7點陣 lcdir(0 x0f); / 顯示器開、光標(un bio)開、光標允許閃爍 lcdir(0 x06); / 文字不動,光標自動右移/*函數名稱:定時器0驅動初始化函數說明:輸入參數:返 回 值:其 它:*/void Timer_Drv_Init(void)TMO

54、D=0 x11;ET0 = 1 ;TR0 = 1 ;ET1 = 1 ;TR1 = 1 ;/*函數名稱:定時器0驅動中斷函數說明:輸入(shr)參數:返 回 值:其 它:定時(dn sh)把波形緩存里的數據輸出到DAC0832*/void Timer1Interrupt(void) interrupt 3static U8 DataInc;/TH1=OutDataF8 ;TL1=OutDataF&0 x00ff ;DataInc+;if(DataInc=50)/DataInc=0;DACDataPin=WaveBufferDataInc;/*函數名稱(mngchng):定時器0驅動中斷函數說明:

55、輸入參數:返 回 值:其 它:產生系統(tǒng)時鐘*/void Timer0Interrupt(void) interrupt 1static U8 DispartF;/TH0=T0_BEGIN 8 ;TL0=T0_BEGIN & 0 x00ff ;DispartF+;if(DispartF=10)/DispartF=0;SystemTimer10mS+;/10mS+ SystemTimer1mS+ ;/*函數(hnsh)名稱:顯示清除函數(hnsh)說明:輸入(shr)參數:返 回 值:其 它:*/void ClrPrint(void)U8 i;lcdir(LcdLine1Begin);/第一行的顯

56、示for(i=0;iUpPrintTiemr)/顯示(xinsh)250mS更新一次UpPrintTiemr=SystemTimer10mS;lcdir(lcdline1begin);/第一行的顯示for(i=0;i16;i+)lcddr(PrintBufferi);lcdir(lcdline2begin);/第二行的顯示for(i=0;i16;i+)lcddr(PrintBufferi+16);/*函數名稱:顯示處理函數說明:輸入參數:返 回 值:其 它:*/void PrintProcess_Pcs(void)U8 i;U8 PriDigit;/顯示位數U16 Temp;/PrinUpda

57、taFlag=1;if(PrinUpdataFlag)/顯示需要更新PrinUpdataFlag=0;ClrPrint();lcdir(LcdLine1Begin);/第一行的顯示(xinsh)if(WaveChoose=mRectangleWave)/方波for(i=0;i9;i+)if(AsciiJXBi!= )/PrintBufferi=AsciiSJBi;lcddr(AsciiJXBi);elsebreak;else if(WaveChoose=mTriangleWave)/三角(snjio)波for(i=0;i=10000)PriDigit=5;else if(WaveF=1000)

58、PriDigit=4;else if(WaveF=100)PriDigit=3;else if(WaveF=10)PriDigit=2;elsePriDigit=1;/PrintBuffer16+0=f;/PrintBuffer16+1=;lcdir(LcdLine2Begin);lcddr(f);lcddr(=);Temp=WaveF;for(i=PriDigit;i0;i-)/PrintBuffer16+1+i=(Temp%10)+0 x30;lcdir(LcdLine2Begin+1+i);lcddr(Temp%10)+0 x30);Temp/=10;/PrintBuffer16+2+P

59、riDigit=H;/PrintBuffer16+3+PriDigit=z;lcdir(LcdLine2Begin+2+PriDigit);lcddr(H);lcddr(z);/顯示(xinsh)幅值/PrintBuffer16+9=U;/PrintBuffer16+10=;lcdir(LcdLine2Begin+9);lcddr(U);lcddr(=);Temp=WaveV=KeyDeaTimer)KeyInPin=0 xff;if(KeyInPin=KeySave)/延時前后的按鍵IO被拉低的是一樣的,所以輸入按鍵有效KeyStep+;else/按鍵輸入無效KeyStep=0;break;

60、case 2:/等待按鍵彈起,并對按鍵編碼到值的轉換KeyInPin=0 xff;if(KeyInPin=0 xff)/按鍵(n jin)彈起KeyStep=0;switch(KeySave)/將按鍵IO的電平(din pn)情況轉為按鍵值case (0 x010):/1號按鍵(n jin)被按下KeyValue=1;break;case (0 x011):/2號按鍵被按下KeyValue=2;break;case (0 x012):/3號按鍵被按下KeyValue=3;break;case (0 x013):/4號按鍵被按下KeyValue=4;break;case (0 x014):/5號

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論