基于單片機的波形發生器_第1頁
基于單片機的波形發生器_第2頁
基于單片機的波形發生器_第3頁
基于單片機的波形發生器_第4頁
基于單片機的波形發生器_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

波形發生器設計摘要波形發生器是一種常用的信號源,廣泛地應用于電子電路、自動控制系統和教學實驗等領域。函數信號發生器是一種能夠產生多種波形,如三角波、鋸齒波、矩形波〔含方波〕、正弦波的電路。函數信號發生器在電路實驗和設備檢測中具有十分廣泛的用途。通過對函數波形發生器的原理以及構成分析,可設計一個能變換出三角波、正弦波、方波的函數波形發生器。目前使用的信號發生器大局部是函數信號發生器,且特殊波形發生器的價格昂貴。所以本設計使用的是DAC0832芯片構成的發生器,可產生三角波、方波、正弦波等多種特殊波形和任意波形,波形的頻率可用程序控制改變。在單片機上加外圍器件距陣式鍵盤,通過鍵盤控制波形頻率的增減以及波形的選擇,并用了LCD顯示頻率大小。在單片機的輸出端口接DAC0832進行D/A轉換,再通過運放進行波形調整,最后輸出波形接在示波器上顯示。本設計具有線路簡單、結構緊湊、價格低廉、性能優越等優點。本設計制作的波形發生器,可以輸出多種標準波形,如方波、正弦波、三角波、鋸齒波等,還可以輸出任意波形,如用鼠標創立的一個周期的非規那么波形或用函數描述的波形等,輸出的波形的頻率、幅度均可調,且能脫機輸出。設計的人機界面不但清晰美觀,而且操作方便。關鍵詞:波形發生器;DAC0832;單片機;波形調整目錄一、設計目的及意義-3-1.1設計目的-3-1.2設計意義-3-二、方案論證-4-2.1設計要求-4-2.2方案論證-4-三、硬件電路設計-5-3.1設計思路、元件選型-5-3.2原理圖-5-3.3主要芯片介紹-6-3.4硬件連線圖-10-四、軟件設計-10-4.1鋸齒波的產生過程-11-4.2三角波產生過程-13-4.3方波的產生過程-14-4.4正弦波的產生過程-16-4.5通過開關實現波形切換和調頻、調幅-18-五、調試與仿真-20-5.1仿真結果-21-六、總結-22-七、參考文獻:-23-一、設計目的及意義1.1設計目的〔1〕利用所學微機的理論知識進行軟硬件整體設計,鍛煉學生理論聯系實際、提高我們的綜合應用能力。

〔2〕我們這次的課程設計是以微機為根底,設計并開發能輸出多種波形〔正弦波、三角波、鋸齒波、方波、梯形波等〕且頻率、幅度可變的函數發生器。

〔3〕掌握各個接口芯片(如0832等)的功能特性及接口方法,并能運用其實現一個簡單的微機應用系統功能器件。

〔4〕在平時的學習中,我們所學的知識大都是課本上的,在機房的練習大家也都是分散的對各個章節的內容進行練習。因此,缺乏一種系統的設計鍛煉。在課程所學結束以后,這樣的課程設計十分有助于學生的知識系統的總結到一起。

〔5〕通過這幾個波形進行組合形成了一個函數發生器,使得我對系統的整個框架的設計有了一個很好的鍛煉。這不僅有助于大家找到自己感興趣的題目,更可以鍛煉大家微機知識的應用。1.2設計意義波形發生器作為一種常用的信號源,是現代測試領域內應用最為廣泛的通用儀器之一。在研制、生產、測試和維修各種電子元件、部件以及整機設備時,都學要有信號源,由它產生不同頻率不同波形的電壓、電流信號并加到被測器件或設備上,用其他儀器觀察、測量被測儀器的輸出響應,以分析確定它們的性能參數。信號發生器是電子測量領域中最根本、應用最廣泛的一類電子儀器。它可以產生多種波形信號,如正弦波,三角波,方波等,因而廣泛用于通信、雷達、導航、宇航等領域。二、方案論證2.1設計要求使用計算機和數模轉換器構成信號發生器,可以產生方波、三角波、鋸齒波和正弦波等多種波形,波形的周期、頻率可調。要求完成計算機和DAC的選型,了解不同波形的產生原理和設計方案,畫出硬件電路圖,并編程完成軟件局部,最后調試觀察產生不同類型的波形信號。〔1〕課程設計論文內容要正確,概念要清楚;〔2〕完成任務書所規定的內容;〔3〕附有電路原理圖及程序流程圖,以及程序清單;〔4〕文字要通順,書寫要工整,設計圖紙必須符合標準2.2方案論證信號發生器的實現方法通常有以下幾種:方案一:用分立元件組成的函數發生器:通常是單函數發生器且頻率不高,其工作不很穩定,不易調試。方案二:可以由晶體管、運放IC等通用器件制作,更多的那么是用專門的函數信號發生器IC產生。早期的函數信號發生器IC,如L8038、BA205、XR2207/2209等,它們的功能較少,精度不高,頻率上限只有300kHz,無法產生更高頻率的信號,調節方式也不夠靈活,頻率和占空比不能獨立調節,二者互相影響。方案三:利用專用直接數字合成DDS芯片的函數發生器:能產生任意波形并到達很高的頻率。但本錢較高。方案四:采用AT89C51單片機和DAC0832芯片,直接連接鍵盤和顯示。該種方案主要對AT89C51單片機的各個I/O口充分利用.P1口是連接鍵盤以及接顯示電路,P2口連接DAC0832輸出波形.這樣總體來說,能對單片機各個接口都利用上,而不在多用其它芯片,從而減小了系統的本錢.也對按照系統便攜式低頻信號發生器的要求所完成.占用空間小,使用芯片少,低功耗。綜合考慮,方案四各項性能和指標都優于其他幾種方案,能使輸出頻率有較好的穩定性,充分表達了模塊化設計的要求,而且這些芯片及器件均為通用器件,在市場上較常見,價格也低廉,樣品制作成功的可能性比擬大,所以本設計采用方案四。三、硬件電路設計3.1設計思路、元件選型設計思路:〔一〕、課設需要各個波形的根本輸出。如輸出鋸齒波、三角波、方波、正弦波。這些波形的實現的具體步驟:鋸齒波實現很簡單,只需要一開始定義一個初值,然后不斷的加1,當溢出后又重初值開始加起,就這樣循環下去。三角波的實驗過程是先加后減,實現方法是先是從00H開始加1直到溢出后就執行減1操作,就這樣不斷調用這個循環。方波的實現方法是連續輸出一個數,到某個時候就改變一下值,可以把值定義為正極性的,也可以是負極性。正弦波的實現是非常麻煩的。它的實現過程是通過定義一些數據,然后執行時直接輸出定義的數據就可以了。〔二〕、通過P1口和開關K0-K4相連接來控制各個波形的輸出。能根據k0-k5鍵狀態進行波形切換,開關鍵向上接“1〞,產生波形,向下拔接“0〞,無波形輸出。如K0鍵向上拔,K1-K4鍵向下拔,產生鋸齒波;K1鍵向上拔,K0、K2-K4鍵向下拔,產生三角波;……以此類推。元件選型:單片機AT89C51系統,DAC0832一片,PC機一臺,運算放大器3.2原理圖3.3主要芯片介紹〔1〕、DAC0832芯片介紹:0832采用雙緩沖接口方式,其傳送控制端接地,輸入所存允許斷ILE與+5V電源相連,利用一個地址碼進行二次輸出操作,完成數據的傳送和沖動轉換,第一次操作室P2.6為高電平,將P0口數據線上的數據鎖存于DAC0832的輸入存放器中。第二次操作是寫控制信號由效,傳送控制端為低電平,將輸入存放器中的內容鎖存入0832的DAC存放器中,D/A轉換器便開始對鎖存于DAC存放器的8位數據進行轉換,約經過1/2時鐘周期后,在輸出端〔IOUT2、IOUT1〕建立穩定的電流輸出。運放的作用是將0832輸出的模擬電流信號轉換為電壓波形。DAC0832為一個8位D/A轉換器,單電源供電,在+5~+15V范圍內均可正常工作。基準電壓的范圍為±10V,電流建立時間為1μs,CMOS工藝,低功耗20mW。DAC0832的內部結構框圖如下列圖所示。圖2-2DAC0832工作原理圖DAC0832的外部引腳及功能介紹圖如下:圖2-3DAC0832引腳圖DAC0832內部結構資料:芯片內有兩級輸入存放器,使DAC0832具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉換等)。D/A轉換結果采用電流形式輸出。要是需要相應的模擬信號,可通過一個高輸入阻抗的線性運算放大器實現這個供功能。運放的反應電阻可通過RFB端引用片內固有電阻,還可以外接DI0~DI7:數據輸入線,TLL電平。ILE:數據鎖存允許控制信號輸入線,高電平有效。CS:片選信號輸入線,低電平有效。WR1:為輸入存放器的寫選通信號。XFER:數據傳送控制信號輸入線,低電平有效。WR2:為DAC存放器寫選通輸入線。Iout1:電流輸出線。當輸入全為1時Iout1最大。Iout2:電流輸出線。其值與Iout1之和為一常數。Rfb:反應信號輸入線,芯片內部有反應電阻.Vcc:電源輸入線(+5v~+15v)Vref:基準電壓輸入線(-10v~+10v)AGND:模擬地,摸擬信號和基準電源的參考地.DGND:數字地,兩種地線在基準電源處共地比擬好〔2〕單片機AT89C51介紹:AT89C51是一種帶4K字節閃存可編程可擦除只讀存儲器〔FPEROM—FlashProgrammableandErasableReadOnlyMemory〕的低電壓、高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。外形及引腳排列如下列圖所示:圖3.4AT89C51引腳圖AT89C51管腳說明:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能存放器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流〔ILL〕這是由于上拉的緣故。RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。/EA/VPP:當/EA保持低電平時,那么在此期間外部程序存儲器〔0000H-FFFFH〕,不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源〔VPP〕。XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。3.4硬件連線圖圖3.5硬件連線圖四、軟件設計總體方框圖函數發生器的設計函數發生器的設計K2鍵三角波K3鍵方波K4鍵正弦波K0鍵鋸齒波總體設計功能圖4.1鋸齒波的產生過程鋸齒波的實現過程是首先定義一個初值然后進行加法操作,加的步數的多少那么根據要求的頻率來進行。然后加到某個數之后就再重新設置為初值,再重復執行剛剛的操作,如此循環下去。流程圖如下所示定義變量iuchari定義變量iucharifor(i=0;i<255;i++)P0=i判斷按鍵是否為0否重新設置變量i是開始圖3-1鋸齒波產生流程圖鋸此波發生子程序如下:MOVDPTR,#7FFFH;端口地址7FFFH—間址存放器MOVR7,#0;R7為0DASAW:MOVA,R7;A清零MOVX@DPTR,A;寫RAMINCR7;R7存放器加一NOP;空操作NOPNOPSJMPDASAW;轉移END4.2三角波產生過程三角波的實定義變量iuchari定義變量iucharifor(i=0;i<255;i++)for(i=255;i>0;i--)判斷p0是否已滿否是延時否/是開始流程圖如下列圖所示:判斷按鍵是否為0判斷按鍵是否為0三角波發生子程序如下:MOVDPTR,#7FFFH;設置D/A轉換器的端口地址L1:MOVR7,#00H;A清零MOVA,R7L2:MOVX@DPTR,A;寫外部存儲器NOP;延時NOPNOPINCA;A加1JNZL1;不等與零那么轉L1L3:MOVX@DPTR,A;寫外部存儲器4.3方波的產生過程此波形的實現更加簡單,只需開始的時候設置一個初值然后直接輸出這個值就行了,輸出一段時間后,然后再重新置一個數據,然后再輸出這個數據一段時間,但是此時的時間一定要等于前面那段時間。這樣才是一個方波,如果兩個時間不相同,那就相當于一個脈沖波了。流程圖如下列圖所示:開始開始循環開始給p0賦值0x00延時給p0賦值0xff延時判斷按鍵是否為0圖3-3方波產生流程圖方波發生子程序:MOVDPTR,#7FFFH;設置D/A轉換器的端口地址MOVR7,#FFH;將#FFH送R7FANGB:MOVA,R7;給A賦值MOVX@DPTR,A;寫RAMACALLDELAY;調用延時子程序CPLA;A取反MOVX@DPTR,A;寫RAMACALLDELAY;調用延時子程序SJMPFANGB;返回FANGBDELAY:MOVR7,#200;延時50msDEL1:MOVR6,#123NOPDEL2:DJNZR6,DEL2DJNZR7,DEL1RETEND; 程序結束4.4正弦波的產生過程正弦波的實現那么相比照擬復雜,因為正弦波的實現是輸出各個點的值就行了,可是各個點值那么要通過正弦函數來求出。輸出的數據剛好是256個數據,這樣那么可以直接相加就行了開始開始定義變量i定義變量i循環開始循環開始如果i=0;++i=128如果i=0;++i=128把p0定義為數組tab【i判斷按鍵是否為0延時為0那么終止圖3-4正弦波產生流程圖正弦波發生子程序如下:MOVDPTR,#SINTAB;正弦表寫入內部RAM6DH-7FHMOVR0,#6DHLOOP:CLRAMOVCA,@A+DPTRMOV@R0,AINCDPTRINCR0CJNER0,#80H,LOOPMOVDPTR,#7FFFH;設置D/A轉換器的端口地址MOVR0,#6DH;設置正弦表指針LOOP1:MOVA,@R0;查表MOVX@DPTR,A;D/A轉換ACALLDELAY;延時,等待轉換結束DECR0;正弦表位移量增量CJNER0#6DH,LOOP1;第一象限輸出完?LOOP2:MOVA,@R0;查表MOVX@DPTR,A;D/A轉換ALCALLDELAY;延時,等待轉換結束DECR0;正弦表位移量減量CJNER0#6DH,LOOP2;第二象限輸出完?LOOP3:MOVA,@R0;查表CPLA;表值取反MOVX@DPTR,A;D/A轉換ACLALLDELAY;延時,等待轉換結束INCR0;正弦表位移量增量CJNER0,#7FH,LOOP3;第三象限輸出完?LOOP4:MOVA,@R0;查表CPLA;表值取反MOVX@DPTR,A;D/A轉換ALCALLDELAY;延時,等待轉換結束DECR0;正弦表位移量減量CJNER0,#6DH,LOOP4;第四象限輸出完?SJMPLOOP1DELAY:MOVR7,#200;延時50msDEL1:MOVR6,#123NOPDEL2:DJNZR6,DEL2DJNZR7,DEL1RETSINTAB:DB7FH,89H,94H,9FH,0AAH,0B4H,0C8H,0D1H,0D9HDB0E0H,0E7H,0EDH,0F2H,0F7H,0FAH,0FCH,,OFEH,0FFHEND4.5通過開關實現波形切換和調頻、調幅通過開關實現波形的切換比擬簡單只需通過輸出波形后不斷返回到檢測開關的子程序中,判斷是否有別的開關撥動,如果有別的開關撥動那么執行別的程序,否那么輸出原來的波形,不過如果要能夠識別別的開關發生變化,必須將此開關關掉否那么會識別不了別的鍵按下。當然開關的調頻和調幅的實現也一樣,不過首先先輸出一個波形,然后再檢測開關是否需要調頻或者調幅,如果需要那么轉入到相應的程序中,最后再重新輸出波形。下面是調頻和調幅:開始開始判斷是否為1?否是輸出各種波形調整一下數字量圖3-5輸出波形原理下列圖式實現各種波形通過開關的切換的流程圖,按下開關通過P1.0為1那么輸出鋸齒波,P1.1為1輸出三角波,P1.2為1輸出方波,P1.3為1輸出正弦波。開始開始判斷P1.0是否為1判斷P1.1是否為1判斷P1.2是否為1否否否否是是是是輸出響應的波形判斷P1.3是否為1圖3-6開關切換波形原理五、調試與仿真本次的設計主要應用了protues和keilc軟件進行系統設計和仿真,經過仿真后,結果較好,示波器可以正確的輸出方波、正弦波、三角波、鋸齒波,并且頻率可調。5.1仿真結果三角波和正弦波的仿真結果如下,其他波形省略。圖4-1三角波仿真結果圖4-2正弦波仿真結果六、總結本次的設計中利用AT89C51和DAC0832以及放大器完成電路的設計,用開關來控制各種波形的發生及轉換,用單片機輸出后,經過模數轉換器生成波形,最終可以通過示波器觀察。在這次的軟件設計中,程序設計采用的是匯編語言。匯編語言具有速

溫馨提示

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

評論

0/150

提交評論