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