畢業(yè)設(shè)計(論文)數(shù)字式波形信號發(fā)生器的制作_第1頁
畢業(yè)設(shè)計(論文)數(shù)字式波形信號發(fā)生器的制作_第2頁
畢業(yè)設(shè)計(論文)數(shù)字式波形信號發(fā)生器的制作_第3頁
畢業(yè)設(shè)計(論文)數(shù)字式波形信號發(fā)生器的制作_第4頁
畢業(yè)設(shè)計(論文)數(shù)字式波形信號發(fā)生器的制作_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄 TOC o 1-3 h z u HYPERLINK l _Toc388822885 摘要 PAGEREF _Toc388822885 h I HYPERLINK l _Toc388822886 Abstract: PAGEREF _Toc388822886 h II HYPERLINK l _Toc388822887 第一章波形發(fā)生器的概述 PAGEREF _Toc388822887 h 1 HYPERLINK l _Toc388822888 第二章方案的選擇與確定 PAGEREF _Toc388822888 h 2 HYPERLINK l _Toc388822889 控制按鈕部分 P

2、AGEREF _Toc388822889 h 2 HYPERLINK l _Toc388822890 波形產(chǎn)生部分 PAGEREF _Toc388822890 h 2 HYPERLINK l _Toc388822891 微控制器部分 PAGEREF _Toc388822891 h 3 HYPERLINK l _Toc388822892 顯示部分 PAGEREF _Toc388822892 h 3 HYPERLINK l _Toc388822893 第三章硬件原理 PAGEREF _Toc388822893 h 4 HYPERLINK l _Toc388822894 STC12c5a60s2單片

3、機的認識 PAGEREF _Toc388822894 h 4 HYPERLINK l _Toc388822899 DAC0808的選用 PAGEREF _Toc388822899 h 7 HYPERLINK l _Toc388822902 LCD1602液晶顯示屏 PAGEREF _Toc388822902 h 10 HYPERLINK l _Toc388822905 第四章程序設(shè)計 PAGEREF _Toc388822905 h 11 HYPERLINK l _Toc388822906 頻率調(diào)節(jié)模塊的程序設(shè)計 PAGEREF _Toc388822906 h 11 HYPERLINK l _T

4、oc388822907 幅度調(diào)節(jié)模塊的程序設(shè)計 PAGEREF _Toc388822907 h 12 HYPERLINK l _Toc388822908 存儲模塊的程序設(shè)計 PAGEREF _Toc388822908 h 12 HYPERLINK l _Toc388822909 鍵盤模塊的程序設(shè)計 PAGEREF _Toc388822909 h 13 HYPERLINK l _Toc388822910 第五章誤差的來源與分析 PAGEREF _Toc388822910 h 14 HYPERLINK l _Toc388822911 波形幅度的誤差 PAGEREF _Toc388822911 h

5、14 HYPERLINK l _Toc388822912 頻率的調(diào)節(jié)部分 PAGEREF _Toc388822912 h 14 HYPERLINK l _Toc388822913 第六章總結(jié) PAGEREF _Toc388822913 h 15 HYPERLINK l _Toc388822914 參考文獻: PAGEREF _Toc388822914 h 16 HYPERLINK l _Toc388822915 致謝 PAGEREF _Toc388822915 h 17 HYPERLINK l _Toc388822916 附錄: PAGEREF _Toc388822916 h 18 HYPER

6、LINK l _Toc388822917 附錄一: 原件清單 PAGEREF _Toc388822917 h 18 HYPERLINK l _Toc388822918 附錄二:電路原理圖 PAGEREF _Toc388822918 h 19 HYPERLINK l _Toc388822919 附錄三:PCB版圖 PAGEREF _Toc388822919 h 20 HYPERLINK l _Toc388822920 附錄四:實物圖 PAGEREF _Toc388822920 h 21 HYPERLINK l _Toc388822921 附錄五:源程序 PAGEREF _Toc388822921

7、 h 22數(shù)字式波形信號發(fā)生器的制作摘要:在這次畢業(yè)設(shè)計中,是通過單片機STC12C5A60S2和高速D/A轉(zhuǎn)換芯片DAC0808來構(gòu)成的數(shù)字式波形信號發(fā)生器。采用STC12C5A60S2單片機作為主控芯片,輸出數(shù)字信號,從而控制DAC0808芯片產(chǎn)生模擬波形,通過按鍵調(diào)節(jié)波形的各種參數(shù),用LCD1602來顯示當前波形的種類、幅度、頻率和存儲狀況。本作品具有一定的實用性,設(shè)計比較簡單,在需要低頻信號的場所比較實用。本文在介紹利用STC12C5A60S2單片機和DAC0808芯片設(shè)計波形信號發(fā)生器的時候,詳細介紹了數(shù)模轉(zhuǎn)換芯片的穩(wěn)定時間對頻率的影響,還有STC12C5A60S2單片機的相關(guān)知識、

8、PWM波通過低通濾波器調(diào)節(jié)基準電壓的方法,甚至對于如何利用計時器調(diào)節(jié)頻率,和計時器的TLTH寄存器的值的計算,都有很詳細的論述。關(guān)鍵詞:STC12C5A60S2,單片機,DAC0808,LM324,PWM波,數(shù)模轉(zhuǎn)換芯片Abstract:This system is based on the domestic enhanced MCU STC12C5A60S2 and high-speed D/A conversion chip DAC0808 digital waveform signal generator.Using STC12C5A60S2 single-chip microcompu

9、ter as the master control chip, digital output code,DAC0808 chip generating an analog waveformcontrol , through the buttons to adjust the parameters of waveform, using LCD1602 to display the current waveform, amplitude, frequency, and the kinds of storage conditions.Its simple design, good performan

10、ce and can be used for a variety of requiring low frequency signal places, has a certain practicality.This article introducd the using of STC12C5A60S2 MCU and DAC0808 chip design waveform signal generator,while introduced the stable time of the analog-to-digital conversion chip and the influence on

11、frequency in detail.This article aslo introduced STC12C5A60S2 knowledge of single chip microcomputers, the PWM wave through a low-pass filter to adjust voltage reference method. Even how to use the timer to adjust frequency, and the timer of TL TH register values calculation, there are very detailed

12、 exposition.Keywords: STC12C5A60S2, SCM, DAC0808, LM324, PWM wave, digital-analog converter chip第一章波形發(fā)生器的概述信號發(fā)生器是一種常用的信號源,廣泛用于電子電路、自動控制、電子測量、儀表、計算機科學和教學實驗等領(lǐng)域。在早期信號發(fā)生器主要基于模擬電路,由分立元件構(gòu)成振蕩電路和整形電路,進而產(chǎn)生各種波形,隨著科學技術(shù)和電子技術(shù)的發(fā)展,集成電路的應用越來越廣泛,用集成電路可以很方便的構(gòu)成波形信號發(fā)生器。與以往的模擬電路構(gòu)成的波形信號發(fā)生器相比,用集成電路構(gòu)成的波形信號發(fā)生器在波形質(zhì)量和頻率、幅度的穩(wěn)定

13、性等性能指標上,都有了很大的提高。波形信號發(fā)生器也稱函數(shù)發(fā)生器,在實際應用中一般作為實驗信號源,在現(xiàn)今各種電子電路實驗設(shè)計的應用中是必不可少的儀器設(shè)備之一。傳統(tǒng)的信號發(fā)生器采用的數(shù)模電子技術(shù),大部分由分立元件搭建電路,由振蕩器產(chǎn)生波形,再通過各種整形電路產(chǎn)生所需的波形。這種波形信號發(fā)生器曾經(jīng)在很長一段時間內(nèi)發(fā)揮了很大作用。用這種技術(shù)設(shè)計制作這種波形信號發(fā)生器電路非常復雜,幅度頻率調(diào)節(jié)范圍小,容易受到這種外界因素(溫度,濕度等)的干擾,精確度和穩(wěn)定性都比較差。產(chǎn)生的波形種類也比較少,難以產(chǎn)生復雜的波形信號。隨著電子技術(shù)的發(fā)展,微處理器性能的提高,集成電路電子技術(shù)和微處理器走進了我們的生活,我們可

14、以利用微處理器和數(shù)模轉(zhuǎn)換器件(D/A)以及相關(guān)硬件軟件來構(gòu)成波形發(fā)生器。與以往相比,這種波形信號發(fā)生器擴展了很多功能,可以產(chǎn)生比較復雜的波形,波形的頻率、幅度都可以通過按鍵方便的調(diào)節(jié),波形的相關(guān)數(shù)據(jù)也可以存儲,以便在需要的時候調(diào)用而不需要重新調(diào)節(jié),由于微處理器的處理速度快,時鐘比較準確,產(chǎn)生的波形頻率的準確性也得到了提高,同時,我們可以把波形的相關(guān)參數(shù)直接用顯示屏顯示出來,這是在以往的示波器上面不可能出現(xiàn)的,提高了示波器的使用效率。在本課題里面,初步方案是通過變壓器把220V交流電變?yōu)?5V,再通過整流電路把交流電壓變?yōu)橹绷麟妷海詈笸ㄟ^78xx系列三端穩(wěn)壓集成電路把電壓變?yōu)樗枰恼妷?,?/p>

15、79xx系列三端穩(wěn)壓集成電路把電壓變?yōu)樗枰呢撾妷?,電源部分完成,用stc12c5a60s2單片機作為為控制模塊,通過按鍵來產(chǎn)生中斷,利用存儲在ROM中的程序進而調(diào)節(jié)頻率、幅度,單片機控制LCD1602顯示波形信號發(fā)生器的相關(guān)信息。波形的產(chǎn)生式通過單片機輸出的數(shù)字信號,經(jīng)過數(shù)模轉(zhuǎn)換芯片(D/A)輸出所需波形。通過調(diào)節(jié)數(shù)模轉(zhuǎn)換模塊的基準電壓來調(diào)節(jié)波形電壓幅度,通過調(diào)節(jié)單片機每個波形數(shù)據(jù)的延時時間來調(diào)節(jié)波形的頻率。第二章方案的選擇與確定不同的場合,對波形信號發(fā)生器的具體指標要求都不一樣,所以我們要根據(jù)場合的不同選擇合適的設(shè)計方案來設(shè)計產(chǎn)品。通常示波器需要產(chǎn)生的波形有正弦波、方波、三角波和鋸齒波。

16、波形的指標一般包括:波形頻率、波形幅度的準確度和穩(wěn)定性。在設(shè)計方案時,一般分如下幾個方面考慮。2.1控制按鈕部分方案一:用獨立按鍵作為單片機的調(diào)節(jié)按鈕。方案二:用矩陣鍵盤作為單片機的調(diào)節(jié)按鈕。在考慮這兩個方案,主要目的是為了節(jié)省I/O口,以盡量少的I/O口來鏈接所有的按鈕,在本課題中,總共有七個按鍵,分別為:頻率增加按鍵、頻率減少按鍵、幅度增加按鍵、幅度減少按鍵、存儲按鍵、調(diào)用按鍵、復位按鍵。其中復位按鍵是不能和其他的按鍵鏈接在一起,所以總共有六個按鍵需要鏈接。如果利用矩陣鍵盤,可以采用2x3的方式,這樣需要用到五個I/O口;如果用獨立按鍵直接,也僅僅需要六個I/O口,而且不需要專門為鍵盤模塊

17、編寫程序。綜合來考慮,選擇方案一。2.2波形產(chǎn)生部分方案一:DDS AD9852芯片。用DDS芯片設(shè)計波形信號發(fā)生器,產(chǎn)生的波形頻率、幅度精度高,波形穩(wěn)定,且能產(chǎn)生任意波形,但是芯片昂貴。方案二:使用ICL8038芯片。ICL 8038 是一種具有多種波形輸出的精密振蕩集成電路,可以通過調(diào)整個別的外部元件就能得到從 0.001HZ300kHz可調(diào)的低失真正弦波、三角波、矩形波等脈沖信號。而且輸出的方波占空比可調(diào)。方案三:直接通過微控制器向數(shù)模轉(zhuǎn)換芯片(D/A)輸出數(shù)據(jù),通過數(shù)模轉(zhuǎn)換芯片生成所需波形。這三個方案的選取,主要是考慮生成波形的是否能達到設(shè)計要求。其中方案二雖說能產(chǎn)生各種所需的波形,波

18、形的頻率、幅度可調(diào),但是容易通過按鍵的方式以一定的步進來調(diào)節(jié),所以方案二放棄;方案一是采用DDS芯片方式,所產(chǎn)生的波形頻率能輕易達到10M Hz以上。對于本課題來說,信號的最高頻率只需要達到20kHz即可,而且DDS芯片比較昂貴。方案三所采用的方法,能達到所有的設(shè)計要求,而且器都比較件常見。所以綜合來說,選擇方案三。2.3微控制器部分方案一:采用微處理器AT89C51作為控制器。AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機方案二:采

19、用微處理器STC12c5a60s2作為控制器。這款單片機是單時鐘機器周期的單片機,在8051單片機的基礎(chǔ)上,增加了高速、低功耗、抗干擾的一些特點,在編程方面,指令代碼完全兼容8051,運行速度卻是普通8051單片機的8到12倍,集成復位電路和兩路pwm波輸出,以及八路10位模數(shù)轉(zhuǎn)換器。對于為控制器的選用主要是考慮其性能,方案一所采用的AT89C51單片機,時鐘周期與 機器周期的比為12,而時鐘頻率最大只能為12Mhz,這在以后進行高頻率的波形輸出時,頻率會不夠用(具體的相關(guān)問題會在后文進行詳細論述),所以放棄方案一;方案二采用的STC12c5a60s2單片機為時鐘周期和機器周期比為1的單片機,

20、即1T單片機。其最大速度為AT89C51單片機的8-12倍計即最大機器頻率420Mhz,能滿足該課題對微控制器的性能要求,而且這種單片機是目前很流行的單片機,價格便宜,性能好。綜合來說,選擇方案二。2.4顯示部分方案一:LCD1602液晶顯示。LCD1602屬于工業(yè)字符型液晶,專門用來顯示字母、數(shù)字、符號等,能夠同時顯示32個字符。它是一種點陣型液晶模塊。它由若干個點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所,以它不能很好地顯示圖形。微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應用系

21、統(tǒng)中。方案二:LED數(shù)碼管顯示。led數(shù)碼管(LED Segment Displays)由多個發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個筆劃,公共電極。這些段分別由字母a,b,c,d,e,f,g,dp來表示。能顯示0到9十個數(shù)字還能顯示A、B、C、D、E、F英文字母,給相應的管腳輸入電壓,就會是數(shù)碼管顯示不同的數(shù)字或字母。對于顯示模塊的選擇,需要考慮的是在能充分滿足顯示需要的情況下,盡量減少I/O口的占用。LED數(shù)碼管只能顯示十個數(shù)字和A到F六個英文字母,在本課題中,需要顯示的有波形種類,頻率單位HZ,幅度單位V,這些字符數(shù)碼管都不能顯示出來,所以方案一

22、舍棄。用LCD1602液晶顯示可以很清楚的顯示出波形的各種參數(shù),與單片機鏈接僅僅需要占用13個I/O口。綜合來看,選用方案一。第三章硬件原理在本課題中,波形的產(chǎn)生是通過STC12c5a60s2單片機,輸出所需波形的采樣數(shù)據(jù),經(jīng)過DA轉(zhuǎn)換來得到波形。通過改變每個采樣點延時時間來改變波形頻率,通過單片機輸出的PWM波來調(diào)節(jié)D/A模塊的基準電壓來改變波形幅度。電路圖如下圖所示: 幅度控制原理3.1STC12c5a60s2單片機的認識采用微處理器STC12c5a60s2作為控制器。這款單片機是單時鐘機器周期的單片機,在8051單片機的基礎(chǔ)上,增加了高速、低功耗、抗干擾的一些特點,在編程方面,指令代碼完

23、全兼容8051,運行速度卻是普通8051單片機的8到12倍,集成復位電路和兩路pwm波輸出,以及八路10位模數(shù)轉(zhuǎn)換器。3.1.1STC12c5a60s2單片機簡介1.這款單片機基于8051內(nèi)核,指令代碼完全兼容8051單片機。2.工作電壓:5.5V - 3.5V。3.工作頻率范圍:能在035MHz范圍內(nèi)工作,相當于普通8051頻率的8到11倍, 4.片上集成1280字節(jié)RAM。5.有EEPROM功能。6.外部掉電檢測電路:在P4.6端口有一個低壓門檻比較器。在5V單片機中,比較電壓為1.33V,誤差為單片機中,比較電壓為1.31V,誤差為3%。7.時鐘源:具有內(nèi)部時鐘和外部時鐘,用戶在下載的時

24、候可以自主選擇用哪個時鐘源。常溫下內(nèi)部R/C振蕩器頻率為:單片機為:11MHz 17MHz;單片機為:8MHz 12MHz。精度要求不高時,可選擇使用內(nèi)部時鐘。8.共有4個16位定時器。兩個與傳統(tǒng)8051兼容的定時器/計數(shù)器,16位定時器T0和T1,沒有定時器2,但有獨立波特率發(fā)生器做串行通訊的波特率發(fā)生器,再加上2路PCA模塊可再實現(xiàn)2個16位定時器。9.3個時鐘輸出口,可由T0的溢出在P3.4/T0輸出時鐘,可由T1的溢出在P3.5/T1輸出時鐘,獨立波特率發(fā)生器可以在P1.0口輸出時鐘。10.PWM(2路)/ PCA(可編程計數(shù)器陣列,2路):也可用來當2路D/A使用。也可用來再實現(xiàn)2個

25、定時器。也可用來再實現(xiàn)2個外部中斷(上升沿中斷/下降沿中斷均可分別或同時支持)。3.1.2單片機內(nèi)外部結(jié)構(gòu)圖3.2STC12C5A60S2單片機管引腳圖3.1.3單片機脈寬調(diào)節(jié)模式(PWM)脈寬調(diào)制(PWM,Pulse Width Modulation)是一種使用程序來控制波形占空比、周期、相位波形的技術(shù),在三相電機驅(qū)動、D/A轉(zhuǎn)換等場合有廣泛的應用。STC12C5A60S2系列單片機的PCA模塊可以通過程序設(shè)定,使其工作于8位PWM模式。PWM模式的結(jié)構(gòu)如下圖所示CCAPMn,n=0,1PWMn輸出1輸出0(0,CL)=(EPCnL,CCPnL)(0,CL)(EPCnL,CCPnL)CL o

26、verflowEnableEPCnH CCAPnHEPCnL CCAPnL9位比較器0 CLECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn圖3.3 PCA PWM mode / 可調(diào)制脈沖寬度輸出模式所有PCA模塊都可用作PWM輸出(上圖)。輸出頻率于 圖)。輸出頻率取決于PCA定時器時鐘源。由于所有模塊共用僅有的PCA定時器,所以它們的輸出頻率相同。各個模塊的輸出占空比是獨立變化的,與使用的捕獲寄存器EPCnL,CCAPnL有關(guān)。當寄存器CL的值小于EPCnL,CCAPnL時,輸出為低;當寄存器CL的值等于或大于 ;當寄存器CL的值等于或大于 當寄存器CL的值等

27、于或大于 寄存器CL的值等于或大于 CL的值等于或大于EPCnL,CCAPnL時,輸出為高。當CL的值由FF變?yōu)?0溢出時,EPCnH,CCAPnH的內(nèi)容裝載到EPCnL,CCAPnL中。這樣就可實現(xiàn)無干擾地更新PWM。要使能PWM模式,模塊CCAPMn寄存器的PWMn和ECOMn位必須置位。由于PWM是8位的,所以: PWM的頻率=PCA時鐘輸入源頻率(3.1)PCA時鐘輸入源可以從以下8種中選擇一種:SYSclk,SYSclk/2,SYSclk/4,SYSclk/6,SYSclk/8,SYSclk/12,定時器0的溢出,ECI/P3.4輸入。舉例:要求PWM輸出頻率為38KHz,選SYSc

28、lk為PCA/PWM時鐘輸入源,求出SYSclk的值:由計算公式38000=SYSclk/256,得到外部時鐘頻率SYSclk=38000 x 256 x 1=9,728,000如果要實現(xiàn)可調(diào)頻率的PWM輸出,可選擇定時器0的溢出率或者ECI腳的輸入作為PCA/PWM的時鐘輸入源:當EPCnL = 0及ECCAPnL = 00H時,PWM固定輸出高。當EPCnL = 1及CCAPnL = 0FFH時,PWM固定輸出低。當單片機某個I/O口作為PWM輸出用時,I/O口的狀態(tài)變化可以用下表來表示: PWM波輸出端在輸出PWM波的時候端口的變化PWM之前I/O口的狀態(tài)PWM之時I/O口的狀態(tài)弱上拉/

29、準雙向口強推挽輸出/強上拉輸出要加輸出限流電阻10K 1K強推挽輸出強推挽輸出/強上拉輸出要加輸出限流電阻10K 1K僅為輸入/高阻PWM無效開漏開漏3.1.4如何將定時器T0/T1的速度提高12倍STC12C5A60S2 系列單片機的AUXR寄存器如下圖所示:圖3.4AUXR寄存器3.2DAC0808的選用3.2.1DAC0832的特點DAC0808是德州儀器(TI)公司生產(chǎn)的一塊8位高速低功耗直通數(shù)模轉(zhuǎn)換芯片。功耗僅僅為35毫瓦。該芯片有如下幾個特點:相對精度:最大誤差0.19;滿量程電流匹配度:1LSB;快速建立時間:150ns;同相和數(shù)字信號輸入TTL和COMS兼容;電源電壓范圍:18

30、v;低功耗:33毫瓦。3.2.2DAC0832和DAC0808芯片的選擇在設(shè)計波形型號發(fā)生器的時候,我們要充分考慮到每一個因素。決定波形信號發(fā)生器能否達到設(shè)計要求,特別是頻率部分,不僅僅取決于單片機的處理速度,還跟DA芯片的處理速度(即建立時間)息息相關(guān)。在利用單片機和DA芯片產(chǎn)生波形的時候,僅僅考慮DA的處理速度,波形的最小周期T等于建立最短時間t與每個周期量化電平個數(shù)N的乘積。即T=tNDA芯片決定的波形最大頻率 F=1 T=1tN(3.2)在量化相對復雜的正弦波的時候,為了保證波形盡量圓滑,沒有明顯的階梯,理論上取的點數(shù)越多,波形越圓滑,經(jīng)過查證資料,我們?nèi)《賯€電平來量化一個正弦波,如

31、果采用DAC0832,電流穩(wěn)定時間為1us,最大頻率F=12001MHz=5KHz(3.3)達不到設(shè)計要求的最大頻率29KHz的頻率要求;如果以犧牲取的電平數(shù)目為代價,要使波形能達到20KHz,則N最大只能取50,這樣波形會出現(xiàn)很大的失真,如圖所示:所以,我們不能采用DAC0832作為DA轉(zhuǎn)換芯片。DAC0808,建立時間為150ns,取二百個電平量化正弦波的時候可以算出:F=12000.15MHz(3.4)能滿足設(shè)計要求。同時,在仿真中,我們也驗證了這個觀點,如圖所示可以看出,采用DAC0808作為DA轉(zhuǎn)換芯片,所產(chǎn)生的正弦波波形比采用DAC0832轉(zhuǎn)換芯片產(chǎn)生的正弦波質(zhì)量高,波形圓滑。所以

32、在本設(shè)計方案里面采用DAC0808作為數(shù)模轉(zhuǎn)換芯片。3.3LCD1602液晶顯示屏1602液晶也叫1602字符型液晶,他是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個57或者511等點陣字符組成,每個點陣字符都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,真因為如此,在顯示圖像的時候表現(xiàn)不是很好,但是可以清楚具體的顯示字符、數(shù)字和漢字。3.3.1 LCD1602顯示屏的特點1.3.3V或5V工作電壓,對比度可調(diào)。2.內(nèi)含復位電路。3.提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能。4.有80字節(jié)顯示數(shù)據(jù)存儲器D

33、DRAM。5.內(nèi)建有192個5X7點陣的字型的字符發(fā)生器CGROM。6.8個可由用戶自定義的5X7的字符發(fā)生器CGRAM。7. 微功耗、體積小、顯示內(nèi)容豐富。.2按鍵的設(shè)計由于在本課題設(shè)計中,為了不使波形產(chǎn)生中斷,將使用中斷的方式來響應按鍵的操作。所以需要設(shè)計一個按鍵模塊,使單片機既能夠產(chǎn)生中斷,又能識別出是那個鍵按下了,以便采取相應的操作。一般,我們采用與門來連接開關(guān),如下圖所示。即只要有按鍵按下,就會激發(fā)單片機的外部中斷,接下來單片機就開始檢測連接鍵盤的幾個I/O口,根據(jù)按鍵的不同,來做出不同的操作。 按鍵部分的設(shè)計原理第四章程序設(shè)計在本課題中,波形信號發(fā)生器的波形幅度、波形頻率都是通過按

34、鍵來調(diào)節(jié)的,也就是說,都是通過單片機程序來控制波形幅度和頻率,所以程序的設(shè)計,在本課題中尤為重要。下圖為本次課題的程序總框圖。圖4.1程序總體框圖4.1頻率調(diào)節(jié)模塊的程序設(shè)計在本課題中,為了便于頻率方便統(tǒng)一調(diào)節(jié),每一種模型都采用相同的電平數(shù)來量化,為了使所有的波形盡量平滑,我們統(tǒng)一采用兩百個電平來刻畫一個周期的波形。這樣,一個波形的周期就等于200個電平保持的時間,我們改變每個電平的保持時間,就可以調(diào)節(jié)頻率。波形周期計算公式如下:T=200t(4.1)每個電平保持的時間t,可以利用定時器來實現(xiàn)。在本課題中,我們采用的是24Mhz晶振,這樣,我們可以算出計時個數(shù)N和波形周期T之間的關(guān)系。(4.2

35、)T=124N200(s)(4.3)F=24M200N(Hz)4.2幅度調(diào)節(jié)模塊的程序設(shè)計幅度的調(diào)節(jié)是通過控制DAC0808芯片的基準電壓來實現(xiàn)的,用單片機來控制電壓的大小,需要用到PWM波和一個簡單的低通濾波電路。通過調(diào)節(jié)PWM波的占空比來調(diào)節(jié)電壓的大小。占空比,就是一個周期中,高電平所占的時間比例。當占空比為1的時候,電壓就為5V,占空比為0的時候,電壓為0V。在multisim中仿真可見效果如圖:4.3存儲模塊的程序設(shè)計設(shè)計任務書中有要求存儲波形的要求,其實對于程序來說,只需要存儲波形的幅度,頻率,和波形值到單片機的eeprom,這樣即使單片機斷電,也能在上電之后再次調(diào)出已經(jīng)存儲的波形。

36、在波形調(diào)出的時候,只需要把存儲的數(shù)據(jù)放在相應的寄存器就可以實現(xiàn)波形的調(diào)出。需要注意的就是響應寄存器的設(shè)置和地址的選擇。同一次修改的數(shù)據(jù)放在同一扇區(qū),不是同一次修改的數(shù)據(jù)放在不同的扇區(qū),不必用滿,也可全用。4.4鍵盤模塊的程序設(shè)計為了保證在輸出波形的時候波形保持穩(wěn)定不間斷,所以在程序運行中不能一直花時間去掃描鍵盤,所以就采用中斷的方式來響應按鍵。按下鍵之后,單片機響應中斷,開始檢測連接鍵盤的I/O口,讀取數(shù)值,做出相應的變化。在實物制作時,鍵盤是連接在P3口,七個鍵盤分別連接在P30、P31、P33、P34、P35、P36、P37在發(fā)生中斷時,先P3口的數(shù)據(jù)與0XFF相或。消除P32的干擾。再檢

37、測哪位為0,從而識別哪個按鍵按下。第五章誤差的來源與分析在做出硬件電路并且燒錄好程序以后,硬件電路就可以開始工作了,在實際工作中可以發(fā)現(xiàn)有誤差。5.1波形幅度的誤差在實際測試中,可以發(fā)現(xiàn),在調(diào)節(jié)好幅度之后,波形幅度不會馬上變到相應的幅度值,而是需要一定的時間。這是因為在設(shè)計電路的時候電壓時通過PWM波低通濾波來的,這樣會導致在變化PWM波占空比的時候,后面產(chǎn)生的電壓值需要一短時間才會穩(wěn)定,這樣也導致波形的幅度在調(diào)節(jié)之后需要一段時間才會達到調(diào)節(jié)的值。5.2頻率的調(diào)節(jié)部分在實際工作中,頻率調(diào)節(jié)可能不是很準確,有可能在按鍵調(diào)節(jié)的時候頻率會不發(fā)生變化,或者變化很大。這是算法的問題。由于計時中計時個數(shù)與

38、頻率之間的公式為F=24M200N(Hz),可以發(fā)現(xiàn),N變化較小的時候F就會發(fā)生很大的變化,而且這個現(xiàn)象會隨著F的增大(N的減?。┒兊酶訃乐?。我們可以通過減少晶振頻率的方式來減緩此現(xiàn)象。第六章總結(jié)經(jīng)過幾個月的畢業(yè)設(shè)計,最終還是終于完成了波形信號發(fā)生器的制作,各項指標也基本達到了要求。在制作波形信號發(fā)生器的過程中,用單片機控制數(shù)模轉(zhuǎn)換芯片來產(chǎn)生波形的方法是一個經(jīng)典應用,在之前也有很多人用到過;但是需要精確量化波形的幅度和頻率并且以較小的步進值來步進,還需要波形可以存儲,這是在之前很少見到的,可以說是一個創(chuàng)新,至少在利用單片機控制轉(zhuǎn)換芯片來制作波形信號發(fā)生器的制作中是這樣。在本次畢業(yè)設(shè)計的制作

39、中,主要是以軟件為主,硬件為輔。在編寫程序的過程中,各個模塊的程序都是用不同的文本來編寫,各個模塊之間的程序獨立,很方便調(diào)用,可移植性強,幾乎是程序編寫中的經(jīng)典。這次波形信號發(fā)生器的制作,各項指標都能達到任務書的要求,所以總體來說,這次畢業(yè)設(shè)計還是比較成功的。參考文獻:1 童詩白.模擬電路技術(shù)基礎(chǔ)M.北京:高等教育出版社,2000.171202.2 張永瑞.電子測量技術(shù)基礎(chǔ)M.西安:西安電子科技大學出版社,2006.61101.3 張友德.單片微型機原理、應用與實踐M.上海:復旦大學出版社,2004.4044.4 周明德.微型計算機系統(tǒng)原理及應用M.北京:清華大學出版社,2002.341364

40、.5 程朗.基于8051單片機的雙通道波形發(fā)生器的設(shè)計與實現(xiàn)J.計算機工程與應用,2004.8:100103.6 Intel.MCS-51 Family of Single Chip MicrocomputersM.New York: Englewood Cliffs,1990:1-23.7 康華光.陳大欽.電子技術(shù)基礎(chǔ)(模擬部分)M.北京:高等教育出版社,1999.8 .9 .10 .致謝在這幾個月的畢業(yè)設(shè)計中遇到了很多困難,但是在鄒老師和同學的幫助下,所有的問題都被一一解決。和在畢業(yè)設(shè)計中學到的知識一樣,這種師生情,同學之間的友情,也是我的一筆財富。在這次畢業(yè)設(shè)計中,我鞏固了很多在大學所學

41、的課程內(nèi)容,很多疑惑都得到了答案,也使得自己所學的知識得到綜合和利用。特別是單片機方面,全面的了解一片如今比較流行的高性能的單片機,斯沃學到了很多知識。在編寫程序的時候也是。各種中斷定時器的應用,EEPROM的存儲和調(diào)用,液晶顯示,程序模塊化,這些都是我新學到的知識。所以我需要感謝這次的畢業(yè)設(shè)計,給了我這個學習的機會。在這次畢業(yè)設(shè)計結(jié)束之際,我要感謝我的指導老師鄒老師。在很多次遇到問題,畢業(yè)設(shè)計進度停滯不前的情況下,老師都能及時的給我解惑。也正因為老師的幫助,才使得這次畢業(yè)設(shè)計獲得成功。在此,我還要感謝和我一起完成畢業(yè)設(shè)計的同學,在這次畢業(yè)設(shè)計中,我們緊密合作,互相協(xié)助,不僅鍛煉了我們的溝通能

42、力,還培養(yǎng)了我們的團隊精神。最后,我還要感謝我們學校,在這次畢業(yè)設(shè)計中提供給我們良好的環(huán)境以及便利的條件,讓我們更好的投入到這次的畢業(yè)設(shè)計中。馬 雷 2014年5月26日附錄:附錄一: 原件清單元器件名稱數(shù)量STC12C3A60S2單片機1LCD1602液晶顯示屏1LM2341DAC08081400uF電解電容3個1000uF電解電容三個103排4阻1個帶鎖按鍵1個普通按鍵七個Led發(fā)光二極管紅黃綠各一個Dip40插座1個Dip16插座1個Dip14 插座1個1K歐姆電阻5個10K歐姆電阻2個2個100歐姆電阻1個12M晶振1個104瓷片電容2個附錄二:電路原理圖附錄三:PCB版圖附錄四:實物

43、圖附錄五:源程序*/ 簡易數(shù)字函數(shù)發(fā)生器/ 采用的是24MHZ的晶振頻率/ 指導老師:鄒道勝/*/#include #include#include #include /* 主程序*/void main()uint out_V,w,out_VX;LCD_initial(); num_V=100;num_F=2;iniai();InitADC(); /對內(nèi)部ADC初始化string(0 x80,press No.1 key!);while(1)tt=P3;if(tt!=0 xff)TR0=0;TR1=0;keey_main(); /按鍵處理程序TR0=1;TR1=1;w+;if(w=1000)w

44、=0;out_V=adc_isr(2); /采集輸出電壓out_VX=out_V*0.488;write_command(0 xc8); write_data(temp1out_VX/100); write_data(temp110);write_data(temp1out_VX/10/10); write_data(temp1out_VX%10);write_data(V);/* 定時器1,產(chǎn)生PWM波*/void timer1() interrupt 3if(!pwmx)TH1=0 xff;TL1=0 xff-num_V;else TH1=0 xff;TL1=0 x37+num_V; /占

45、空比20%pwmx=pwmx;PWM=pwmx;/* 定時器0*/void timer0() interrupt 1TH0=THtemp;TL0=TLtemp;if(mode=0) sine_out();else if(mode=1) triangle_out();else if(mode=2) square_out();/* 按鍵處理程序*/void keey_main()te=keey(); switch(te)/* 波形選擇*/case 1:mode+;if(mode2)mode=0;if(mode=0)THtemp=waveTH_Sinum_F;TLtemp=waveTL_Sinum_

46、F;elseif(mode=1)THtemp=waveTH_Trnum_F;TLtemp=waveTL_Trnum_F;elseTHtemp=waveTH_Sqnum_F;TLtemp=waveTL_Sqnum_F;while(!key);break;/* 頻率加 */case 2:if(num_F1)num_F-;if(mode=0)THtemp=waveTH_Sinum_F-1;TLtemp=waveTL_Sinum_F-1;else if(mode=1)THtemp=waveTH_Trnum_F-1;TLtemp=waveTL_Trnum_F-1;elseTHtemp=waveTH_Sq

47、num_F-1;TLtemp=waveTL_Sqnum_F-1;break;/* 幅度加 */case 4:if(num_V0)num_V-;break;/* 存儲數(shù)據(jù)*/case 6: Sector_Erase(0);Byte_Program(range,0);/將range的數(shù)據(jù)存到eeprom里面Byte_Program(num_F,1); /將fre的數(shù)據(jù)存到eeprom里面Byte_Program(mode,2); /將mode的數(shù)據(jù)存到eeprom里面write_command(0 xcd); /LCD寫指令write_data(O); /LCD寫數(shù)據(jù)write_data(K);

48、/LCD寫數(shù)據(jù)while(!key);break;/* 讀出數(shù)據(jù)*/case 7:range=Byte_Read(0); /將對應的數(shù)據(jù)從eeprom中讀出來賦給rangenum_F=Byte_Read(1); /將對應的數(shù)據(jù)從eeprom中讀出來賦給fremode=Byte_Read(2); /將對應的數(shù)據(jù)從eeprom中讀出來賦給modewrite_command(0 xcd); /LCD寫指令write_data( ); /LCD寫數(shù)據(jù)write_data( ); /LCD寫數(shù)據(jù)while(!key);if(mode=0)THtemp=waveTH_Sinum_F;TLtemp=wave

49、TL_Sinum_F;else if(mode=1)THtemp=waveTH_Trnum_F;TLtemp=waveTL_Trnum_F;elseTHtemp=waveTH_Sqnum_F;TLtemp=waveTL_Sqnum_F;break;default :break;switch(mode)case 0:string(0 x80 , Select Wave: ); /正弦波/*/write_command(0 xc0); write_data(temp1num_F/100);write_data(temp1num_F%100/10);/寫頻率write_data(temp1num_F

50、%10);write_data(temp10);write_data(temp10);write_data(H);write_data(Z);/*/*write_command(0 xc8); write_data(temp1range/100); write_data(temp110); /LCD寫幅度write_data(temp1range%100/10); write_data(temp1range%10);*/*/ break;case 1:string(0 x80 , Triangle Wave: );/寫顯示三角波形/*/write_command(0 xc0); write_d

51、ata(temp1num_F/100);write_data(temp1num_F%100/10);/寫頻率write_data(temp1num_F%10);write_data(temp10);write_data(temp10);write_data(H);write_data(Z);/*/*write_command(0 xc8); write_data(temp1range/100); write_data(temp110); /LCD寫幅度write_data(temp1range%100/10); write_data(temp1range%10); */break;case 2

52、:string(0 x80 , Square Wave: ); /方波write_command(0 xc0); write_data(temp1num_F/100);write_data(temp1num_F%100/10);/寫頻率write_data(temp1num_F%10);write_data(temp10);write_data(temp10);write_data(H);write_data(Z);/*/write_command(0 xc8); /write_data(temp1range/100); /write_data(temp110); /LCD寫幅度/write_

53、data(temp1range%100/10); /write_data(temp1range%10);break;default :break;#include #define uchar unsigned char#define uint unsigned intvoid iniai()EA=1;TMOD|=0 x11; /定時器0TR1=1;ET1=1;TH1=0 xf0;TL1=0 xf0;ET0=1;TH0=0 xfe;TL0=0 xfe;/IP=0 x02; /設(shè)置定時器為高優(yōu)先級AUXR|=0X80; /T0工作在1T模式/TH0=0 xff; #include #define

54、uchar unsigned char#define uint unsigned intvoid delay_key(uchar z) uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);uchar keey()uchar aa,cc;aa=P3;cc=0;if(aa|0 x04)!=0 xff)switch(aa|0 x04)case 0 xfe:cc=1;break;case 0 xfd:cc=2;break;case 0 xf7:cc=3;break;case 0 xef:cc=4;break;case 0 xdf:cc=5;break;case 0 xbf:

55、cc=6;break;case 0 x7f:cc=7;break;default :cc=0;break;return cc;#include #define uchar unsigned char#define uint unsigned int#define DAdata P2uchar wavecount;bit judge;extern num_F;uchar aa;uchar code triangle_tab= /每隔數(shù)字8,采取一次0 x00,0 x08,0 x10,0 x18,0 x20,0 x28,0 x30,0 x38,0 x40,0 x48,0 x50,0 x58,0 x

56、60,0 x68,0 x70,0 x78,0 x80,0 x88,0 x90,0 x98,0 xa0,0 xa8,0 xb0,0 xb8,0 xc0,0 xc8,0 xd0,0 xd8,0 xe0,0 xe8,0 xf0,0 xf8,0 xff,0 xf8,0 xf0,0 xe8,0 xe0,0 xd8,0 xd0,0 xc8,0 xc0,0 xb8,0 xb0,0 xa8,0 xa0,0 x98,0 x90,0 x88,0 x80,0 x78,0 x70,0 x68,0 x60,0 x58,0 x50,0 x48,0 x40,0 x38,0 x30,0 x28,0 x20,0 x18,0 x

57、10,0 x08,0 x00;uchar code sine_tab256=/輸出電壓從0到最大值(正弦波1/4部分)0 x80,0 x83,0 x86,0 x89,0 x8d,0 x90,0 x93,0 x96,0 x99,0 x9c,0 x9f,0 xa2,0 xa5,0 xa8,0 xab,0 xae,0 xb1,0 xb4,0 xb7,0 xba,0 xbc,0 xbf,0 xc2,0 xc5,0 xc7,0 xca,0 xcc,0 xcf,0 xd1,0 xd4,0 xd6,0 xd8,0 xda,0 xdd,0 xdf,0 xe1,0 xe3,0 xe5,0 xe7,0 xe9,0

58、 xea,0 xec,0 xee,0 xef,0 xf1,0 xf2,0 xf4,0 xf5,0 xf6,0 xf7,0 xf8,0 xf9,0 xfa,0 xfb,0 xfc,0 xfd,0 xfd,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,/輸出電壓從最大值到0(正弦波1/4部分)0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfe,0 xfd,0 xfd,0 xfc,0 xfb,0 xfa,0 xf9,0 xf8,0 xf7,0 xf6,0 xf5,0 xf4,0 xf2,0 xf1,0 xef,0 xee,0 xe

59、c,0 xea,0 xe9,0 xe7,0 xe5,0 xe3,0 xe1,0 xde,0 xdd,0 xda,0 xd8,0 xd6,0 xd4,0 xd1,0 xcf,0 xcc,0 xca,0 xc7,0 xc5,0 xc2,0 xbf,0 xbc,0 xba,0 xb7,0 xb4,0 xb1,0 xae,0 xab,0 xa8,0 xa5,0 xa2,0 x9f,0 x9c,0 x99 ,0 x96,0 x93,0 x90,0 x8d,0 x89,0 x86,0 x83,0 x80,/輸出電壓從0到最小值(正弦波1/4部分)0 x80,0 x7c,0 x79,0 x76,0 x72,

60、0 x6f,0 x6c,0 x69,0 x66,0 x63,0 x60,0 x5d,0 x5a,0 x57,0 x55,0 x51,0 x4e,0 x4c,0 x48,0 x45,0 x43,0 x40,0 x3d,0 x3a,0 x38,0 x35,0 x33,0 x30,0 x2e,0 x2b,0 x29,0 x27,0 x25,0 x22,0 x20,0 x1e,0 x1c,0 x1a,0 x18,0 x16 ,0 x15,0 x13,0 x11,0 x10,0 x0e,0 x0d,0 x0b,0 x0a,0 x09,0 x08,0 x07,0 x06,0 x05,0 x04,0 x03

溫馨提示

  • 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

提交評論