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].哈爾濱:哈
爾濱工業大學出版社,1997.53-61.
微控制器8051設計簡易波形發生器,要求能產生正弦波,方波,三角波,通過鍵盤可改變輸出訊號的頻率和幅度 50
2樓:
基於51微控制器的訊號發生器-完整電路、程式免費的。
可以產生弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的頻率(最大790hz)和幅度在一定範圍內可任意改變。波形和頻率的改變通過軟體控制,幅度的改變通過硬體實現。這是本人課程設計得到優秀的作品,有完整的電路圖,程式。
不是光**那種。
如果你覺得790hz的頻率不夠的話,可以用fpga+ad,頻率幾十m都沒問題,也不是很難。多看看資料,
3樓:q號
這個網上資料很多的,你可以參考下的,我前幾天也做了個,proteus**的,程式如下,希望能幫到你的,有問題可以交流下的
#include
unsigned char i,sqar_num=128; //最大值100,預設值50
unsigned char cho=0; //0:正弦波。1:方波。2:三角波。3:鋸齒波。
unsigned char num=0;
unsigned char time0_h=0xff,time0_l=0xdc; //定時器0的初值設定;全域性變數.對應正弦波,鋸齒波50hz
sbit chg= p1^0;
sbit freq_u=p1^1;
sbit freq_d=p1^2;
sbit duty_u=p1^3;
sbit duty_d=p1^4;
sbit cs =p3^7;
bit flag=0;
unsigned int freq=50;//初始化頻率,30hz
unsigned char flag1;
sbit rs=p1^5;
sbit lcdcs=p1^7;
sbit cd=p3^0;
unsigned char tempbuffer[7];
unsigned char value1=;
void delay(unsigned int ms)
//波形發生函式
void sint(void)
}/* else if(flag)
} */
}void square(void)
else
}void ********(void)
void stw(void)
}//1602顯示開始
void write_command(unsigned char command)
void write_data(unsigned char data0)
void init_1602()
//1602顯示結束
void temp_to_str()
void main()
tr0=1;
while(1)}
微控制器8051設計簡易波形發生器,要求能產生正弦波,方波,三角波,通過鍵盤可改變輸出訊號的頻率和幅度
基於51微控制器的訊號發生器 完整電路 程式免費的。可以產生弦波 方波 三角波 三角波 梯形波及其他任意波形,波形的頻率 最大790hz 和幅度在一定範圍內可任意改變。波形和頻率的改變通過軟體控制,幅度的改變通過硬體實現。這是本人課程設計得到優秀的作品,有完整的電路圖,程式。不是光 那種。如果你覺得...
51微控制器跑馬燈程式,51微控制器設計跑馬燈的程式用(c語言)編寫
不好意思,延時用了樓上的。keil下編譯ok。假設p1接燈。org 00h sjmp start org 30h start mov a 00 setb c mov r0,9 從左到右 loop1 rlc a mov p1,a acall delay djnz r0,loop1 從右到左 mov r...
求基於微控制器AT89C51的溫度檢測報警與控制系統電路圖
我把這個資料發你郵箱了!微控制器溫控系統設計 微控制器溫控系統設計 摘要本設計是以一個保溫箱為控制物件,以at89c51為控制系統核心,通過微控制器系統設計實現對保溫箱溫度的顯示和控制功能。本溫度控制系統是一個閉環反饋調節系統,由溫度感測器ad590對保溫箱溫度進行檢測,經過調理電路得到合適的電壓訊...