基于DAC0832和AT89S52的信號(hào)發(fā)生器設(shè)計(jì)

訊石光通訊網(wǎng) 2012/8/17 8:47:09
       信號(hào)發(fā)生器是一種常用的信號(hào)源,廣泛應(yīng)用于電子電路、自動(dòng)控制系統(tǒng)和教學(xué)實(shí)驗(yàn)等領(lǐng)域。信號(hào)的產(chǎn)生有模擬電路、專用硬件和軟件產(chǎn)生等方法。采用模擬電路搭建函數(shù)信號(hào)發(fā)生器,可同時(shí)產(chǎn)生方波、三角波、正弦波,但不能產(chǎn)生任意波形,存在波形質(zhì)量差、控制難、可調(diào)范圍小,電路復(fù)雜和體積大等缺點(diǎn),且頻率調(diào)節(jié)不方便。專用硬件方法產(chǎn)生的信號(hào)頻率分辨率高、穩(wěn)定性好、在線調(diào)整方便,如目前在通訊系統(tǒng)中應(yīng)用廣泛的直接數(shù)字頻率合成(DDS)技術(shù),例如AD9854是一種典型的信號(hào)產(chǎn)生方法,但是價(jià)格昂貴。

        利用單片機(jī)通過(guò)程序設(shè)計(jì)方法產(chǎn)生低頻信號(hào),其頻率底線較低,具有線路簡(jiǎn)單、結(jié)構(gòu)緊湊、體積小、價(jià)格低廉、頻率穩(wěn)定度高、抗干擾能力強(qiáng)、用途廣泛等優(yōu)點(diǎn),且如需要產(chǎn)生新的波形時(shí),只需對(duì)程序進(jìn)行修改即可。文中利用單片機(jī)AT89S52和D/A轉(zhuǎn)換器DAC0832轉(zhuǎn)換數(shù)字信號(hào)為0~5 V模擬電壓信號(hào),并在LCD1602顯示。

1 系統(tǒng)硬件設(shè)計(jì)

        系統(tǒng)硬件采用模塊化設(shè)計(jì),以單片機(jī)控制器為核心,與D/A轉(zhuǎn)換電路、按鍵電路、LCD顯示電路等組成信號(hào)發(fā)生器控制系統(tǒng)。字符型液晶顯示模塊是一種專用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用的有16×1、16×2、20×2和40×2行等模塊。系統(tǒng)選用1602字符型LCD模塊,其控制器為日立公司生產(chǎn)的HD44780,可用來(lái)顯示數(shù)字、字符等。按鍵輸入使用獨(dú)立式按鍵K1、K2,主要實(shí)現(xiàn)數(shù)字信號(hào)DAC值的加減。

系統(tǒng)硬件組成框圖如圖1所示。

1.1 主控芯片電路

         在大部分的工控或測(cè)控設(shè)備中,8位的MCS-51系列單片機(jī)能滿足大部分的控制要求,加之MCS-51系列單片機(jī)的價(jià)格優(yōu)勢(shì),使MCS-51系列單片機(jī)成為單片機(jī)應(yīng)用主流。AT89S52是MCS-51系列兼容單片機(jī)中的代表產(chǎn)品。鑒于此,本系統(tǒng)選用AT89S52單片機(jī)作為主控制器。

1.2 D/A轉(zhuǎn)換電路

         D/A模塊由D/A芯片和放大電路組成,系統(tǒng)D/A芯片選用DAC0832芯片來(lái)完成數(shù)/模轉(zhuǎn)換過(guò)程。數(shù)字信號(hào)的輸入從“D0~D7”端口輸入,通過(guò)按鍵K1、K2實(shí)現(xiàn)DAC值的加減,其值在0~255之間,并在LCD1602上顯示??刂艱AC0832工作的控制信號(hào)南“WR-CS”端口輸入。DAC 0832是電流輸出型D/A轉(zhuǎn)換芯片,通過(guò)集成運(yùn)放LF393完成電流到電壓的轉(zhuǎn)換,由于LF393工作在雙電源條件下,因此要給LF393加入±12 V電壓。DAC轉(zhuǎn)換的模擬電壓值從“D/A輸出”口輸出。

         系統(tǒng)硬件電路原理圖如圖2所示。

2 系統(tǒng)軟件設(shè)計(jì)

          系統(tǒng)的軟件設(shè)計(jì)使用C51編程,采用模塊化設(shè)計(jì)方法,主要由主函數(shù)、定時(shí)器T0中斷服務(wù)函數(shù)、D/A轉(zhuǎn)換函數(shù)、計(jì)算D/A轉(zhuǎn)換值函數(shù)、按鍵掃描函數(shù)、LCD顯示函數(shù)、LCD顯示A/D轉(zhuǎn)換值函數(shù)等模塊組成。根據(jù)D/A轉(zhuǎn)換芯片DAC0832的工作時(shí)序,20 ms進(jìn)行一次D/A轉(zhuǎn)換,可以利用單片機(jī)AT89S52的定時(shí)器T0定時(shí),20 ms定時(shí)到時(shí),產(chǎn)生定時(shí)器T0中斷,在定時(shí)器T0中斷服務(wù)函數(shù)巾調(diào)用DAC0832采樣轉(zhuǎn)換函數(shù)進(jìn)行D/A采樣轉(zhuǎn)換,然后調(diào)用計(jì)算D/A轉(zhuǎn)換值函數(shù)把D/A轉(zhuǎn)換值轉(zhuǎn)換成相應(yīng)的ASCⅡ碼,最后通過(guò)LCD顯示D/A轉(zhuǎn)換值函數(shù)把DAC轉(zhuǎn)換的模擬電壓值(0~5 V)顯示在液晶LCD1602上,并從“D/A輸出”端子輸出DAC轉(zhuǎn)換的0~5 V模擬電壓。系統(tǒng)軟件結(jié)構(gòu)框圖如圖3所示。

        主函數(shù)是完成硬件初始化、數(shù)據(jù)初始化、函數(shù)調(diào)用等功能,等待中斷到來(lái)。計(jì)算D/A轉(zhuǎn)換值A(chǔ)SCII碼函數(shù)實(shí)現(xiàn)把D/A轉(zhuǎn)換值dabl轉(zhuǎn)換為相應(yīng)的ASCII碼,以便在LCD上顯示。按鍵掃描函數(shù)實(shí)現(xiàn)了通過(guò)系統(tǒng)程序改變數(shù)字量初始值,按鍵K1實(shí)現(xiàn)數(shù)字量加1,按鍵K2實(shí)現(xiàn)數(shù)字量減1,使數(shù)字量在0~255的范圍內(nèi)變化,從而模擬數(shù)字信號(hào)的輸入。LCD顯示函數(shù)包括LCD初始化函數(shù)、寫(xiě)入指令數(shù)據(jù)到LCD函數(shù)、寫(xiě)入顯示數(shù)據(jù)到LCD函數(shù)、LCD顯示D/A轉(zhuǎn)換值函數(shù)、延時(shí)函數(shù)等模塊。軟件程序的核心由定時(shí)器T0中斷服務(wù)程序、DAC0832采樣轉(zhuǎn)換程序構(gòu)成.

2.1 定時(shí)器T0中斷服務(wù)函數(shù)設(shè)計(jì)

        當(dāng)定時(shí)器T0定時(shí)20 ms后,進(jìn)入定時(shí)器T0中斷服務(wù)函數(shù)。首先重裝定時(shí)器T0初值,設(shè)置按鍵輸入口P1口的值為0xdf,調(diào)用按鍵掃描函數(shù)。接著調(diào)用D/A轉(zhuǎn)換函數(shù)進(jìn)行D/A轉(zhuǎn)換,得到D/A轉(zhuǎn)換值dabl,然后調(diào)用計(jì)算D/A轉(zhuǎn)換值函數(shù)計(jì)算dabl相應(yīng)的ASCII碼,再調(diào)用LCD顯示D/A轉(zhuǎn)換值函數(shù)把數(shù)字量輸入值D/A進(jìn)行轉(zhuǎn)換后的模擬量顯示在液晶LCD1602上。最后T0中斷函數(shù)返回主程序等待下一次D/A轉(zhuǎn)換。定時(shí)器T0中斷服務(wù)函數(shù)設(shè)計(jì)流程圖如圖4所示。

        2.2 DAC0832采樣轉(zhuǎn)換函數(shù)設(shè)計(jì)

        根據(jù)D/A轉(zhuǎn)換芯片DAC0832的工作時(shí)序,片選信號(hào)低電平有效。把芯片DAC0832的片選信號(hào)置低電平,選中該芯片。把數(shù)字量D/A轉(zhuǎn)換值dabl送給P0口,準(zhǔn)備送入芯片DAC0832進(jìn)行D/A轉(zhuǎn)換處理。芯片DAC0832寫(xiě)信號(hào)置低電平后再過(guò)兩個(gè)時(shí)鐘周期至高電平,產(chǎn)生一個(gè)上升沿信號(hào),進(jìn)行數(shù)據(jù)D/A轉(zhuǎn)換處理。模擬量dabl從Iout1、Iout2引腳輸出送到運(yùn)算放大器LF393進(jìn)行處理,最后從“D/A輸出”端子輸出,可用萬(wàn)用表測(cè)量到輸出電壓。數(shù)據(jù)轉(zhuǎn)換完畢,把芯片DAC0832片選信號(hào)置高電平,最后函數(shù)返回。D/A轉(zhuǎn)換函數(shù)設(shè)計(jì)流程圖如圖5所示。

     3 實(shí)驗(yàn)測(cè)試分析

      根據(jù)輸入單片機(jī)的數(shù)字信號(hào),用萬(wàn)用表測(cè)量從“D/A輸出”端子測(cè)試輸出模擬電壓信號(hào),如表1所示。從表1可知,該信號(hào)發(fā)生器的電壓輸出誤差小、精度高。

        4 結(jié)束語(yǔ)

          系統(tǒng)按照簡(jiǎn)單化、便捷化原則設(shè)計(jì),介紹了系統(tǒng)的總體結(jié)構(gòu)、硬件設(shè)計(jì)和軟件設(shè)計(jì)。側(cè)重闡述了采用AT89S52單片機(jī)與D/A轉(zhuǎn)換器DAC08 32對(duì)輸入數(shù)字信號(hào)進(jìn)行處理,最后驅(qū)動(dòng)輸出顯示裝置LCD1602顯示D/A轉(zhuǎn)換的0~5 V模擬電壓信號(hào)。實(shí)驗(yàn)調(diào)試表明該信號(hào)發(fā)生器在技術(shù)指標(biāo)上達(dá)到了設(shè)計(jì)要求,具有精度高、抗干擾性強(qiáng)、性能穩(wěn)定、升級(jí)方便等特點(diǎn),有較高的應(yīng)用價(jià)值。

新聞來(lái)源:電子周刊

相關(guān)文章