低頻信號發(fā)生器_第1頁
低頻信號發(fā)生器_第2頁
低頻信號發(fā)生器_第3頁
低頻信號發(fā)生器_第4頁
低頻信號發(fā)生器_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機課程設計說明書第頁共20頁單片機課程設計說明書目錄1 引言 12設計要求 12.1課程設計目的 12.2課程設計內(nèi)容和要求 12.3設計工作任務及工作量的要求 13方案設計 23.1設計原理 24電路器件介紹 24.1單片機簡介 24.2DAC0832簡介 34.3LM358的介紹 35電路設計及原理分析 45.1單片機引腳分配 45.2時鐘電路 45.3復位電路 45.4鍵盤接口電路 55.5數(shù)模轉(zhuǎn)換電路 66系統(tǒng)軟件設計 66.1正弦波的產(chǎn)生 66.2三角波的產(chǎn)生 76.3程序流程圖 77電路仿真及結(jié)果分析 87.1仿真軟件的介紹 87.2仿真電路及其仿真結(jié)果 88實物圖及其輸出波形 99課程設計體會 11參考文獻 12附錄A:主電路圖 13附錄B:主程序 14引言信號發(fā)生器是一種經(jīng)常使用的設備,本次實現(xiàn)利用單片機STC89C51和8位D/A轉(zhuǎn)換芯片DAC0832共同實現(xiàn)三角波、正弦波這兩種常用波形的發(fā)生。根據(jù)設計的要求,對波形的頻率進行程序的編寫,并將所寫程序裝入單片機的程序存儲器中。在程序運行中,當接收到來自外界的命令,需要輸出某種波形時再調(diào)用相應的中斷服務子程序和波形發(fā)生程序,經(jīng)電路的數(shù)/模轉(zhuǎn)換器和運算放大器處理后,從信號發(fā)生器的輸出端口輸出,鍵盤可以實現(xiàn)對兩種波形的切換。2設計要求2.1課程設計目的本設計包括確定控制任務、系統(tǒng)總體方案設計、硬件系統(tǒng)設計、軟件程序的設計等,以便使學生掌握有關單片機控制的設計思想和設計方法。為學生今后從事單片機控制系統(tǒng)開發(fā)工作打下基礎。學習proteus仿真軟件實現(xiàn)電路的仿真。2.2課程設計內(nèi)容和要求本課程設計的基本要求是使學生全面掌握單片機控制系統(tǒng)設計的基本理論,熟悉掌握單片機的編程方法,用89C52系列單片機實現(xiàn)能輸出0.1~50Hz的正弦波、三角波信號的低頻信號發(fā)生器。其中正弦波、三角波信號可以用按鍵選擇輸出。要求用單片機作為信號數(shù)據(jù)產(chǎn)生源,用中斷查表法完成波形數(shù)據(jù)的輸出,再用DA轉(zhuǎn)換器輸出規(guī)定的波形信號。2.3設計工作任務及工作量的要求1.根據(jù)題目要求的指標,通過查閱有關資料,確定系統(tǒng)設計方案,并設計其硬件電路圖。2.畫出電路原理圖,分析主要模塊的功能及他們之間的數(shù)據(jù)傳輸和控制關系。3.用Proteus軟件繪制硬件電路圖并仿真。4.軟件設計包括流程圖、用匯編語言或C語言對軟件進行編譯,并能通過調(diào)試。3方案設計利用單片機構(gòu)造低頻信號發(fā)生器,可產(chǎn)生正弦波,三角波波形,再通過D/A轉(zhuǎn)換器DAC0832把數(shù)字信號轉(zhuǎn)變?yōu)槟M信號,經(jīng)LM358放大輸出到示波器。3.1設計原理該信號發(fā)生器原理框圖如圖3-1,總體原理為:利用STC89C51單片機構(gòu)造低頻信號發(fā)生器,可產(chǎn)生正弦波,三角波波形,通過C語言對單片機的編程即可產(chǎn)生相應的波形信號,并可以通過鍵盤進行各種功能的轉(zhuǎn)換和信號頻率的控制,當輸出的數(shù)字信號通過數(shù)模轉(zhuǎn)換成模擬信號也就得到所需要的信號波形,通過運算放大器的放大輸出波形。STC89C51STC89C51單片機DAC0832復位鍵鍵盤運放圖3-1信號發(fā)生器原理框圖4電路器件介紹4.1單片機簡介STC89C51是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS8位微處理器,俗稱單片機。STC89C51提供以下標準功能:4k字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM,32個I/O口線,兩個16位定時/計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。其引腳圖如圖4-1。圖圖4-1STC89C51引腳圖圖4-2DAC0832引腳圖4.2DAC0832簡介圖4-2DAC0832引腳圖DAC0832是采樣頻率為八位的D/A轉(zhuǎn)換芯片,集成電路內(nèi)有兩級輸入寄存器,使DAC0832芯片具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要,D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。D/A轉(zhuǎn)換結(jié)果采用電流形式輸出。若需要相應的模擬電壓信號,可通過一個高輸入阻抗的線性運算放大器實現(xiàn)。運放的反饋電阻可通過RFB端引用片內(nèi)固有電阻,也可外接。DAC0832邏輯輸入滿足TTL電平,可直接與TTL電路或微機電路連接。其引腳圖如圖4-2。4.3LM358的介紹LM358里面包括有兩個高增益、獨立的、內(nèi)部頻率補償?shù)碾p運放,適用于電壓范圍很寬的單電源,而且也適用于雙電源工作方式,它的應用范圍包括傳感放大器、直流增益模塊和其他所有可用單電源供電的使用運放的地方使用。LM358內(nèi)部包括有兩個獨立的、高增益、內(nèi)部頻率補償?shù)碾p運算放大器,適合圖4-3LM358引腳圖于電源電壓范圍很寬的單電源使用,也適用于雙電源工作模式,在推薦的工作條件下,電源電流與電源電壓無關。它的使用范圍包括傳感放大器、直流增益模組,音頻放大器、工業(yè)控制、DC增益部件和其他所有可用單電源供電的使用運算放大器的圖4-3LM358引腳圖5電路設計及原理分析5.1單片機引腳分配XTAL1、XTAL2:外接電路,產(chǎn)生時鐘信號;RST:外接復位電路;P2:外接數(shù)模轉(zhuǎn)換與放大電路,波形信號輸出;P3:外接矩陣鍵盤;5.2時鐘電路圖5-2時鐘電路STC89C51中有一個用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶休或陶瓷諧振器一起構(gòu)成自激振蕩器,振蕩電路參見圖圖5-2時鐘電路5.3復位電路單片機的復位引腳RST出現(xiàn)2個機器周期以上的高電平時單片機復位,根據(jù)應用的要求,復位操作通常有兩種基本形式:上電復位和上電或開關復位。上電復位要求接通電源后,自動實現(xiàn)復位操作。上電或開關復位要求電源接通后,單片機自動復位,并且在單片機運行期間,用開關操作也能使單片機復位。上電后,由于電容C3的充電和反相門的作用,使RST持續(xù)一段時間的高電平。當單片機已在運行當中時,按下復位鍵K后松開,也能使RST為一段時間的高電平,從而實現(xiàn)上電或開關復位的操作。如圖5-3。圖圖5-3復位電路5.4鍵盤接口電路圖5-4鍵盤接口電路1.檢測鍵盤上是否有鍵按下:將行線送入低電平,列線送入高電平。讀入P3口的狀態(tài)來判別。其具體過程如下:P3口輸出0FH,即所有行線置成高電平,所有列線置成低電平,然后將P3口狀態(tài)讀入與0FH比較。如果有鍵按下,總會有一根行線電平被拉至低電平,從而使行輸入狀態(tài)不全為1圖5-4鍵盤接口電路2.識別鍵盤中哪一個鍵按下:確認有鍵按下后,保存行掃描時有鍵按下時的狀態(tài)X。P3口輸出F0H,進行列掃描,保存列掃描狀態(tài)Y,取出鍵值Z=X|Y.例如第一行第一列有鍵按下,那么行掃描讀入的狀態(tài)為00001110,列掃描讀入的狀態(tài)為11100000,最后鍵值Z=11101110=EEH,然后轉(zhuǎn)去執(zhí)行相應的服務程序。如圖5-4。5.5數(shù)模轉(zhuǎn)換電路由于單片機產(chǎn)生的是數(shù)字信號,要想得到所需要的波形,就要把數(shù)字信號轉(zhuǎn)換成模擬信號,選用具有8位分辨率的數(shù)模轉(zhuǎn)換器DAC0832。連接電路如圖5-5所示。DAC0832主要由8位輸入寄存器、8位DAC寄存器、8位D/A轉(zhuǎn)換器以及輸入控制電路四部分組成。DAC0832是電流型輸出,在應用時外接運放LM358使之成為電壓型輸出。圖5-5圖5-5數(shù)模轉(zhuǎn)換電路6系統(tǒng)軟件設計首先對程序初始化,然后判斷是否有鍵值按下,若有鍵值按下則計算相關參數(shù),利用中斷定時和查詢查表輸出波形,其程序框圖如圖5-1所示。6.1正弦波的產(chǎn)生正弦波波形設計通過查表指令得出,指令表通過C++產(chǎn)生。如圖6-1。圖6-1圖6-1正弦波的產(chǎn)生6.2三角波的產(chǎn)生三角波中的斜線用一個個小臺階來逼近,在一個周期內(nèi)從最小值開始逐步遞增,當達到最大值后再用同樣逼近方法,如此循環(huán),當臺階間隔很小時,波形基本上近似于直線。適當選擇循環(huán)的時間,可以得到不同周期的三角波。6.3程序流程圖根據(jù)設計要求,確定編程思想,現(xiàn)程序流程圖如圖6-3所示。圖6-3程序流程圖7電路仿真及結(jié)果分析7.1仿真軟件的介紹Proteus軟件是英國LabCenterElectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前比較好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞。7.2仿真電路及其仿真結(jié)果7.2.1仿真電路圖圖7-1電路仿真電路圖7.2.2仿真結(jié)果圖7-3正弦波形圖7-2正弦波形圖7-3正弦波形圖7-2正弦波形圖7-5三角波形圖7-4三角波形8實物圖及其輸出波形8.1實物圖通過前面的軟硬件設計以后,整個電路的設計基本完成,系統(tǒng)在以Proteus這款軟件為平臺,對正弦波和三角波進行了仿真與測試,通過仿真證明了電路軟硬件設計的正確性。最后就是進行焊接實物圖并且測試實物圖的正確性。系統(tǒng)硬件的整體實物圖如下圖所示:圖8-1實物圖圖8-2正弦波圖8-3三角波9課程設計體會通過此次課程設計,首先我學會了怎么去使用Proteus,并學到很多的東西。對單片機有了進一步的了解。但是在做課程設計的過程中,也出現(xiàn)了一些問題,最主要還是在使用Proteus仿真中,出現(xiàn)電路設計的一些問題。通過這次課程設計,使我明白了自身的不足,還有就是學習上存在的以應試為目的的陋習,自己真正學到的知識還是相當有限的,而且都是很死板的知識,并沒有做到活學活用。而且,在專業(yè)軟件學習方面還要有很大的提升的需要。

參考文獻1.孫涵芳.MCS-51/96系列單片機原理及應用(修訂版).北京航空航天大學出版社.19942.李朝青.單片機原理及接口技術(shù)(第3版).北京航空航天大學出版社.2005附錄A:主電路圖圖9-1主電路圖設計附錄B:主程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint#defineKeyPortP3 //鍵盤掃描sbitCS=P1^0;sbitWR1=P1^1;sbitILE=P1^2;sbitWR2=P1^3;sbitXFER=P1^4;ucharmode,shi,ge,fre;uintth0,tl0;//定時器初始設定值ucharcodetosin[256]={//正弦波數(shù)據(jù)表0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,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,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,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,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,0x00,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,0x80};/*uS延時函數(shù),含有輸入?yún)?shù)unsignedchart,無返回值unsignedchar是定義無符號字符變量,其值的范圍是0~255這里使用晶振12M,精確延時請使用匯編,大致延時長度如下T=tx2+5uS*/voidDelayUs2x(unsignedchart){while(--t);}/*mS延時函數(shù),含有輸入?yún)?shù)unsignedchart,無返回值unsignedchar是定義無符號字符變量,其值的范圍是0~255這里使用晶振12M,精確延時請使用匯編*/voidDelayMs(unsignedchart){while(t--){//大致延時1mSDelayUs2x(245); DelayUs2x(245);}}/*************************************************************************//函數(shù)名稱:KeyScan(void)//函數(shù)說明:鍵盤掃描函數(shù),使用行列逐級掃描法//入口參數(shù):無//返回值: Val鍵盤碼值*************************************************************************/unsignedcharKeyScan(void)//鍵盤掃描函數(shù),使用行列逐級掃描法{unsignedcharVal;KeyPort=0xf0;//高四位置高,低四位拉低if(KeyPort!=0xf0)//表示有按鍵按下{DelayMs(10);//去抖 if(KeyPort!=0xf0) {//表示有按鍵按下 KeyPort=0xfe;//檢測第一行 if(KeyPort!=0xfe) { Val=KeyPort&0xf0; Val+=0x0e; while(KeyPort!=0xfe); DelayMs(10);//去抖 while(KeyPort!=0xfe); returnVal; }KeyPort=0xfd;//檢測第二行 if(KeyPort!=0xfd) { Val=KeyPort&0xf0; Val+=0x0d; while(KeyPort!=0xfd); DelayMs(10);//去抖 while(KeyPort!=0xfd); returnVal; } KeyPort=0xfb;//檢測第三行 if(KeyPort!=0xfb) { Val=KeyPort&0xf0; Val+=0x0b; while(KeyPort!=0xfb); DelayMs(10);//去抖 while(KeyPort!=0xfb); returnVal; } KeyPort=0xf7;//檢測第四行 if(KeyPort!=0xf7) { Val=KeyPort&0xf0; Val+=0x07; while(KeyPort!=0xf7); DelayMs(10);//去抖 while(KeyPort!=0xf7); returnVal; }}}return0xff;}/*按鍵值處理函數(shù),返回掃鍵值*/unsignedcharKeyPro(void){switch(KeyScan()){case0x7e:return0x7e;break;//./.按下相應的鍵顯示相對應的碼值 //三角波函數(shù)case0x7d:return0x7d;break;//*//正旋函數(shù)case0x7b:return0x7b;break;//-- case0x77:return0x77;break;//+case0xbe:return9;break;//9case0xbd:return6;break;//6case0xbb:return3;break;//3case0xb7:return0xb7;break;//=case0xde:return8;break;//8case0xdd:return5;break;//5case0xdb:return2;break;//2case0xd7:return0;break;//0case0xee:return7;break;//7case0xed:return4;break;//4case0xeb:return1;break;//1case0xe7:return0xe7;break;//ondefault:return0xff;break;}}/*************************************************************************//函數(shù)名稱:DAC0832_init()//函數(shù)說明:DAC0832時序程序//入口參數(shù):無//返回值: 無*************************************************************************/voidDAC0832_init(){ CS=0;//選通芯片,開始工作 WR1=0;//打開數(shù)字量寄存器輸入端,寫入數(shù)字量 ILE=1;//打開數(shù)字量寄存器輸出端 WR2=0;//打開DAC寄存器輸入端,寫入數(shù)字量 XFER=0;//轉(zhuǎn)換并輸出模擬量}/*************************************************************************//函數(shù)名稱:Sine_wave()//函數(shù)說明:正選函數(shù)發(fā)生//入口參數(shù):無//返回值: 無*************************************************************************/voidSine_wave(){ ucharc; DAC0832_init();//設定DAC0832 P2=tosin[c];//查表 c++; }/*************************************************************************//函數(shù)名稱:Tri_Wave()//函數(shù)說明:三角函數(shù)發(fā)生//入口參數(shù):無//返回值: 無*************************************************************************/voidTri_Wave(){ uchari; DAC0832_init(); //設定DAC0832 if(i<=128) { P2=i; } else P2=255-i; i++;}/*************************************************************************//函數(shù)名稱:time_count()//函數(shù)說明:定時器初始化//入口參數(shù):無//返回值: 無*************************************************************************/voidtime_count_int(){ TMOD=0X01;//定時器0方式116位定時器 //TH0=th0;//初始值// TL0=tl0; TH0=(65536-th0)/256; TL0=(65536-tl0)%256; EA=1;//開總中斷 ET0=1;//開定時器中斷 TR0=1; //啟動定時器

溫馨提示

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

評論

0/150

提交評論