版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 本課題主要是設(shè)計一臺波形發(fā)生器。它可產(chǎn)生正弦波、三角波和方波,波形的幅值和頻率在一定范圍內(nèi)可調(diào),幅值和頻率的具體數(shù)值可通過數(shù)碼管顯示,方便使用。本課題采用AT89C51單片機為中心控制單元進行設(shè)計,整個系統(tǒng)由單片機控制模塊、鍵盤輸入模塊、數(shù)碼顯示模塊、D/A轉(zhuǎn)換模塊和幅值頻率調(diào)整模塊組成。其中D/A轉(zhuǎn)換模塊任務(wù)是將數(shù)字量轉(zhuǎn)換
2、為模擬量,產(chǎn)生相應(yīng)波形,此次設(shè)計采用常用的DAC0832芯片來完成,幅值頻率調(diào)整模塊通過調(diào)節(jié)連接在ADC0809通道上的電位器來實現(xiàn),數(shù)碼顯示模塊使用了ZLG7289芯片來完成幅值和頻率同時顯示的任務(wù)。</p><p> 關(guān)鍵詞:單片機;波形發(fā)生器;幅值頻率可調(diào)。</p><p><b> ABSTRACT</b></p><p> Th
3、is paper is mainly to design a Waveform Generator. It can produce sine, square and triangle wave.The wave's amplitude and frequency is adjustable within a certain scope.It is easy to use that the specific numerical o
4、f the frequency and amplitude can be showed on zhe nixietube.In the design,AT89C51 is the central control unit,and the entire system includes the MCU control module, a key module, digital display module, D/A converter mo
5、dule,the amplitude and frequency adjustment module. The D/A co</p><p> Key words: SCM; waveform generator; amplitude and frequency adjustable.</p><p><b> 目 錄</b></p><
6、p><b> 第一章 概述1</b></p><p> 1.1 波形發(fā)生器的設(shè)計意義1</p><p> 1.2 波形發(fā)生器的發(fā)展和使用價值1</p><p> 第二章 主體結(jié)構(gòu)設(shè)計3</p><p> 2.1 波形發(fā)生器方案的確定3</p><p> 2.2 各模塊的
7、工作原理4</p><p> 2.2.1 鍵盤輸入模塊4</p><p> 2.2.2 數(shù)碼顯示模塊5</p><p> 2.2.3 D/A轉(zhuǎn)換模塊6</p><p> 2.3.4 幅值頻率調(diào)整模塊6</p><p> 第三章 硬件設(shè)計8</p><p> 3.1 D/A
8、電路設(shè)計8</p><p> 3.1.1 D/A轉(zhuǎn)換器的選擇8</p><p> 3.1.2 DAC0832芯片介紹8</p><p> 3.1.3 DAC的應(yīng)用10</p><p> 3.1.4 DAC與單片機的連接12</p><p> 3.1.5 LM324芯片介紹13</p>
9、<p> 3.2 A/D電路設(shè)計14</p><p> 3.2.1 A/D芯片的選擇14</p><p> 3.2.2 ADC0809引腳及功能14</p><p> 3.3.2 ADC0809結(jié)構(gòu)及轉(zhuǎn)換原理15</p><p> 3.3.3 ADC0809與單片機的接口16</p><p&
10、gt; 3.3 AT89C51單片機的介紹18</p><p> 3.3.1 AT89C51芯片介紹18</p><p> 3.3.2 AT89C51引腳功能介紹19</p><p> 3.3.3 AT89C51最小系統(tǒng)電路設(shè)計21</p><p> 3.4 鍵盤顯示電路的設(shè)計21</p><p>
11、 3.4.1 LED驅(qū)動芯片的選擇21</p><p> 3.4.2 ZLG7289芯片介紹22</p><p> 3.4.3 ZLG7289引腳圖功能說明23</p><p> 3.4.4 ZLG7289芯片SPI串行接口24</p><p> 3.4.5 ZLG7289與單片機的接口電路26</p>&l
12、t;p> 第四章 軟件設(shè)計27</p><p> 4.1程序總體概述27</p><p> 4.2各程序模塊說明29</p><p> 4.2.1 初始化模塊29</p><p> 4.2.2 A/D采樣模塊30</p><p> 4.2.3 計算并顯示頻率和幅值模塊31</p>
13、;<p> 4.2.4 波形產(chǎn)生模塊35</p><p><b> 第五章 結(jié)論38</b></p><p><b> 參考文獻39</b></p><p><b> 致謝40</b></p><p> 附錄1 主程序41</p>
14、<p> 附錄2 整機電路圖49</p><p><b> 第一章 概述</b></p><p> 1.1 波形發(fā)生器的設(shè)計意義</p><p> 隨著科學(xué)技術(shù)的飛速發(fā)展和自動化程度的不斷提高,我國儀器儀表行業(yè)也將發(fā)生新的變化并獲得新的發(fā)展。</p><p> 當(dāng)前,來自很多行業(yè)的用戶都需要應(yīng)付速
15、率越來越高的新型電路。在設(shè)計和測試這些電路的過程當(dāng)中用戶通常需要向被測設(shè)備輸入一個或者多個信號,用以模擬或者替代來自某個尚未安裝的原件的信號或者某些在測試過程中很難通過原件或傳感器生成的信號。因此,信號發(fā)生器在這里就顯得必不可少,波形發(fā)生器就是其中應(yīng)用最普遍的一種。而單片機作為一個發(fā)展比較成熟的電子產(chǎn)品,已經(jīng)應(yīng)用在各個行業(yè),它的體積小,成本低,可靠性好,易擴展,很容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng),控制功能強[1]。所以運用單片機來設(shè)計一臺波形
16、發(fā)生器,結(jié)構(gòu)簡單,使用方便,可充分滿足用戶的需要。</p><p> 1.2 波形發(fā)生器的發(fā)展和使用價值</p><p> 中國使用單片機的歷史只有短短的30年,在初始的短短五年時間里發(fā)展極為迅速。單片機應(yīng)用技術(shù)飛速發(fā)展,我們上因特網(wǎng)輸入一個“單片機”的搜索,將會看到上萬個介紹單片機的網(wǎng)站,這還不包括國外的??v觀我們現(xiàn)在生活的各個領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機上各種儀表的控制,從計算機
17、的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC 卡、電子寵物等,這些都離不開單片機。以前沒有單片機時,這些東西也能產(chǎn)做,但是只能使用復(fù)雜的模擬電路,然而這樣做出來的產(chǎn)品不僅體積大,而且成本高,并且由于長期使用,元器件不斷老化,控制的精度自然也會達不到標(biāo)準(zhǔn)。在單片機產(chǎn)生后,我們就將控制這些東西變?yōu)橹悄芑?,我們只需要在單片機外圍接一點簡單的接口電路,核心部分只是由人為的寫入程序來完成。這樣
18、產(chǎn)品的體積變小了,成本也降低了,長期使用也不會擔(dān)心精度達不到了。所以,它的魔力不僅是在現(xiàn)在,在將來將會有更多的人來接受它、使用它。據(jù)統(tǒng)計,我國的單片機年容量已達3 億片,且每年以大約20%的速度增長,但相對于世界市場我國的占有率還不到1%。特別是沿海地區(qū)的玩具廠等生產(chǎn)品多數(shù)用到單片機,并不斷地輻</p><p> 信號源作為一種基本的電子設(shè)備,無論是在教學(xué)、科研還是部隊技術(shù)保障中,都有著廣泛的使用。波形發(fā)生器就
19、是其中最普遍的一種。但隨著電子技術(shù)的發(fā)展,對波形發(fā)生器的要求也越來越高,如要求頻率穩(wěn)定性高、轉(zhuǎn)換速度快,具有調(diào)幅、調(diào)頻等功能。對于我們,即將步入社會,從事于各種工作的大學(xué)生,需要做的首先是了解其原理及內(nèi)部結(jié)構(gòu),而后才能夠更好地使用并有所創(chuàng)新。而且波形發(fā)生器是教學(xué)中必不可少的教學(xué)設(shè)備,因此對于我們來說自己動手設(shè)計一個波形發(fā)生器,了解其原理及內(nèi)部結(jié)構(gòu)是很必要的。</p><p> 因此,這種情況下,基于單片機設(shè)計一
20、臺波形發(fā)生器是可行的,成本低廉、結(jié)構(gòu)簡單、使用方便,可用于教學(xué)、實驗。</p><p> 第二章 主體結(jié)構(gòu)設(shè)計</p><p> 2.1 波形發(fā)生器方案的確定</p><p> 本設(shè)計主要是基于單片機設(shè)計一臺波形發(fā)生器。它可產(chǎn)生正弦波、三角波和方波,波形的幅值和頻率可調(diào),幅值和頻率的具體數(shù)值可通過數(shù)碼管顯示,方便使用。本課題以C51單片機為中心控制單元進行設(shè)計
21、,整個系統(tǒng)由單片機控制模塊、鍵盤輸入模塊、數(shù)碼顯示模塊、D/A轉(zhuǎn)換模塊、幅值頻率調(diào)整模塊5部分組成。設(shè)計框圖如圖2.1所示。</p><p> 圖2.1 系統(tǒng)設(shè)計框圖</p><p> 通過按鍵可任意選擇所需的波形(正弦波、三角波、方波),所選波形種類可通過LED小燈清楚看到,調(diào)節(jié)幅值和頻率對應(yīng)的電位器可得到想要的幅值和頻率,選好后,系統(tǒng)送相應(yīng)的信息給單片機,經(jīng)單片機處理送至D/A
22、轉(zhuǎn)換模塊,經(jīng)DAC0832轉(zhuǎn)換可得到所需的波形,同時單片機送相應(yīng)信息至數(shù)碼顯示模塊,經(jīng)7289處理可顯示出幅值和頻率對應(yīng)的數(shù)值。</p><p> 選擇波形的按鍵與單片機的中斷接口相連,通過中斷方法來控制波形的選擇??紤]到功耗及整機的精度和價格等問題,系統(tǒng)中采用了常用的AT89C51單片機作為中心控制單元,并有按鍵復(fù)位功能。波形的輸出通過D/A轉(zhuǎn)換器實現(xiàn),采用了DAC0832來完成,它的分辨率為8位。頻率和幅值
23、的調(diào)節(jié)可通過電位器改變輸入電壓來實現(xiàn),需要有模擬量輸入,ADC0809有8路模擬輸入,8位數(shù)字量輸出,可滿足。顯示模塊采用ZLG7289芯片,該芯片是串行通訊,可節(jié)省I/O口,6個數(shù)碼管可將幅值和頻率同時顯示。</p><p> 2.2 各模塊的工作原理</p><p> 整個系統(tǒng)由單片機控制模塊、鍵盤輸入模塊、數(shù)碼顯示模塊、D/A轉(zhuǎn)換模塊、幅值頻率調(diào)整模塊5部分組成。</p&g
24、t;<p> 2.2.1 鍵盤輸入模塊</p><p> 鍵盤輸入模塊可控制波形種類的選擇,電路非常簡單(如圖2.2),一個按鍵直接接在單片機的INT1中斷接口上,通過中斷來控制波形的選擇[2]。</p><p> 圖2.2 按鈕與單片機的接口</p><p> 根據(jù)硬件設(shè)計,系統(tǒng)用按鈕切換波形,可考慮采用查詢或中斷方式進行,這兩種方式比較起來
25、后者效率更高。若采用查詢方式檢測按鈕,則系統(tǒng)需要花費大量的時間去定期檢測P3.3口管腳點位,這樣就增加了軟件開銷,降低了效率,因而采用中斷方式編程比較理想。其編程思想是安排一個存儲單元存放按鈕次數(shù),初值設(shè)為0,對應(yīng)于某種波形,每中斷一次數(shù)據(jù)加1,以對應(yīng)另一種波形。因此中斷程序的任務(wù)僅僅是通過改變按鈕次數(shù)來存放單元的數(shù)據(jù)而已,波形切換在主程序中進行。具體的按鈕次數(shù)和對應(yīng)波形如下:</p><p> 表2.1 按鈕
26、次數(shù)對應(yīng)的波形</p><p> 2.2.2 數(shù)碼顯示模塊</p><p> 這個模塊主要作用是將波形幅值和頻率在數(shù)碼管上顯示。</p><p> 用于驅(qū)動數(shù)碼顯示的芯片是ZLG7289,它與單片機的接口電路如圖2.3所示。</p><p> 圖2.3 ZLG7289與單片機接口電路</p><p> ZLG
27、7289的片選端與單片機的P1.0相連接,當(dāng)P1.0口輸入一個低電平時,它被選中,芯片開始工作。CLK為同步時鐘輸入端,向芯片發(fā)送數(shù)據(jù)及讀取鍵盤數(shù)據(jù)時,此引腳電平上升沿表示數(shù)據(jù)有效,因此與CLK連接的P1.1在發(fā)送數(shù)據(jù)和讀取數(shù)據(jù)時置為‘1’,在發(fā)送和讀取數(shù)據(jù)結(jié)束時置為‘0’。DIO端為串行數(shù)據(jù)輸入輸出端,當(dāng)芯片接受指令時,此引腳為輸入端;當(dāng)讀取鍵盤數(shù)據(jù)時,此引腳在‘讀’指令最后一個時鐘的下降沿變?yōu)檩敵龆?。KEY為按鍵有效輸出端,平時為高
28、電平,當(dāng)檢測到有效按鍵時,此引腳變?yōu)榈碗娖健?lt;/p><p> 本次設(shè)計中ZLG7289驅(qū)動了6個數(shù)碼管,前2個用于顯示波形的幅值,0.0至5.0,后4位用于顯示波形的頻率。</p><p> ZLG7289采用串行方式與微處理器通訊,串行數(shù)據(jù)從DATA引腳送入芯片,并由CLK端同步。當(dāng)片選信號變?yōu)榈碗娖胶?,DATA引腳上的數(shù)據(jù)在CLK引腳的上升沿被寫入ZLG7289的緩沖寄存器。&l
29、t;/p><p> 上電后,所有的顯示均為空。所有顯示位的顯示屬性均為“顯示”及“不閃爍”。當(dāng)有鍵按下時,KEY引腳輸出低電平,此時如果接收到“讀鍵盤”指令,ZLG7289將輸出所按下鍵的代碼。如果在沒有按鍵的情況下收到“讀鍵盤”指令ZLG7289將輸出0FFH(255)。</p><p> 注意:如果有2個鍵同時按下,ZLG7289將只能給出其中一個鍵的代碼,因此ZLG7289不適于應(yīng)用
30、在需要2個或2個以上鍵同時按下的場合。</p><p> 2.2.3 D/A轉(zhuǎn)換模塊</p><p> D/A轉(zhuǎn)換模塊主要用于將從C51送來的數(shù)字量轉(zhuǎn)換為模擬電壓,產(chǎn)生波形。這里我選用了DAC0832芯片,該芯片具有兩個輸入數(shù)據(jù)寄存器,是8位的DAC,能直接與MCS-51單片機相連接。DAC0832與單片機的接口電路在第三章第一節(jié)中會詳細(xì)介紹。</p><p>
31、 DAC0832的WR1和Xfer都接地,CS與單片機的P2.6相連,所以地址為8000H,當(dāng)P2.6給低電平時,0832開始工作,單片機將預(yù)先設(shè)定好的數(shù)字量通過P0口傳給DAC0832。DAC0832經(jīng)內(nèi)部轉(zhuǎn)換,將數(shù)字量轉(zhuǎn)變?yōu)殡娏餍盘枺⒁圆罘址绞剿徒o運算放大器LM324,后者將其變?yōu)殡妷盒盘栞敵觥?lt;/p><p> 2.3.4 幅值頻率調(diào)整模塊</p><p> 幅值和頻率的調(diào)整
32、是通過電位器來調(diào)節(jié)的,電位器與ADC0809相連,將模擬電壓轉(zhuǎn)化為數(shù)字量,運用在程序中,以達到調(diào)整的目的。</p><p><b> 工作原理圖如下:</b></p><p> 圖2.4 幅值頻率調(diào)整模塊的工作原理框圖</p><p> 為了方便敘述,調(diào)節(jié)頻率的電位器定為電位器1,調(diào)節(jié)幅值的電位器定為電位器2,電位器1接在ADC0809的
33、IN0通道上,電位器2接在ADC0809的IN1通道上。</p><p> 當(dāng)程序執(zhí)行MOV @DPTR,#7000H時,產(chǎn)生一個啟動信號給START引腳送入脈沖,開始對通道IN0中的數(shù)據(jù)進行轉(zhuǎn)換。電位器1連接在IN0通道,所以它的模擬量電壓送入ADC0809開始轉(zhuǎn)換。轉(zhuǎn)換結(jié)束時,會發(fā)出一個結(jié)束信號,置EOC腳為高電平,EOC引腳與單片機的INT0中斷接口相連,用于中斷。當(dāng)讀允許信號到,OE端有高電平,則可以讀
34、出轉(zhuǎn)換數(shù)字量。利用MOVX A,#DPTR把該通道轉(zhuǎn)換結(jié)果讀到A累加器中。該數(shù)字量作為2次D/A轉(zhuǎn)換之間的延時基值去延時,這樣輸出波形的頻率就和模擬電壓聯(lián)系起來,只要調(diào)整電位器1的旋鈕就可以改變輸入電壓模擬量,就可以改變波形的頻率。</p><p> 幅值的調(diào)節(jié)是通過電位器2調(diào)節(jié)DAC0832的Vref端的輸入電壓基值來改變的。調(diào)節(jié)電位器2可使的模擬量電壓在0V至5V之間變換,此時,DAC0832輸入端的數(shù)字量
35、00H到FFH轉(zhuǎn)換后所對應(yīng)的模擬量就會在0V到5V之間變化,這樣就達到了調(diào)節(jié)幅值的目的。通過調(diào)節(jié)電位器2,波形的幅值就會在0V到5V之間變化,用戶可選擇需要的幅值。同時,調(diào)節(jié)電位器2得到的模擬電壓會送到ADC0809的IN1通道。當(dāng)程序執(zhí)行MOV @DPTR,#7020H時,IN1通道的模擬量就送入ADC0809開始轉(zhuǎn)換,通過轉(zhuǎn)換得到的數(shù)字量送入單片機用于顯示。</p><p><b> 第三章 硬件
36、設(shè)計</b></p><p> 整個硬件設(shè)計可分為:D/A電路設(shè)計、A/D電路設(shè)計、單片機電路設(shè)計及鍵盤顯示電路的設(shè)計。本章將詳細(xì)講解這些電路的構(gòu)成。</p><p> 3.1 D/A電路設(shè)計</p><p> D/A電路是把單片機送來的數(shù)字量轉(zhuǎn)換為模擬電壓,用來生成波形的電路。</p><p> 3.1.1 D/A轉(zhuǎn)換器
37、的選擇</p><p> 由于D/A轉(zhuǎn)換器與微機接口時,微機是靠指令輸出數(shù)字量供數(shù)模轉(zhuǎn)換器(DAC)轉(zhuǎn)換之用,而指令送出的數(shù)據(jù)在數(shù)據(jù)總線上的時間是短暫的,所以DAC和微機間,需有數(shù)據(jù)寄存器來保持微型計算機輸出的數(shù)據(jù),供DAC轉(zhuǎn)換用。目前生產(chǎn)的DAC芯片可分為兩類,一類內(nèi)部設(shè)置有數(shù)據(jù)寄存器,不需外加電路就可直接與微機接口。另一類內(nèi)部沒有數(shù)據(jù)寄存器,輸出信號隨數(shù)據(jù)輸入線的狀態(tài)變化而變化,不能直接與微機接口,須通過并
38、行接口與微機接口。DAC0832芯片內(nèi)部有輸入寄存器和DAC寄存器,所以它不需要外加其他電路便可以與微機的數(shù)據(jù)總線直接相連。</p><p> 3.1.2 DAC0832芯片介紹</p><p> (1)DAC0832的特性</p><p> 美國國家半導(dǎo)體公司的DAC0832芯片是具有兩個輸入數(shù)據(jù)寄存器的8位DAC,它能直接與MCS-51單片機相連接,其主要
39、特性如下:</p><p><b> ① 分辨率8位;</b></p><p> ② 電流輸出,穩(wěn)定時間為1us;</p><p> ?、?可雙緩沖、單緩沖或直接數(shù)字輸入;</p><p> ?、?只需在滿量程下調(diào)整其線性度;</p><p> ⑤ 單一電源供電(+5~+15V);</
40、p><p> ?、?低功耗,20mW[3]。</p><p> (2)DAC0832的引腳及邏輯結(jié)構(gòu)</p><p> DAC0832的引腳如圖3.1所示。</p><p> 圖3.1 DAC0832引腳圖</p><p><b> 各引腳功能如下:</b></p><p&
41、gt; DI0~DI7為8位數(shù)字信號輸入端,與CPU數(shù)據(jù)總線相連,用于輸入CPU送來的待轉(zhuǎn)換數(shù)字量,DI7為最高位。</p><p> CS:片選端,當(dāng)CS為低電平時,本芯片被選中工作。</p><p> ILE:數(shù)據(jù)鎖存允許控制端,高電平有效。</p><p> WR1:第一級輸入寄存器寫選通控制,低電平有效,當(dāng)CS=0、ILE=1、WR1=0時,數(shù)據(jù)信號
42、被鎖存到第一級8位輸入寄存器中。</p><p> XFER:數(shù)據(jù)傳送控制,低電平有效。</p><p> WR2:DAC寄存器寫選通控制端,低電平有效,當(dāng)XFER=0、WR1=0時,輸入寄存器狀態(tài)傳入8位DAC寄存器中。</p><p> Iout1:D/A轉(zhuǎn)換器電流輸出1端,輸入數(shù)字量全“1”時,Iout1最大,輸入數(shù)字量全“0”時,Iout1最小。<
43、;/p><p> Iout2:電流輸出2端,Iout2+Iout1=常熟。</p><p> Rfb:外部反饋信號輸入端,內(nèi)部已有反饋電阻,根據(jù)需要也可外接反饋電阻。</p><p> Vref:參考電壓(也稱基準(zhǔn)電壓)輸入端,電壓范圍(-10~+10)V之間。</p><p> DGND:數(shù)字信號接地端。</p><
44、p> AGND:模擬信號接地端,最好與參考電壓共地。</p><p> DAC0832的邏輯結(jié)構(gòu)如圖3.2所示:</p><p> 圖3.2 DAC0832原理框圖</p><p> DAC0832內(nèi)部由三部分電路組成,如圖3.2所示?!?位輸入寄存器”用于存放CPU送來的數(shù)字量,使輸入數(shù)字量得到緩沖和鎖存,由LE1加以控制?!?位DAC寄存器”用于存
45、放待轉(zhuǎn)換數(shù)字量,由LE2控制,T型電阻網(wǎng)絡(luò)能輸出和數(shù)字量成正比的模擬電流。因此,DAC0832通常需要外接運算放大器才能得到模擬輸出電壓。</p><p> 3.1.3 DAC的應(yīng)用</p><p> 按照輸入數(shù)字量位數(shù),DAC??煞譃?位、10位和12位三種。MCS-51與它的接口常和DAC的應(yīng)用有關(guān),因此這里線討論DAC的應(yīng)用問題,然后介紹它與單片機的接口。</p>
46、<p> DAC用途很廣,現(xiàn)以DAC0832為例介紹它在如下三方面的應(yīng)用[4]。</p><p> ?。?)DAC用做單極性電壓輸出</p><p> 在需要單極性模擬電壓環(huán)境下,我們采用圖3.5所示接線。由于DAC0832是8位的D/A轉(zhuǎn)換器,故可得輸出電壓對輸入數(shù)字量的關(guān)系為</p><p> Vout=-(B*Vref)/255</p&g
47、t;<p> 式中,B為輸入的數(shù)字量,范圍是0~255;Vref/255為一常數(shù)。</p><p> 很顯然,Vout和B成正比的關(guān)系。當(dāng)輸入數(shù)字量B為0時,Vout也為0,輸入數(shù)字量為255時,Vout為最大值,輸出電壓為單極性。</p><p> (2)DAC用作雙極性電壓輸出</p><p> 在需要用到雙極性電壓的場合下,可以采用圖3.
48、3所示接線。</p><p> 圖3.3 雙極性DAC的接法</p><p> 圖中,DAC0832的數(shù)字量由CPU送來,OA1和OA2均為運算放大器,Vout通過2R電阻反饋到運算放大器OA2輸入端,其他如圖所示。G電為虛擬地,故由基爾霍夫定律列出方程組,并解得:</p><p> Vout=(B-128)*Vref/128</p><p
49、> 由上式可知,在選用+Vref時,若輸入數(shù)字量最高位b7為“1”,則輸出模擬電壓Vout為正;若輸入數(shù)字量最高位為“0”,輸出模擬電壓Vout為負(fù)。選用-Vref時,Vout輸出值正好和選用+Vref時極性相反。</p><p> (3)DAC用作程控放大器</p><p> DAC還可以用作程控放大器,其電壓放大倍數(shù)可由CPU通過程序設(shè)定。圖3.4為用作電壓放大器的DAC接
50、線。</p><p> 由圖可見,需要放大的電壓Vin和反饋輸入端Rfb相接,運算放大器輸出Vout還作為DAC的基準(zhǔn)電壓Vref,數(shù)字量由CPU送來,其余如圖所示。DAC0832內(nèi)部Iout一邊和T型電阻網(wǎng)絡(luò)相連,另一邊又通過反饋電阻Rfb和Vin相通。</p><p> 由圖可得出,當(dāng)選R=Rfb時,</p><p> Vout=-(256/B)*Vin&
51、lt;/p><p> 式中256/B看做放大倍數(shù)。但數(shù)字量B不得為“0”,否則放大倍數(shù)為無限大,放大器因此而處于飽和狀態(tài)。</p><p> 圖3.4 DAC0832用作程控放大器</p><p> 3.1.4 DAC與單片機的連接</p><p> MCS-51與DAC0832接口時,可以有三種連接方式:直通方式、單緩沖方式和雙緩沖方式
52、。本設(shè)計中采用的單緩沖方式[5]。</p><p> 圖3.5 單緩沖方式下的DAC0832</p><p> 單緩沖方式是指DAC0832內(nèi)部的兩個數(shù)據(jù)緩沖器有一個處于直通方式,另一個處于受MCS-51控制的鎖存方式。在實際應(yīng)用中,如果只有一路模擬量輸出,或雖是多路模擬量輸出但并不要求多路輸出同步的情況下,就可采用單緩沖方式。</p><p> 單緩沖方式的
53、接口電路如圖3.5所示.</p><p> 由圖可見,WR2和XFER接地,故DAC0832的“8位DAC寄存器”(見圖3.2)工作于直通方式。8位輸入寄存器受CS和WR1端信號控制,而且CS由P2.6端信號控制。因此,單片機執(zhí)行以下兩條指令時,就可以使DAC0832工作。 </p><p> MOV DPTR,#8000H</p><p> MOVX
54、@DPTR,A</p><p> 3.1.5 LM324芯片介紹</p><p> LM324是四運放集成電路,它采用14腳雙列直插塑料封裝。它的內(nèi)部包含四組形式完全相同的運算放大器,除電源共用外,四組運放相互獨立。</p><p> 每一組運算放大器可用圖3.6所示的符號來表示,它有5個引出腳,其中“+”、“-”為兩個信號輸入端,“V+”、“V-”為正、負(fù)電
55、源端,“Vo”為輸出端。兩個信號輸入端中,Vi-(-)為反相輸入端,表示運放輸出端Vo 的信號與該輸入端的相位相反;Vi+(+)為同相輸入端,表示運放輸出端Vo 的信號與該輸入端的相位相同。LM324 的引腳排列見圖3.7。</p><p> 圖3.6 運算放大器符號 圖3.7LM324引腳圖</p><p> 由于LM324四運放電路具有電源電壓范圍寬,靜
56、態(tài)功耗小,可單電源使用,價格低廉等優(yōu)點,因此被廣泛應(yīng)用在各種電路中。</p><p> 本設(shè)計中,DAC0832轉(zhuǎn)換得到的模擬量,經(jīng)過LM324后輸出。電路圖如圖3.8所示,經(jīng)DAC0832轉(zhuǎn)換得到的電流信號以差分方式送給運算放大器LM324,LM324將此信號變?yōu)殡妷盒盘栞敵觯涂傻玫讲ㄐ蝃6]。</p><p> 圖3.8 DAC0832與LM324的接口電路</p>
57、<p> 3.2 A/D電路設(shè)計</p><p> 3.2.1 A/D芯片的選擇</p><p> 本次設(shè)計中,頻率和幅值的調(diào)節(jié)都是通過電位器改變輸入電壓來實現(xiàn)的,所以需要有兩個模擬量輸入。所以就要用到A/D轉(zhuǎn)換芯片。各型號的ADC芯片都具有如下的信號線:數(shù)據(jù)輸出線D7~D0(8位ADC),啟動A/D轉(zhuǎn)換信號SC與轉(zhuǎn)換結(jié)束信號EOC。首先單片機啟動A/D轉(zhuǎn)換;轉(zhuǎn)換結(jié)束后,
58、ADC送出EOC信號通知單片機;單片機用輸入指令從ADC的數(shù)據(jù)輸出線D7~D0讀取轉(zhuǎn)換數(shù)據(jù)。ADC與單片機的接口就是要正確處理上述三種信號與單片機的連接問題。ADC的數(shù)據(jù)輸出端的連接要視其內(nèi)部是鎖存器還是三態(tài)輸出鎖存器。若是后者,則可直接與單片機的數(shù)據(jù)總線相連;若是前者,則應(yīng)將其數(shù)據(jù)輸出端通過三態(tài)緩沖器與數(shù)據(jù)總線相連。</p><p> ADC0809芯片有8路模擬信號輸入端,片內(nèi)由三臺輸出鎖存器,可直接與單片
59、機數(shù)據(jù)總線相連,滿足要求,所以采用ADC0809芯片來實現(xiàn)A/D轉(zhuǎn)換。下面將對ADC0809芯片機器接口電路作詳細(xì)的介紹。</p><p> 3.2.2 ADC0809引腳及功能</p><p> ADC0809是一種主次逼近式8路模擬輸入、8位數(shù)字量輸出的A/D轉(zhuǎn)換器。其引腳如圖3.9所示[7]。</p><p> 由引腳圖可見,ADC0809共有28引腳,
60、采用雙列直插式封裝。其主要引腳功能如下:</p><p> ① IN0~IN7是8路模擬信號輸入端。</p><p> ② D0~D7是8位數(shù)字量輸出端。</p><p> ?、?A、B、C與ALE控制8路模擬通道的切換,A、B、C分別與三根地址線或數(shù)據(jù)線相連,三者編碼對應(yīng)8個通道地址口。C、B、A=000~111分別對應(yīng)IN0~IN7通道地址。</p&g
61、t;<p> 強調(diào)說明一點:ADC0809雖然有8路模擬通道可以同時輸入8路模擬信號,但每個瞬間只能轉(zhuǎn)換一路,各路之間的切換由軟件變換通道地址實現(xiàn)。</p><p> ?、?OE、START、CLK為控制信號端,OE為輸出允許端,START為啟動信號輸入端,CLK為時鐘信號輸入端。</p><p> ?、?Vr(+)和Vr(-)為參考電壓輸入端。</p>&l
62、t;p> 圖3.9 ADC0809引腳圖</p><p> 3.3.2 ADC0809結(jié)構(gòu)及轉(zhuǎn)換原理</p><p> ADC0809的結(jié)構(gòu)框圖如圖3.10所示。0809是采用主次逼近的方法完成A/D轉(zhuǎn)換的。由單一的+5V電源供電;片內(nèi)帶有鎖存功能的8路選1的模擬開關(guān),由C、B、A的編碼來決定所選的通道。0809完成一次轉(zhuǎn)換需100us左右。輸出具有TTL三態(tài)鎖存緩沖器,可直接
63、連到MCS-51的數(shù)據(jù)總線上。通過適當(dāng)?shù)耐饨与娐罚?809可對0~5V的模擬信號進行轉(zhuǎn)換。</p><p> ADC0809工作過程如下:首先用指令選擇ADC0809的一個模擬輸入通道,當(dāng)執(zhí)行MOVX @DPTR,A時,產(chǎn)生一個啟動信號給START引腳送入脈沖,開始對選中通道轉(zhuǎn)換。當(dāng)轉(zhuǎn)換結(jié)束后發(fā)出結(jié)束信號,置EOC腳為高電平,該信號可作為中斷申請信號;當(dāng)讀允許信號到,OE端有高電平,則可以讀出轉(zhuǎn)換的數(shù)字量。利用
64、MOVX A,@DPTR把該通道轉(zhuǎn)換結(jié)果讀到A累加器中。</p><p> 圖3.10 ADC0809結(jié)構(gòu)圖</p><p> 3.3.3 ADC0809與單片機的接口</p><p> 在討論MCS051與0809的接口設(shè)計之前,先來討論單片機如何控制ADC的問題[8]。</p><p> 用單片機控制ADC時,多數(shù)采用查詢和中斷控
65、制兩種方法。查詢法是在單片機把啟動命令送到ADC之后,執(zhí)行別的程序,同時對ADC的狀態(tài)進行查詢,以檢查ADC變換是否已經(jīng)結(jié)束,如查詢到變換已結(jié)束,則讀入轉(zhuǎn)換完畢的數(shù)據(jù)。</p><p> 中斷控制法是在啟動信號送到ADC之后,單片機執(zhí)行別的程序。當(dāng)ADC變換結(jié)束并向單片機發(fā)出中斷請求信號時,單片機相應(yīng)此中斷請求,進入中斷服務(wù)子程序,讀入轉(zhuǎn)換數(shù)據(jù),并進行必要的數(shù)據(jù)處理,然后返回到原程序。這種方法單片機無需進行轉(zhuǎn)換
66、時間的管理,CPU效率高,所以特別適合于變換時間較長的ADC。</p><p> 如果對轉(zhuǎn)換速度要求高,采用上述兩種ADC控制方式往往不能滿足要求,可采用DMA(直接存儲器存?。┑姆椒?,這時可在ADC與單片機之間插入一個DMA接口(例如Intel公司的8237DMA控制器)。傳輸已開始,AD轉(zhuǎn)換的數(shù)據(jù)就可以從輸出寄存器經(jīng)過DMA中的數(shù)據(jù)寄存器直接傳輸?shù)街鞔鎯ζ?,因而不必受程序的限制?lt;/p>&l
67、t;p> 在ADC0809與單片機的接口電路中,中斷方式與軟件延時方式的不同之處在于:中斷方式是將ADC0809的EOC腳經(jīng)過與非門接在AT89C51的INT0腳,而軟件延時方式不需要經(jīng)過,直接接在INT0腳,只需查詢P3.2腳是否為高電平,當(dāng)為高電平時,表示轉(zhuǎn)換結(jié)束。本設(shè)計中,在AD轉(zhuǎn)換時,不需要執(zhí)行其他的程序,所以可用軟件延時的方式連接電路。</p><p><b> 軟件延時方式:<
68、;/b></p><p> ADC0809與單片機的接口如圖3.11所示。</p><p> 圖3.11 ADC0809與單片機的接口電路</p><p> 由于ADC0809片內(nèi)無時鐘,可利用AT89C51提供的地址鎖存允許信號ALE經(jīng)過74LS74芯片四分頻后獲得,ALE腳的頻率是AT89C51單片機時鐘頻率的1、6(但要注意的是,每當(dāng)訪問外部數(shù)據(jù)存
69、儲器時,將少一個ALE脈沖)。單片機的時鐘頻率采用的是12MHz,則ALE腳的輸出頻率為2MHz,再經(jīng)過74LS74四分頻后為500kHz,恰好符合ADC0809對時鐘頻率的要求。由于ADC0809具有輸出三態(tài)鎖存器,其8位地址譯碼引腳A、B、C分別與P0.0、P0.1和P0.2相連,,以選通IN0~IN7中的一個通道。將P2.7(地址總線A15)作為片選信號,在啟動A/D轉(zhuǎn)換時,由單片機的寫信號和P2.7控制ADC的地址鎖存和轉(zhuǎn)換啟動
70、,由于ALE和START連在一起,因此ADC0809在鎖存通道地址的同時,啟動并進行轉(zhuǎn)換。在讀取轉(zhuǎn)換結(jié)果時,用低電平的讀信號和P2.7腳經(jīng)一級或非門后,產(chǎn)生正脈沖作為OE信號,用以打開三態(tài)輸出鎖存器。</p><p> 由以上分析可知:在軟件編寫時,應(yīng)令P2.7=A15=0;P0.0、P0.1、P0.2給出被選擇的模擬通道的地址;執(zhí)行一條輸出指令,啟動A/D轉(zhuǎn)換;執(zhí)行一條輸入指令,讀取轉(zhuǎn)換結(jié)果。</p&g
71、t;<p> 3.3 AT89C51單片機的介紹</p><p> 3.3.1 AT89C51芯片介紹</p><p> CPU為本設(shè)計的核心部分,它是進行數(shù)據(jù)運算和處理的核心??紤]到功耗及整機的精度和價格等問題我采用MCS-51系列的單片機, MCS-51系列單片機還有集成度高,系統(tǒng)結(jié)構(gòu)簡單,系統(tǒng)擴展方便,可靠性高,處理功能強、速度高等特點。</p>&
72、lt;p> 本設(shè)計中采用的是AT89C51芯片。AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機,片內(nèi)含有4k bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和128bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,功能強大的AT89C51單片機可提供許多高性價比的應(yīng)用
73、場合,可靈活應(yīng)用于各種控制領(lǐng)域。</p><p> 功能特性概述[9]:</p><p> AT89C51提供以下標(biāo)準(zhǔn)功能:4k字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM,32各I/O口線,兩個16位定時/計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時,AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電模式??臻e方式停止CPU的工作
74、,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其他所以部件工作知道下一個硬件復(fù)位。</p><p> 3.3.2 AT89C51引腳功能介紹</p><p><b> Vcc:電源電壓</b></p><p><b> GND:地</b></p&g
75、t;<p> P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。</p><p> 在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。</p><p> 在Flash編程時,P0口接收指令字
76、節(jié),而在程序校驗時,輸出指令字節(jié),檢驗時,需要外接上拉電阻。</p><p> P1口:P1是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作為輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。</p><p> Flash編程和程序校驗期
77、間,P1接收低8位地址。</p><p> P2口:P2是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。</p><p> 在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MO
78、VX @DPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX @RI指令)時,P2口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中R2寄存器的內(nèi)容),在整個訪問期間不改變。</p><p> Flash編程或校驗時,P2亦接收高位地址和其他控制信號。</p><p> P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(吸
79、收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并作為輸入端口。作輸入端時,被外部拉低的P3口將用上拉電阻輸出電流。</p><p> P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表所示:</p><p> 表3.1 P3口第二功能</p><p> P3口還接收一些用于Flash閃速存儲器編程和暢銷校驗
80、的控制信號。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。</p><p> ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址所存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存
81、儲器時將跳過一個ALE脈沖。</p><p> PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,這兩次有效的PSEN信號不出現(xiàn)。</p><p> EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址位0000H—FFFFH)
82、,EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。</p><p> 如EA端位高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。</p><p> XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。</p><p> XTAL2:振蕩器反相放大器的輸出端[10]。</p><p&
83、gt; 3.3.3 AT89C51最小系統(tǒng)電路設(shè)計</p><p> 最小應(yīng)用系統(tǒng),是指能維持單片機運行的最簡單配置的系統(tǒng),這種系統(tǒng)成本低廉、結(jié)構(gòu)簡單,常用來構(gòu)成簡單的控制系統(tǒng)。單片機應(yīng)該是一個最小應(yīng)用系統(tǒng),但由于應(yīng)用系統(tǒng)中有一些功能器件無法集成到芯片內(nèi)部,如晶振、復(fù)位電路等,需要在片外加接相應(yīng)的電路。對于片內(nèi)無程序存儲器的單片機,還應(yīng)該配置片外程序存儲器。</p><p> AT8
84、9C51是片內(nèi)有程序存儲器的單片機,構(gòu)成最小應(yīng)用系統(tǒng)時只要將單片機接上外部的晶振電路和復(fù)位電路即可[11],如圖3.12所示。</p><p> 圖3.12 AT89C51最小系統(tǒng)</p><p> 這樣構(gòu)成的最小系統(tǒng)簡單可靠,其特點是沒有外部擴展,有可供用戶使用的大量I/O線。</p><p> 3.4 鍵盤顯示電路的設(shè)計</p><p&
85、gt; 3.4.1 LED驅(qū)動芯片的選擇</p><p> 現(xiàn)在隨著芯片集成技術(shù)的發(fā)展,使得許多儀器越來越微型化,功能也更強大,對人機交互的要求也越來越高。其中應(yīng)用非常廣泛的一種方法就是LED的對外顯示。本設(shè)計中我選用了ZLG7289芯片來完成LED顯示幅值和頻率的任務(wù)。它功能強大,編程簡單,控顯可靠,可廣泛用于工業(yè)控制器等方面的數(shù)碼顯示驅(qū)動,比較成熟的應(yīng)用即為與單片機的結(jié)合。</p><
86、p> ZLG7289是廣州周立功單片機發(fā)展有限公司自行設(shè)計的,具有SPI串行接口功能的可同時驅(qū)動8位共陰式數(shù)碼管(或64只獨立LED)的智能顯示驅(qū)動芯片,該芯片同時還可連接多達64鍵的鍵盤矩陣,單片即可完成LED顯示、鍵盤接口的全部功能[12]。ZLG7289內(nèi)部含有顯示譯碼器,可直接接受BCD碼或16進制碼,并同時具有2種譯碼方式。此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。利用片選信號,多片ZLG7289還
87、可以并接在一起使用,能夠方便地實現(xiàn)多于8位的顯示或多于64只按鍵的應(yīng)用。ZLG7289可廣泛地應(yīng)用于儀器儀表,工業(yè)控制器,條形顯示器,控制面板等領(lǐng)域。</p><p> 在實際使用的過程中,單片機的串行發(fā)送/接收口常常被占用掉,去實現(xiàn)其他的數(shù)據(jù)交換,ZLG7289采用SPI串行總線與微控制器接口,僅占用少數(shù)幾根I/O口線,可為其他芯片提供方便。</p><p> 3.4.2 ZLG72
88、89芯片介紹</p><p> ZLG7289芯片的引腳圖如圖3.13</p><p> 圖3.13 ZLG7289引腳圖</p><p> ZLG7289的主要特性</p><p> 很寬的工作電壓范圍:+2.7~6V;</p><p> 直接驅(qū)動8位共陰式數(shù)碼管(1英寸以下)或64只獨立的LED;<
89、/p><p> 能夠管理多達64只按鍵,自動消除抖動;</p><p> 段電流可達15mA以上,字電流可達100mA;</p><p> 利用功率電路可以方便地驅(qū)動1英寸以上的大型數(shù)碼管;</p><p> 具有左移、右移、閃爍、消隱、段點亮等強大功能;</p><p> 要顯示的數(shù)據(jù)提供有兩種不同的譯碼方式(
90、也可以選擇不譯碼);</p><p> 不接數(shù)碼管而僅使用鍵盤功能時,工作電流可降至3mA;</p><p> 與微控制器之間采用SPI串行總線接口,操作方便,占用I/O資源少;</p><p> 工作溫度范圍:-40~+85℃;</p><p> 封裝:SOP-28,DIP-28。</p><p> 3.4
91、.3 ZLG7289引腳圖功能說明</p><p> 表3.2 ZLG7289引腳功能</p><p> 3.4.4 ZLG7289芯片SPI串行接口</p><p><b> SPI串行接口信號</b></p><p> 表3.3 ZLG7289的SPI串行接口信號</p><p>
92、 ZLG7289與微控制器的接口采用3線制SPI串行總線,由CS、CLK和DIO這3根信號線組成。CS和CLK是輸入信號,由微控制器提供。DIO信號是雙向的,必須接到微控制器上具有雙向功能的I/O 。SPI 信號線的具體意義請參見表3.3。</p><p> 操作SPI總線的時序圖請參見圖3.14、圖3.15 和圖3.16。其中圖3.16 是讀按鍵值的時序圖,只有當(dāng)INT 引腳出現(xiàn)下跳沿時才允許去讀取按鍵值,否
93、則將得不到有意義的數(shù)據(jù)。</p><p><b> SPI總線時序圖</b></p><p> 圖3.14 純指令時序圖</p><p> 圖3.15 帶數(shù)據(jù)指令時序圖(命令字在前,輸入數(shù)據(jù)在后)</p><p> 圖3.16 讀鍵盤指令時序圖(命令字在前,鍵值在后)</p><p>
94、時序圖中各項延遲時間</p><p> 表中各項參數(shù)的測試條件為:Vcc=5.0V,F(xiàn)osc=16MHz。</p><p> 表3.4 時序圖中的各項延遲時間</p><p> 3.4.5 ZLG7289與單片機的接口電路</p><p> ZLG7289和單片機通過P1口的4個端口相連接[13]。如下圖:</p>&l
95、t;p> 圖3.17 ZLG7289與單片機接口電路</p><p> 圖中,CS與P1.0相連,當(dāng)P1.0送入低電平時,ZLG7289芯片被選中,開始工作。CLK為時鐘引腳,與單片機的P1.1引腳相連,上升沿有效,平時P1.1置位“0”,當(dāng)需要傳數(shù)據(jù)的時候,把P1.1置“1”。DIO口為雙向數(shù)據(jù)傳輸口,因為使用串行通信,節(jié)省了I/O的使用。KEY為鍵盤中斷請求信號,平時為“1”,當(dāng)有鍵按下時,為“0”
96、。</p><p><b> 第四章 軟件設(shè)計</b></p><p><b> 4.1程序總體概述</b></p><p> 根據(jù)硬件設(shè)計,系統(tǒng)用按鈕切換波形,可考慮采用查詢或中斷方式進行,這兩種方式比較起來后者效率更高。若采用查詢方式檢測按鈕,則系統(tǒng)需要花費時間去定期檢測P3.3口管腳電位,這樣就增加了軟件開銷,
97、減低了效率,因而采用中斷方式編程比較理想。其編程思想是安排一個存儲單元存放按鈕的次數(shù),初值設(shè)為0,每中斷一次,數(shù)據(jù)加1,0~2分別代表正弦波,三角波和方波。因此中斷程序的任務(wù)僅僅是通過改變按鈕次數(shù)來存放單元的數(shù)據(jù)而已,波形切換在主程序中進行。</p><p> 波形的頻率是通過改變兩次輸出數(shù)據(jù)之間的時間間隔來實現(xiàn)的。具體做法是首先對模擬量采樣,得到相應(yīng)的A/D值,用這個值作為延時基數(shù)來延時,這樣輸出波形的頻率就
98、和模擬電壓聯(lián)系起來,只要調(diào)整電位器旋鈕改變輸入電壓模擬量,就可以改變波形的頻率。</p><p> 波形的幅值調(diào)整是通過調(diào)節(jié)DAC0832的Vref(參考電壓)來實現(xiàn)的[14]。具體做法是在DAC0832的Vref端連接一個電位器,通過改變電位器來改變Vref的輸入值,Vref的值改變,DAC0832輸出的電壓值也會變換。程序的最后部分是顯示部分,它可顯示波形的幅值和頻率。</p><p&g
99、t; 具體方法是,從ADC0809的IN0通道取得與頻率有關(guān)的數(shù)字量,從IN1通道取得與幅值有關(guān)的數(shù)字量,經(jīng)過計算,把數(shù)據(jù)送給ZLG7289,在數(shù)碼管上顯示。這樣輸出波形的頻率就和模擬電壓聯(lián)系起來,只要調(diào)整電位器旋鈕改變輸入電壓模擬量,就可以改變波形的頻率。波形的幅值調(diào)整是通過調(diào)節(jié)DAC0832的Vref(參考電壓)來實現(xiàn)的。具體做法是在DAC0832的Vref端連接一個電位器,通過改變電位器來改變Vref的輸入值,Vref的值改變,
100、DAC0832輸出的電壓值也會變換。這樣輸出波形的頻率就和模擬電壓聯(lián)系起來,只要調(diào)整電位器旋鈕改變輸入電壓模擬量,就可以改變波形的頻率。波形的幅值調(diào)整是通過調(diào)節(jié)DAC0832的Vref(參考電壓)來實現(xiàn)的。具體做法是在DAC0832的Vref端</p><p> 連接一個電位器,通過改變電位器來改變Vref的輸入值,Vref的值改變,DAC0832輸出的電壓值也會變換。程序的最后部分是顯示部分,它可顯示波形的幅
101、值和頻率。具體方法是,從ADC0809的IN0通道取得與頻率有關(guān)的數(shù)字量,從IN1通道取得與幅值有關(guān)的數(shù)字量,經(jīng)過計算,把數(shù)據(jù)送給ZLG7289,在數(shù)碼管上顯示。</p><p> 該設(shè)計的軟件部分主要思想如流程圖(圖4.1)所示。</p><p> 首先進行初始化,然后確定按鈕的次數(shù),存放在R4中,判斷出選的何種波形。之后從ADC0809的0通道讀入轉(zhuǎn)換值D0,根據(jù)所選波形進行計算出
102、頻率,并送ZLG7289進行顯示,然后從1通道讀入轉(zhuǎn)換值D1,計算出幅值,并顯示在數(shù)碼管上。此時,轉(zhuǎn)到產(chǎn)生波形的子程序中,根據(jù)D0值進行延時,從而產(chǎn)生出所要的波形。</p><p> 4.2各程序模塊說明</p><p> 4.2.1 初始化模塊</p><p> 硬件通電后,需要對各個芯片進行初始化,以保證程序運行的可靠和正確性。</p>&l
103、t;p> 初始化的流程如下: </p><p> 圖4.2 初始化流程圖</p><p> 首先需要定義一些程序中用到的變量,及一些與單片機連接的芯片的引腳,如:</p><p> BIT_COUNT DATA 7FH</p><p> TIMER DATA 7EH</p><p> TEN DA
104、TA 7CH</p><p> CS7289 BIT P1.0</p><p> CLK7289 BIT P1. 1</p><p> DAT7289 BIT P1.2</p><p> KEY7289 BIT P1.3</p><p> 定義好了變量,要對各個芯片進行初始化。P0口連接到了DAC083
105、2的數(shù)字量輸入口和ADC0809的數(shù)字量輸出口,所以需要把P0口全部置“0”。P1口的P1.0~P1.3與DAC0832相連,P1.4~P1.6連接的是用于確定波形類型的LED燈,根據(jù)需要,P1口的初值為09H。中斷允許位的初始化為:</p><p> MOV IE,#84H</p><p><b> CLR IT0</b></p><p>
106、; 還用其他一些定義的變量需要賦初值,如上升標(biāo)志、按鈕次數(shù)標(biāo)志、正弦波數(shù)據(jù)指針、三角波初值、方波初值等。</p><p> 4.2.2 A/D采樣模塊</p><p> 各個芯片初始化之后,就要開始進行數(shù)據(jù)采集了。數(shù)據(jù)采集模塊就是將接收到的模擬量(0~5V電壓)轉(zhuǎn)換為數(shù)字量,傳給單片機以便使用。</p><p> 本次設(shè)計中,數(shù)據(jù)采集使用的是ADC0809芯
107、片,它是一種逐次逼近式8路模擬量輸入和8位數(shù)字量輸出的A/D轉(zhuǎn)換器[15]。實際程序中需要采集的是一個影響波形頻率的模擬量和一個影響波形幅值的模擬量。這兩個模擬量通過調(diào)節(jié)電位器來改變輸入電壓取得的。影響頻率的模擬量從通道0輸入,影響幅值的模擬量從通道1輸入。</p><p><b> 通道0數(shù)據(jù)采集</b></p><p> 通道0與影響頻率的電位器相連,調(diào)節(jié)電位
108、器可使輸入ADC0809的通道0的模擬電壓改變,經(jīng)轉(zhuǎn)換得到的數(shù)字量送入CPU,用作DAC0832兩次輸出之間的延時基數(shù),這樣就可以改變波形的頻率[16]。</p><p> 流程圖如圖4.3所示。</p><p> 執(zhí)行MOV DPTR,#7000H 時,啟動了ADC0809并選中了通道0,執(zhí)行 MOVX @DPTR,A 時,產(chǎn)生一個啟動信號給START引腳送入脈沖,開始對通道0的模擬
109、量進行轉(zhuǎn)換,轉(zhuǎn)換結(jié)束時,發(fā)出結(jié)束信號,置EOC腳為高電平。當(dāng)讀允許信號到,OE端有可以讀出轉(zhuǎn)換的數(shù)字量,利用MOVX A,@DPTR把通道0的轉(zhuǎn)換結(jié)果讀到A累加器中,然后保存到D0中。</p><p> 圖4.3 A/D通道0數(shù)據(jù)采集 圖4.4 A/D通道1數(shù)據(jù)采集</p><p><b> 通道1數(shù)據(jù)采集</b></p>
110、<p> 通道1與影響波形幅值的電位器相連。同通道0相同,也是通過調(diào)節(jié)電位器改變輸入通道1的模擬電壓,轉(zhuǎn)換到的數(shù)保存在D1中。經(jīng)過計算可用作波形幅值的顯示。</p><p> 流程圖如圖4.4所示。</p><p> 執(zhí)行 MOV DPTR,#7020H 可啟動AD并選中通道1,其他指令與通道0中的指令相同。轉(zhuǎn)換后的數(shù)字量保存在D1中,用于幅值顯示。</p>
111、<p> 4.2.3 計算并顯示頻率和幅值模塊</p><p> 頻率和幅值是波形的兩個重要的特征,當(dāng)波形的類型選出后,確定了這兩項,波形基本上就確定了。</p><p><b> 頻率的計算</b></p><p> 將D0中的數(shù)字量用作DAC0832兩次輸出之間的延時基數(shù)就可以改變頻率。頻率的計算公式是:頻率=1/周期,所
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 波形發(fā)生器畢業(yè)論文
- 多功能波形發(fā)生器的設(shè)計 畢業(yè)論文
- 波形發(fā)生器畢業(yè)設(shè)計論文
- 多波形函數(shù)信號發(fā)生器的設(shè)計-畢業(yè)論文
- 多波形函數(shù)信號發(fā)生器的設(shè)計-畢業(yè)論文
- 基于51單片機的波形發(fā)生器畢業(yè)論文
- 波形發(fā)生器畢業(yè)設(shè)計
- 波形發(fā)生器
- 畢業(yè)論文——基于tlc5620的fpga波形發(fā)生器設(shè)計
- 畢業(yè)論文——基于tlc5620的fpga波形發(fā)生器設(shè)計
- 基于單片機原理的波形發(fā)生器畢業(yè)論文設(shè)計
- 數(shù)字波形發(fā)生器畢業(yè)設(shè)計
- 畢業(yè)論文——正弦信號發(fā)生器
- 秒信號發(fā)生器畢業(yè)論文
- 畢業(yè)論文——正弦信號發(fā)生器
- 基于vhdl語言的多波形信號發(fā)生器的設(shè)計畢業(yè)論文
- 波形發(fā)生器外文翻譯
- 畢業(yè)論文---低頻正弦信號發(fā)生器
- 畢業(yè)論文范文——基于tlc5620的fpga波形發(fā)生器設(shè)計
- 合成信號發(fā)生器設(shè)計畢業(yè)論文
評論
0/150
提交評論