基於51微控制器的訊號發生器 完整電路 程式

2022-10-08 02:06:02 字數 4867 閱讀 8330

摘要本文以stc89c51微控制器為核心設計了乙個低頻函式訊號發生器。訊號發生器採用數字波形合成技術,通過硬體電路和軟體程式相結合,可輸出自定義波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的頻率和幅度在一定範圍內可任意改變。波形和頻率的改變通過軟體控制,幅度的改變通過硬體實現。

介紹了波形的生成原理、硬體電路和軟體部分的設計原理。本系統可以產生最高頻率798.6hz的波形。

該訊號發生器具有體積小、**低、效能穩定、功能齊全的優點。

關鍵詞:低頻訊號發生器;微控制器;d /a轉換;

1設計選題及任務

設計題目:基於微控制器的訊號發生器的設計與實現

任務與要求:

設計乙個由微控制器控制的訊號發生器。運用微控制器系統控制產生多種波形,這些波形包括方波、三角波、鋸齒波、正弦波等。訊號發生器所產生的波形的頻率、幅度均可調節。

並可通過軟體任意改變訊號的波形。

基本要求:

1. 產生三種以上波形。如正弦波、三角波、矩形波等。

2.最大頻率不低於 500hz。並且頻率可按一定規律調節,如週期按1t,2t,3t,4t或1t,2t,4t,8t變化。

3.幅度可調,峰峰值在0——5v之間變化。

擴充套件要求:產生更多的頻率和波形。

2系統概述

2.1方案論證和比較

2.1.1總體方案:

方案一:採用模擬電路搭建函式訊號發生器,它可以同時產生方波、三角波、正弦波。但是這種模組產生的不能產生任意的波形(例如梯形波),並且頻率調節很不方便。

方案二:採用鎖相式頻率合成器,利用鎖相環,將壓控振盪器(vco)的輸出頻率鎖定在所需頻率上,該方案效能良好,但難以達到輸出頻率覆蓋係數的要求,且電路複雜。

方案三:使用整合訊號發生器發生晶元,例如ad9854,它可以生成最高幾十mhz的波形。但是該方案也不能產生任意波形(例如梯形波),並且**昂貴。

方案四:採用at89c51微控制器和dac0832數模轉換器生成波形,加上乙個低通濾波器,生成的波形比較純淨。它的特點是可產生任意波形,頻率容易調節,頻率能達到設計的500hz以上。

效能高,在低頻範圍內穩定性好、操作方便、體積小、耗電少。

經比較,方案四既可滿足課程設計的基本要求又能充分發揮其優勢,電路簡單,易控制,價效比高,所以採用該方案.

2.1.2改變幅度方案:

方案一:可以將送給da的數字量乘以乙個係數,這樣就可以改變da輸出電流的幅度,從而改變輸出電壓;但是這樣做有很嚴重的問題,微控制器在做乘法運算時需要很長的時間,這樣的話輸出波形的頻率就會很低,達不到至少500hz的要求;

並且該方案的輸出電壓做不到連續可調,當da的輸入數字量比較小時,輸出的波形失真就會比較嚴重。

方案二:將輸出電壓通過乙個運算放大器的放大。這樣還有個優點是幅度連續可調。

經比較,方案二既可滿足課程設計的基本要求,並且電路也挺簡單。

2.2工作原理

數碼訊號可以通過數/模轉換器轉換成模擬訊號,因此可通過產生數碼訊號再轉換成模擬訊號的方法來獲得所需要的波形。89c51微控制器本身就是乙個完整的微型計算機,具有組成微型計算機的各部分部件:**處理器cpu、隨機訪問儲存器ram、唯讀儲存器rom、i/o介面電路、定時器/計數器以及序列通訊介面等,只要將89c51再配置鍵盤及、數模轉換及波形輸出、放大電路等部分,即可構成所需的波形發生器,其訊號發生器構成系統框圖如下圖所示。

系統框圖

89c51是整個波形發生器的核心部分,通過程式的編寫和執行,產生各種各樣的訊號,並從鍵盤接收資料,進行各種功能的轉換和訊號幅度的調節。當數碼訊號電路到達轉換電路,將其轉換成模擬訊號也就是所需要的輸出波形。

波形rom表是將訊號乙個週期等間距地分離成64個點,儲存在微控制器得ron內。具體rom表是通過matlab生成的,例如正弦表,matlab生成的程式如下:

x=0:2*pi/64:2*pi; y=round(sin(x)*127)+128

3單元電路設計與分析

3.1.1主控電路

設計中主要採用stc89c51型微控制器,它具有如下優點:(1)擁有完善的外部擴充套件匯流排,通過這些匯流排可方便地擴充套件外圍單元、外圍介面等。(2)該微控制器內部擁有4k位元組的flash rom程式儲存器空間和節的ram資料儲存空間,完全可以滿足程式的要求。

由於該晶元可電擦寫,故可重複使用。如果更改程式內容,可將晶元拿下重新燒寫。(3)該微控制器與工業標準的mcs-51型機的指令集和輸出引腳相容。

中斷系統是使處理器具有對外界非同步事件的處理能力而設定的。當**處理器cpu正在

處理某件事的時候外界發生了緊急事件,要求cpu暫停當前的工作,轉而去處理這個緊急事件。

在波形發生器中,用兩個開光直接與外部中斷0和外部中斷1的管腳相連,其中s1開光用來改變波形,s2開光用來改變頻率。在程式主函式中,我們寫了個死迴圈一直輸出乙個預設的波形,當s1或s2按下又抬起時,程式會暫時跳出死迴圈,進入中斷處理程式,從而對波形和頻率進行改變。

時鐘電路。由於頻率較大時,三角波、正弦波、方波等波中每一點延時時間為幾微秒,故延時時間還要加上指令時間即可得到指定頻率的波形,該電路用11.0592mhz晶振。

主控電路圖

3.1.2 數/模轉換電路

由於微控制器產生的是數碼訊號,要想得到所需要的波形,就要把數碼訊號轉換成模擬訊號,所以該文選用**低廉、介面簡單、轉換控制容易並具有8位解析度的數模轉換器dac0832。dac0832主要由8位輸入暫存器、8位dac暫存器、8位d/a轉換器以及輸入控制電路四部分組成。但實際上,dac0832輸出的電量也不是真正能連續可調,而是以其絕對解析度為單位增減,是準模擬量的輸出。

dac0832是電流型輸出,在應用時外接運放使之成為電壓型輸出。

根據對dac0832的資料鎖存器和dac暫存器的不同的控制方式,dac0832有三種工作方式:直通方式、單緩衝方式和雙緩衝方式。本設計選用直通方式。

dac0832的資料口和微控制器的p0口相連。

csda:片選訊號輸入線(選通資料鎖存器),低電平有效;

wr:資料鎖存器寫選通輸入線,負脈衝(脈寬應大於500ns)有效。由ile、cs、wr1的邏輯組合產生le1,當le1為高電平時,資料鎖存器狀態隨輸入資料線變換,le1的負跳變時將輸入資料鎖存;

數模轉換電路

3.1.3運算放大電路和低通濾波電路

lm324的5管腳與dac0832的(iout2)12管腳相連,lm324的6管腳與dac0832的(iout1)11管腳相連,lm324的7管腳與dac0832的ref(9)管腳相連.

第一級運算放大器的作用是將dac0832輸出的電流訊號轉化為電壓訊號v1,第二級運算放大器的作用是將v1通過反向放大電路-(r2/r1)倍。

題目要求輸出的電壓在0-5v可調,而v1的電壓大約是5v,所以r1選擇5k的電阻,r2選擇10k的電位器,這樣最大的輸出電壓為5*(10/2)=10,最小電壓為0,可以實現題目要求的0-5v。

在第二個運算放大器的輸出端連了乙個低通濾波器。如果不加低通濾波器,也能夠生成波形,但是產生的訊號中毛刺很多,加乙個低通濾波器不僅起到的濾波的作用,還起到了平滑的作用。低通濾波器的截止頻率f=1/(2*pi*r3*c6),這裡我們選擇r3 為100歐姆電阻,c6為104電容,截止頻率f=16khz。

實驗表明,此時的輸出波形效果不錯。

3.1.4 串列埠通訊電路

通用非同步收發器(uart)是一種序列介面,一般微處理器中都包含這種外設介面。非同步序列介面提供了一種簡單的途徑,使兩個器件無需共享同乙個時鐘訊號就能進行通訊。如果再加入乙個合適的電平轉換器max232,串列埠就能能用在rs232和rs485等網路中實現通訊,或者與計算機的com埠連線。

串列埠只需兩根訊號線(rx和tx)即可實現,而且只要兩端器件都採用同樣的位格式和波特率,那麼它們無需其它任何對方的資訊就可以成功傳輸資料。

串列埠通訊電路圖

3.2系統軟體設計

軟體設計上,根據功能分了幾個模組程式設計。模組主要有:主程式模組、外部中斷0模組,外部中斷1模組。

主程式:

主程式先是進行一些初始化的工作,然後根據波形標誌a,b,c,d,e的值進入相應的while 迴圈。這樣寫的好處是輸出的波形頻率可以790多hz。在while迴圈中,微控制器根據位址標誌位不停低查表,然後把查得的值賦給dac0832的資料口,然後位址標誌位加一,並判斷位址標誌位是否等於64,如果是就置0再往下執行,如果不是直接往下執行。

然後根據頻率標誌位進行相應的延時。

主程式流程圖

中斷服務程式:

本程式中兩個外部中斷分別起到了控制波形和頻率的作用。在程式中還加入了消抖部分。

4安裝除錯及測量資料分析

4.1除錯過程;

1. 不通電,用萬用表根據電路圖仔細檢查各線路連線是否正常。

2. 首先是除錯微控制器部分,da和運算放大器晶元不接。用stc_isp_v483軟體通過串列埠下程式。看是否可以正常下程式。

3.當可以正常下程式時,給51微控制器下乙個讓所有i/0口一會兒輸入0,延時,再輸出1,以此類推。用萬用表測量各i/o口得電壓是不是一會兒高,一會兒低。

4.安上da和運算放大器晶元,給微控制器下乙個輸出正弦波的測試程式,通過示波器看輸出是否正常。

5. 給微控制器下乙個完整的程式,分別按下s1,看波形是否改變。按下s2,看頻率是否改變。

4.2頻率的測量資料:

單位:hz

4.3出現的問題與解決的方法:

1.除錯微控制器的串列埠時,發現不能正常的下程式。我想可能是微控制器壞了借了一塊學習板測試了一下微控制器晶元,發現可以正常**。

這說明很可能是max232的電路出了問題。我仔細檢視了電路圖,又上網查了下其他的max232的電路圖,發現我的電路圖和別人的不一樣。我是按照郭天翔的那本《新概念51微控制器c語言教程入門、提高、開發、拓展全》第130頁的串列埠電路畫的圖,電路圖中max232的tiou1接串列埠的第3腳。

而其他書上有些電路圖卻是max232的tiou1接到了串列埠的第2腳。於是我將max232的tiou1接串列埠的第2腳,再下程式,終於可以正常**了。

2.剛開始寫的測試程式輸出的波形失真很大。我想可能是波形的rom表裡的資料值過小,導致da輸出的誤差很大。因而臥將波形的rom表裡的資料值調大,在測試時發現波形變得好多了。

微控制器課程設計訊號發生器的設計

摘要隨著資訊科技的高速發展,微控制器在生活以及工業生產中擔任著越來越重要的角色,因而掌握好微控制器的知識對我們資訊專業的學生來說非常重要。本文介紹一種用at89c52微控制器接乙個數模轉換器構成的微控制器波形發生器,可產生較清晰的方波 三角波 鋸齒波和正弦波4種波形訊號,用示波器可以顯示輸出的波形,...

基於CPLD和微控制器的任意波形發生器設計

電子產品世界 西北工業大學航海學院任緒科趙俊渭周明 核心器件 at89c52 74hc163 引言 在電子工程設計與測試中,常常需要一些複雜的 具有特殊要求的訊號,要求其波形可任意產生,頻率方便可調。通常的訊號產生器難以滿足要求,市場上 的任意訊號產生器 昂貴。結合實際需要,我們設計了一種任意波形發...

基於微控制器的函式訊號發生器的設計與製作

第一章計算機基礎知識及mcs 51微控制器硬體結構1.1 數制與編碼 在計算機中,任何命令和資訊都是以二進位制資料的形式儲存的。本節將講解常用的十進位制 二進位制 十六進製制的含義及相互轉換的方法。1.1.1 二進位制數 二進位制數只有兩個數字符號 0和1。計數時按 逢二進一 的原則進行計數。在計算...