1樓:匿名使用者
波形發生器是一種常用的訊號源,廣泛地應用於電子電路、自動控制系統和教學實驗等領域。本次課程設計使用的at89s51 微控制器構成的發生器可產生鋸齒波、三角波、正弦波等多種波形,波形的週期可以用程式改變,並可根據需要選擇單極性輸出或雙極性輸出,具有線路簡單、結構緊湊等優點。在本設計的基礎上,加上按鈕控制和led顯示器,則可通過按鈕設定所需要的波形頻率,並在led上顯示頻率、幅值電壓,波形可用示波器顯示。
二、系統設計
波形發生器原理方框圖如下所示。波形的產生是通過at89s51 執行某一波形發生程式,向d/a轉換器的輸入端按一定的規律發生資料,從而在d/a轉換電路的輸出端得到相應的電壓波形。在at89s51的p2口接5個按扭,通過軟體程式設計來選擇各種波形、幅值電壓和頻率,另有3個p2口管腳接tec6122晶片,以驅動數碼管顯示電壓幅值和頻率,每種波形對應一個按鈕。
此方案的有點是電路原理比較簡單,實現起來比較容易。缺點是,取樣頻率由微控制器內部產生故使整個系統的頻率降低。
1、波形發生器技術指標
1)波形:方波、正弦波、鋸齒波;
2)幅值電壓:1v、2v、3v、4v、5v;
3)頻率:10hz、20hz、50hz、100hz、200hz、500hz、1khz;
2、操作設計
1)上電後,系統初始化,數碼顯示6個『-』,等待輸入設定命令。
2)按鈕分別控制「幅值」、「頻率」、「方波」、「正弦波」、「鋸齒波」。
3)「幅值「鍵初始值是1v,隨後再次按下依次增長1v,到達5v後在按就回到1v。
4)「頻率「鍵初始值是10hz,隨後在按下依次為20hz、50hz、100hz、200hz、500hz、1000hz迴圈。
三、硬體設計
本系統由微控制器、顯示介面電路,波形轉換(d/a)電路和電源等四部分構成。電路圖2附在後
1、微控制器電路
功能:形成掃描碼,鍵值識別、鍵處理、引數設定;形成顯示段碼;產生定時中斷;形成波形的數字編碼,並輸出到d/a介面電路和顯示驅動電路。
at89s51外接12m晶振作為時脈頻率。並採用電源復位設計。復位電路採用上電覆位,它的工作原理是,通電時,電容兩端相當於短路,於是rst引腳上為高電平,然後電源通過對電容充電。
rst端電壓慢慢下降,降到一定程式,即為低電平,微控制器開始工作。
at89s51的p2口作為功能按鈕和tec6122的介面。p1口做為d/a轉換晶片0832的介面。用定時/計數器作為中斷源。
不同的頻率值對應不同的定時初值,允許定時器溢位中斷。定時器中斷的特殊功能暫存器設定如下:
定時控制暫存器tcon=20h;
工作方式選擇暫存器tmod=01h;
中斷允許控制暫存器ie=82h。
2、顯示電路
功能:驅動6位數碼管顯示,掃描按鈕。
由整合驅動晶片tec6122、6位共陰極數碼管和5個按鈕組成。當某一按鈕按下時,掃描程式掃描到之後,通過p2口將數字訊號傳送到 tec6122晶片。tec6122是一款數字整合晶片。
它的外接電壓也是+5v,並且由於數碼管的載壓較小,為了保護數碼管,必須在兩者間接電阻,大約是560歐。
掃描利用軟體程式實現,當某一按鍵按下時,掃描程式立即檢測到,隨後呼叫子程式,執行相應的功能。
3、d/a電路
功能:將波形樣值的編碼轉換成模擬值,完成雙極性的波形輸出。
由一片0832和兩塊lm358運放組成。dac0832是一個具有兩個輸入資料暫存器的8位dac。目前生產的dac晶片分為兩類,一類晶片內部設定有資料暫存器,不需要外加電路就可以直接與微型計算機介面。
另一類晶片內部沒有資料暫存器,輸出訊號隨資料輸入線的狀態變化而變化,因此不能直接與微型計算機介面,必須通過並行介面與微型計算機介面。dac0832是具有20條引線的雙列直插式cmos器件,它內部具有兩級資料暫存器,完成8位電流d/a轉換,故不需要外加電路。0832是電流輸出型,示波器上顯示波形,通常需要電壓訊號,電流訊號到電壓訊號的轉換可以由運算放大器lm358實現,用兩片lm358可以實現雙極性輸出。
微控制器向0832傳送數字編碼,產生不同的輸出。先利用取樣定理對各波形進行抽樣,然後把各取樣值進行編碼,的到的數字量存入各個波形表,執行程式時通過查表方法依次取出,經過d/a轉換後輸出就可以得到波形。假如n個點構成波形的一個週期,則0832輸出n個樣值點後,樣值點形成運動軌跡,即一個週期。
重複輸出n個點,成為第二個週期。利用微控制器的晶振控制輸出週期的速度,也就是控制了輸出的波形的頻率。這樣就控制了輸出的波形及其幅值和頻率。
四、 軟體設計
主程式和子程式都存放在at89s51微控制器中。
主程式的功能是:開機以後負責查鍵,即做鍵盤掃描及顯示工作,然後根據使用者所按的鍵轉到相應的子程式進行處理,主程式框圖如圖1所示。
子程式的功能有:幅值輸入處理、頻率輸入處理、正弦波輸出、鋸齒波輸出、方波輸出、顯示等。
下面是程式
include
#define uchar unsigned char
#define uint unsigned int
sbit lcp=p2^2;
sbit scp=p2^1;
sbit si=p2^0;
sbit s1=p2^3;
sbit s2=p2^4;
sbit s3=p2^5;
sbit s4=p2^6;
sbit s5=p2^7;
sbit da0832=p3^3;
sbit da0832_on=p3^2;
uchar fun=0,b=0,c=0,d=0,tl,th;
uchar code tab[10]=;
uchar code tosin[256]=;
void display(unsigned char command)
else
command<<=1;
scp=1;
} lcp=1;
} void key1(void)
void key2(void)
void key3(void)
void key4(void)
void key5(void)
void judge(void)
p1=0x0f;
keym=p1;
if(keym==0x0f)return;
p1=0x0f;
line=p1;
p1=0xf0;
row=p1;
line=line+row; /*存放特徵鍵值*/
if(line==0xde)key1();
if(line==0x7e)key2();
if(line==0xbd)key3();
if(line==0x7d)key4();
} void time0_int(void) interrupt 1 //中斷服務程式
else if(fun==2) //鋸齒波
else if(fun==3) // 方波
th0=th;
tl0=tl;
tr0=1;
} void main(void) }
五、心得體會
開始的時候由於沒有經驗,不知如何下手,所以就去圖書管找了一些書看,儘管有許多的設計方案,可是總感覺自己還是有許多的東西弄不太清楚,於是就請教同學。他常做一些設計,有一些經驗。經過他的解釋分析各方案之後,決定用查表的方法來做。
這樣可以降低一些硬體設計的難度,初次設計應切合自己的水平。用8031需要擴充套件rom,這樣還要進行儲存器擴充套件。而且現在8031實際中已經基本上不再使用,實際用的at89s51晶片有rom,這樣把經過取樣得到的數值製成表,利用查表來做就簡單了。
我認為程式應該不大,片內rom應該夠用的。用led顯示頻率和幅值,現有整合的介面驅動晶片,波形可通過示波器進行顯示,微控制器接上d/a轉換晶片即可,這樣硬體很快就搭好了。
我以為這些做好了,構思也有了,寫程式應該是相對容易的。誰知道,寫起程式來,才想到功能鍵要有掃描程式才行呀,我真的感到很難。那時真的有點想放棄?
於是就去請教了老師,老師幫忙分析了一下,自己又查閱了一些資料,終於明白了掃描程式怎麼寫。
於是在自己的努力下,程式很快就寫好了。這次是我的第一個設計器件,儘管經歷了不少的艱辛,但給我積累了一點設計的經驗,最後也有點小小的成就感。後面的路還很長,我還的努力!
參考文獻
[1] 童詩白,華成英.類比電子技術基礎〔m〕.北京:高等教育出版社,2003.345-362
[2] 潘永雄,沙河,劉向陽.電子線路cad實用教程〔m〕.西安:西安電子科技大學出版社,2001.13-118.
[3] 張毅剛,彭喜源,譚曉昀,曲春波.mcs-51微控制器應用設計[m].哈爾濱:哈
運算放大器的電源問題,運算放大器為什麼會有雙電源?
運算放大器單電源使用時,最高電壓是雙電源使用時最高電壓的兩倍。但是如果輸入訊號電壓範圍在1v 45v,那麼電源電壓不但不能小於45v,還必須高於此才行,因為tle2142和所有高電壓的運放都不是滿電源幅度輸出的,它的最輸出高電壓比電源電壓要低1v 1.2v,最低輸出電壓比電源地要高0.2v 0.5v...
運算放大器能不能放大交流電,運算放大器直流放大和交流放大的區別
滿意請採納喲 要看交流電的電壓和頻率範圍,運算放大器可以直接放大的交流訊號範圍很小,一般零點零幾個伏特到幾個伏特,頻率在幾十khz或者更低,效能好的運放,頻率範圍可以稍微再大一些。一般意義上的交流電 220v,50hz 是絕對不能用運放放大的,一碰就燒,需要有專用的升壓變壓器或者升壓電路來完成電壓的...
什麼是運算放大器,運算放大器的作用和用途是什麼?
新能源汽車電機控制器電子電路基礎。運算放大器的作用和用途是什麼?電路中的運算放大器,工作原理是怎樣的?今天算長見識了。什麼是運算放大器,在電路板中起到什麼作用?看完長見識了!對所需的訊號進行放大。什麼叫運算放大器 運算放大器是由什麼組成?組成 通用型整合運放由輸入級 中間級 輸出級和偏置電路等四個部...