版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> 信號發(fā)生器是一種常用的信號源,廣泛地應用于電子電路、自動控制系統(tǒng)和教學實驗等領域。目前使用的信號發(fā)生器大部分是函數(shù)信號發(fā)生器,且特殊波形發(fā)生器的價格昂貴。所以本設計使用的是AT89C51單片機構成的發(fā)生器,可產(chǎn)生三角波、方波、正弦波等多種特殊波形和任意波形,波形的頻率可用程序控制改變。在單片機上加外圍器件距陣式鍵盤,通過鍵盤控制
2、波形頻率的增減以及波形的選擇,并用了LCD顯示頻率大小。在單片機的輸出端口接DAC0832進行D/A轉換,再通過運放進行波形調整,最后輸出波形接在示波器上顯示。本設計具有線路簡單、結構緊湊、價格低廉、性能優(yōu)越等優(yōu)點。</p><p> 在介紹DAC0832芯片特性的基礎上,論述了采用DAC0832芯片設計數(shù)字函數(shù)信號發(fā)生器的原理以及整機的結構設計。對其振蕩頻率控制、信號輸出幅度控制以及頻率和幅度數(shù)顯的實現(xiàn)作了較
3、詳細的論述。該函數(shù)信號發(fā)生器可輸出三角波,方波和正弦波。</p><p> 關鍵詞: 信號發(fā)生器 單片機 波形調整</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:設計任務和要求…………………………………………………………2</p><p><b> 2.方案的研究</b&g
9、t;</p><p> 2.1:方案的提出和整論………………………………………………………3</p><p> 2.2:模塊的結構劃分…………………………………………………………4</p><p><b> 3.各部分功能模塊</b></p><p> 3.1:單片機模塊………………………………………………………
10、………5</p><p> 3.2:電源模塊…………………………………………………………………6</p><p> 3.3:D/A轉換模塊……………………………………………………………7</p><p> 3.4:鍵盤輸入模塊……………………………………………………………10</p><p> 3.5:顯示模塊………………………………
11、…………………………………12</p><p> 3.6:I/V轉化模塊……………………………………………………………13</p><p> 3.7: 基準電壓調節(jié)模塊………………………………………………………14</p><p><b> 4.電路軟件設計</b></p><p> 4.1:系統(tǒng)總框圖……………
12、…………………………………………………18</p><p> 4.1:顯示子程序框圖…………………………………………………………19</p><p> 4.2:按鍵子程序框圖…………………………………………………………20</p><p><b> 總結</b></p><p><b> 參考文獻<
13、;/b></p><p> 附錄A:系統(tǒng)總程序 </p><p> 附錄B:系統(tǒng)總電路圖</p><p><b> 緒論</b></p><p> 1.1課題背景、目的及意義</p><p> 隨著電子測量及其他部門對各類信號發(fā)生器的廣泛需求及電子技術的迅速發(fā)展,促使信號發(fā)生器種類
14、增多,性能提高。尤其隨著70年代微處理器的出現(xiàn),更促使信號發(fā)生器向著自動化、智能化方向發(fā)展。現(xiàn)在,許多信號發(fā)生器帶有微處理器,因而具備了自校、自檢、自動故障診斷和自動波形形成和修正等功能,可以和控制計算機及其他測量儀器一起方便的構成自動測試系統(tǒng)。當前信號發(fā)生器總的趨勢是向著寬頻率覆蓋、低功耗、高頻率精度、多功能、自動化和智能化方向發(fā)展。</p><p> 在科學研究、工程教育及生產(chǎn)實踐中,如工業(yè)過程控制、教學實
15、驗、機械振動試驗、動態(tài)分析、材料試驗、生物醫(yī)學等領域,常常需要用到低頻信號發(fā)生器。而在我們日常生活中,以及一些科學研究中,鋸齒波和正弦波、矩形波信號是常用的基本測試信號。譬如在示波器、電視機等儀器中,為了使電子按照一定規(guī)律運動,以利用熒光屏顯示圖像,常用到鋸齒波產(chǎn)生器作為時基電路。信號發(fā)生器作為一種通用的電子儀器,在生產(chǎn)、科研、測控、通訊等領域都得到了廣泛的應用。 但市面上能看到的儀器在頻率精度、帶寬、波形種類及程控方面都已不能滿足許多
16、方面實際應用的需求。加之各類功能的半導體集成芯片的快速生產(chǎn),都使我們研制一種低功耗、寬頻帶,能產(chǎn)生多種波形并具有程控等低頻的信號發(fā)生器成為可能。</p><p> 便攜式和智能化越來越成為儀器的基本要求,對傳統(tǒng)儀器的數(shù)字化,智能化,集成化也就明顯得尤為重要。平時常用信號源產(chǎn)生正弦波,方波,三角波等常見波形作為待測系統(tǒng)的輸入,測試系統(tǒng)的性能。單在某些場合,我們需要特殊波形對系統(tǒng)進行測試,這是傳統(tǒng)的模擬信號發(fā)生器和
17、數(shù)字信號發(fā)生器很難勝任的。利用單片機的強大功能,設計合適的人機交互界面,使用戶能夠通過手動的設定,設置所需波形。</p><p> 1.2設計任務和要求</p><p> 設計一個多功能信號發(fā)生器,可以產(chǎn)生正弦波、三角波、方波、鋸齒波等多種波形。波形的頻率、幅值均為連續(xù)可調。實現(xiàn)多功能信號發(fā)生器波形種類、波形的頻率、幅值的狀態(tài)及數(shù)據(jù)的顯示。自選器件,實現(xiàn)多功能信號發(fā)生器的硬件設計。可自
18、行擴展功能,使之更加完善。</p><p><b> 第二章 方案的研究</b></p><p> 2.1方案的提出和整論</p><p> 常用的函數(shù)信號發(fā)生器的實現(xiàn)方法有如下幾種</p><p> 1. 采用分立元件實現(xiàn)信號的輸出,主要是通過模擬電路實現(xiàn)正弦信號的輸出,在通過各種積分微分電路實現(xiàn)各種不同波形的
19、輸出。但是這種方法頻率和幅值的調整比較困難,而且模擬電路受外部因素的影響較大,輸出的波形難以控制。</p><p> 2.采用集成信號發(fā)生芯片MAX038輸出各種波形,并通過外接電阻值改變實現(xiàn)對幅值和頻率的調整。</p><p> 圖2-1-1.基于MAX038的信號發(fā)生器原理圖</p><p> 這種方法實現(xiàn)起來比較容易,但是頻率和幅值的調節(jié)比較困難。<
20、;/p><p> 3. 采用DAC0832通過查表得方式輸出需要的波形,通過單片機定時向DAC轉化器發(fā)送轉換數(shù)據(jù),實現(xiàn)不同的幅值和頻率的輸出。這種方法能夠實現(xiàn)各種需要的波形的輸出,成本也不高,只是在擴展外設的時候浪費了大量的接口,以后的系統(tǒng)擴展可能會有影響。</p><p> 4. 采用DDS頻率合成器,能輸出各種波形,而且能夠輕松調節(jié)幅值和頻率。DDS同DSP(數(shù)字信號處理)一樣,是一項
21、關鍵的數(shù)字化技術。DDS是直接數(shù)字式頻率合成器(Direct Digital Synthesizer)的英文縮寫。與傳統(tǒng)的頻率合成器相比,DDS具有低成本、低功耗、高分辨率和快速轉換時間等優(yōu)點,廣泛使用在電信與電子儀器領域,是實現(xiàn)設備全數(shù)字化的一個關鍵技術。</p><p> 圖2-1-2.DDS的原理框圖</p><p> 一塊DDS芯片中主要包括頻率控制寄存器、高速相位累加器和正弦
22、計算器三個部分。頻率控制寄存器可以串行或并行的方式裝載并寄存用戶輸入的頻率控制碼;而相位累加器根據(jù)DDS頻率控制碼在每個時鐘周期內進行相位累加,得到一個相位值;正弦計算器則對該相位值計算數(shù)字化正弦波幅度(芯片一般通過查表得到)。DDS芯片輸出的一般是數(shù)字化的正弦波,因此還需經(jīng)過高速D/A轉換器和低通濾波器才能得到一個可用的模擬頻率信號。</p><p> 2.2模塊的結構劃分</p><p&
23、gt; 圖2-2.本次設計的模塊圖</p><p> 本次我選用的是單片機通過查表獲得某一時刻對用的波形幅值,經(jīng)過DAC轉化器,轉化為對應的模擬信號,幅值的調節(jié)主要是通過調節(jié)DAC的基準電壓實現(xiàn),頻率的調節(jié)則是</p><p><b> 各部分功能模塊</b></p><p><b> 3.1單片機模塊</b>&l
24、t;/p><p> 本次設計選用的單片機芯片是AT89C51單片機。AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機,片內含4k bytes的可反復擦寫的只讀程序存儲器(PEROM)和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器(CPU)和Flash存儲單元。</p>
25、;<p> AT89C51中有一個用于構成內部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶休或陶瓷諧振器一起構成自激振蕩器。外接石英晶體(或陶瓷諾振器)及電容C1, C2接在放大器的反饋回路中構成并聯(lián)振蕩電路。對外接電容C1, C2雖然沒有十分嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,這
26、里選擇使用石英晶休,我們的電容使用30pF。如使用陶瓷諧振器的話,應選擇40pF士10pF的容值的電容。也可以采用外部時鐘。采用外部時鐘的電路的情況時,外部時鐘脈沖接到XTAL1端,即內部時鐘發(fā)生器的輸入端,XTAL2則懸空。</p><p> 圖3-1:單片機最小系統(tǒng)</p><p> 1、主電源引腳(2根) </p><p> VCC(Pin40):電源輸
27、入,接+5V電源</p><p> GND(Pin20):接地線</p><p> 2、外接晶振引腳(2根)</p><p> XTAL1(Pin19):片內振蕩電路的輸入端</p><p> XTAL2(Pin20):片內振蕩電路的輸出端</p><p> 3、控制引腳(4根)</p><
28、;p> RST/VPP(Pin9):復位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復位。</p><p> ALE/PROG(Pin30):地址鎖存允許信號</p><p> PSEN(Pin29):外部存儲器讀選通信號</p><p> EA/VPP(Pin31):程序存儲器的內外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內部程序存
29、儲器讀指令。</p><p> 4、可編程輸入/輸出引腳(32根)</p><p> AT89S51單片機有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個口有8位(8根引腳),共32 根。每一根引腳都可以編程。 </p><p> PO口(Pin39~Pin32):8位雙向I/O口線,名稱為P0.0~P0.7</p><
30、;p> P1口(Pin1~Pin8):8位準雙向I/O口線,名稱為P1.0~P1.7 </p><p> P2口(Pin21~Pin28):8位準雙向I/O口線,名稱為P2.0~P2.7 </p><p> P3口(Pin10~Pin17):8位準雙向I/O口線,名稱為P3.0~P3.7</p><p><b> 3.2電源模塊</b&
31、gt;</p><p> 圖3-2-1:單片機的電源模塊</p><p> 函數(shù)信號發(fā)生器的電源包括兩部分,包括單片機和外部電路用的電壓+5V和運算放大器的電壓+-12V,所以電源模塊選擇了常用的三端穩(wěn)壓器7805,7912和7812,由市電220V經(jīng)變壓器輸出24V電壓,通過7812和7912輸出正負12V的電壓用于運算放大器的供電,7812的輸出端接7805將輸出的12V電壓轉為5
32、V用于單片機和其他外設電路的供電使用。</p><p> 圖3-2-2:7805的原理圖</p><p> 通過差分對管和負反饋電路,使得輸出的電壓穩(wěn)定在+5V。</p><p> 3.3 D/A轉換模塊</p><p> 本次試驗選擇的D/A轉化器是DAC0832,是一款8分辨率的D/A轉換集成芯片。與微處理器完全兼容。這個DA芯片
33、以其價格低廉、接口簡單、轉換控制容易等優(yōu)點,在單片機應用系統(tǒng)中得到廣泛的應用。D/A轉換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉換電路及轉換控制電路構成。</p><p> 圖3-3-1:DAC0832內部結構圖</p><p> DAC0832內部有輸入寄存器和DAC寄存器,所以無需外部連接專門的鎖存器。</p><p> 圖3-3-2:DACA0
34、832引腳圖</p><p><b> 各引腳的功能如下:</b></p><p> D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時間應大于90ns(否則鎖存器的數(shù)據(jù)會出錯);</p><p> ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效;</p><p> CS:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效
35、;</p><p> WR1:數(shù)據(jù)鎖存器寫選通輸入線,負脈沖(脈寬應大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當LE1為高電平時,數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負跳變時將輸入數(shù)據(jù)鎖存;</p><p> XFER:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負脈沖(脈寬應大于500ns)有效;</p><p> WR2:DAC寄存器選
36、通輸入線,負脈沖(脈寬應大于500ns)有效。由WR1、XFER的邏輯組合產(chǎn)生LE2,當LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負跳變時將數(shù)據(jù)鎖存器的內容打入DAC寄存器并開始D/A轉換。</p><p> IOUT1:電流輸出端1,其值隨DAC寄存器的內容線性變化;</p><p> IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);</p&g
37、t;<p> Rfb:反饋信號輸入線,改變Rfb端外接電阻值可調整轉換滿量程精度;</p><p> Vcc:電源輸入端,Vcc的范圍為+5V~+15V;</p><p> VREF:基準電壓輸入線,VREF的范圍為-10V~+10V;</p><p> AGND:模擬信號地</p><p> DGND:數(shù)字信號地&l
38、t;/p><p> DAC0832主要性能參數(shù)</p><p> 1. 分辨率為8位;</p><p> 2. 電流穩(wěn)定時間1us;</p><p> 3. 可單緩沖、雙緩沖或直接數(shù)字輸入;</p><p> 4. 只需在滿量程下調整其線性度;</p><p> 5. 單一電源供電(+5
39、V~+15V);</p><p> 6. 低功耗,200mW。</p><p> 通常DAC0832有三種不同的工作方式,主要依據(jù)對數(shù)據(jù)鎖存器和DAC鎖存器的控制方式劃分:直通方式,單緩沖方式和雙緩沖方式。</p><p> 其中直通方式CS,XFER,WR1和WR2直接接低電平,DAC0832隨時轉換輸入的數(shù)據(jù),這種方式比較簡單,占用的I/O口也比較少,但是
40、當需要I/O口做擴展的時候容易受到干擾。</p><p> 單緩沖方式者把數(shù)據(jù)鎖存器和DAC鎖存器的使能端接在一起,只需要一組信號就能同時控制兩個寄存器的。</p><p> 雙緩沖方式是將數(shù)據(jù)鎖存器和DAC鎖存器分開單獨控制,這種做法容易占用大量的I/0口。</p><p> 綜上所訴,本次設計采用了單緩沖控制方式</p><p>
41、 圖3-3-3.DAC0832的單緩沖方式連線圖 </p><p><b> 3.4鍵盤輸入模塊</b></p><p> 通常單片機外部擴展鍵盤的方式有獨立式鍵盤,矩陣鍵盤以及專門的鍵盤電路。</p><p> 獨立式鍵
42、盤就是一個I/O口擴展一個開關,這種方式程序編寫比較容易,只需要檢測單片機I/O某一時刻是否為低電平就能檢測出其的按鍵輸入情況,而且按鍵和I/O口一一對應,所以能夠輕松識別按鍵的值,缺點是由于一個I/O口只能連接一個按鍵,當按鍵數(shù)量比較多的時候,勢必占用了大量的I/O口,對系統(tǒng)的擴展造成巨大的困難。</p><p> 圖3-4-1.獨立鍵盤輸入</p><p> 矩陣鍵盤相比獨立式鍵盤
43、其擴充的量大大增加,例如常見的4*4矩陣鍵盤占用的I/O口為4+4=8個,當需要擴充為20鍵輸入時只需要4+5=9個I/O口,而采用獨立式鍵盤的時候要分別用掉16個I/O口和20個I/O口,由于單片機的I/O口數(shù)量有限,很難將大量的I/O口用于,顯然矩陣鍵盤能夠大大的減少系統(tǒng)I/O口的使用,矩陣鍵盤的缺點是編寫程序比較麻煩,需要上拉電阻系統(tǒng)的連線和元器件都增加。當采用行掃描方式讀取鍵值時,需要4個上拉電阻,提供需要的高電平,當采用線反轉
44、法式需要采用8個上拉電阻,顯然整個電路的接線都將變得更加復雜。</p><p> 圖3-4-2.矩陣鍵盤連線圖 </p><p> 專用的鍵盤電路能夠實現(xiàn)鍵盤的輸入,而且讀取數(shù)據(jù)也比較簡單,例如周立功公司的數(shù)碼管鍵盤擴展電路7289,能同時控制8位7段共陰極數(shù)碼管和64個按鍵輸入,內部自帶消抖設置,當檢測按鍵輸入時能夠給單片機發(fā)送中斷信號,并直接將對應的值發(fā)送給單片機,而不需要單片機另
45、外程序對其進行識別,數(shù)碼管顯示部分能夠通過單片機設置各位的顯示段碼,并設置其導通與否和偏移方向。但是采用專門的鍵盤電路芯片會加大設計的成本。</p><p> 由于本次設計使用的按鍵數(shù)量并不要求很多,要求的只有模式,頻率+-和幅值+-,所以采用獨立鍵盤能夠減少系統(tǒng)電路的復雜程度,也大大簡化了對編程的要求。</p><p> 圖3-4-3.7289的擴展電路</p><
46、;p><b> 3.5 顯示模塊</b></p><p> 本次設計要求對輸出波形的頻率,幅值和波形進行輸出,所以要擴展顯示模塊,常用的顯示模塊LCD有7端數(shù)碼管,LCD1602和12864等液晶顯示屏。</p><p> 為了降低設計的成本和擴展的難度,本次設計選擇使用7段數(shù)碼管。</p><p> 圖3-5-1.數(shù)碼管原理圖&
47、lt;/p><p> 常用的數(shù)碼管包括共陰極和共陽極兩種。</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 無顯示</p><p
49、> LED顯示器工作方式有兩種:靜態(tài)顯示方式和動態(tài)顯示方式。靜態(tài)顯示的特點是每個數(shù)碼管的段選必須接一個8位數(shù)據(jù)線來保持顯示的字形碼。當送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。這種方法的優(yōu)點是占用CPU時間少,顯示便于監(jiān)測和控制。缺點是硬件電路比較復雜,成本較高。</p><p> 動態(tài)顯示的特點是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動態(tài)掃描
50、顯示。所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應略小于靜態(tài)顯示電路中的。</p><p> 圖3-5-2.7段數(shù)碼管動態(tài)顯示電路圖</p><p> 3.6 I/V轉化模塊</p><p> 由于DA轉化器輸出的是
51、電流信號,所以還需要將其轉化為電壓信號,為了各種波形的雙極性輸出還需要連接雙極性轉化電路。</p><p> 圖3-6.雙極性轉化電路 </p><p> 如圖為常用的雙極性轉化電路,第一個運算放大器將電流信號轉變?yōu)殡妷盒盘?,第二個運算放大器和電阻R1,R2共同組成方向加法器,由于電流輸出接的是第一個運算放大器的反相輸出端,所以當滿足2*R2=R1且R2=R3的時候輸出電壓為</
52、p><p> Vout=Vi-(Vref/2)</p><p> 當要實現(xiàn)雙極性輸出的時候幅值的二進制碼要轉為偏移二進制碼,即將二進制碼對應的零值偏移到80H,在偏移之后,只有幅值二進制碼大于128的輸出才為正,后則為負。</p><p> 通常要得到偏移二進制碼,可以通過求原有二進制的補碼,再加上80H,并舍棄其進位,使得其成為偏移二進制碼。</p>
53、<p><b> 3.7幅值調節(jié)模塊</b></p><p> 圖3-7-1.X9511的常用接線圖</p><p> 數(shù)字電位器是可用數(shù)字信號控制電位器滑動端位置的新型器件,一般分按鈕控制和串行信號控制兩種,X9511就是XICOR公司生產(chǎn)的理想按鍵式數(shù)字電位器,它內含31個串聯(lián)電阻陣列和32個軸頭。軸頭位置由兩個按鍵控制,并且可以被存儲在一個
54、E2PROM存儲器中,以供下一次通電時重新調用,并自動恢復軸頭位置,X9511有1kΩ和10kΩ的X9511Z和X9511W兩種規(guī)格。X9511內部由計數(shù)器、存儲器、譯碼器、模擬開關和電阻陣列等電路組成,其中計數(shù)器是5位可逆計數(shù)器,可用于對控制信號PU(或PD)進行加(或減)計數(shù),計數(shù)器的計數(shù)值可以在ASE的控制下存儲非易失性存儲器中。計數(shù)器的數(shù)值經(jīng)過32選1譯碼器譯碼后可用于控制模擬開關,32個模擬開關相當于電位器的32個軸頭,電阻陣
55、列由采用集成電路工藝制作的31個串聯(lián)一起的電阻構成,電阻兩端分別連接模擬開關的一端,而模擬開關的另一端連接在一起構成數(shù)字電位器的滑動端(VW),譯碼器的輸出端可控制模擬開關的通斷,從而實現(xiàn)滑動軸頭位置的變化。</p><p> X9511的計數(shù)器電路具有以下特點:</p><p> 1.輸入端具有內部上拉電阻和消除開關抖動的抗擾電路,當輸入脈沖寬度小于40ms時,計數(shù)器將其視為干擾信號
56、而不進行計數(shù);</p><p> 2.PU和PD引腳可直接連接一個按鈕開關到地,當按鈕按下時,在PU或PD端產(chǎn)生一個負脈沖,使計數(shù)器進行加1(按PU鍵)或減1(按PD鍵)計數(shù);</p><p> 3.能將計數(shù)值存儲在非易失性存儲器E2PROM中長期保存;</p><p> 4. 能在上電時自動將E2PROM中的數(shù)據(jù)恢復到計數(shù)器中;</p><
57、;p> 5. 當計數(shù)器計數(shù)到最大值“31”時,PU按鍵失效,而計數(shù)到最小值“0”時,PD按鍵失效,從而避免循環(huán)計數(shù),保證電位器調到最大位置時不會跳到零位,或從零位跳到最大位置。</p><p> 6. 具有慢速和快速計數(shù)選擇,當輸入負脈沖寬度小于250ms時為慢速計數(shù)方式,此時按一下按鍵計數(shù)器將執(zhí)行加1(或減1)操作,當脈沖寬度大于250ms時,計數(shù)器為快速(連續(xù))計數(shù)方式,此時1秒鐘以內,電路將以25
58、0ms的速率連續(xù)計數(shù),若按鍵按下的時間大于1秒,計數(shù)器將以5ms的速率遞增或遞減,直到滑動端滑到最高或最低軸頭位置,當按鍵一釋放后,計數(shù)器立即停止計數(shù),電路返回到等待狀態(tài)。</p><p> 圖3-7-2.X9511內部結構圖</p><p> X9511的引腳配置:</p><p> /PU管腳:/PU輸入用來增大滑動端的位置。片內有上拉電阻,使/PU懸空保
59、持高電平,如果/PU接地或則邏輯低電平的時候,在經(jīng)過一個去抖時間后,將把滑動端移動到下一個鄰接的較高的抽頭位置。</p><p> /PD管腳:/PD輸入用來減小滑動端的位置,同/PU一個片內的上拉電阻使/PD腳懸空的時候保持高電平,如果/PD接地或則邏輯低電平,在經(jīng)過一個去抖時間之后,將把滑動端下移到下一個鄰接的位置。</p><p> Vh:高電壓端和低Vl電壓段等效一個機械電位器
60、的固定端最小電壓是-5V,最大電壓時+5V,但必須注意VL和VH這個專業(yè)術語之規(guī)定了有/PD和/PU輸入端現(xiàn)則的關于滑動端方向的相對位置,而不是端點上的電壓。</p><p> Vss:芯片的接地端。</p><p> Vw:滑動端,相當于機械電位器的可移動端。滑動端在電阻陣列中的位置由控制輸入端決定?;瑒佣说拇?lián)電阻值典型的為40歐姆。</p><p> /
61、ASE:自動存儲使此控制端接Vl時,AUTOSTORE被使能,接VDD時被禁止,用戶可動過將其置低電平,存儲當前的電阻值,在下次復位的時候直接使用當前的阻值。</p><p><b> VCC:電源管腳。</b></p><p> 第四章 電路軟件設計</p><p><b> 4.1系統(tǒng)總框圖</b></p&
62、gt;<p> 圖4-1.系統(tǒng)總的框圖</p><p><b> 4.2顯示子程序</b></p><p> 顯示部分采用動態(tài)輸出的方式,通過控制兩個鎖存器來控制實現(xiàn)單個I/O分時控制輸出輸出數(shù)碼管的段選(字形的選擇)和位選(位權的選擇)。如圖3-5-2顯示電路圖中P0用于輸出數(shù)據(jù),而P2^0和P2^1用來控制寄存器的通斷來控制是輸出字段信息還是位
63、權信息。</p><p> 圖4-2:顯示流程圖</p><p> 通常的數(shù)碼管動態(tài)顯示程序都要進行延時,然后靠人眼的余光實現(xiàn)數(shù)據(jù)的輸出,當延時時間太小的時候會出現(xiàn)數(shù)碼閃爍甚至亂碼,當延時時間設定的太大的時候,有可能出現(xiàn)輸出斷續(xù)的可能,通常需延時5ms,6位數(shù)據(jù)顯示就是30ms,而按鍵的消抖時間不過10ms,所以時間片輪法的話會大大影響電路的正常工作,甚至不能檢測出按鍵輸入,或則按鍵輸
64、入的時候出現(xiàn)顯示斷續(xù)的情況,所以本才設計采用了中斷顯示的方法,利用定時器進行延時,設定好定時器的初值,在固定的延時時間上溢出,然后調用顯示子程序顯示當前的輸出情況,由于定時器中斷程序 執(zhí)行一次只能顯示一位數(shù)據(jù),所以要設定一個全局變量的顯示緩沖區(qū)和全局變量的位選標志。</p><p><b> 4.3按鍵子程序</b></p><p> 本次設計由于要求對幅值和頻率
65、進行控制,所以要求用相關的按鍵輸入,前面已經(jīng)介紹了各種按鍵的優(yōu)缺點,最后選擇了獨立式鍵盤,分別為+-頻率,+-幅值,模式選擇5位,共占用5個IP口,選擇P2口的高5位作為按鍵輸入。</p><p> 圖4-3:按鍵子程序框圖</p><p> Mode:模式選擇位,用于選擇輸出的波形。</p><p> Ampl+:幅值+位,步進為0.5,系統(tǒng)的基準電壓為+-
66、2.5V。</p><p> Ampl-:幅值-位。</p><p> Freq+:頻率+位,用于調整中斷時間。</p><p> Freq-:頻率-位。</p><p> 程序中的模式選擇是通過MODE位輸入,通過設定一個模式標志位,當執(zhí)行一次模式位按鍵程序,標志位自動+1,并指向其所指定的波形。</p><p&
67、gt; 幅值選擇通過按鍵AMPL+和AMPL-輸入,當執(zhí)行了幅值子程序的時候,系統(tǒng)通過改變X9511抽頭的位置,改變其Vw的輸出電壓,通過VREF改變輸出電壓的幅值。</p><p> 頻率的選擇則是通過FREQ+和FREQ-進行選擇的,當執(zhí)行頻率調節(jié)子程序的時候,通過改變定時的初值實現(xiàn)的,當使用12M晶振時候,正弦表位256位時,理想中最大的頻率可以達到4KHz,當頻率為10Hz的時候,計數(shù)初值為390。由
68、于系統(tǒng)采用的最低的初值時間為100,所以最高只能產(chǎn)生20Hz的頻率。</p><p><b> 總結</b></p><p> 本次畢業(yè)設計我所涉及的題目是多功能函數(shù)信號發(fā)生器,由于是基于單片機的波形發(fā)生器,所以我才用了查表輸出的方法,經(jīng)過D/A轉化輸出需要的波形,并通過低通濾波是其輸出的波形能比較的平滑。</p><p> 通過兩個月的
69、畢業(yè)設計,進一步的加深了我對專業(yè)課的理解和認識,畢業(yè)設計是我在大學四年的最后一堂課,也是對我大學四年所學的知識的一個最好的評估。開始設計方案,總感覺自己還是有許多的東西弄不太清楚,于是就請教同學。有一些開始的時候由于沒有經(jīng)驗,不知如何下手,所以就去圖書管找了一些書看,盡管有許多的設經(jīng)驗。經(jīng)過自己分析各方案之后,決定用查表的方法來做。這樣可以降低一些硬件設計的難度,初次設計應切合自己的水平。 </p><p>
70、我以為這些做好了,構思也有了,寫程序應該是相對容易的。誰知道,寫起程序來,才發(fā)現(xiàn)各部分分開寫很簡單,但是和在一起的時候,各種全局變量和函數(shù)的調用并不想理想中的那樣,經(jīng)常發(fā)生沖突,在老師和同學的幫助下,我總算攻克了一個又一個難關。 </p><p> 于是在自己的努力下,程序很快就寫好了。這次是我的第一個設計器件,盡管經(jīng)歷了不少的艱辛,但給我積累了一點設計的經(jīng)驗,最后也有點小小的成就感。后面的路還很長,我還會努力
71、! </p><p><b> 參考文獻</b></p><p> [1] 賈金玲.微型計算機原理與接口技術課程設計指導.重慶:重慶大學出版,2002.2</p><p> [2] 賈金玲.微型計算機原理與接口技術.重慶:重慶大學出版社,2001.12 </p><p> [3] 周明德.微
72、型計算機系統(tǒng)原理及應用(第四版).北京:清華大學出版社, 2002 </p><p> [4] 周 林 殷狹.數(shù)據(jù)采集與分析技術.西安:西安電子科技大學出版社, 2005.7 </p><p> [5] 李相偉.微機系統(tǒng)原理與接口技術.北京:國防工業(yè)出版社,2005 </p><p> [6] 楊天怡 黃勤.微型計算機控制技術.重慶:重慶大
73、學出版社,1996 </p><p> [7] 劉迎春 葉湘檳.傳感器原理設計與應用(第四版).長沙:國防科技大學出版社,2002 </p><p> [8] 賈金玲 姚婭川.單片機原理及應用.成都:電子科技大學出版社,2004 </p><p> [9] 李群芬 肖看.單片機原理、接口及應用-嵌入式系統(tǒng)技術基礎.武漢:清
74、華大學出版社,2005</p><p> [10] 沈蘭蓀.數(shù)據(jù)采集技術.合肥:中國科技大學出版社,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;//定義了計數(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();//機械消抖</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)//松手檢測
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ù)表的間隔時間</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機的函數(shù)信號發(fā)生器設計畢業(yè)論文
- 基于51單片機函數(shù)信號發(fā)生器設計畢業(yè)論文
- 基于單片機的函數(shù)信號發(fā)生器的設計畢業(yè)論文
- 基于51單片機函數(shù)信號發(fā)生器設計1畢業(yè)論文
- 基于單片機的信號發(fā)生器設計-畢業(yè)論文
- 基于單片機的信號發(fā)生器設計【畢業(yè)論文】
- 畢業(yè)論文---單片機_函數(shù)發(fā)生器的設計
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設計
- 畢業(yè)設計--基于單片機的函數(shù)信號發(fā)生器
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設計
- 畢業(yè)設計-----基于單片機的函數(shù)信號發(fā)生器
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設計
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設計
- 單片機函數(shù)信號發(fā)生器畢業(yè)設計
- 基于51單片機函數(shù)信號發(fā)生器設計
- 單片機的函數(shù)信號發(fā)生器畢業(yè)設計
- 單片機控制多功能信號發(fā)生器畢業(yè)論文
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設計 (2)
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設計 (2)
- 基于單片機的函數(shù)信號發(fā)生器課程設計
評論
0/150
提交評論