版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、波形發(fā)生器的設(shè)計(jì)摘 要文章設(shè)計(jì)了一種由at89c52單片機(jī)和dac0832轉(zhuǎn)換器構(gòu)成的波形發(fā)生器,對(duì)波形產(chǎn)生的原理、方法、頻率控制進(jìn)行了敘述,并對(duì)外圍擴(kuò)展電路如:電源電路、按鍵電路、復(fù)位電路和時(shí)鐘電路做出了詳細(xì)說(shuō)明。給出程序中延時(shí)計(jì)算的具體方法和程序的書(shū)寫方法。采用單片機(jī)生成波形,由于是軟件濾波,所以不會(huì)有寄生的高次諧波分量,生成的波形比較純凈。給出了詳細(xì)的硬件原理圖,主程序流程圖及部分子程序流程圖,并寫出了單片機(jī)源程序。關(guān)鍵詞:?jiǎn)纹瑱C(jī);波形發(fā)生器;d/a轉(zhuǎn)換器;正弦波;方波 waveform generator designabstractthe article designed one k
2、ind of at89c52 microcontroller and the dac0832 switch constitute the waveform generator, the principle, the method, the frequency control which produced to the waveform has carried on the narration, and to periphery expander for example: the power circuit, the pressed key electric circuit, repositio
3、ned the electric circuit and the clock electric circuit has made the specify. produces in the procedure the time delay computation concrete method and the procedure written method. used the microcontroller production waveform, because was the software filter, therefore could not have parasitic the h
4、igher harmonic component, the production waveform quite was pure. has produced the detailed hardware schematic diagram, the master routine flow chart and the partial subroutines flow chart, and has written the microcontroller source program.key words: microcontroller; waveform generator; d/a switch;
5、 sine wave; quadrate wave 目 錄第一章 綜 述.11.1信號(hào)發(fā)生的用途.11.2 信號(hào)發(fā)生器的分類.11.3 信號(hào)發(fā)生器的發(fā)展情況及趨勢(shì).2第二章 器件介紹.32.1 主控制器.32.2 數(shù)模轉(zhuǎn)換器.4第三章 硬件電路設(shè)計(jì).63.1 硬件原理方框圖.63.2 系統(tǒng)工作原理.63.3 外圍器件擴(kuò)展.73.3.1 按鍵接口電路73.3.2 時(shí)鐘電路 83.3.3 復(fù)位電路 83.3.4 電源電路 9第四章 軟件設(shè)計(jì).104.1 存儲(chǔ)器資源分配.104.2信號(hào)分析與計(jì)算.104.2.1正弦波信號(hào)計(jì)算與形成.104.2.2 三角波的形成.114.2.3 方波的形成.114.2
6、.4 鋸齒波的形成.114.3 各部分子程序的編程思路.114.4 程序中的延時(shí)分析與計(jì)算.124.5軟件流程圖及注解.124.6源程序.15第五章 結(jié)束語(yǔ).22參考文獻(xiàn).23致謝.24波形發(fā)生器的設(shè)計(jì) 綜 述 第一章 綜 述1.1信號(hào)發(fā)生的用途 在研制、生產(chǎn)、使用、測(cè)試和維修各種電子元件、部件以及整機(jī)設(shè)備時(shí),都需要有信號(hào)源,由它產(chǎn)生不同頻率、不同波形的電壓、電流信號(hào)并加到被測(cè)器件、設(shè)備上,用其他測(cè)量?jī)x器觀察、測(cè)量被測(cè)者的輸出響應(yīng),以分析確定他們的性能參數(shù)。信號(hào)發(fā)生器是電子測(cè)量領(lǐng)域中最基本、應(yīng)用最廣泛的一類電子儀器。除了電子技術(shù)尤其是電子測(cè)量,信號(hào)發(fā)生器在其他領(lǐng)域也有廣泛應(yīng)用,例如機(jī)械部門的超
7、聲波探傷,醫(yī)療部門的超聲波診斷、頻譜治療儀等。波形發(fā)生器是一種常用的信號(hào)源,廣泛應(yīng)用于科學(xué)研究、生產(chǎn)實(shí)踐和教學(xué)實(shí)驗(yàn)等領(lǐng)域。在電子工程設(shè)計(jì)與測(cè)試中,常常需要一些復(fù)雜的、具有特殊要求的信號(hào),要求其波形可任意產(chǎn)生,頻率方便可調(diào)。而本文介紹了一種利用89c52構(gòu)成的智能波形發(fā)生器,可產(chǎn)生三角波、正弦波、方波、鋸齒波,信號(hào)產(chǎn)生靈活方便、功能擴(kuò)展靈活、信號(hào)參數(shù)可調(diào),實(shí)現(xiàn)了硬件電路的軟件化設(shè)計(jì)。具有電路結(jié)構(gòu)簡(jiǎn)單、實(shí)用性強(qiáng)、成本低廉等優(yōu)點(diǎn)。在數(shù)字化時(shí)代的今天,經(jīng)典的由模擬電路組成的信號(hào)發(fā)生器已經(jīng)漸漸遠(yuǎn)離了人們,取而代之的是電路簡(jiǎn)潔、功能多樣、功耗低的數(shù)字電路。目前能產(chǎn)生各種波形的硬件模塊很多,但是這些模塊產(chǎn)生
8、的波形都不是純凈的波形,會(huì)寄生一些高次諧波分量,采用其他的措施雖可濾除一些,但不能完全濾除掉。信號(hào)發(fā)生器是科研及工程實(shí)踐中最重要的儀器之一,以往多用硬件組成,系統(tǒng)結(jié)構(gòu)比較復(fù)雜,可維護(hù)性和可操作性不佳。隨著計(jì)算機(jī)技術(shù)的發(fā)展,信號(hào)發(fā)生器的設(shè)計(jì)制作越來(lái)越多的是用計(jì)算機(jī)技術(shù),且種類繁多,價(jià)格、性能差異很大。1.2 信號(hào)發(fā)生器的分類 信號(hào)發(fā)生器應(yīng)用廣泛,種類型號(hào)繁多,性能各異,分類也不盡一致。按照頻率范圍分類可以分為:超低頻信號(hào)發(fā)生器、低頻信號(hào)發(fā)生器、視頻信號(hào)發(fā)生、高頻信號(hào)發(fā)生器、甚高頻信號(hào)發(fā)生器和超高頻信號(hào)發(fā)生器。按照輸出波形分類可以分為:正弦信號(hào)發(fā)生器和非正弦信號(hào)發(fā)生器,非正弦信號(hào)發(fā)生器又包括:脈沖
9、信號(hào)發(fā)生器,函數(shù)信號(hào)發(fā)生器、掃頻信號(hào)發(fā)生器、數(shù)字序列信號(hào)發(fā)生器、圖形信號(hào)發(fā)生器、噪聲信號(hào)發(fā)生器等。按照信號(hào)發(fā)生器性能指標(biāo)可以分一般信號(hào)發(fā)生器和標(biāo)準(zhǔn)信號(hào)發(fā)生器。前者指對(duì)輸出信號(hào)的頻率、幅度的準(zhǔn)確度和穩(wěn)定度以及波形失真等要求不高的一類發(fā)生器,后者是指其輸出信號(hào)的頻率、幅度、調(diào)制系數(shù)等在一定范圍內(nèi)連續(xù)可調(diào),并且讀數(shù)準(zhǔn)確、穩(wěn)定、屏蔽良好的中、高檔信號(hào)發(fā)生器。除了上述幾種分類形式外還有好多的分類方法,隨著電子技術(shù)水平的不斷發(fā)展,信號(hào)發(fā)生器的功能越來(lái)越齊全,性能越來(lái)越優(yōu)良。1.3 信號(hào)發(fā)生器的發(fā)展情況及趨勢(shì) 由于電子測(cè)量及其他部門對(duì)各類信號(hào)發(fā)生器的廣泛需求及電子技術(shù)的迅速發(fā)展,促使信號(hào)發(fā)生器種類日益增多,
10、性能日益提高,尤其隨著70年代微處理器的出現(xiàn),更促使信號(hào)發(fā)生器向著自動(dòng)化,智能化方向發(fā)展,現(xiàn)在許多信號(hào)發(fā)生器除帶有微處理器,因而具備了自校、自檢、自動(dòng)故障診斷和自動(dòng)波形形成和修正外,還帶有ieee-488或rs232總線,可以和控制計(jì)算機(jī)及其他測(cè)量?jī)x器一起方便地構(gòu)成自動(dòng)測(cè)量系統(tǒng)1。在70年代前,信號(hào)發(fā)生器主要有兩類:正弦波和脈沖波,而函數(shù)發(fā)生器介于兩類之間,能夠提供正弦波、余弦波、方波、三角波、上斜波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時(shí),需要采用較復(fù)雜的電路和機(jī)電結(jié)合的方法。這個(gè)時(shí)期的波形發(fā)生器多采用模擬電子技術(shù),由分立元件或模擬集成電路構(gòu)成,其電路結(jié)構(gòu)復(fù)雜,且僅能產(chǎn)生正弦波、方波、鋸齒波和三角
11、波等幾種簡(jiǎn)單波形,輸出的波形具有良好的相位噪聲、較低的寄生分量以及較快的開(kāi)關(guān)速度等,但是模擬電路的漂移較大,使輸出的波形的幅度穩(wěn)定性差,而且模擬器件構(gòu)成的電路存在著尺寸大、價(jià)格貴、功耗大等缺點(diǎn),并且要產(chǎn)生較為復(fù)雜的信號(hào)波形則電路結(jié)構(gòu)非常復(fù)雜。同時(shí),主要表現(xiàn)為兩個(gè)突出問(wèn)題,一是通過(guò)電位器的調(diào)節(jié)來(lái)實(shí)現(xiàn)輸出頻率的調(diào)節(jié),因而很難將頻率調(diào)到某一固定值;二是脈沖的占空比不可調(diào)節(jié),在70年代以后,微處理器的出現(xiàn),可以利用微處理器、a/d、和d/a.硬件和軟件使波形發(fā)生器的功能擴(kuò)大,產(chǎn)生更加復(fù)雜的波形。這時(shí)期的波形發(fā)生器多以軟件為主,實(shí)質(zhì)是采用微處理器對(duì)dac的程序控制,就可以得到各種簡(jiǎn)單的波形。例如,令微處
12、理器的累加器a自身循環(huán)增量,每增量一次即向dac送出一個(gè)數(shù),使dac有一個(gè)輸出。因?yàn)楫?dāng)a的內(nèi)容達(dá)到最大值255時(shí),再增量一次,a的內(nèi)容就變?yōu)樽钚≈担缓罂梢岳^續(xù)增加。如此,周而復(fù)始,就可以從dac輸出端獲得一個(gè)正相的階梯波。用同樣的方法還可獲得方波、鋸齒波、三角波等波形。軟件控制波形的一個(gè)最大缺點(diǎn)就是輸出波形的頻率低,這主要是由cpu的工作速度決定的,如果想提高頻率可以改進(jìn)軟件程序減少其執(zhí)行周期時(shí)間或提高cpu的時(shí)鐘周期,但這些辦法是有限度的,根本的辦法還是要改進(jìn)硬件電路當(dāng)時(shí)的信號(hào)處理器是專用于信號(hào)處理的微處理器。波形信號(hào)發(fā)生器的發(fā)展趨勢(shì)是更高取樣率,更高分辨率和更大存儲(chǔ)量。3波形發(fā)生器的設(shè)計(jì)
13、 器件介紹 第二章 器件介紹2.1 主控制器本設(shè)計(jì)中主要采用atmel公司的at89c52型單片機(jī),兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng)的at89c52單片機(jī)是一個(gè)低電壓,高性能cmos 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)(ram),器件采用atmel公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),片內(nèi)置通用8位中央處理器和flash存儲(chǔ)單元,功能強(qiáng)大的at89c52單片機(jī)可提供許多高性低比的系統(tǒng)控制應(yīng)用領(lǐng)域2。at89c52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(i/o)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工
14、串行通信口,2個(gè)讀寫口線,at89c52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和圖2.1 at89c52引腳圖flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。如果更改程序內(nèi)容,可將芯片拿下重新燒寫,或直接進(jìn)行在線燒寫。at89c52有pdip、pqfp、tqfp及plcc等四種封裝形式,以適應(yīng)不同產(chǎn)品的需求。它擁有完善的外部擴(kuò)展總線,如并行總線(ab,db,cb)、串行總線通過(guò)這些總線可方便地?cái)U(kuò)展外圍單元、外設(shè)接口等,本設(shè)計(jì)主要采用它的串行總線。2.2 數(shù)模轉(zhuǎn)換器如圖2.2,dac0832是一個(gè)20引腳采用雙列直插式封裝的芯片,由8位輸
15、入鎖存器,8位dac寄存器,8位da轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成,是一種具有兩個(gè)輸入數(shù)據(jù)寄存器的8位dac,它能直接與mcs51單片機(jī)接口。其主要特性參數(shù)如下:分辨率為8位,電流穩(wěn)定時(shí)間1us,可單緩沖、雙緩沖或直接數(shù)字輸入,只需在滿量程和下調(diào)整其線性度,單一電源供電(5v15v),低功耗。芯片內(nèi)部帶有兩級(jí)獨(dú)立緩沖寄存器即輸入寄存器和dac寄存器dac0832最適合要求多片dac同時(shí)進(jìn)行轉(zhuǎn)換的系統(tǒng)。5個(gè)信號(hào)不同組合的控制下,可實(shí)現(xiàn)單緩沖,雙緩沖和直通3中工作方式4。直通方式是將ile、/cs、/wr1、/wr2和/xfer控制信號(hào)預(yù)先設(shè)置為有效,使兩個(gè)寄存器都處于開(kāi)放狀態(tài),無(wú)需控制信號(hào)。dac0
16、832的輸出隨時(shí)跟輸入數(shù)字的變化而變化,處于直通工作方式,8位數(shù)字量一旦輸入,就直接進(jìn)入dac寄存器進(jìn)行d/a轉(zhuǎn)換。圖2.2 dac0832引腳圖單緩沖工作方式是指兩級(jí)緩沖器之一受cpu送來(lái)的控制信號(hào)控制,另一個(gè)寄存器為直通狀態(tài)。如將/wr2和/xfer控制信號(hào)直接接地,或者將兩個(gè)寄存器的控制信號(hào)連接在一起,并作一個(gè)使用。這一方式適用于只有一路模擬輸出或幾路模擬量不需要同步輸出的系統(tǒng)。雙緩沖工作方式指的是片內(nèi)兩個(gè)寄存器分別進(jìn)行控制。使用時(shí),首先通過(guò)ile、/cs、/wr1信號(hào)同時(shí)有效,把數(shù)據(jù)鎖存到輸入寄存器,然后通過(guò)/wr2和/xfer信號(hào)有效,再把數(shù)據(jù)打入dac寄存器,并進(jìn)入d/a轉(zhuǎn)換器進(jìn)行
17、轉(zhuǎn)換。本設(shè)計(jì)中采用的是單緩沖方式。硬件連接電路是將兩級(jí)寄存器的控制信號(hào)并接輸入數(shù)據(jù)。在控制信號(hào)作用下直接送入dac寄存器中。連接圖如圖2.3,2.3 dac0832連接圖 dac0832是電流型輸出,在應(yīng)用時(shí)外接運(yùn)放使之成為電壓型輸出。由圖2.3可知,dac0832的片選地址為7fffh,當(dāng)p2.7有效時(shí),若p0口向其送的數(shù)據(jù)為00h,則u5的輸出電壓為0v;若p0口向其送的數(shù)據(jù)為0ffh時(shí),則r5的輸出電壓為-5v。故當(dāng)輸出電壓為0v時(shí),由公式u5/r5+u6/r6+u7/r7=0得:vout=-5v。當(dāng)輸出電壓為-5v時(shí),可得:vout =+5v,所以輸出波形的電壓變化范圍為-5v +5v
18、。故可推得,當(dāng)p0所送數(shù)據(jù)為80h時(shí),vout為0v10。7波形發(fā)生器的設(shè)計(jì) 硬件電路設(shè)計(jì)第三章 硬件電路設(shè)計(jì)3.1 硬件原理方框圖本系統(tǒng)主要由主控元件at89c52、數(shù)模轉(zhuǎn)換電路和電源電路、鍵盤電路、放大電路等電路構(gòu)成。如圖3.1單片機(jī)鍵盤電路數(shù)模轉(zhuǎn)換電路放大電路波形輸出電源電路時(shí)鐘電路復(fù)位電路 圖3.1 系統(tǒng)方框圖3.2 系統(tǒng)工作原理 系統(tǒng)的整體電路圖如圖3.2,at89c52的p1口為準(zhǔn)雙向口,它的每一位都可以分別定義為輸入線或輸出線,在本設(shè)計(jì)中p1口被用做數(shù)據(jù)輸入線。系統(tǒng)開(kāi)始工作時(shí),復(fù)位電路對(duì)整個(gè)系統(tǒng)進(jìn)行復(fù)位,主控元件at89c52不停的對(duì)p1口進(jìn)行掃描,當(dāng)無(wú)鍵按下時(shí),由圖可知主控元件
19、at89c52的p1.0,p1.1,p1.2為帶數(shù)據(jù)緩存器的高電平輸出,置p1.3,p1.4,p1.5,p1.6為帶上拉電阻的輸入管腳,此時(shí)若有鍵按下,取p1.3,p1.4,p1.5,p1.6的數(shù)據(jù)將得到一個(gè)值,把此值保存下來(lái),再置p1.3,p1.4,p1.5,p1.6為帶數(shù)據(jù)反相器的高電平輸出,置p1.0,p1.1,p1.2為帶上拉電阻的輸入管腳,此時(shí)若鍵仍沒(méi)彈起,取p1.0,p1.1,p1.2的數(shù)據(jù)將得到另一個(gè)值,把這兩個(gè)值組合是一個(gè)按鍵的鍵值,當(dāng)主控元件掃描到有鍵按下時(shí),通過(guò)程序判斷出哪個(gè)鍵被按下,接著調(diào)用相應(yīng)波形發(fā)生子程序,dac數(shù)字信號(hào)輸入端d0d7與單片機(jī)的數(shù)據(jù)輸出端口p0口相連,
20、p2.7接轉(zhuǎn)換器的片選輸入端口/cs,當(dāng)dac0832的/cs端口被選通時(shí),執(zhí)行波形發(fā)生子程序,主控元件的p0口開(kāi)始向數(shù)模轉(zhuǎn)換器dac0832的數(shù)據(jù)口傳輸數(shù)據(jù),dac0832處于單緩沖工作方式,由于dac0832是電流型輸出,所以在它的兩個(gè)輸出端外接運(yùn)放使之成為電壓型輸出9。3.2 整體電路圖3.3 外圍器件擴(kuò)展3.3.1 按鍵接口電路本設(shè)計(jì)直接使用單片機(jī)的i/o口線pl口進(jìn)行擴(kuò)展,組成一個(gè)3*4鍵盤。在單片機(jī)中所需按鍵較少,多采用獨(dú)立式鍵盤。此種鍵盤結(jié)構(gòu)簡(jiǎn)單,每只按鍵接單片機(jī)的一條i/o線,通過(guò)查詢即可示別出每只按鍵的狀態(tài)來(lái)。但由于本系統(tǒng)按鍵較多,在這里采用矩陣式排列鍵盤,這樣可以合理應(yīng)用硬
21、件資源,把12只按鍵排列成3*4矩陣形式,用一個(gè)8位i/o口控制。把鍵盤上的列和行分別接在p1.0,p1.1,p1.2和p1.3,p1.4,p1.5,p1.6按鍵控制電路上3。1、2、3控制三角波且頻率分別為30hz、50hz、100hz,4、5、6控制方波且頻率分別為30hz、50hz、100hz,7、8、9控制正弦波且頻率分別為30hz、50hz、100hz,0、a、b控制鋸齒波且頻率分別為30hz、50hz、100hz。 圖3.3按鍵接口電路 3.3.2 時(shí)鐘電路at89c52內(nèi)部有一反相器,xtal1、xtal2分別為反相器輸入和輸出端,外接定時(shí)反饋元件以后就組成振蕩器,產(chǎn)生時(shí)鐘送至單
22、片機(jī)內(nèi)部的各個(gè)部件。本時(shí)鐘電路采用陶瓷諧振器,振蕩器產(chǎn)生的時(shí)鐘頻率主要由sys參數(shù)確定,外接的兩個(gè)電容的作用有兩個(gè):其一是使振蕩器起振,其二是對(duì)振蕩器的頻率f起微調(diào)作用,一般地,兩個(gè)電容的值取30pf8。由于頻率較大時(shí),三角波、正弦波、斜波中每一點(diǎn)的延時(shí)時(shí)間為幾微秒,故延時(shí)時(shí)間還要加上指令時(shí)間才能獲得較大的頻率波形,該電路用12mhz晶振。3.3.3 復(fù)位電路at89c52單片機(jī)有一個(gè)復(fù)位引腳rst,它是施密特觸發(fā)輸入,當(dāng)振蕩器起振后,該引腳上出現(xiàn)2個(gè)機(jī)器周期以上的高電平,使器件復(fù)位,只要rst保持高電平,mcs-51保持復(fù)位狀態(tài)。此時(shí)ale、/psen、p0、p1、p2、p3口都輸出高電平。
23、rst變?yōu)榈碗娖胶?,退出?fù)位,cpu從初始狀態(tài)開(kāi)始工作復(fù)位以后出(sp)=07,p0,p1,p2,p3為0ffh外,其他寄存器都為0。mcs-51單片機(jī)通常采用上電復(fù)位和按鍵手動(dòng)復(fù)位兩種方式5。該電路主要特點(diǎn)是當(dāng)單片機(jī)掉電時(shí),使其能重新工作,從系統(tǒng)的可靠性考慮采用如圖3.4所示的復(fù)位電路。 圖3.4 復(fù)位電路連接圖3.3.4 電源電路在電子電路及設(shè)備中,一般都需要穩(wěn)定的直流電源供電。直流電源的輸入為220v電網(wǎng)電壓,一般情況下,所須直流電壓的數(shù)值和電網(wǎng)電壓的有效值相差較大,因而需要通過(guò)電源變壓器降壓后,再對(duì)交流電壓進(jìn)行處理。變壓器的副邊電壓有效值決定于后面電路的需要。變壓器的副邊變壓再通過(guò)整流
24、電路由交流電壓轉(zhuǎn)換成直流電壓。如圖3.5所示,本電源電路設(shè)計(jì)為了提高電源的穩(wěn)定性,減小紋波,電壓經(jīng)過(guò)變壓器和整流電路后通過(guò)低通濾波器電路濾波,將電壓降為9v,再通過(guò)穩(wěn)壓管7805電壓可穩(wěn)定在+5v輸出。這樣,可防止因交流電的不穩(wěn)定而造成輸出的直流電壓偏低,從而使單片機(jī)不能正常工作。圖3.5 電源電路圖12波形發(fā)生器的設(shè)計(jì) 軟件設(shè)計(jì)第四章 軟件設(shè)計(jì)該程序分為以下部分:主程序、按鍵處理子程序、延時(shí)處理子程序。波形頻率的控制用插入延時(shí)子程序就的方法來(lái)實(shí)現(xiàn),編一個(gè)延時(shí)子程序就可以使用所有波形。該延時(shí)子程序用一個(gè)循環(huán)子程序?qū)崿F(xiàn)。它的循環(huán)次數(shù),對(duì)于不同頻率信號(hào),循環(huán)次數(shù)也不一樣。當(dāng)不同的頻率輸入時(shí),先轉(zhuǎn)換
25、時(shí)間常數(shù),存入固定的ram單元(該單元專門用來(lái)存放時(shí)間常數(shù))。一旦轉(zhuǎn)入波形輸出子程序,該時(shí)間常數(shù)就可以被取出,而被賦給延時(shí)子程序,從而實(shí)現(xiàn)了每隔一定的時(shí)間就可以從固定的ram中取出一個(gè)波形編碼送到dac進(jìn)行d/a轉(zhuǎn)換。4.1 存儲(chǔ)器資源分配1、鍵的出口標(biāo)志位存放于20h單元中。當(dāng)為無(wú)效鍵時(shí),20h單元為0ffh;當(dāng)為有效鍵時(shí),20h單元的內(nèi)容為該按鍵的鍵碼值。2、波形頻率30hz、50hz、100hz延時(shí)子程序的延時(shí)時(shí)間分別存在21h、22h、23h中。4.2信號(hào)分析與計(jì)算4.2.1正弦波信號(hào)計(jì)算與形成由于信號(hào)都是周期性的,所以只要設(shè)計(jì)出一個(gè)完整周期的正弦波。在信號(hào)輸出部分,采用了8位的d/a
26、變換器,其最大輸出值為256。為了與d/a變換器相適應(yīng),在2一個(gè)周期內(nèi),將其輸出信號(hào)的幅值、角頻率量化,將正弦波向上平移,使其最低點(diǎn)為0。單片機(jī)的i/o輸出均為+5 v的ttl電平,因此產(chǎn)生的正弦波幅值為+5 v。將一個(gè)周期內(nèi)的正弦波形等分為n份,那么第1點(diǎn)的角度為0°,對(duì)應(yīng)的正弦值為5sin0°;第2點(diǎn)的角度為360°/n,對(duì)應(yīng)的正弦值為5sin (360°/n ) ,如此計(jì)算下去,將這些模擬量正弦值都轉(zhuǎn)換為雙極性方式下的數(shù)字量,得到一張按照點(diǎn)號(hào)順序排列的數(shù)字量正弦值表格6。這里采用的256個(gè)采樣點(diǎn)由查表逐個(gè)輸入dac轉(zhuǎn)換器。因?yàn)閷⒄麄€(gè)正弦信號(hào)分成了2
27、56個(gè)點(diǎn),那么點(diǎn)與點(diǎn)之間的延時(shí)時(shí)間就是 (4.1)正弦波信號(hào)的形成是通過(guò)查表來(lái)實(shí)現(xiàn)的,在輸出時(shí),整個(gè)信號(hào)被看成是由256個(gè)點(diǎn)組合而成,每輸出一次就查表一次調(diào)用一個(gè)點(diǎn),每個(gè)點(diǎn)代表一個(gè)電壓值,輸出一個(gè)點(diǎn)后就調(diào)用一次延時(shí),如此循環(huán)就可以得到正弦波信號(hào),延時(shí)時(shí)間和頻率有關(guān)系,點(diǎn)與點(diǎn)之間延時(shí)時(shí)間越長(zhǎng)就表示信號(hào)的周期越大,所以我們可以通過(guò)改變延時(shí)時(shí)間來(lái)改變輸出信號(hào)的頻率。4.2.2 三角波的形成三角波信號(hào)形成和正弦信號(hào)的產(chǎn)生不一樣,這里把三角波半個(gè)周期分成256個(gè)階梯由于階梯很小從宏觀上看它可以近似成三角波信號(hào),在三角波信號(hào)上升階段電壓隨時(shí)間而上升,階梯之間的時(shí)間間隔就是延時(shí)時(shí)間,每輸出一個(gè)階梯就調(diào)用延時(shí)
28、,當(dāng)輸出256個(gè)上升階梯時(shí)即電壓到達(dá)峰值,接著電壓又隨時(shí)間下降,輸出256個(gè)下降階梯,如此反復(fù)便形成了三角波。我們可以通過(guò)改變延時(shí)時(shí)間來(lái)改變?nèi)切盘?hào)的頻率。4.2.3 方波的形成方波信號(hào)形成比較簡(jiǎn)單,不需要把周期分開(kāi),通過(guò)延時(shí)即可實(shí)現(xiàn)。當(dāng)接受到鍵盤命令需要輸出方波信號(hào)時(shí),就把高電平賦給輸出端口,接著延時(shí)半個(gè)周期,即可輸出方波的正半周期,然后把低電平賦給輸出端口又延時(shí)半個(gè)周期就輸出方波的負(fù)半周期,如此反復(fù)便形成方波。同樣我們也可以通過(guò)改變延時(shí)時(shí)間來(lái)改變輸出方波的頻率。4.2.4 鋸齒波的形成鋸齒波信號(hào)的形成也比較容易,同樣將鋸齒波的整個(gè)周期分成256個(gè)點(diǎn),首先將電壓下限值賦給輸出端口輸出,輸出一
29、次即調(diào)用一個(gè)點(diǎn),每輸出一個(gè)點(diǎn)就調(diào)用延時(shí)一次,同樣電壓也隨時(shí)間而上升,直到輸出256次,如此反復(fù)就可以形成鋸齒波。同樣地,我們可以改變點(diǎn)與點(diǎn)之間的延時(shí)時(shí)間來(lái)改變輸出波形的頻率。4.3 各部分子程序的編程思路1、按鍵值是通過(guò)對(duì)單片機(jī)p1口的掃描獲取,程序中具體實(shí)現(xiàn)各按鍵的功能。2、正弦波的產(chǎn)生采用查表法。3、對(duì)于數(shù)字量來(lái)說(shuō),輸出連續(xù)變化的頻率(尤其是高頻)是不易實(shí)現(xiàn)的,一般會(huì)出現(xiàn)頻率的跳變。但是人們所需的頻率是比較固定、常用的,本設(shè)計(jì)能輸出幾種常用的頻率波形7。當(dāng)輸入一種波形的頻率代號(hào)后,則輸出與其對(duì)應(yīng)的頻率波形,所取頻率分別為:30hz,50hz, 100hz。4、對(duì)于鋸齒波、三角波、正弦波,為
30、了獲得較為平滑的曲線,在設(shè)計(jì)中將一個(gè)周期分為256份。4.4 程序中的延時(shí)分析與計(jì)算如下是一段延時(shí)1s的程序中:delay:mov r1,#50del0:mov r2,#100del1:mov r3,#100djnz r3,$djnz r2,del1djnz r1,del0ret每執(zhí)行 djnz rn,del指令一次,需要2個(gè)機(jī)器周期,單片機(jī)需耗時(shí)2us, 若忽略裝數(shù)等語(yǔ)句,延時(shí)程序從開(kāi)始到結(jié)束,單片機(jī)共耗時(shí)100*100*50*2us,既1000000us=1秒,若加上裝數(shù)等語(yǔ)句的耗時(shí),延時(shí)時(shí)間大于1秒5。在本設(shè)計(jì)中,由于有三種不同的頻率,那么就要有三個(gè)延時(shí)子程序。例如在30hz的正弦信號(hào)中
31、,因?yàn)榘颜麄€(gè)周期看成是256個(gè)點(diǎn),那么點(diǎn)與點(diǎn)之間的延時(shí)就是1/30*256,這個(gè)值約為130us,那么延遲程序就是:delay1: mov r5, #65 延遲130usloop0: djnz r5, loop0因?yàn)閐jnz指令需要2個(gè)周期,65*2=130,由于延遲的時(shí)間比較短,我們只需要一個(gè)循環(huán)即可,其他50hz,100hz的信號(hào)的延遲計(jì)算也和這個(gè)一樣,程序的編寫也差不多,只需改變賦給r5的值。4.5軟件流程圖及注解如圖4.1為主程序流程圖:開(kāi)始工作后,單片機(jī)開(kāi)始對(duì)p1口進(jìn)行鍵盤掃描,如果沒(méi)有按鍵被按下則繼續(xù)掃描,有鍵閉合則讀取鍵值,然后調(diào)用波形發(fā)生子程序。如圖4.2正弦波發(fā)生流程圖:如果
32、主程序調(diào)用正弦波發(fā)生子程序,首先啟動(dòng)d/a轉(zhuǎn)換器,接著將0送到寄存器r6中,將正弦函數(shù)數(shù)據(jù)表送到累加器a中,并送選通地址輸出,r6中的數(shù)據(jù)自增1,調(diào)用延時(shí)子程序,如果r6中的數(shù)據(jù)不為0則繼續(xù)送選通地址輸出,是0則返回開(kāi)始循環(huán)。如圖4.3為三角波發(fā)生流程圖:如果主程序調(diào)用三角波發(fā)生子程序,首先啟動(dòng)d/a轉(zhuǎn)換器,接著將0送到寄存器a中,然后調(diào)用延時(shí)子程序,r6中數(shù)據(jù)自增1,判斷r6中數(shù)據(jù)是否為0即三角波的上升階段是否完成,不是則循環(huán)上述過(guò)程直到r6為0;是,則r6中的數(shù)據(jù)自減1,再調(diào)用延時(shí)子程序,判斷r6是否為0即下降過(guò)程是否完成,不是則繼續(xù)自減循環(huán),是則返回開(kāi)始。如圖4.4鋸齒波發(fā)生流程圖:如果
33、主程序調(diào)用鋸齒波發(fā)生子程序,首先啟動(dòng)d/a轉(zhuǎn)換器,接著將0送到寄存器r6中,送選通地址輸出,調(diào)用延時(shí)自程序,r6中數(shù)據(jù)自減,循環(huán)輸出即可。如圖4.5方波發(fā)生流程圖:如果主程序調(diào)用方波發(fā)生子程序,首先啟動(dòng)d/a轉(zhuǎn)換器接著將0送到累加器a中,送選通地址輸出,然后調(diào)用延時(shí)子程序延時(shí)半個(gè)周期時(shí)間,再將高電平送到a中,送選通地址輸出,也調(diào)用延時(shí)子程序延時(shí)半個(gè)周期,循環(huán)即可得到方波。4.1主程序流程圖nyyn波形轉(zhuǎn)化否?調(diào)波形發(fā)生子程序讀鍵盤輸入有鍵閉合?鍵盤掃描初始化開(kāi)始開(kāi)始啟動(dòng)d/a轉(zhuǎn)換器r600har6調(diào)延遲子程序r6r6+1r6=0?調(diào)延遲子程序r6r6-1r6=0?nnyyar6n開(kāi)始啟動(dòng)d/a
34、轉(zhuǎn)換器r600ha正弦函數(shù)數(shù)據(jù)表送選通地址輸出r6r6+1調(diào)延遲子程序r6=0?y 圖4.2 正弦波發(fā)生子程序 圖4.3 三角波發(fā)生子程序r6r6-1調(diào)延遲子程序送選通地址輸出r600h啟動(dòng)d/a轉(zhuǎn)換器開(kāi)始開(kāi)始啟動(dòng)d/a轉(zhuǎn)換器a0送選通地址輸出調(diào)延遲子程序affh送選通地址輸出調(diào)延遲子程序圖4.4 鋸齒波發(fā)生子程序圖4.5方波發(fā)生子程序4.6源程序org 0250hmov 20h,#0mov 21h,#0mov 22h,#0mov 23h,#0key:mov p0,#10000111b ;上四位和下三位分別為行和列,所以送出高低電壓檢查有沒(méi)有按鍵按下k10:jb p0.0,k20 ;掃描正式開(kāi)
35、始,先檢查列1四個(gè)鍵是否有鍵按下,如果沒(méi)有,則跳到k20檢查列2k11:mov,p0,#11110111b ;列1有鍵按下時(shí),p0.0變低,到底是那一個(gè)鍵按下?現(xiàn)在分別輸出各行低電平j(luò)b p0.0,k12 ;該行的鍵沒(méi)按下時(shí),p0.0為高電平,跳到k12,檢查其它的行mov r0,#1 ;如果正好是這行的鍵按下,將寄存器r1寫下1,表示1號(hào)鍵按下了k12:mov,p0,#11101111bjb p0.0,k13mov r1,#2 ;如果正好是這行的鍵按下,將寄存器r1寫下2,表示2號(hào)鍵按下了k13: mov,p0,#11011111bjb p0.0,k14mov r1,#3 ;如果正好是這行的
36、鍵按下,將寄存器r1寫下3,表示3號(hào)鍵按下了k14: mov,p0,#10111111bjb p0.0,kend ;如果現(xiàn)在四個(gè)鍵都沒(méi)有按下,可能按鍵松開(kāi)或干擾,退出掃描(以后相同)mov r1,#4 ;如果正好是這行的鍵按下,將寄存器r0寫下4,表示4號(hào)鍵按下了jmp kend ;已經(jīng)找到按下的鍵,跳到結(jié)尾吧k20: jb p0.1,k30 ;列2檢查為高電平再檢查列3、4 k21: mov p0,#11110111b ;列2有健按下時(shí),p0.0會(huì)變低,到底是那一行的鍵按下呢?分別輸出行的低電平j(luò)b p0.1,k22 ;該行的鍵沒(méi)按下時(shí)p0.0為高電平,跳到k22,檢查另外三行mov r1,
37、#5 ;如果正好是這行的鍵按下,將寄存器r1寫下5,表示5號(hào)鍵按下了(以后相同)k22: mov p0,#11101111bjb p0.1,k23mov r1,#6k23: mov p0,#11011111bjb p0.1,k24mov r1, #7k24: mov p0, #10111111bjb p0.1,kendmov r1,#8jmp kend ;已經(jīng)找到按下的鍵,跳到結(jié)尾(以后相同)k30: jb p0.2,k40k31: mov p0,#11110111bjb p0.2,k32mov r1,#9k32: mov p0,#11101111bjb p0.2,k33mov r1,#0k3
38、3: mov p0,#11011111bjb p0.2, k34mov r1,#0ahk34: mov p0,#10111111bjb p0.2,kendmov r1,#0bhjmp kendkend:xch r1,20h ;將按鍵值存入(20h)jz 20h,#01h,s1jz 20h,#02h,s1jz 20h,#03h,s1jz 20h,#04h,s2jz 20h,#05h,s2jz 20h,#06h,s2jz 20h,#07h,s3jz 20h,#08h,s3jz 20h,#09h,s3jz 20h,#00h,s4jz 20h,#0ah,s4jz 20h,#0bh,s4jmp kend
39、s1: mov dptr, #7fffh ;選通地址 str1: mov r6,#00h ;通過(guò)上升和下降來(lái)產(chǎn)生三角波電;壓隨時(shí)間上升str2: mov a,r6 movx dptr,a acall delayinc r6 cjne r6,#0ffh,str2 ;電壓隨時(shí)間下降/str3: dec r6 mov a,r6 movx dptr,a cjne r6,#00h,str3 ajmp str1 delay: jz 20h,#01h,delay1 jz 20h,#02h,delay2 jz 20h,#03h,delay3delay1: mov 21h, #65 ;延遲130usloop0:
40、 djnz 21h, loop0delay2: mov 22h, #39 ;延遲80usloop1: djnz 22h, loop1delay3: mov 23h, #13h ;延遲40usloop2: djnz 23h, loop2rets2: mov dptr,#7fffh ;通過(guò)高低電平地的變化來(lái)輸出方波str4: mov a,0 movx dptr,a ;向選通地址送低電平地 acall delay0 mov a,#0ffh movx dptr,a ;向選通地址送高電平 acall delay0ajmp str4 delay0: jz 20h,#01h,delay4 jz 20h,#0
41、2h,delay5 jz 20h,#03h,delay6delay4: mov 21h, #65 ;延遲130usloop3: djnz 21h, loop3delay5: mov 22h, #39 ;延遲80usloop4: djnz 22h, loop4delay6: mov 23h, #13h ;延遲40usloop5: djnz 23h, loop5ret s3: mov a,r1 ;在表格里取數(shù)送到指定地址mov dptr,#settab movc a,a+dptr mov dptr,#7fffh movx dptr,a inc r1 ;表格加一 acall delay7delay7
42、: jz 20h,#01h,delay8 jz 20h,#02h,delay9 jz 20h,#03h,delay10delay8: mov 21h,#65 ;延遲130usloop6: djnz 21h, loop6delay9: mov 22h, #39 ;延遲80usloop7: djnz 22h, loop7delay10: mov 23h,#13h ;延遲40usloop8: djnz 23h, loop8ajmp s3 ;循環(huán) settab: ;正弦表格db 80h,83h,86h,89h,8dh,90h,93h,96h db 99h,9ch,9fh,0a2h,0a5h,0a8h,
43、0abh,0aeh db 0b1h,0b4h,0b7h,0bah,0bch,0bfh,0c2h,0c5h db 0c7h,0cah,0cch,0cfh,0d1h,0d4h,0d6h,0d8h db 0dah,0ddh,0dfh,0e1h,0e3h,0e5h,0e7h,0e9h db 0eah,0ech,0eeh,0efh,0f1h,0f2h,0f4h,0f5h db 0f6h,0f7h,0f8h,0f9h,0fah,0fbh,0fch,0fdh db 0fdh,0feh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh
44、,0feh,0fdh db 0fdh,0fch,0fbh,0fah,0f9h,0f8h,0f7h,0f6h db 0f5h,0f4h,0f2h,0f1h,0efh, 0eeh,0ech,0eah db 0e9h,0e7h,0e5h,0e3h,0e1h, 0deh,0ddh,0dah db 0d8h,0d6h,0d4h,0d1h,0cfh,0cch,0cah,0c7h db 0c5h,0c2h,0bfh,0bch,0bah,0b7h,0b4h,0b1h db 0aeh,0abh,0a8h,0a5h,0a2h,9fh,9ch,99h db 96h,93h,90h,8dh, 89h,86h,83h,
45、80h db 80h,7ch,79h,78h,72h,6fh,6ch, 69h db 66h,63h,60h,5dh,5ah,57h,55h,51h db 4eh,4ch,48h,45h,43h,40h,3dh,3ah db 38h,35h,33h,30h,2eh,2bh,29h,27h db 25h,22h,20h,1eh,1ch,1ah,18h,16h db 15h,13h,11h,10h,0eh,0dh,0bh,0ah db 09h,08h,07h,06h,05h,04h,03h,02h db 02h,01h,00h,00h,00h,00h,00h,00h db 00h,00h, 00h,00h,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)豆豉鱗魚(yú)罐頭香料市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)印刷設(shè)備配件市場(chǎng)調(diào)查研究報(bào)告
- 2025版土地整治與開(kāi)發(fā)合作框架協(xié)議3篇
- 二零二五年度跨境金融服務(wù)合作框架協(xié)議
- 二零二五年度車輛不過(guò)戶免責(zé)協(xié)議書(shū):汽車維修免過(guò)戶責(zé)任聲明
- 二零二五年度返傭金合同協(xié)議書(shū):健康醫(yī)療服務(wù)傭金結(jié)算規(guī)范
- 二零二五年度道路交通事故車輛理賠責(zé)任協(xié)議
- 二零二五年度遺產(chǎn)繼承家庭信托設(shè)立與管理協(xié)議
- 二零二五年度酒吧員工勞動(dòng)合同補(bǔ)充協(xié)議
- 二零二五年度酒店財(cái)務(wù)保密協(xié)議書(shū)保密安全協(xié)議書(shū)
- 2024年銀行考試-興業(yè)銀行筆試參考題庫(kù)含答案
- 泵站運(yùn)行管理現(xiàn)狀改善措施
- 2024屆武漢市部分學(xué)校中考一模數(shù)學(xué)試題含解析
- SYT 0447-2014《 埋地鋼制管道環(huán)氧煤瀝青防腐層技術(shù)標(biāo)準(zhǔn)》
- 第19章 一次函數(shù) 單元整體教學(xué)設(shè)計(jì) 【 學(xué)情分析指導(dǎo) 】 人教版八年級(jí)數(shù)學(xué)下冊(cè)
- 浙教版七年級(jí)下冊(cè)科學(xué)全冊(cè)課件
- 弧度制及弧度制與角度制的換算
- 瓦楞紙箱計(jì)算公式測(cè)量方法
- 江蘇省中等職業(yè)學(xué)校學(xué)業(yè)水平考試商務(wù)營(yíng)銷類(營(yíng)銷方向)技能考試測(cè)試題
- DB32-T 4004-2021水質(zhì) 17種全氟化合物的測(cè)定 高效液相色譜串聯(lián)質(zhì)譜法-(高清現(xiàn)行)
- DB15T 2724-2022 羊糞污收集處理技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論