基于dac0832的波形發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于dac0832的波形發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于dac0832的波形發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于dac0832的波形發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于dac0832的波形發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(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、裝訂線 本科生畢業(yè)論文(設(shè)計(jì))題目:基于DAC0832波形發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)系 部 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科門類 工 科 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué) 號(hào) 姓 名 指導(dǎo)教師 2013年 5 月 15 日基于dac0832的波形發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)摘 要波形發(fā)生器是能夠產(chǎn)生大量的標(biāo)準(zhǔn)信號(hào)和用戶定義信號(hào),并保證高精度、 高穩(wěn)定性、可重復(fù)性和易操作性的電子儀器。函數(shù)波形發(fā)生器具有連續(xù)的相位 變換、和頻率穩(wěn)定性等優(yōu)點(diǎn),不僅可以模擬各種復(fù)雜信號(hào),還可對(duì)頻率、幅 值、相移、波形進(jìn)行動(dòng)態(tài)、及時(shí)的控制,并能夠與其它儀器進(jìn)行通訊,組成自 動(dòng)測(cè)試系統(tǒng),因此被廣泛用于自動(dòng)控制系統(tǒng)、震動(dòng)激勵(lì)、通訊和儀器儀表領(lǐng) 域。本論文是研究

2、基于DAC0832波形發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)。論文采用文獻(xiàn)研究法、模擬法、觀察法等方法進(jìn)行課題的研究。系統(tǒng)是用AT89S51作為系統(tǒng)的控制核心,外圍電路采用數(shù)字/模擬轉(zhuǎn)換電路(DAC0832),運(yùn)放電路(TL082),按鍵,定位器,LCD顯示器等。系統(tǒng)通過(guò)按鍵來(lái)和定位器進(jìn)行整個(gè)系統(tǒng)的控制,按鍵控制切換產(chǎn)生正弦波,鋸齒波,三角波,階梯波,四中波形,而幅值和占空比是通過(guò)定位器來(lái)進(jìn)行調(diào)節(jié)。系統(tǒng)經(jīng)過(guò)調(diào)試和最后的檢測(cè),可以得出本系統(tǒng)一下特點(diǎn):性能較好,穩(wěn)定性強(qiáng),價(jià)格便宜,容易操作,具有一定的實(shí)用性,最后的成品可以用在常用的有波形發(fā)生器功能要求的應(yīng)用電子儀器設(shè)備上。 關(guān)鍵詞:?jiǎn)纹瑱C(jī) 波形發(fā)生器 DAC0832A

3、BSTRACTThe profile generator is can produce the massive standard signals and the user definition signal, and guarantees the high accuracy, high stable, the repeatability and the easy operational electronic instrumentation. The function profile generator has the continual phase transformation, and me

4、rits and so on frequency stability, not only may simulate each kind of complex signal, but also may to the frequency, the peak-to-peak value, the phase-shift, the profile carry on the tendency, the prompt control, and can carry on the communication with other instruments, the composition automated t

5、est system, therefore widely uses in the automatic control system, the vibration drive, the communication and the instrument measuring appliance domain.This paper is studing on waveform generator design and implementation based on the DAC0832. The system is used AT89S51as the core of the control sys

6、tem, a peripheral circuit using digital / analog conversion circuit ( DAC0832), operational amplifier circuit (TL082), keys, locator, LCD display etc. The system through the keys and locator for the entire system control, The key control switch generates a sine wave, sawtooth, triangle wave, ladder

7、wave, fourth waveform, while the amplitude and duty ratio is adjusted by the locator. The system debugging and the final test, the system can reach a characteristic: good performance, high stability, low price, easy to operate, has a certain practicality, the final product can be used in common with

8、 waveform generator function requirements of the application of electronic equipment.Keywords:MCU the waveform generator DAC0832目 錄第1章 緒論11.1波形發(fā)生器現(xiàn)狀11.2單片機(jī)在波形發(fā)生器中的應(yīng)用11.3課題研究目的,內(nèi)容,和方案設(shè)計(jì)1第2章 硬件電路的設(shè)計(jì)32.1波形發(fā)生器系統(tǒng)框圖32.2 各模塊之間的相連32.3各模塊電路的設(shè)計(jì)62.3.1 D/A轉(zhuǎn)換電路設(shè)計(jì)62.3.2復(fù)位電路設(shè)計(jì)72.4.3 按鍵電路設(shè)計(jì)72.4.4 I/V轉(zhuǎn)換電路設(shè)計(jì)9第3章 軟件設(shè)計(jì)

9、103.1程序103.2按鍵程序模塊103.3 鋸齒波程序模塊123.4三角波程序模塊133.5正玄波程序模塊143.6方波程序模塊143.7延遲程序模塊16第4章 總結(jié)17致謝18參考文獻(xiàn)19第1章 緒論1.1波形發(fā)生器現(xiàn)狀波形發(fā)生器作為一種常用的應(yīng)用電子儀器設(shè)備,傳統(tǒng)的波形發(fā)生器可以完全用硬件電路搭建,如應(yīng)用555振蕩電路可以產(chǎn)生正弦波,三角波,方波等波形,傳統(tǒng)的波形發(fā)生器多采用這種方式設(shè)計(jì),這種方式不應(yīng)用單片機(jī),但是這種方式存在波形質(zhì)量差,控制難,可調(diào)范圍小,電路復(fù)雜和體積大等缺點(diǎn),在科學(xué)研究和生產(chǎn)實(shí)踐中,如工業(yè)過(guò)程控制,生物醫(yī)學(xué),地震模擬震動(dòng)等領(lǐng)域往往需要低頻信號(hào)源,而由硬件搭建的波形

10、發(fā)生器效果往往達(dá)不到好的效果,而且低頻信號(hào)源所需要的RC很大,大電阻,大電容在制作上有困難,參數(shù)的精度也難以保證,而且體積大,漏電,體積大是該類波形發(fā)生器的顯著缺點(diǎn)。1.2單片機(jī)在波形發(fā)生器中的應(yīng)用隨著電子技術(shù)的飛快發(fā)展,單片機(jī)的應(yīng)用不斷的深入,基于單片機(jī)的智能儀器的設(shè)計(jì)技術(shù)不斷成熟。單片機(jī)構(gòu)成的儀器具有高可靠性,高性價(jià)比,單片機(jī)技術(shù)在智能儀表和自動(dòng)化等諸多領(lǐng)域有了極為廣泛的應(yīng)用,并應(yīng)用到各種家庭電器,單片機(jī)技術(shù)的廣泛應(yīng)用推動(dòng)了社會(huì)的進(jìn)步。一塊單片機(jī)芯片就是一臺(tái)計(jì)算機(jī),單片機(jī)的這種特殊的結(jié)構(gòu)形式,使得其在某些應(yīng)用領(lǐng)域,它承擔(dān)了大中型計(jì)算機(jī)和通用微機(jī)無(wú)法完成的一些工作。單片機(jī)有很多優(yōu)點(diǎn)和特點(diǎn),歸

11、納有以下幾個(gè)方面:1.具有優(yōu)異的性價(jià)比單片機(jī)盡可能的把應(yīng)用所需要的存儲(chǔ)器,各種功能的I/O接口集成在一塊芯片內(nèi),因而其性能優(yōu)越,而價(jià)格性對(duì)低廉。2.集成度搞,體積小,可靠性高單片機(jī)把各種功能部件集成在一塊芯片上,因而集成度高,為大規(guī)模集成電路或超大規(guī)模集成電路,又內(nèi)部采用總線結(jié)構(gòu),因而大大減少了芯片內(nèi)部之間的連線,這大大提高了單片機(jī)的可靠性和抗干擾能力,同時(shí),體積小,對(duì)于強(qiáng)磁場(chǎng)環(huán)境易于采用屏蔽措施,適合于在惡劣環(huán)境下工作。3.低電壓和低功耗單片機(jī)大量應(yīng)用于便攜式產(chǎn)品和家庭消費(fèi)類產(chǎn)品,低電壓和低功耗極為重要。目前,單片機(jī)的功耗也越來(lái)越低,一枚紐扣電池就能使產(chǎn)品運(yùn)行很長(zhǎng)時(shí)間5.控制功能強(qiáng)單片機(jī)體積

12、雖小,但五臟俱全,它非常適合專門的控制用途。其指令系統(tǒng)中含有豐富的轉(zhuǎn)移指令,容易通過(guò)編程實(shí)現(xiàn)相關(guān)控制1.3課題研究目的,內(nèi)容,和方案設(shè)計(jì)利用DAC0832波形發(fā)生器設(shè)計(jì)一個(gè)能產(chǎn)生正弦波、方波、三角波、梯形波、鋸齒波的波形發(fā)生器。本題目中,方波信號(hào)是利用定時(shí)器中斷產(chǎn)生的,每次中斷時(shí),將輸出的信號(hào)按位取反即可。設(shè)計(jì)一個(gè)能產(chǎn)生正弦波、方波、三角波、梯形波、鋸齒波的波形發(fā)生器其他波形可以通過(guò)單片機(jī)控制DAC來(lái)實(shí)現(xiàn)。1.三角波信號(hào)是將輸出的二進(jìn)制數(shù)字信號(hào)依次加1,達(dá)到0xff時(shí)依次減1,并實(shí)時(shí)將數(shù)字信號(hào)經(jīng)D/A轉(zhuǎn)換得到;2.鋸齒波信號(hào)是將輸出的二進(jìn)制數(shù)字信號(hào)依次加1,達(dá)到0xff時(shí)置為0x00,并實(shí)時(shí)將

13、數(shù)字信號(hào)經(jīng)D/A轉(zhuǎn)換得到的;3.方波信號(hào)是將輸出二進(jìn)制數(shù)字信號(hào)以1和0來(lái)顯示在上面,還是在下面,并實(shí)時(shí)將數(shù)字信號(hào)經(jīng)D/A轉(zhuǎn)換得到的;4.正弦波是利用MATLAB將正弦曲線均勻取樣后,得到等間隔時(shí)刻正弦波取樣值,然后依次輸出后經(jīng)D/A轉(zhuǎn)換得到。采用單片機(jī)(AT89S51)和數(shù)模轉(zhuǎn)換芯片(DAC0832)實(shí)現(xiàn)波形的產(chǎn)生,波形的產(chǎn)生由程序控制,向D/A的輸入端按一定的規(guī)律發(fā)送數(shù)據(jù),經(jīng)過(guò)D/A產(chǎn)生波形,通過(guò)按鍵或中斷控制不同波形的產(chǎn)生。此方案通過(guò)編程簡(jiǎn)化了外部電路,原理簡(jiǎn)單,容易實(shí)現(xiàn)。通過(guò)編程實(shí)現(xiàn)不同波型的產(chǎn)生,并且可以通過(guò)按鍵實(shí)現(xiàn)波形的切換。該方案線路簡(jiǎn)單,結(jié)構(gòu)緊湊,系統(tǒng)穩(wěn)定,易控制,容易調(diào)試等優(yōu)點(diǎn)

14、。第2章 硬件電路的設(shè)計(jì)2.1波形發(fā)生器系統(tǒng)框圖 LCD波形指示 按鍵 AT89S51 電源A/D轉(zhuǎn)換電流/電壓轉(zhuǎn)換輸出圖2-1波形發(fā)生器系統(tǒng)框圖原理框圖分析:該波形發(fā)生器主要由單片機(jī)(AT89S51),數(shù)模轉(zhuǎn)換電路(DAC0832),電流/電壓轉(zhuǎn)換電路(TL082),按鍵和ISP接口等組成。其工作原理為當(dāng)按下通過(guò)按下按鍵來(lái)進(jìn)行切換波形,而且占空比,幅值可調(diào),然后就會(huì)產(chǎn)生相對(duì)應(yīng)的波形。1.本系統(tǒng)的通過(guò)按鍵(按鍵和定位器)來(lái)進(jìn)行整個(gè)系統(tǒng)的控制,按鍵1是波形選擇及占空比和頻率的選擇,按鍵2和按鍵3是調(diào)節(jié)占空比和頻率的,按 鍵4是確定以上的設(shè)置然后進(jìn)行最后的確認(rèn)。2.LCD是用來(lái)顯示當(dāng)前的波形的名字

15、,及波形的占空比和頻率,在進(jìn)行選擇波形和波形參數(shù)的設(shè)置的時(shí)候需要用到的重要工具。3.電源為整個(gè)系統(tǒng)供電,是整個(gè)系統(tǒng)的保障。由跟USB線連接電腦和單片機(jī)。4.A/D轉(zhuǎn)換是整個(gè)系統(tǒng)的重點(diǎn)部分,它將單片機(jī)控制送來(lái)的數(shù)據(jù)轉(zhuǎn)換成電壓,為整個(gè)過(guò)程的重點(diǎn),主要由DAC0832來(lái)完成。 5.數(shù)據(jù)通過(guò)DAC0832芯片轉(zhuǎn)換后為電流信號(hào),然后需要個(gè)外部功率放大器來(lái)實(shí)現(xiàn)電流和電壓之間的轉(zhuǎn)換。6.把轉(zhuǎn)換后得到的電壓信號(hào)輸出到示波器進(jìn)行顯示,得到波形。2.2 各模塊之間的相連按鍵與AT89S51之間的相連總共有四個(gè)控制按鍵,是整個(gè)系統(tǒng)的主要控制區(qū),四個(gè)按鍵分別是KEY1,KEY2,KEY3,KEY4,分別于單片機(jī)的P2

16、4,P25,P26,P27(即單片機(jī)的25,26,27,28號(hào)四個(gè)引腳相連,) 然后再分別通過(guò)一個(gè)4K的電阻和電源相連。最后進(jìn)行統(tǒng)一接地1。圖2-2 按鍵與單片機(jī)的相連圖LCD顯示器與AT89S51的相連本系統(tǒng)采用是LCD1602液晶顯示器,次液晶顯示器總共有16各引腳,各引腳有各自的不同功能,LCD1602的46引腳與單片機(jī)的P10P12(即單片機(jī)的1,2,3號(hào)引腳)這三個(gè)引腳是傳輸AT89S51與LCD1602液晶顯示器的控制信號(hào)的。LCD1602的714號(hào)八個(gè)引腳是與AT89S51的P01P07(即單片機(jī)的39,38,37,36,35,34,33,32號(hào)引腳)相連,與之相應(yīng)的連線為單片機(jī)

17、與液晶顯示器的數(shù)據(jù)傳輸線,在焊接電路板的時(shí)候,用的是排線來(lái)連接的。圖2-3 LCD1602與單片機(jī)的相連圖DAC0832與AT89S51之間的相連DAC0832是整個(gè)波形發(fā)生器的中專部分,實(shí)現(xiàn)的是數(shù)字信號(hào)轉(zhuǎn)換成模擬電流信號(hào),該芯片是由20各引腳組成,其中的DI0DI7號(hào)引腳與單片機(jī)AT89S51的P30P37(即AT89S51的1117號(hào))引腳相連,與之相應(yīng)的聯(lián)想便是是DAC0832與AT89S51的數(shù)據(jù)傳輸線,是DAC0832與AT89S51數(shù)據(jù)交換的渠道,AT89S51中的數(shù)據(jù)通過(guò)這條線把原始的數(shù)字量數(shù)據(jù)傳到DAC0832進(jìn)行轉(zhuǎn)化,轉(zhuǎn)化成電流模擬信號(hào)2。其他的引腳中的1,2,3,10,12

18、,17,18號(hào)引腳是接地的,REF (DAC0832芯片的9號(hào))引腳是反饋電阻引出端,DAC0832內(nèi)部已經(jīng)有反饋電阻,所以 REF端可以直接接到外部運(yùn)算放大器的輸出端,這樣相當(dāng)于將一個(gè)反饋電阻接在運(yùn)算放大器的輸出端和輸入端之間。IOUT1(DAC0832芯片的11號(hào))引腳是模擬電流輸出端1,當(dāng)DAC寄存器中數(shù)據(jù)全為1時(shí),輸出電流最大,當(dāng) DAC寄存器中數(shù)據(jù)全為0時(shí),輸出電流為0。與功率放大器負(fù)極相連。圖2-4 DAC0832與AT89S51之間的相連圖D/A轉(zhuǎn)換電路與電流/電壓轉(zhuǎn)換電路的相連D/A轉(zhuǎn)換電路這里是指DAC0832芯片,前面我們也提到過(guò)REF (DAC0832芯片的9號(hào))引腳是反

19、饋電阻引出端,REF端直接接到外部運(yùn)算放大器的輸出端, IOUT1(DAC0832芯片的11號(hào))引腳是模擬電流輸出端1與功率放大器負(fù)極相連3。圖2-5 D/A轉(zhuǎn)換電路與電流/電壓轉(zhuǎn)換電路的相連圖電流/電壓轉(zhuǎn)換電路與波形輸出端之間的相連 波形輸出端有兩個(gè)引腳,1號(hào)引腳是接功率放大器的輸出端,2號(hào)引腳是接地。圖2-6 電流/電壓轉(zhuǎn)換電路與波形輸出端之間的相連圖2.3各模塊電路的設(shè)計(jì)2.3.1 D/A轉(zhuǎn)換電路設(shè)計(jì)圖2-7中DAC0832的數(shù)字量B由單片機(jī)送來(lái),AMPA和BAMP均為運(yùn)算放大器,輸出電壓VOUT通過(guò)2個(gè)10K電阻反饋到運(yùn)算放大器AMPA輸入端,其他如圖2-7,可由基爾霍夫定律列出方程組

20、,并解得VOUT(B-128) VREF/128由上式在選用+VREF時(shí),如果輸入數(shù)字量最高位b7為“1”時(shí),則輸出模擬電壓VOUT為正;若輸入數(shù)字量最高位b7為“0”時(shí),則輸出模擬電壓VOUT為負(fù)。在選用-VREF時(shí),輸出值正好與+VREF選用時(shí)極性相反4。VOUT圖2-7 D/A轉(zhuǎn)換電路圖2.3.2復(fù)位電路設(shè)計(jì)1.使CPU開(kāi)始工作的方法就是給CPU一個(gè)復(fù)位信號(hào),復(fù)位信號(hào)結(jié)束后,CPU從程序存儲(chǔ)器“0000H”開(kāi)始執(zhí)行程序。AT89S51高電平復(fù)位,復(fù)位的方式一般有三種5:第一:上電復(fù)位。接通電源時(shí),單片機(jī)復(fù)位。第二:手動(dòng)復(fù)位。設(shè)置一個(gè)復(fù)位按鈕,當(dāng)操作者按下按鈕時(shí)產(chǎn)生一個(gè)復(fù)位信號(hào)。第三:自動(dòng)

21、復(fù)位。設(shè)計(jì)一個(gè)復(fù)位電路,當(dāng)系統(tǒng)滿足某一條件時(shí)自動(dòng)產(chǎn)生一個(gè)復(fù)位信號(hào)。而本系統(tǒng)采用的是手動(dòng)復(fù)位,在系統(tǒng)需要出新設(shè)置,或者死機(jī)的時(shí)候,可以按下reset鍵得意還原系統(tǒng)的狀態(tài)。2.復(fù)位電路與單片機(jī)的相連毫無(wú)疑問(wèn)復(fù)位鍵是與單片機(jī)的9好引腳相連,與接地之間連了10k電阻,與電源之間相連10uf的微波電容。圖2-8 復(fù)位電路圖2.4.3 按鍵電路設(shè)計(jì)1.原理圖如下KEY1KEY1KEY3KEY2圖2-9 采用查詢方式對(duì)各類波的切換2.說(shuō)明:KEY1:波形之間的切換,及占空比,頻率的切換。KEY2:在設(shè)置占空比和頻率時(shí),按下,數(shù)值會(huì)減少。KEY3:在設(shè)置占空比和頻率時(shí),按下,數(shù)值會(huì)增加。KEY4:確認(rèn)鍵。3.

22、工作介紹對(duì)于外部中斷實(shí)現(xiàn)對(duì)波形的切換,當(dāng)KEY1按下時(shí),LCD顯示波形的名字的下面開(kāi)始閃爍光標(biāo),再次按下進(jìn)行波形之間的切換,按下KEY4鍵進(jìn)行,開(kāi)始切換占空比和頻率,當(dāng)切換到占空比時(shí)或者頻率時(shí),按下KEY3或者KEY4進(jìn)行空比時(shí)或者頻率的增加減少設(shè)置,最后再按下KEY4進(jìn)行最后的確認(rèn),這時(shí)示波器里的波形應(yīng)該已經(jīng)發(fā)生了變化6。4.按鍵與單片機(jī)的相連按鍵KEY1,KEY2,KEY3,KEY4分別和單片機(jī)的P24,P25,P26,P27引腳相連,然后再分別通過(guò)一個(gè)4K的電阻和電源相連。最后進(jìn)行統(tǒng)一接地。2.4.4 I/V轉(zhuǎn)換電路設(shè)計(jì)圖2.10 I/V轉(zhuǎn)換電路1.說(shuō)明:實(shí)現(xiàn)I/V轉(zhuǎn)換最簡(jiǎn)單的方法就是直

23、接在1out1和Iout2之間跨界一電阻,這樣就很容易的實(shí)現(xiàn)了I/V轉(zhuǎn)換,但是這種方法忽略了一個(gè)阻抗問(wèn)題。對(duì)于DAC0832來(lái)說(shuō),R的取值應(yīng)盡可能大,能夠保證獲得更多的電壓,對(duì)于與輸出電壓相連的后續(xù)電路來(lái)說(shuō),R的取值應(yīng)盡可能的小,以降低輸出阻抗,這兩方面是矛盾的,所以這種方式欠合理。而合理的方式是應(yīng)用運(yùn)算放大器實(shí)現(xiàn)I/V轉(zhuǎn)換,也解決了阻抗的問(wèn)題7。2.I/V轉(zhuǎn)換電路與DAC0832的相連一級(jí)功率放大器TL082的負(fù)引腳與DAC0832的11號(hào)引腳相連,正極接地,而二級(jí)功率放大器TL082的負(fù)極通過(guò)10K的電阻與DAC0832的8號(hào)引腳相連,正極也接地8。 第3章 軟件設(shè)計(jì)根據(jù)功能,系統(tǒng)軟件設(shè)計(jì)

24、分成幾個(gè)模塊編程:主程序模塊,按鍵程序模塊,鋸齒波程序模塊,三角波程序模塊,正弦波程序模塊,方波程序模塊,延時(shí)程序模塊9。3.1程序開(kāi)始執(zhí)行經(jīng)拷到單片機(jī)里的程序,一些初始程序之類。1.程序流程圖把轉(zhuǎn)換好的電壓,送到示波器里進(jìn)行最后的顯示。一切準(zhǔn)備就緒,把數(shù)據(jù)送到dac0832里進(jìn)行轉(zhuǎn)換成電流,或者電壓然后通過(guò)TL0832和放大器進(jìn)行功放。按下確認(rèn)鍵進(jìn)行確認(rèn),如果需要重新設(shè)置,按下背部的reset鍵來(lái)進(jìn)行重新設(shè)置。這部分也是需要結(jié)合按鍵和旋鈕的,通過(guò)按鍵選擇波形之后可以設(shè)置占空比和頻率等參數(shù),幅值而已通過(guò)旋鈕來(lái)調(diào)的。通過(guò)按鍵選擇正弦波,方波,三角波和鋸齒波。圖3-1 程序流程圖2.說(shuō)明:程序中主

25、要實(shí)現(xiàn)利用按鍵來(lái)控制不同波形的輸出。3.2按鍵程序模塊按鍵程序主要是講四個(gè)按鍵如何工作的,工作的過(guò)程基本相同,這里我們重點(diǎn)對(duì)按鍵1進(jìn)行詳細(xì)介紹,其他按鍵工作原理基本不變10。首先是進(jìn)行鍵盤掃描掃描前,接鍵盤的引腳口拉高,這樣發(fā)生什么變換,信號(hào)不至于紊亂,然后判斷按鍵1是否按下,如果按下,進(jìn)行判斷FunctionCount(就是功能次序)如果按鍵觸發(fā)的是FunctionCount1(功能1)那么就是送到LCD上顯示初始的頻率,如果是FunctionCount2那是顯示的是占空比,程序如下:void KeyScan(void) /獨(dú)立鍵盤掃描子函數(shù) KEYPORT |= 0xf0; /每次掃描前,

26、先將接鍵盤的引腳口拉高 if(Key1 = 0) /如果檢測(cè)到有鍵按下 Scan10MsDelay(); /延時(shí)10msif(Key1 = 0) /再次判斷是否確實(shí)按下按鍵,進(jìn)行消抖操作。 /功能鍵FunctionCount+; / 功能計(jì)數(shù)器增加if(FunctionCount = 3)/ 如果是FunctionCount = 3那么顯示/的是正弦波LCDCursor(); / 調(diào)入光標(biāo)函數(shù),光標(biāo)寫入LCDDispString(8,1,Sin);/因?yàn)镕unctionCount = 3 /所以LCD顯示的是Sinelse if(FunctionCount = 4)/ 如果是FunctionC

27、ount = 4那么 /顯示的是方波LCDCursor(); / 調(diào)入光標(biāo)函數(shù),光標(biāo)寫入LCDDispString(8,1,Squre );/ LCD顯示的是 Squre else if(FunctionCount = 5)/ 如果是FunctionCount = 5那么 /顯示的是三角波LCDCursor(); / 調(diào)入光標(biāo)函數(shù),光標(biāo)寫入LCDDispString(8,1,Triangle);/ LCD顯示的是Sin /else if(FunctionCount = 6)/ 如果是FunctionCount = 6那么 / LCD顯示的是鋸齒波LCDCursor();/調(diào)入光標(biāo)函數(shù),光標(biāo)寫入

28、LCDDispString(8,1,Sawtooth);/ LCD顯示的是 Sawtooth else if(FunctionCount = 1)/ 如果是FunctionCount = 1那么 /顯示的是頻率LCDDispNum(5,2,(FREofALL/10%10);/ LCD顯示的是FRE=?LCDCursor();/調(diào)入光標(biāo)函數(shù),光標(biāo)寫入else if(FunctionCount = 2)/ 如果是FunctionCount = 2那么 /顯示的是占空比LCDDispNum(13,2,(DUTYofALL/10%10);/ LCD顯示的是/DUTY=?LCDCursor();/調(diào)入光

29、標(biāo)函數(shù),光標(biāo)寫入while(!Key1); /未松手時(shí),不跳出循環(huán),避免誤檢測(cè) FunctionCount3到6是分別進(jìn)行l(wèi)cd顯示正弦波,方波,三角波和鋸齒波。通過(guò)按鍵控制整個(gè)系統(tǒng),按鍵2和按鍵3是分別是增加和減少鍵,在設(shè)置占空比和頻率的時(shí)候需要用到他們,而按鍵4是確認(rèn)鍵,對(duì)于所以參數(shù)已經(jīng)設(shè)置完畢的情況下按下確認(rèn)鍵。由于功能簡(jiǎn)單,不是本論文的重點(diǎn)而且原理基本相同在這里就不闡述。3.3 鋸齒波程序模塊鋸齒波是經(jīng)過(guò)鋸齒波函數(shù)進(jìn)行SawtoothOut(unsigned char fre)來(lái)進(jìn)行轉(zhuǎn)換成數(shù)據(jù)量,再輸出道D/A轉(zhuǎn)換電路輸出到示波器進(jìn)行顯示的波形11。鋸齒波是和三角波比較相似,他是由兩個(gè)

30、三角波疊加而成,所以,我們可以把鋸齒波,看成是兩個(gè)三角波。在處理鋸齒波的時(shí)候,也是當(dāng)三角波來(lái)處理,鋸齒波是由函數(shù)來(lái)產(chǎn)生,我們只需要知道,最高點(diǎn),和最低點(diǎn)以及占空比和頻率,那么波形就能夠?qū)崿F(xiàn)。鋸齒波的詳細(xì)程序如下。1.鋸齒波函數(shù)的定義void SawtoothOut(unsigned char fre) /定義鋸齒波函數(shù)SawtoothIncrement = fre; / 鋸齒波的參數(shù)增加值等于頻率值FlagSawtooth = 1; / 鋸齒波默認(rèn)初始值為1Count = 255;/ 鋸齒波函數(shù)的初始值為2552.鋸齒波函數(shù)的實(shí)現(xiàn)if(FlagSawtooth = 1)/ 判斷是否是鋸齒波,如

31、果是才能繼續(xù) CountNumber+;/ 增加次數(shù)計(jì)數(shù)器if(CountNumber = 2)/就可以輸出波CountNumber = 0;/ 再次置0Count = Count-SawtoothIncrement;/找到下一個(gè)點(diǎn) if(Count = 256)/ 判斷是否為256如果為256 了那么自動(dòng)Count = 0;/變?yōu)?(256為最高點(diǎn)。0為最低點(diǎn))DATAOUTPUT= TableTriangleCount;/輸出波圖3-3 三角波圖3.5正玄波程序模塊正玄波是經(jīng)過(guò)鋸齒波函數(shù)進(jìn)行SinOut(unsigned char fre)來(lái)進(jìn)行轉(zhuǎn)換成數(shù)據(jù)量,再輸出道D/A轉(zhuǎn)換電路輸出到示

32、波器進(jìn)行顯示的波形13。正玄波是常用的波形,他的實(shí)現(xiàn),需要依賴一個(gè)控制節(jié)點(diǎn)的函數(shù),知道一個(gè)節(jié)點(diǎn),通過(guò)計(jì)時(shí)器和變量的不斷變化,這樣就能得到下個(gè)節(jié)點(diǎn),比如當(dāng)在最低點(diǎn)的時(shí)候,通過(guò)一個(gè)節(jié)點(diǎn)增加變量。1. 正玄波函數(shù)的定義void SinOut(unsigned char fre)/1-10HZ 2-20Hz 5-50Hz 10-100HzSinIncrement = fre; 正玄波的參數(shù)增加值等于頻率值FlagSin = 1; 正弦標(biāo)記置1也是初始值2.正玄波函數(shù)的實(shí)現(xiàn)if(FlagSin = 1)/ 判斷是正玄波flag是否等于1,如果是才能繼續(xù)CountNumber+;/增加次數(shù)計(jì)數(shù)器if(Co

33、untNumber = 2)/輸出正弦波CountNumber = 0;/ 再次置0Count = Count+SinIncrement;/找到下一個(gè)點(diǎn)if(Count = 256)/ 判斷是否為256如果為256 了那么自動(dòng)Count = 0;/變?yōu)?DATAOUTPUT= TableSinCount;/輸出波形圖3-4 正弦波圖3.6方波程序模塊方波是經(jīng)過(guò)鋸齒波函數(shù)進(jìn)行void SqureOut(unsigned int fre,unsigned int duty)來(lái)進(jìn)行轉(zhuǎn)換成數(shù)據(jù)量,再輸出道D/A轉(zhuǎn)換電路輸出到示波器進(jìn)行顯示的波形14。方波主要是通過(guò)指定節(jié)點(diǎn)來(lái)進(jìn)行波形的顯示,每個(gè)節(jié)點(diǎn)是已

34、經(jīng)確定的值,方波和正玄波工作原理相似,節(jié)點(diǎn)都是在初始化的過(guò)程中定義的,方波的初始化如下:static unsigned char code TableTriangle256= 128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158, 160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190, 192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222, 224,226,228,230,2

35、32,234,236,238,240,242,244,246,248,250,252,254, 255,254,252,250,248,246,244,242,240,238,236,234,232,230,228,226,224,222,220,218,216,214,212,210,208,206,204,202,200,198,196,194,192,190,188,186,184,182,180,178,176,174,172,170,168,166,164,162,160,158,156,154,152,150,148,146,144,142,140,138,136,134,132,

36、130,128,126,124,122,120,118,116,114,112,110,108,106,104,102,100, 98, 96, 94, 92, 90, 88, 86, 84, 82, 80, 78, 76, 74, 72, 70, 68, 66, 64, 62, 60, 58, 56, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22,

37、24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98,100,102,104,106,108,110,112,114,116,118,120,122,124,126 ;節(jié)點(diǎn)初始化完畢。1.方波函數(shù)的定義void SqureOut(unsigned int fre,unsigned int duty)/方波有兩個(gè)變量 /頻率和占空比TimerCount

38、 = 12550;/ 初始計(jì)數(shù)器值為12550TH0=(65536-TimerCount)/256; /最高點(diǎn)的初始值TL0=(65536-TimerCount)%256;/ 最低點(diǎn)的初始值Count = 0;/ SqureCount = 20000/fre;/方波節(jié)點(diǎn)的得到,通過(guò)一個(gè)數(shù)學(xué)表達(dá)式得到SqureHigh = SqureCount*duty/100;/占空比也影響方波的顯示 FlagSqure = 1; 方波的標(biāo)記重新置12.方波函數(shù)的實(shí)現(xiàn)if(FlagSqure = 1)/ 判斷是三角波flag是否等于1,如果是才能繼續(xù)Count+;/ 節(jié)點(diǎn)計(jì)數(shù)器開(kāi)始計(jì)數(shù)if(Count Squ

39、reCount)/如果節(jié)點(diǎn)計(jì)數(shù)器的值大于SqureCount /那么需要置0這樣才能產(chǎn)生最低點(diǎn)Count = 0;/ 置0DATAOUTPUT = 0xff;/顯示在方波最低段的時(shí)候的一段波形if(Count SqureHigh)/判斷節(jié)點(diǎn)是否大于SqureHigh如果大于 /可以輸出在最高點(diǎn)的一段波形DATAOUTPUT = 0x00;/ 輸出波形圖3-5 方波圖3.7延遲程序模塊延遲函數(shù)的定義延遲函數(shù)是單片機(jī)領(lǐng)域非常常用的函數(shù),函數(shù)的定義基本也是一樣的,詳細(xì)代碼如下,這里只給出定義,因?yàn)樗膶?shí)現(xiàn)情況,需要結(jié)合其他模塊,在按鍵程序模塊里出現(xiàn)過(guò)15。void Scan10MsDelay(void) /10毫秒延時(shí) unsigned int x,y;for(x = 10; x 0 ; x-)for(y = 110 ; y 0 ; y-);在按鍵和和按鍵相關(guān)的操作是都需要延遲,延遲可以判斷按鍵是否持續(xù),也可以消除抖動(dòng),避免誤差。第4章 總結(jié)基于單片機(jī)和DAC0832波形發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn),從課題的名字上就能看出,主要是從單片機(jī)和DAC0832兩個(gè)芯片介紹,單片機(jī)采用的是AT89S51,此單片機(jī)比AT98S51要使用,而且穩(wěn)定的多,DAC0832是波形發(fā)生器中常用

溫馨提示

  • 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)論