基于STC89C52的簡(jiǎn)易波形發(fā)生器_第1頁(yè)
基于STC89C52的簡(jiǎn)易波形發(fā)生器_第2頁(yè)
基于STC89C52的簡(jiǎn)易波形發(fā)生器_第3頁(yè)
基于STC89C52的簡(jiǎn)易波形發(fā)生器_第4頁(yè)
基于STC89C52的簡(jiǎn)易波形發(fā)生器_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、摘要本系統(tǒng)是基于STC89C52單片機(jī)利用DDS的合成原理的低頻信號(hào)發(fā)生器。采用STC89C52單片機(jī)作為控制核心,外圍采用數(shù)字/模擬轉(zhuǎn)換電路(DAC0832)、運(yùn)放電路(LM358)、按鍵等構(gòu)成整個(gè)系統(tǒng)。通過(guò)按鍵控制可產(chǎn)生方波、三角波、正弦波、鋸齒波并可以微調(diào)頻率大小。通過(guò)上位機(jī)可以通過(guò)PC可以選擇波形和波形的頻率。其設(shè)計(jì)簡(jiǎn)單、性能優(yōu)好,頻率的精度由DA和系統(tǒng)時(shí)鐘大小決定,所以很易的實(shí)現(xiàn)精度調(diào)整,系統(tǒng)的性?xún)r(jià)比高,可用于多種需要低頻信號(hào)的場(chǎng)所,具有一定的實(shí)用性。關(guān)鍵詞:STC89C52 ; DAC0832 ; LM358 ; DDS目錄摘要I關(guān)鍵詞I1設(shè)計(jì)任務(wù)與要求12.方案設(shè)計(jì)與論證12.1

2、系統(tǒng)信號(hào)發(fā)生的方案設(shè)計(jì)12.2系統(tǒng)控制芯片的方案設(shè)計(jì)13硬件系統(tǒng)模塊及理論分析23.1總體設(shè)計(jì)框架23.2最小系統(tǒng)模塊電路23.3DAC0832模塊電路33.4按鍵電路34系統(tǒng)軟件設(shè)計(jì)44.1 主流程圖54.2軟件模擬仿真64.3方波仿真圖64.4按鍵檢測(cè)原理7總結(jié)7參考文獻(xiàn)8附件9I 源程序9II 總電路圖17III總圖PCB18IV元器件清單181設(shè)計(jì)任務(wù)與要求 利用單片機(jī)組成一個(gè)多波信號(hào)發(fā)生器。 能輸出的波形為三角波、 鋸齒波、 方波、 正弦波。 輸出波形頻率 f=1100Hz、。 輸出波形頻率通過(guò) PC 機(jī)設(shè)置。2.方案設(shè)計(jì)與論證2.1系統(tǒng)信號(hào)發(fā)生的方案設(shè)計(jì) 方案一、通過(guò)專(zhuān)用DDS芯片

3、如AD9850作為信號(hào)發(fā)生器件,用專(zhuān)用芯片的特點(diǎn)是,產(chǎn)生的信號(hào)頻率范圍寬,可以產(chǎn)生很高的頻率,頻率的精度高。但是價(jià)格比較貴。方案二、通過(guò)產(chǎn)生PWM產(chǎn)生方波,通過(guò)低通濾波器變?yōu)檎也ǎ诩由掀渌鈬娐房僧a(chǎn)生三角波、鋸齒波、方波、正弦波??蓪?shí)現(xiàn)題目要求,這種設(shè)計(jì)價(jià)格便,但是外圍比較復(fù)雜,頻率不好控制。方案三、通過(guò)單片機(jī)外圍加上DA芯片代替專(zhuān)用的DDS芯片,同樣應(yīng)用DDS信號(hào)合成原理產(chǎn)生任意想要的信號(hào),這樣構(gòu)造的系統(tǒng)簡(jiǎn)單,用廉價(jià)的DAC0832就可產(chǎn)生滿足題目要求的低頻信號(hào)。結(jié)論:通過(guò)上述三個(gè)方案可以知道,用專(zhuān)用DDS芯片合成性能比較高,價(jià)格貴,用于本設(shè)計(jì)就大材小用,用PWM價(jià)格便宜,但是性能不好

4、,所以屬于中間的DA芯片是理想的選擇。2.2系統(tǒng)控制芯片的方案設(shè)計(jì)方案一、選用STM32作為控制芯片,STM32內(nèi)部資源豐富,時(shí)鐘速度快,是一塊性?xún)r(jià)比極高的芯片,用本系統(tǒng)會(huì)使得系統(tǒng)速度提升。盡管性?xún)r(jià)比高,還是比傳統(tǒng)51單片機(jī)要貴點(diǎn),控制指令多,相對(duì)于51單片機(jī)來(lái)說(shuō)程序要比較復(fù)雜。方案二、選用STC公司的51單片機(jī),STC89C52是對(duì)傳統(tǒng)51做了增強(qiáng),但是與傳統(tǒng)51是兼容的,所以指令簡(jiǎn)單易于操作,12MHZ的系統(tǒng)完全滿足題目涉及要求。結(jié)論:通過(guò)上述可以知道,STM32性?xún)r(jià)比高,性能強(qiáng)大,但是用本系統(tǒng)是大材小用,而STC89C52則完全能滿足題目要求而且價(jià)格比STM32要便宜,所以本設(shè)計(jì)選用ST

5、C89C52作為控制芯片。 3硬件系統(tǒng)模塊及理論分析3.1總體設(shè)計(jì)框架圖3.1總體系統(tǒng)框架是由按鍵、最小系統(tǒng)模塊、DAC0832、轉(zhuǎn)串口模塊組成,這樣就可以實(shí)現(xiàn)多函數(shù)輸出和PC機(jī)通信。按鍵是為了實(shí)現(xiàn)波形的切換和頻率的大小調(diào)節(jié),最小系統(tǒng)是系統(tǒng)的主控制模塊,是溝通按鍵、DAC0832模塊、PC機(jī)的主控模塊,是系統(tǒng)必不可少的模塊。轉(zhuǎn)串口模塊式為了實(shí)現(xiàn)單片機(jī)與PC的通信,PC可以通過(guò)上位機(jī)控制波形的選擇和頻率大小設(shè)置。3.2最小系統(tǒng)模塊電路圖3.2 圖3.2是STC89C52的最小系統(tǒng)圖,組成部分有時(shí)鐘電路和復(fù)位電路。實(shí)現(xiàn)的功能是控制DAC0832的模擬輸出量的大小和輸出的頻率,以產(chǎn)生方波、三角波、正

6、弦波、鋸齒波,并通過(guò)與轉(zhuǎn)串口電路的結(jié)合以實(shí)現(xiàn)與PC機(jī)之間的通信。3.3DAC0832模塊電路圖3.3上圖中DAC0832電路的接法是直通型接法,這種接法的最大特點(diǎn)就是只需要對(duì)DAC0832的數(shù)據(jù)口賦值就可以實(shí)現(xiàn)電壓的輸出,所以操作起來(lái)非常方便,而DAC0832輸出的并不是電壓,而是電流所以要在輸出端加上一個(gè)運(yùn)放實(shí)現(xiàn)電流到電壓的轉(zhuǎn)換。選用LM358的原因是它輸出端的電壓可以達(dá)到負(fù)電壓,這樣就可以實(shí)現(xiàn)單電源供電了。 3.4按鍵電路 圖3.4 按鍵是通過(guò)單片機(jī)的P0口進(jìn)行監(jiān)控,當(dāng)單片機(jī)檢查到有按鍵按下時(shí),單片機(jī)就會(huì)根據(jù)按鍵對(duì)DA輸出進(jìn)行相應(yīng)的改變,這樣就可以實(shí)現(xiàn)按鍵對(duì)輸出波形的切換和頻率的調(diào)節(jié)。3.

7、5轉(zhuǎn)串口電路圖3.5 轉(zhuǎn)串口用的芯片是CH340,CH340產(chǎn)家提供有兩種接法,一種是可以把PC機(jī)串口的電平轉(zhuǎn)變?yōu)閁SB電平,另外一種可以直接把單片機(jī)的電平轉(zhuǎn)換為USB電平,本設(shè)計(jì)選用的是第二種接法,因?yàn)檫@樣接就可以省去了MAX232把單片機(jī)電平轉(zhuǎn)換外PC機(jī)電平,這樣設(shè)計(jì)電路變得更加可靠穩(wěn)定了,同時(shí)也可以節(jié)省成本,同樣本電路也是需要時(shí)鐘電路讓CH340能正常工作。4系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件由主程序和產(chǎn)生波形的子程序組成,軟件設(shè)計(jì)主要是產(chǎn)生各種波形的子程序的編程,通過(guò)編程可得到各種波形。周期的改變可采用插入延時(shí)子程序的方法來(lái)實(shí)現(xiàn)。主程序和幾種常用波形子程序的流程圖如圖所示。4.1 主流程圖圖4.1由

8、圖4.1可以簡(jiǎn)單的知道,程序的大概思路是,判斷按鍵與上位機(jī)是否發(fā)送數(shù)據(jù)來(lái)覺(jué)得DA的輸出量,初始化的時(shí)候程序是寫(xiě)輸出頻率為200HZ的方波信號(hào)。4.2軟件模擬仿真圖4.2 鋸齒波仿真鋸齒波產(chǎn)生是通過(guò)P2口將00H送入寄存器A中,DAC0832輸出A中的內(nèi)容,讀取P2口的狀態(tài),取反后作為延時(shí)常數(shù),當(dāng)A中的內(nèi)容不為0FFH時(shí),A中的內(nèi)容加1,當(dāng)A中的內(nèi)容等于FFH返回開(kāi)始,從而輸出波形。鋸齒波程序void juchibo(void)for(num=0;num<256;num+) cs=0;DAC0832=num;cs=1;while(a=0);a=0; 4.3方波仿真圖 圖4.3方波仿真方波產(chǎn)

9、生是通過(guò)P2口將00H輸出給DAC0808,輸出對(duì)應(yīng)模擬量,然后讀取P2口的狀態(tài),取反后作為定時(shí)器延時(shí),延時(shí)時(shí)間到,將FFH輸出時(shí),同樣輸出對(duì)應(yīng)模擬量,再延時(shí),從而得到方波。方波程序如下:void fangbo(void) for(num=0;num<127;num+) cs=0;DAC0832=0XFF;cs=1;while(a=0);a=0;for(num=127;num>0;num-)cs=0;DAC0832=0X00;cs=1;while(a=0);a=0;4.4按鍵檢測(cè)原理void changbo(void) if(P32=0); delay(20); if(P32=0)

10、 flag+; if(flag>=4) flag=0; 總結(jié)通過(guò)設(shè)計(jì)簡(jiǎn)易的函數(shù)發(fā)生器,我學(xué)會(huì)了自己查資料,通過(guò)大量的資料結(jié)合,最終決定了現(xiàn)在所選用的方案,接下來(lái)就是運(yùn)用之前學(xué)習(xí)過(guò)的Protel99se畫(huà)板技術(shù),成功的畫(huà)出了電路圖。接著是電路的調(diào)試,這一個(gè)步驟是最難的,當(dāng)然遇到的挫折也是最多的,例如開(kāi)始的時(shí)候沒(méi)有對(duì)DAC0832深入了解造成了,電路設(shè)計(jì)沒(méi)錯(cuò)就是不能正常工作,最后慢慢的調(diào)節(jié),發(fā)現(xiàn)原來(lái)是自己所選用的參考電壓出問(wèn)題,本來(lái)應(yīng)該選用負(fù)電壓作為參考電壓,按照手冊(cè)提供的經(jīng)典電路才能得到一個(gè)正電壓,但是由于沒(méi)注意到這點(diǎn)所以畫(huà)了很多的時(shí)間。能夠把電路正常的調(diào)處來(lái)還要感謝同學(xué)對(duì)我的幫忙,因?yàn)樗?/p>

11、們做過(guò)這樣給我更加大的信心。調(diào)完了電路后接下來(lái)的是進(jìn)行寫(xiě)程序,開(kāi)始調(diào)式程序的時(shí)候有點(diǎn)亂,因?yàn)闆](méi)有畫(huà)完流程圖在調(diào),所以思路會(huì)比較混亂。不過(guò)后來(lái)通過(guò)參照網(wǎng)上的程序,終于實(shí)現(xiàn)了題目所要的功能。參考文獻(xiàn)1 周明德.微型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用M.北京:清華大學(xué)出版社,2002.341364.2 劉樂(lè)善.微型計(jì)算機(jī)接口技術(shù)及應(yīng)用M.北京:北京航空航天大學(xué)出版社,2001.258264.3 童詩(shī)白.模擬電路技術(shù)基礎(chǔ)M.北京:高等教育出版社,2000.171202.4 杜華.任意波形發(fā)生器及應(yīng)用J.國(guó)外電子測(cè)量技術(shù),2005.1:3840.5 張友德.單片微型機(jī)原理、應(yīng)用與實(shí)踐M.上海:復(fù)旦大學(xué)出版社,2004

12、.4044. 6 程朗.基于8051單片機(jī)的雙通道波形發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)J.計(jì)算機(jī)工程與應(yīng)用,2004.8:100103.7 張永瑞.電子測(cè)量技術(shù)基礎(chǔ)M.西安:西安電子科技大學(xué)出版社,2006.61101.8 李葉紫. MCS-51單片機(jī)應(yīng)用教程M.北京:清華大學(xué)出版社,2004.232238.附件I 源程序/*時(shí)間:2013年6月23日15:33:43硬件條件:stc89c52rc單片機(jī)上項(xiàng)目:函數(shù)發(fā)生器作者:龍騰躍準(zhǔn)備知識(shí):通過(guò)DAC0832實(shí)現(xiàn)信號(hào)的發(fā)生,DAC0832選用的是直通型輸出方式修改:*/#include <REGX52.H>#include"Delay

13、_time.h"#include"Uart.h"#include<intrins.h>/#include"boxing.h"sbit CS = P37;sbit up = P00;sbit down = P01;bit flag=0,flag1=0,flag2=1,flag3=0,flag5=0,flag6=1,cont=1;unsigned int num4=170,num3=188,num2=0,num1=0;unsigned char mark=0;unsigned char k=1;unsigned char N=0x00;

14、unsigned int tmp;unsigned char i=0;unsigned int t=2;unsigned char table4;void Triangle(); /輸出三角波void Square();/方波void sin(); /正弦波void Sawtooth(); /鋸齒波 void change();unsigned char code sin_tab = /正弦波輸出表 0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE, 0xB1,0xB4,0xB7,0x

15、BA,0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0xD4,0xD6,0xD8, 0xDA,0xDD,0xDF,0xE1,0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5, 0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7

16、,0xF6, 0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEA,0xE9,0xE7,0xE5,0xE3,0xE1,0xDF,0xDD,0xDA, 0xD8,0xD6,0xD4,0xD1,0xCF,0xCC,0xCA,0xC7,0xC5,0xC2,0xBF,0xBC,0xBA,0xB7,0xB4,0xB1, 0xAE,0xAB,0xA8,0xA5,0xA2,0x9F,0x9C,0x99,0x96,0x93,0x90,0x8D,0x89,0x86,0x83,0x80, 0x80,0x7C,0x79,0x76,0x72,0x6F,0x6C,0x69,0x66,0x63,

17、0x60,0x5D,0x5A,0x57,0x55,0x51, 0x4E,0x4C,0x48,0x45,0x43,0x40,0x3D,0x3A,0x38,0x35,0x33,0x30,0x2E,0x2B,0x29,0x27, 0x25,0x22,0x20,0x1E,0x1C,0x1A,0x18,0x16,0x15,0x13,0x11,0x10,0x0E,0x0D,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x

18、00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0A,0x0B,0x0D,0x0E,0x10,0x11,0x13,0x15,0x16,0x18,0x1A,0x1C,0x1E,0x20,0x22,0x25,0x27,0x29,0x2B,0x2E,0x30,0x33,0x35,0x38,0x3A,0x3D,0x40,0x43,0x45,0x48,0x4C,0x4E,0x51,0x55,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x72,0x76,0x79,0x7C,0x7E;void m

19、ain()Uart_init();Delaynms(1000);send_string("作者:龍騰躍 ");Delaynms(10);Enter();send_string("作品:簡(jiǎn)易信號(hào)發(fā)");Delaynms(10);send_string("生器");Enter();send_string("初始波形為200HZ");Delaynms(10);send_string("方波");CS=0;up=1;down=1;while(1) if(flag) Triangle(); if(flag

20、1) Sawtooth(); if(flag2) Square(); if(flag3) sin(); change(); if(flag5&&flag6) if(mark=4&&cont) num4=170-t;flag=0;flag1=0;flag2=0;flag3=1;send_data(num4);if(mark=3&&cont) num3=(200.0/t)*188;flag=0;flag1=0;flag2=1;flag3=0;send_string("頻率:"); send_data(t); send_string

21、("HZ");if(mark=2&&cont) num2=t;flag=0;flag1=1;flag2=0;flag3=0; send_data(num2); if(mark=1&&cont) num1=5-t/10; flag=1;flag1=0;flag2=0;flag3=0; send_data(t);flag5=0; void Uart(void) interrupt 4 using 1/串口中斷子函數(shù)if(1=RI) /必須進(jìn)行判斷才可以實(shí)現(xiàn)中斷的對(duì)應(yīng)響應(yīng)RI = 0;tablei=SBUF;i+;if(i=4) t=(table2

22、-48)*100+(table3-48)*10+(table0-48);mark=table1-48;flag5=1;TR0=0;i=0;flag6=flag6;cont=1;/* 輸出三角波*/void Triangle() unsigned char l;unsigned int j; for(l=0;l<255;l=l+k) P2=l;while(j<num1)j+;j=0; for(l=255;l>1;l=l-k) while(j<num1)j+;j=0;P2=l; /* 輸出方波函數(shù)*/void Square()unsigned int j=0; N=N; P2=N; while(j<num3)j+;j=0;/* 輸

溫馨提示

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

評(píng)論

0/150

提交評(píng)論