版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘要</b></p><p> 信號(hào)發(fā)生器是一種常用的信號(hào)源,廣泛地應(yīng)用于電子電路、自動(dòng)控制系統(tǒng)和教學(xué)實(shí)驗(yàn)等領(lǐng)域。目前使用的信號(hào)發(fā)生器大部分是函數(shù)信號(hào)發(fā)生器,且特殊波形發(fā)生器的價(jià)格昂貴。所以本設(shè)計(jì)使用的是AT89C51單片機(jī)構(gòu)成的發(fā)生器,可產(chǎn)生三角波、方波、正弦波等多種特殊波形和任意波形,波形的頻率可用程序控制改變。在單片機(jī)上加外圍器件距陣式鍵盤,通過(guò)鍵盤控制
2、波形頻率的增減以及波形的選擇,并用了LCD顯示頻率大小。在單片機(jī)的輸出端口接DAC0832進(jìn)行D/A轉(zhuǎn)換,再通過(guò)運(yùn)放進(jìn)行波形調(diào)整,最后輸出波形接在示波器上顯示。本設(shè)計(jì)具有線路簡(jiǎn)單、結(jié)構(gòu)緊湊、價(jià)格低廉、性能優(yōu)越等優(yōu)點(diǎn)。</p><p> 在介紹DAC0832芯片特性的基礎(chǔ)上,論述了采用DAC0832芯片設(shè)計(jì)數(shù)字函數(shù)信號(hào)發(fā)生器的原理以及整機(jī)的結(jié)構(gòu)設(shè)計(jì)。對(duì)其振蕩頻率控制、信號(hào)輸出幅度控制以及頻率和幅度數(shù)顯的實(shí)現(xiàn)作了較
3、詳細(xì)的論述。該函數(shù)信號(hào)發(fā)生器可輸出三角波,方波和正弦波。</p><p> 關(guān)鍵詞: 信號(hào)發(fā)生器 單片機(jī) 波形調(diào)整</p><p><b> Abstract</b></p><p> Signal-generator is a kind of signal source in common use, broadly applied at
4、 the electronics electric circuit, auto control system and teaching experiment etc. Currently used mostly function signal generator signal generator, waveform generator and a special price of expensive . So the dissertat
5、ion is usage of the AT89s51 single-chip microcomputer constitute of wave-form generator, which can generate triangle wave, square wave, sine wave etc variety wave-form, the period of wave can be controll</p><p
6、> Based on the introduction of MAX038 , we discussed the principle and the whole frame of the digital function signal generator. We described the control of the oscillatory frequent , amplitude and the digital displa
7、y in detail. Thegenerator can output three kinds of waves : sine wave , square wave , triangle wave.</p><p> Keywords: signal generator MCU wave-form adjustment</p><p><b>
8、 目錄</b></p><p><b> 1.緒論</b></p><p> 1.1:課程背景目的及意義……………………………………………………1</p><p> 1.2:設(shè)計(jì)任務(wù)和要求…………………………………………………………2</p><p><b> 2.方案的研究</b&g
9、t;</p><p> 2.1:方案的提出和整論………………………………………………………3</p><p> 2.2:模塊的結(jié)構(gòu)劃分…………………………………………………………4</p><p><b> 3.各部分功能模塊</b></p><p> 3.1:?jiǎn)纹瑱C(jī)模塊………………………………………………………
10、………5</p><p> 3.2:電源模塊…………………………………………………………………6</p><p> 3.3:D/A轉(zhuǎn)換模塊……………………………………………………………7</p><p> 3.4:鍵盤輸入模塊……………………………………………………………10</p><p> 3.5:顯示模塊………………………………
11、…………………………………12</p><p> 3.6:I/V轉(zhuǎn)化模塊……………………………………………………………13</p><p> 3.7: 基準(zhǔn)電壓調(diào)節(jié)模塊………………………………………………………14</p><p><b> 4.電路軟件設(shè)計(jì)</b></p><p> 4.1:系統(tǒng)總框圖……………
12、…………………………………………………18</p><p> 4.1:顯示子程序框圖…………………………………………………………19</p><p> 4.2:按鍵子程序框圖…………………………………………………………20</p><p><b> 總結(jié)</b></p><p><b> 參考文獻(xiàn)<
13、;/b></p><p> 附錄A:系統(tǒng)總程序 </p><p> 附錄B:系統(tǒng)總電路圖</p><p><b> 緒論</b></p><p> 1.1課題背景、目的及意義</p><p> 隨著電子測(cè)量及其他部門對(duì)各類信號(hào)發(fā)生器的廣泛需求及電子技術(shù)的迅速發(fā)展,促使信號(hào)發(fā)生器種類
14、增多,性能提高。尤其隨著70年代微處理器的出現(xiàn),更促使信號(hào)發(fā)生器向著自動(dòng)化、智能化方向發(fā)展?,F(xiàn)在,許多信號(hào)發(fā)生器帶有微處理器,因而具備了自校、自檢、自動(dòng)故障診斷和自動(dòng)波形形成和修正等功能,可以和控制計(jì)算機(jī)及其他測(cè)量?jī)x器一起方便的構(gòu)成自動(dòng)測(cè)試系統(tǒng)。當(dāng)前信號(hào)發(fā)生器總的趨勢(shì)是向著寬頻率覆蓋、低功耗、高頻率精度、多功能、自動(dòng)化和智能化方向發(fā)展。</p><p> 在科學(xué)研究、工程教育及生產(chǎn)實(shí)踐中,如工業(yè)過(guò)程控制、教學(xué)實(shí)
15、驗(yàn)、機(jī)械振動(dòng)試驗(yàn)、動(dòng)態(tài)分析、材料試驗(yàn)、生物醫(yī)學(xué)等領(lǐng)域,常常需要用到低頻信號(hào)發(fā)生器。而在我們?nèi)粘I钪?,以及一些科學(xué)研究中,鋸齒波和正弦波、矩形波信號(hào)是常用的基本測(cè)試信號(hào)。譬如在示波器、電視機(jī)等儀器中,為了使電子按照一定規(guī)律運(yùn)動(dòng),以利用熒光屏顯示圖像,常用到鋸齒波產(chǎn)生器作為時(shí)基電路。信號(hào)發(fā)生器作為一種通用的電子儀器,在生產(chǎn)、科研、測(cè)控、通訊等領(lǐng)域都得到了廣泛的應(yīng)用。 但市面上能看到的儀器在頻率精度、帶寬、波形種類及程控方面都已不能滿足許多
16、方面實(shí)際應(yīng)用的需求。加之各類功能的半導(dǎo)體集成芯片的快速生產(chǎn),都使我們研制一種低功耗、寬頻帶,能產(chǎn)生多種波形并具有程控等低頻的信號(hào)發(fā)生器成為可能。</p><p> 便攜式和智能化越來(lái)越成為儀器的基本要求,對(duì)傳統(tǒng)儀器的數(shù)字化,智能化,集成化也就明顯得尤為重要。平時(shí)常用信號(hào)源產(chǎn)生正弦波,方波,三角波等常見(jiàn)波形作為待測(cè)系統(tǒng)的輸入,測(cè)試系統(tǒng)的性能。單在某些場(chǎng)合,我們需要特殊波形對(duì)系統(tǒng)進(jìn)行測(cè)試,這是傳統(tǒng)的模擬信號(hào)發(fā)生器和
17、數(shù)字信號(hào)發(fā)生器很難勝任的。利用單片機(jī)的強(qiáng)大功能,設(shè)計(jì)合適的人機(jī)交互界面,使用戶能夠通過(guò)手動(dòng)的設(shè)定,設(shè)置所需波形。</p><p> 1.2設(shè)計(jì)任務(wù)和要求</p><p> 設(shè)計(jì)一個(gè)多功能信號(hào)發(fā)生器,可以產(chǎn)生正弦波、三角波、方波、鋸齒波等多種波形。波形的頻率、幅值均為連續(xù)可調(diào)。實(shí)現(xiàn)多功能信號(hào)發(fā)生器波形種類、波形的頻率、幅值的狀態(tài)及數(shù)據(jù)的顯示。自選器件,實(shí)現(xiàn)多功能信號(hào)發(fā)生器的硬件設(shè)計(jì)。可自
18、行擴(kuò)展功能,使之更加完善。</p><p><b> 第二章 方案的研究</b></p><p> 2.1方案的提出和整論</p><p> 常用的函數(shù)信號(hào)發(fā)生器的實(shí)現(xiàn)方法有如下幾種</p><p> 1. 采用分立元件實(shí)現(xiàn)信號(hào)的輸出,主要是通過(guò)模擬電路實(shí)現(xiàn)正弦信號(hào)的輸出,在通過(guò)各種積分微分電路實(shí)現(xiàn)各種不同波形的
19、輸出。但是這種方法頻率和幅值的調(diào)整比較困難,而且模擬電路受外部因素的影響較大,輸出的波形難以控制。</p><p> 2.采用集成信號(hào)發(fā)生芯片MAX038輸出各種波形,并通過(guò)外接電阻值改變實(shí)現(xiàn)對(duì)幅值和頻率的調(diào)整。</p><p> 圖2-1-1.基于MAX038的信號(hào)發(fā)生器原理圖</p><p> 這種方法實(shí)現(xiàn)起來(lái)比較容易,但是頻率和幅值的調(diào)節(jié)比較困難。<
20、;/p><p> 3. 采用DAC0832通過(guò)查表得方式輸出需要的波形,通過(guò)單片機(jī)定時(shí)向DAC轉(zhuǎn)化器發(fā)送轉(zhuǎn)換數(shù)據(jù),實(shí)現(xiàn)不同的幅值和頻率的輸出。這種方法能夠?qū)崿F(xiàn)各種需要的波形的輸出,成本也不高,只是在擴(kuò)展外設(shè)的時(shí)候浪費(fèi)了大量的接口,以后的系統(tǒng)擴(kuò)展可能會(huì)有影響。</p><p> 4. 采用DDS頻率合成器,能輸出各種波形,而且能夠輕松調(diào)節(jié)幅值和頻率。DDS同DSP(數(shù)字信號(hào)處理)一樣,是一項(xiàng)
21、關(guān)鍵的數(shù)字化技術(shù)。DDS是直接數(shù)字式頻率合成器(Direct Digital Synthesizer)的英文縮寫。與傳統(tǒng)的頻率合成器相比,DDS具有低成本、低功耗、高分辨率和快速轉(zhuǎn)換時(shí)間等優(yōu)點(diǎn),廣泛使用在電信與電子儀器領(lǐng)域,是實(shí)現(xiàn)設(shè)備全數(shù)字化的一個(gè)關(guān)鍵技術(shù)。</p><p> 圖2-1-2.DDS的原理框圖</p><p> 一塊DDS芯片中主要包括頻率控制寄存器、高速相位累加器和正弦
22、計(jì)算器三個(gè)部分。頻率控制寄存器可以串行或并行的方式裝載并寄存用戶輸入的頻率控制碼;而相位累加器根據(jù)DDS頻率控制碼在每個(gè)時(shí)鐘周期內(nèi)進(jìn)行相位累加,得到一個(gè)相位值;正弦計(jì)算器則對(duì)該相位值計(jì)算數(shù)字化正弦波幅度(芯片一般通過(guò)查表得到)。DDS芯片輸出的一般是數(shù)字化的正弦波,因此還需經(jīng)過(guò)高速D/A轉(zhuǎn)換器和低通濾波器才能得到一個(gè)可用的模擬頻率信號(hào)。</p><p> 2.2模塊的結(jié)構(gòu)劃分</p><p&
23、gt; 圖2-2.本次設(shè)計(jì)的模塊圖</p><p> 本次我選用的是單片機(jī)通過(guò)查表獲得某一時(shí)刻對(duì)用的波形幅值,經(jīng)過(guò)DAC轉(zhuǎn)化器,轉(zhuǎn)化為對(duì)應(yīng)的模擬信號(hào),幅值的調(diào)節(jié)主要是通過(guò)調(diào)節(jié)DAC的基準(zhǔn)電壓實(shí)現(xiàn),頻率的調(diào)節(jié)則是</p><p><b> 各部分功能模塊</b></p><p><b> 3.1單片機(jī)模塊</b>&l
24、t;/p><p> 本次設(shè)計(jì)選用的單片機(jī)芯片是AT89C51單片機(jī)。AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元。</p>
25、;<p> AT89C51中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶休或陶瓷諧振器一起構(gòu)成自激振蕩器。外接石英晶體(或陶瓷諾振器)及電容C1, C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容C1, C2雖然沒(méi)有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,這
26、里選擇使用石英晶休,我們的電容使用30pF。如使用陶瓷諧振器的話,應(yīng)選擇40pF士10pF的容值的電容。也可以采用外部時(shí)鐘。采用外部時(shí)鐘的電路的情況時(shí),外部時(shí)鐘脈沖接到XTAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2則懸空。</p><p> 圖3-1:?jiǎn)纹瑱C(jī)最小系統(tǒng)</p><p> 1、主電源引腳(2根) </p><p> VCC(Pin40):電源輸
27、入,接+5V電源</p><p> GND(Pin20):接地線</p><p> 2、外接晶振引腳(2根)</p><p> XTAL1(Pin19):片內(nèi)振蕩電路的輸入端</p><p> XTAL2(Pin20):片內(nèi)振蕩電路的輸出端</p><p> 3、控制引腳(4根)</p><
28、;p> RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。</p><p> ALE/PROG(Pin30):地址鎖存允許信號(hào)</p><p> PSEN(Pin29):外部存儲(chǔ)器讀選通信號(hào)</p><p> EA/VPP(Pin31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程序存
29、儲(chǔ)器讀指令。</p><p> 4、可編程輸入/輸出引腳(32根)</p><p> AT89S51單片機(jī)有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個(gè)口有8位(8根引腳),共32 根。每一根引腳都可以編程。 </p><p> PO口(Pin39~Pin32):8位雙向I/O口線,名稱為P0.0~P0.7</p><
30、;p> P1口(Pin1~Pin8):8位準(zhǔn)雙向I/O口線,名稱為P1.0~P1.7 </p><p> P2口(Pin21~Pin28):8位準(zhǔn)雙向I/O口線,名稱為P2.0~P2.7 </p><p> P3口(Pin10~Pin17):8位準(zhǔn)雙向I/O口線,名稱為P3.0~P3.7</p><p><b> 3.2電源模塊</b&
31、gt;</p><p> 圖3-2-1:?jiǎn)纹瑱C(jī)的電源模塊</p><p> 函數(shù)信號(hào)發(fā)生器的電源包括兩部分,包括單片機(jī)和外部電路用的電壓+5V和運(yùn)算放大器的電壓+-12V,所以電源模塊選擇了常用的三端穩(wěn)壓器7805,7912和7812,由市電220V經(jīng)變壓器輸出24V電壓,通過(guò)7812和7912輸出正負(fù)12V的電壓用于運(yùn)算放大器的供電,7812的輸出端接7805將輸出的12V電壓轉(zhuǎn)為5
32、V用于單片機(jī)和其他外設(shè)電路的供電使用。</p><p> 圖3-2-2:7805的原理圖</p><p> 通過(guò)差分對(duì)管和負(fù)反饋電路,使得輸出的電壓穩(wěn)定在+5V。</p><p> 3.3 D/A轉(zhuǎn)換模塊</p><p> 本次試驗(yàn)選擇的D/A轉(zhuǎn)化器是DAC0832,是一款8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)DA芯片
33、以其價(jià)格低廉、接口簡(jiǎn)單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。</p><p> 圖3-3-1:DAC0832內(nèi)部結(jié)構(gòu)圖</p><p> DAC0832內(nèi)部有輸入寄存器和DAC寄存器,所以無(wú)需外部連接專門的鎖存器。</p><p> 圖3-3-2:DACA0
34、832引腳圖</p><p><b> 各引腳的功能如下:</b></p><p> D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時(shí)間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會(huì)出錯(cuò));</p><p> ILE:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效;</p><p> CS:片選信號(hào)輸入線(選通數(shù)據(jù)鎖存器),低電平有效
35、;</p><p> WR1:數(shù)據(jù)鎖存器寫選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時(shí),數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負(fù)跳變時(shí)將輸入數(shù)據(jù)鎖存;</p><p> XFER:數(shù)據(jù)傳輸控制信號(hào)輸入線,低電平有效,負(fù)脈沖(脈寬應(yīng)大于500ns)有效;</p><p> WR2:DAC寄存器選
36、通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由WR1、XFER的邏輯組合產(chǎn)生LE2,當(dāng)LE2為高電平時(shí),DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負(fù)跳變時(shí)將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開(kāi)始D/A轉(zhuǎn)換。</p><p> IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化;</p><p> IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);</p&g
37、t;<p> Rfb:反饋信號(hào)輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度;</p><p> Vcc:電源輸入端,Vcc的范圍為+5V~+15V;</p><p> VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V~+10V;</p><p> AGND:模擬信號(hào)地</p><p> DGND:數(shù)字信號(hào)地&l
38、t;/p><p> DAC0832主要性能參數(shù)</p><p> 1. 分辨率為8位;</p><p> 2. 電流穩(wěn)定時(shí)間1us;</p><p> 3. 可單緩沖、雙緩沖或直接數(shù)字輸入;</p><p> 4. 只需在滿量程下調(diào)整其線性度;</p><p> 5. 單一電源供電(+5
39、V~+15V);</p><p> 6. 低功耗,200mW。</p><p> 通常DAC0832有三種不同的工作方式,主要依據(jù)對(duì)數(shù)據(jù)鎖存器和DAC鎖存器的控制方式劃分:直通方式,單緩沖方式和雙緩沖方式。</p><p> 其中直通方式CS,XFER,WR1和WR2直接接低電平,DAC0832隨時(shí)轉(zhuǎn)換輸入的數(shù)據(jù),這種方式比較簡(jiǎn)單,占用的I/O口也比較少,但是
40、當(dāng)需要I/O口做擴(kuò)展的時(shí)候容易受到干擾。</p><p> 單緩沖方式者把數(shù)據(jù)鎖存器和DAC鎖存器的使能端接在一起,只需要一組信號(hào)就能同時(shí)控制兩個(gè)寄存器的。</p><p> 雙緩沖方式是將數(shù)據(jù)鎖存器和DAC鎖存器分開(kāi)單獨(dú)控制,這種做法容易占用大量的I/0口。</p><p> 綜上所訴,本次設(shè)計(jì)采用了單緩沖控制方式</p><p>
41、 圖3-3-3.DAC0832的單緩沖方式連線圖 </p><p><b> 3.4鍵盤輸入模塊</b></p><p> 通常單片機(jī)外部擴(kuò)展鍵盤的方式有獨(dú)立式鍵盤,矩陣鍵盤以及專門的鍵盤電路。</p><p> 獨(dú)立式鍵
42、盤就是一個(gè)I/O口擴(kuò)展一個(gè)開(kāi)關(guān),這種方式程序編寫比較容易,只需要檢測(cè)單片機(jī)I/O某一時(shí)刻是否為低電平就能檢測(cè)出其的按鍵輸入情況,而且按鍵和I/O口一一對(duì)應(yīng),所以能夠輕松識(shí)別按鍵的值,缺點(diǎn)是由于一個(gè)I/O口只能連接一個(gè)按鍵,當(dāng)按鍵數(shù)量比較多的時(shí)候,勢(shì)必占用了大量的I/O口,對(duì)系統(tǒng)的擴(kuò)展造成巨大的困難。</p><p> 圖3-4-1.獨(dú)立鍵盤輸入</p><p> 矩陣鍵盤相比獨(dú)立式鍵盤
43、其擴(kuò)充的量大大增加,例如常見(jiàn)的4*4矩陣鍵盤占用的I/O口為4+4=8個(gè),當(dāng)需要擴(kuò)充為20鍵輸入時(shí)只需要4+5=9個(gè)I/O口,而采用獨(dú)立式鍵盤的時(shí)候要分別用掉16個(gè)I/O口和20個(gè)I/O口,由于單片機(jī)的I/O口數(shù)量有限,很難將大量的I/O口用于,顯然矩陣鍵盤能夠大大的減少系統(tǒng)I/O口的使用,矩陣鍵盤的缺點(diǎn)是編寫程序比較麻煩,需要上拉電阻系統(tǒng)的連線和元器件都增加。當(dāng)采用行掃描方式讀取鍵值時(shí),需要4個(gè)上拉電阻,提供需要的高電平,當(dāng)采用線反轉(zhuǎn)
44、法式需要采用8個(gè)上拉電阻,顯然整個(gè)電路的接線都將變得更加復(fù)雜。</p><p> 圖3-4-2.矩陣鍵盤連線圖 </p><p> 專用的鍵盤電路能夠?qū)崿F(xiàn)鍵盤的輸入,而且讀取數(shù)據(jù)也比較簡(jiǎn)單,例如周立功公司的數(shù)碼管鍵盤擴(kuò)展電路7289,能同時(shí)控制8位7段共陰極數(shù)碼管和64個(gè)按鍵輸入,內(nèi)部自帶消抖設(shè)置,當(dāng)檢測(cè)按鍵輸入時(shí)能夠給單片機(jī)發(fā)送中斷信號(hào),并直接將對(duì)應(yīng)的值發(fā)送給單片機(jī),而不需要單片機(jī)另
45、外程序?qū)ζ溥M(jìn)行識(shí)別,數(shù)碼管顯示部分能夠通過(guò)單片機(jī)設(shè)置各位的顯示段碼,并設(shè)置其導(dǎo)通與否和偏移方向。但是采用專門的鍵盤電路芯片會(huì)加大設(shè)計(jì)的成本。</p><p> 由于本次設(shè)計(jì)使用的按鍵數(shù)量并不要求很多,要求的只有模式,頻率+-和幅值+-,所以采用獨(dú)立鍵盤能夠減少系統(tǒng)電路的復(fù)雜程度,也大大簡(jiǎn)化了對(duì)編程的要求。</p><p> 圖3-4-3.7289的擴(kuò)展電路</p><
46、;p><b> 3.5 顯示模塊</b></p><p> 本次設(shè)計(jì)要求對(duì)輸出波形的頻率,幅值和波形進(jìn)行輸出,所以要擴(kuò)展顯示模塊,常用的顯示模塊LCD有7端數(shù)碼管,LCD1602和12864等液晶顯示屏。</p><p> 為了降低設(shè)計(jì)的成本和擴(kuò)展的難度,本次設(shè)計(jì)選擇使用7段數(shù)碼管。</p><p> 圖3-5-1.數(shù)碼管原理圖&
47、lt;/p><p> 常用的數(shù)碼管包括共陰極和共陽(yáng)極兩種。</p><p> 其中共陰極數(shù)碼管的編碼方式如下</p><p> 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,</p><p> 0 1 2 3 4 5</p><p>
48、0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,</p><p> 6 7 8 9 A B</p><p> 0x39 , 0x5e , 0x79 , 0x71 , 0x00</p><p> C D E F 無(wú)顯示</p><p
49、> LED顯示器工作方式有兩種:靜態(tài)顯示方式和動(dòng)態(tài)顯示方式。靜態(tài)顯示的特點(diǎn)是每個(gè)數(shù)碼管的段選必須接一個(gè)8位數(shù)據(jù)線來(lái)保持顯示的字形碼。當(dāng)送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。這種方法的優(yōu)點(diǎn)是占用CPU時(shí)間少,顯示便于監(jiān)測(cè)和控制。缺點(diǎn)是硬件電路比較復(fù)雜,成本較高。</p><p> 動(dòng)態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動(dòng)態(tài)掃描
50、顯示。所謂動(dòng)態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。動(dòng)態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時(shí)應(yīng)略小于靜態(tài)顯示電路中的。</p><p> 圖3-5-2.7段數(shù)碼管動(dòng)態(tài)顯示電路圖</p><p> 3.6 I/V轉(zhuǎn)化模塊</p><p> 由于DA轉(zhuǎn)化器輸出的是
51、電流信號(hào),所以還需要將其轉(zhuǎn)化為電壓信號(hào),為了各種波形的雙極性輸出還需要連接雙極性轉(zhuǎn)化電路。</p><p> 圖3-6.雙極性轉(zhuǎn)化電路 </p><p> 如圖為常用的雙極性轉(zhuǎn)化電路,第一個(gè)運(yùn)算放大器將電流信號(hào)轉(zhuǎn)變?yōu)殡妷盒盘?hào),第二個(gè)運(yùn)算放大器和電阻R1,R2共同組成方向加法器,由于電流輸出接的是第一個(gè)運(yùn)算放大器的反相輸出端,所以當(dāng)滿足2*R2=R1且R2=R3的時(shí)候輸出電壓為</
52、p><p> Vout=Vi-(Vref/2)</p><p> 當(dāng)要實(shí)現(xiàn)雙極性輸出的時(shí)候幅值的二進(jìn)制碼要轉(zhuǎn)為偏移二進(jìn)制碼,即將二進(jìn)制碼對(duì)應(yīng)的零值偏移到80H,在偏移之后,只有幅值二進(jìn)制碼大于128的輸出才為正,后則為負(fù)。</p><p> 通常要得到偏移二進(jìn)制碼,可以通過(guò)求原有二進(jìn)制的補(bǔ)碼,再加上80H,并舍棄其進(jìn)位,使得其成為偏移二進(jìn)制碼。</p>
53、<p><b> 3.7幅值調(diào)節(jié)模塊</b></p><p> 圖3-7-1.X9511的常用接線圖</p><p> 數(shù)字電位器是可用數(shù)字信號(hào)控制電位器滑動(dòng)端位置的新型器件,一般分按鈕控制和串行信號(hào)控制兩種,X9511就是XICOR公司生產(chǎn)的理想按鍵式數(shù)字電位器,它內(nèi)含31個(gè)串聯(lián)電阻陣列和32個(gè)軸頭。軸頭位置由兩個(gè)按鍵控制,并且可以被存儲(chǔ)在一個(gè)
54、E2PROM存儲(chǔ)器中,以供下一次通電時(shí)重新調(diào)用,并自動(dòng)恢復(fù)軸頭位置,X9511有1kΩ和10kΩ的X9511Z和X9511W兩種規(guī)格。X9511內(nèi)部由計(jì)數(shù)器、存儲(chǔ)器、譯碼器、模擬開(kāi)關(guān)和電阻陣列等電路組成,其中計(jì)數(shù)器是5位可逆計(jì)數(shù)器,可用于對(duì)控制信號(hào)PU(或PD)進(jìn)行加(或減)計(jì)數(shù),計(jì)數(shù)器的計(jì)數(shù)值可以在ASE的控制下存儲(chǔ)非易失性存儲(chǔ)器中。計(jì)數(shù)器的數(shù)值經(jīng)過(guò)32選1譯碼器譯碼后可用于控制模擬開(kāi)關(guān),32個(gè)模擬開(kāi)關(guān)相當(dāng)于電位器的32個(gè)軸頭,電阻陣
55、列由采用集成電路工藝制作的31個(gè)串聯(lián)一起的電阻構(gòu)成,電阻兩端分別連接模擬開(kāi)關(guān)的一端,而模擬開(kāi)關(guān)的另一端連接在一起構(gòu)成數(shù)字電位器的滑動(dòng)端(VW),譯碼器的輸出端可控制模擬開(kāi)關(guān)的通斷,從而實(shí)現(xiàn)滑動(dòng)軸頭位置的變化。</p><p> X9511的計(jì)數(shù)器電路具有以下特點(diǎn):</p><p> 1.輸入端具有內(nèi)部上拉電阻和消除開(kāi)關(guān)抖動(dòng)的抗擾電路,當(dāng)輸入脈沖寬度小于40ms時(shí),計(jì)數(shù)器將其視為干擾信號(hào)
56、而不進(jìn)行計(jì)數(shù);</p><p> 2.PU和PD引腳可直接連接一個(gè)按鈕開(kāi)關(guān)到地,當(dāng)按鈕按下時(shí),在PU或PD端產(chǎn)生一個(gè)負(fù)脈沖,使計(jì)數(shù)器進(jìn)行加1(按PU鍵)或減1(按PD鍵)計(jì)數(shù);</p><p> 3.能將計(jì)數(shù)值存儲(chǔ)在非易失性存儲(chǔ)器E2PROM中長(zhǎng)期保存;</p><p> 4. 能在上電時(shí)自動(dòng)將E2PROM中的數(shù)據(jù)恢復(fù)到計(jì)數(shù)器中;</p><
57、;p> 5. 當(dāng)計(jì)數(shù)器計(jì)數(shù)到最大值“31”時(shí),PU按鍵失效,而計(jì)數(shù)到最小值“0”時(shí),PD按鍵失效,從而避免循環(huán)計(jì)數(shù),保證電位器調(diào)到最大位置時(shí)不會(huì)跳到零位,或從零位跳到最大位置。</p><p> 6. 具有慢速和快速計(jì)數(shù)選擇,當(dāng)輸入負(fù)脈沖寬度小于250ms時(shí)為慢速計(jì)數(shù)方式,此時(shí)按一下按鍵計(jì)數(shù)器將執(zhí)行加1(或減1)操作,當(dāng)脈沖寬度大于250ms時(shí),計(jì)數(shù)器為快速(連續(xù))計(jì)數(shù)方式,此時(shí)1秒鐘以內(nèi),電路將以25
58、0ms的速率連續(xù)計(jì)數(shù),若按鍵按下的時(shí)間大于1秒,計(jì)數(shù)器將以5ms的速率遞增或遞減,直到滑動(dòng)端滑到最高或最低軸頭位置,當(dāng)按鍵一釋放后,計(jì)數(shù)器立即停止計(jì)數(shù),電路返回到等待狀態(tài)。</p><p> 圖3-7-2.X9511內(nèi)部結(jié)構(gòu)圖</p><p> X9511的引腳配置:</p><p> /PU管腳:/PU輸入用來(lái)增大滑動(dòng)端的位置。片內(nèi)有上拉電阻,使/PU懸空保
59、持高電平,如果/PU接地或則邏輯低電平的時(shí)候,在經(jīng)過(guò)一個(gè)去抖時(shí)間后,將把滑動(dòng)端移動(dòng)到下一個(gè)鄰接的較高的抽頭位置。</p><p> /PD管腳:/PD輸入用來(lái)減小滑動(dòng)端的位置,同/PU一個(gè)片內(nèi)的上拉電阻使/PD腳懸空的時(shí)候保持高電平,如果/PD接地或則邏輯低電平,在經(jīng)過(guò)一個(gè)去抖時(shí)間之后,將把滑動(dòng)端下移到下一個(gè)鄰接的位置。</p><p> Vh:高電壓端和低Vl電壓段等效一個(gè)機(jī)械電位器
60、的固定端最小電壓是-5V,最大電壓時(shí)+5V,但必須注意VL和VH這個(gè)專業(yè)術(shù)語(yǔ)之規(guī)定了有/PD和/PU輸入端現(xiàn)則的關(guān)于滑動(dòng)端方向的相對(duì)位置,而不是端點(diǎn)上的電壓。</p><p> Vss:芯片的接地端。</p><p> Vw:滑動(dòng)端,相當(dāng)于機(jī)械電位器的可移動(dòng)端?;瑒?dòng)端在電阻陣列中的位置由控制輸入端決定?;瑒?dòng)端的串聯(lián)電阻值典型的為40歐姆。</p><p> /
61、ASE:自動(dòng)存儲(chǔ)使此控制端接Vl時(shí),AUTOSTORE被使能,接VDD時(shí)被禁止,用戶可動(dòng)過(guò)將其置低電平,存儲(chǔ)當(dāng)前的電阻值,在下次復(fù)位的時(shí)候直接使用當(dāng)前的阻值。</p><p><b> VCC:電源管腳。</b></p><p> 第四章 電路軟件設(shè)計(jì)</p><p><b> 4.1系統(tǒng)總框圖</b></p&
62、gt;<p> 圖4-1.系統(tǒng)總的框圖</p><p><b> 4.2顯示子程序</b></p><p> 顯示部分采用動(dòng)態(tài)輸出的方式,通過(guò)控制兩個(gè)鎖存器來(lái)控制實(shí)現(xiàn)單個(gè)I/O分時(shí)控制輸出輸出數(shù)碼管的段選(字形的選擇)和位選(位權(quán)的選擇)。如圖3-5-2顯示電路圖中P0用于輸出數(shù)據(jù),而P2^0和P2^1用來(lái)控制寄存器的通斷來(lái)控制是輸出字段信息還是位
63、權(quán)信息。</p><p> 圖4-2:顯示流程圖</p><p> 通常的數(shù)碼管動(dòng)態(tài)顯示程序都要進(jìn)行延時(shí),然后靠人眼的余光實(shí)現(xiàn)數(shù)據(jù)的輸出,當(dāng)延時(shí)時(shí)間太小的時(shí)候會(huì)出現(xiàn)數(shù)碼閃爍甚至亂碼,當(dāng)延時(shí)時(shí)間設(shè)定的太大的時(shí)候,有可能出現(xiàn)輸出斷續(xù)的可能,通常需延時(shí)5ms,6位數(shù)據(jù)顯示就是30ms,而按鍵的消抖時(shí)間不過(guò)10ms,所以時(shí)間片輪法的話會(huì)大大影響電路的正常工作,甚至不能檢測(cè)出按鍵輸入,或則按鍵輸
64、入的時(shí)候出現(xiàn)顯示斷續(xù)的情況,所以本才設(shè)計(jì)采用了中斷顯示的方法,利用定時(shí)器進(jìn)行延時(shí),設(shè)定好定時(shí)器的初值,在固定的延時(shí)時(shí)間上溢出,然后調(diào)用顯示子程序顯示當(dāng)前的輸出情況,由于定時(shí)器中斷程序 執(zhí)行一次只能顯示一位數(shù)據(jù),所以要設(shè)定一個(gè)全局變量的顯示緩沖區(qū)和全局變量的位選標(biāo)志。</p><p><b> 4.3按鍵子程序</b></p><p> 本次設(shè)計(jì)由于要求對(duì)幅值和頻率
65、進(jìn)行控制,所以要求用相關(guān)的按鍵輸入,前面已經(jīng)介紹了各種按鍵的優(yōu)缺點(diǎn),最后選擇了獨(dú)立式鍵盤,分別為+-頻率,+-幅值,模式選擇5位,共占用5個(gè)IP口,選擇P2口的高5位作為按鍵輸入。</p><p> 圖4-3:按鍵子程序框圖</p><p> Mode:模式選擇位,用于選擇輸出的波形。</p><p> Ampl+:幅值+位,步進(jìn)為0.5,系統(tǒng)的基準(zhǔn)電壓為+-
66、2.5V。</p><p> Ampl-:幅值-位。</p><p> Freq+:頻率+位,用于調(diào)整中斷時(shí)間。</p><p> Freq-:頻率-位。</p><p> 程序中的模式選擇是通過(guò)MODE位輸入,通過(guò)設(shè)定一個(gè)模式標(biāo)志位,當(dāng)執(zhí)行一次模式位按鍵程序,標(biāo)志位自動(dòng)+1,并指向其所指定的波形。</p><p&
67、gt; 幅值選擇通過(guò)按鍵AMPL+和AMPL-輸入,當(dāng)執(zhí)行了幅值子程序的時(shí)候,系統(tǒng)通過(guò)改變X9511抽頭的位置,改變其Vw的輸出電壓,通過(guò)VREF改變輸出電壓的幅值。</p><p> 頻率的選擇則是通過(guò)FREQ+和FREQ-進(jìn)行選擇的,當(dāng)執(zhí)行頻率調(diào)節(jié)子程序的時(shí)候,通過(guò)改變定時(shí)的初值實(shí)現(xiàn)的,當(dāng)使用12M晶振時(shí)候,正弦表位256位時(shí),理想中最大的頻率可以達(dá)到4KHz,當(dāng)頻率為10Hz的時(shí)候,計(jì)數(shù)初值為390。由
68、于系統(tǒng)采用的最低的初值時(shí)間為100,所以最高只能產(chǎn)生20Hz的頻率。</p><p><b> 總結(jié)</b></p><p> 本次畢業(yè)設(shè)計(jì)我所涉及的題目是多功能函數(shù)信號(hào)發(fā)生器,由于是基于單片機(jī)的波形發(fā)生器,所以我才用了查表輸出的方法,經(jīng)過(guò)D/A轉(zhuǎn)化輸出需要的波形,并通過(guò)低通濾波是其輸出的波形能比較的平滑。</p><p> 通過(guò)兩個(gè)月的
69、畢業(yè)設(shè)計(jì),進(jìn)一步的加深了我對(duì)專業(yè)課的理解和認(rèn)識(shí),畢業(yè)設(shè)計(jì)是我在大學(xué)四年的最后一堂課,也是對(duì)我大學(xué)四年所學(xué)的知識(shí)的一個(gè)最好的評(píng)估。開(kāi)始設(shè)計(jì)方案,總感覺(jué)自己還是有許多的東西弄不太清楚,于是就請(qǐng)教同學(xué)。有一些開(kāi)始的時(shí)候由于沒(méi)有經(jīng)驗(yàn),不知如何下手,所以就去圖書(shū)管找了一些書(shū)看,盡管有許多的設(shè)經(jīng)驗(yàn)。經(jīng)過(guò)自己分析各方案之后,決定用查表的方法來(lái)做。這樣可以降低一些硬件設(shè)計(jì)的難度,初次設(shè)計(jì)應(yīng)切合自己的水平。 </p><p>
70、我以為這些做好了,構(gòu)思也有了,寫程序應(yīng)該是相對(duì)容易的。誰(shuí)知道,寫起程序來(lái),才發(fā)現(xiàn)各部分分開(kāi)寫很簡(jiǎn)單,但是和在一起的時(shí)候,各種全局變量和函數(shù)的調(diào)用并不想理想中的那樣,經(jīng)常發(fā)生沖突,在老師和同學(xué)的幫助下,我總算攻克了一個(gè)又一個(gè)難關(guān)。 </p><p> 于是在自己的努力下,程序很快就寫好了。這次是我的第一個(gè)設(shè)計(jì)器件,盡管經(jīng)歷了不少的艱辛,但給我積累了一點(diǎn)設(shè)計(jì)的經(jīng)驗(yàn),最后也有點(diǎn)小小的成就感。后面的路還很長(zhǎng),我還會(huì)努力
71、! </p><p><b> 參考文獻(xiàn)</b></p><p> [1] 賈金玲.微型計(jì)算機(jī)原理與接口技術(shù)課程設(shè)計(jì)指導(dǎo).重慶:重慶大學(xué)出版,2002.2</p><p> [2] 賈金玲.微型計(jì)算機(jī)原理與接口技術(shù).重慶:重慶大學(xué)出版社,2001.12 </p><p> [3] 周明德.微
72、型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用(第四版).北京:清華大學(xué)出版社, 2002 </p><p> [4] 周 林 殷狹.數(shù)據(jù)采集與分析技術(shù).西安:西安電子科技大學(xué)出版社, 2005.7 </p><p> [5] 李相偉.微機(jī)系統(tǒng)原理與接口技術(shù).北京:國(guó)防工業(yè)出版社,2005 </p><p> [6] 楊天怡 黃勤.微型計(jì)算機(jī)控制技術(shù).重慶:重慶大
73、學(xué)出版社,1996 </p><p> [7] 劉迎春 葉湘檳.傳感器原理設(shè)計(jì)與應(yīng)用(第四版).長(zhǎng)沙:國(guó)防科技大學(xué)出版社,2002 </p><p> [8] 賈金玲 姚婭川.單片機(jī)原理及應(yīng)用.成都:電子科技大學(xué)出版社,2004 </p><p> [9] 李群芬 肖看.單片機(jī)原理、接口及應(yīng)用-嵌入式系統(tǒng)技術(shù)基礎(chǔ).武漢:清
74、華大學(xué)出版社,2005</p><p> [10] 沈蘭蓀.數(shù)據(jù)采集技術(shù).合肥:中國(guó)科技大學(xué)出版社,1991</p><p> [11]Stephen Prata.C Primer Plus.America:Sams,2005</p><p> [12]Newnes.Programming 16-Bit Microcrotrallers in C.Americ
75、a:Ended,2003</p><p> [13]Robotics. A Beginner’s Guide to Robotics Projects Using the PICmicro</p><p> English:Oxford,1997</p><p><b> 附錄A:系統(tǒng)程序</b></p><p>
76、 #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit du=P2^0;</p><p> sbit we=P2^1;</p><p> sb
77、it PU=P3^2;</p><p> sbit PD=P3^3;</p><p> sbit CS=P3^0;</p><p> sbit WR=P3^1;</p><p> uchar fun;//定義模式位和幅值位</p><p> uint chuzhi;//定義了計(jì)數(shù)初值</p>&
78、lt;p> unsigned long freq;</p><p> uchar amplflag;</p><p> Uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p> uchar code tosin[256]={0x80,0x83,0x8
79、6,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5 </p><p> ,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec
80、,0xee,0xef,0xf1,0xf2,0xf4,0xf5 </p><p> ,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd </p><p> ,0xfd,0xfc,0xfb,0xfa,0
81、xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda </p><p> ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0x
82、a5,0xa2,0x9f,0x9c,0x99 </p><p> ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51 </p><p> ,0x4e,0x4c,0x48,0x45,0x43,0x40
83、,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 </p><p> ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,
84、0x00,0x00,0x00 </p><p> ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 </p><p> ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0
85、x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e </p><p> ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 }; </p><p> void
86、delay(uint a)</p><p><b> {</b></p><p><b> uint y;</b></p><p> while(a--)</p><p><b> {</b></p><p> for(y=110;y>0
87、;y--);</p><p><b> }</b></p><p><b> }</b></p><p> void DAC0832(uchar date)</p><p><b> {</b></p><p><b> WR=0;&
88、lt;/b></p><p><b> CS=0;</b></p><p><b> P0=date;</b></p><p><b> WR=1;</b></p><p><b> CS=1;</b></p><p>
89、;<b> }</b></p><p> void key1()//模式按鍵操作</p><p><b> {</b></p><p><b> fun++;</b></p><p> if(fun==4)</p><p><b>
90、 fun=0;</b></p><p><b> }</b></p><p> void key2()//幅值+位操作</p><p><b> {</b></p><p><b> uchar z;</b></p><p> if
91、 (amplflag==9))</p><p> amplflag=9;;</p><p><b> else </b></p><p><b> {</b></p><p> amplflag++;</p><p> for(z=0;z<3;z++)<
92、/p><p><b> {</b></p><p><b> PU=0;</b></p><p><b> delay(1);</b></p><p><b> PU=1;</b></p><p><b> }<
93、;/b></p><p><b> }</b></p><p><b> ??;</b></p><p><b> }</b></p><p> void key3()//幅值-位操作</p><p><b> { </b&g
94、t;</p><p><b> uchar z;</b></p><p> if((amplflag==1))</p><p> amplflag=1;;</p><p><b> else </b></p><p><b> {</b><
95、;/p><p> amplflag--; </p><p> for(z=0;z<3;z++)</p><p><b> {</b></p><p><b> PD=0;</b></p><p><b> delay(1);</b><
96、;/p><p><b> PD=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> void key4()//頻率+位操作</p><p><b> {</b></
97、p><p> if(chuzhi==3900)</p><p> chuzhi=3900;</p><p> else chuzhi+=50;</p><p><b> }</b></p><p> void key5()//頻率-位操作</p><p><b&
98、gt; {</b></p><p> if(chuzhi==200)</p><p> chuzhi==200;</p><p> else chuzhi-=50;</p><p><b> }</b></p><p> void keyscan()//按鍵掃描程序<
99、/p><p><b> {</b></p><p> uchar temp;</p><p><b> P2=0xf8;</b></p><p><b> temp=P2;</b></p><p> while(temp!=0xf8)</p&
100、gt;<p><b> {</b></p><p> delay();//機(jī)械消抖</p><p><b> P2=0xf8;</b></p><p><b> temp=P2;</b></p><p> while(temp!=0xf8)</p&
101、gt;<p><b> {</b></p><p> switch(temp)</p><p><b> {</b></p><p> case 0xf0:key1();break;//判斷按鍵的值</p><p> case 0xe8:key2();break;</p
102、><p> case 0xd8:key3();break;</p><p> case 0xb8:key4();break;</p><p> case 0x78:key5();break;</p><p><b> }</b></p><p> while(temp!0xf8)//松手檢測(cè)
103、</p><p><b> {</b></p><p><b> P2=0xf8;</b></p><p><b> temp=P2;</b></p><p><b> }</b></p><p><b> }&
104、lt;/b></p><p><b> } </b></p><p><b> } </b></p><p> void gengxin()//緩沖區(qū)更新程序</p><p><b> {</b></p><p> freq=1000
105、000/(256*delay);//delay為輸出函數(shù)表的間隔時(shí)間</p><p> updata[0]=mode;//模式位</p><p> updata[1]=ampl;//幅值位</p><p> updata[2]=(uchar)(freq/1000);</p><p> updata[3]=(uchar)((freq/1
106、00)%10);</p><p> updata[4]=(uchar)((freq/10)%10);</p><p> updata[5]=(uchar)(freq%10);</p><p><b> }</b></p><p> void main()</p><p><b>
107、 {</b></p><p> TMOD=0x11;</p><p> TH0=(65536-chuzhi)/256;</p><p> TL0=(65536-chuzhi)%256;</p><p> TH1=(65536-5000)/256;</p><p> TL1=(65536-5000
108、)%256;</p><p><b> ET1=1;</b></p><p><b> ET0=1;</b></p><p><b> EA=1;</b></p><p><b> TR0=1;</b></p><p>&l
109、t;b> TR1=1;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> keyscan();</p><p><b> }</b></p><p><b
110、> }</b></p><p> void boxing() interrupt 1</p><p><b> {</b></p><p> TH0=(65536-chuzhi)/256;</p><p> TL0=(65536-chuzhi)%256;</p><p>
111、; uchar temp;</p><p> if(fun==0)//輸出正弦波</p><p> DAC0832(tosin[i]);</p><p> else if(fun==1)//輸出矩形波</p><p><b> {</b></p><p><b> if(i&
112、lt;128)</b></p><p> DAC0832(0x00);</p><p><b> else </b></p><p> DAC0832(0xff);</p><p><b> }</b></p><p> else if(fun==2)/
113、/輸出矩形波</p><p> DAC0832(i);</p><p> else if(fun==3)//輸出三角波</p><p><b> {</b></p><p><b> if(i<128)</b></p><p><b> temp=2
114、*i;</b></p><p> DAC0832(temp);</p><p><b> else</b></p><p> temp=(256-i)*2;</p><p> DAC0832(temp);</p><p><b> }</b></p
115、><p><b> }</b></p><p> void xianshi() interrupt 3</p><p><b> {</b></p><p><b> TR1=0 ;</b></p><p> TH0=(65536-5000)/25
116、6;</p><p> TL0=(65536-5000)%256; </p><p><b> we=1;</b></p><p> P0=tab[updata[x]];</p><p><b> we=0;</b></p><p><b> du=
117、1;</b></p><p><b> P0=y;</b></p><p><b> du=0;</b></p><p><b> x++;</b></p><p><b> y<<=1;</b></p>&l
118、t;p><b> if(x==6)</b></p><p><b> {</b></p><p><b> x=0;</b></p><p><b> y=0x01;</b></p><p><b> }</b><
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器設(shè)計(jì)畢業(yè)論文
- 基于51單片機(jī)函數(shù)信號(hào)發(fā)生器設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)畢業(yè)論文
- 基于51單片機(jī)函數(shù)信號(hào)發(fā)生器設(shè)計(jì)1畢業(yè)論文
- 基于單片機(jī)的信號(hào)發(fā)生器設(shè)計(jì)-畢業(yè)論文
- 基于單片機(jī)的信號(hào)發(fā)生器設(shè)計(jì)【畢業(yè)論文】
- 畢業(yè)論文---單片機(jī)_函數(shù)發(fā)生器的設(shè)計(jì)
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的函數(shù)信號(hào)發(fā)生器
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----基于單片機(jī)的函數(shù)信號(hào)發(fā)生器
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 單片機(jī)函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)函數(shù)信號(hào)發(fā)生器設(shè)計(jì)
- 單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 單片機(jī)控制多功能信號(hào)發(fā)生器畢業(yè)論文
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì) (2)
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì) (2)
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論