基于單片機的波形發(fā)生器設計.pdf_第1頁
基于單片機的波形發(fā)生器設計.pdf_第2頁
基于單片機的波形發(fā)生器設計.pdf_第3頁
基于單片機的波形發(fā)生器設計.pdf_第4頁
基于單片機的波形發(fā)生器設計.pdf_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1 目錄目錄 1 1 緒論緒論 5 1.1 選題背景及意義 5 1.1.1 本課題的研究現狀 5 1.1.2 選題目的及意義 6 1.2 設計任務及要求 6 1.2.1 設計的基本要求 7 1.2.2 本文結構安排 7 2 2 函數發(fā)生器系統(tǒng)設計函數發(fā)生器系統(tǒng)設計 . 8 2.1 設計方案的比較 8 2.2 系統(tǒng)模塊設計 8 2.2.1 控制模塊: 9 2.2.2 按鍵及其顯示模塊: 9 2.2.3 波形產生模塊 9 2.2.4 d/a 轉換 . 10 2.3 系統(tǒng)總體框圖 . 12 2.4 理論分析 . 12 2.4.1 電路的理論計算 . 12 2.4.2 波形產生相關理論 . 14 2.5 單片機軟件開發(fā)系統(tǒng) . 15 3 3 系統(tǒng)硬件電路的設計系統(tǒng)硬件電路的設計 17 3.1 單片機最小系統(tǒng) . 17 3.2 單片機的接口電路 . 18 3.3 幅度控制模塊 . 23 3.3.1 單片機與 dac0832 的接口 . 23 3.3. 2dac0832 與運放的連接 . 23 4 4 系統(tǒng)軟件設計系統(tǒng)軟件設計 26 4.1 系統(tǒng)軟件設計方案 . 26 4.2 系統(tǒng)軟件流程圖 . 26 4.3 信號產生程序 . 27 2 4.3.1 正弦波產生 . 28 4.3.2 三角波產生 . 28 4.3.2 方波產生 . 29 4.3.4 鋸齒波的產生 . 30 5 5 系統(tǒng)調試與測試系統(tǒng)調試與測試 32 5.1 調試 . 32 5.2 測試 . 35 6 6 結論與展望結論與展望. 38 6.1 結論 . 38 6.2 展望 . 38 致致 謝謝 39 參考文獻參考文獻. 51 附附 錄錄 40 附錄一 系統(tǒng)軟件部分源程序 40 附錄二 系統(tǒng)原理圖 49 附錄三 系統(tǒng) pcb 圖 50 3 基于單片機的波形發(fā)生器的設計基于單片機的波形發(fā)生器的設計 學 生:李利剛 指導老師:李 敏 (黃岡職業(yè)技術學院) 摘要:摘要:函數發(fā)生器是一種用于產生標準信號的電子儀器,它廣泛用于工業(yè)生產、 科研和國防等各個領域中,所以論文選題具有一定的實用意義。 本文介在紹了函 數發(fā)生器的基本概念及原理的基礎上,采用 at89c51 單片機為核心,完成了簡易 的 dds 函數發(fā)生器的硬件設計和軟件編程, 并通過調試實現了其功能和主要技術 指標。在系統(tǒng)的硬件部分,設計了由單片機最小系統(tǒng)為核心、通過接口設計,擴 展了 dac 轉換模塊、按鍵和 led 顯示模塊。其中,采用兩片 dac0832 實現了全數 字化的頻率合成器(簡稱 dds)。系統(tǒng)的軟件設計是在 keil uvision4 的集成開發(fā) 環(huán)境下,采用 c 語言完成了應用系統(tǒng)軟件編程,包括主程序、產生四種常用信號 的程序、按鍵功能和顯示子程序等電腦模塊;模塊化的編程使得程序具有可讀性 和易于維護的特點。 關鍵詞:關鍵詞:信號發(fā)生器 單片機 keilc51 4 based on scm waveform generator design abstract:function generator is used to produce a standard signal electronic instrument, it is widely used in industrial production, scientific research and national defense, and other fields, so the thesis has certain practical significance. this paper in shaoxing interface the function generator of basic concepts and principles, and on the basis of the at89c51 microcontroller as the core, the completion of the simple dds function generator hardware design and software programming, and through the debugging realized its function and the main technical indexes. in the system hardware part, designed by single chip minimize system as the core, through the interface design, expanded the dac conversion module, keys and led display module. among them, the two pieces of dac0832 realized the full digital frequency synthesizer (hereinafter referred to as dds). the software design is in the system of the keil uvision4 integrated development environment, using c language completed application system software programming, including the main program, produce four common signal procedures, key functions and display subroutines computer module; modular programming makes the program has a readable and easy maintenance characteristic. key words:signal generator single-chip microcomputer keilc51 5 1 1 緒論緒論 1.11.1 選題背景及意義選題背景及意義 函數發(fā)生器又稱信號源或振蕩器,在生產實踐和科技領域中有著廣泛的應 用。各種波形曲線均可以用三角函數方程式來表示。能夠產生多種波形,如三角 波、鋸齒波、矩形波(含方波) 、正弦波的電路被稱為函數信號發(fā)生器。在通信、 廣播、電視系統(tǒng),在工業(yè)、農業(yè)、生物醫(yī)學等領域內,函數信號發(fā)生器在實驗和 設備檢測中具有十分廣泛的用途。 1.1.11.1.1 本課題的研究現狀本課題的研究現狀 函數發(fā)生器既可以構成獨立的信號源,也可以是高性能網絡分析儀、頻譜儀 及其它自動測試設備的組成部分。 函數發(fā)生器的關鍵技術是多種高性能儀器的支 撐技術,因為它能夠提供高質量的精密信號源及掃頻源,可使相應系統(tǒng)的檢測過 程大大簡化,降低檢測費用并極大地提高檢測精度。美國安捷倫生產的 33250a 型函數任意波形發(fā)生器可以產生穩(wěn)定、精確和低失真的任意波形,其輸出頻率范 圍為 1hz80mhz,而輸出幅度為 10mvpp10vpp;該公司生產的 8648d 射頻信 號發(fā)生器的頻率覆蓋范圍更可高達 9khz4ghz。國產 sg1060 數字合成信號發(fā)生 器能雙通道同時輸出高分辨率、高精度、高可靠性的各種波形,頻率覆蓋范圍為 1hz60mhz;國產 s1000 型數字合成掃頻信號發(fā)生器通過采用新技術、新器件 實現高精度、寬頻帶的掃頻源,同時應用 dds 和鎖相技術,使頻率范圍從 1mhz 1024mhz 能精確地分辨到 100hz,它既是一臺高精度的掃頻源,同時也是一臺高 精度的標準信號發(fā)生器。還有很多其它類型的信號發(fā)生器,他們各有各的優(yōu)點, 但是函數發(fā)生器總的趨勢將向著寬頻率覆蓋、高頻率精度、多功能、多用途、自 動化和智能化方向發(fā)展。 目前,市場上的信號發(fā)生器多種多樣,一般按頻帶分為以下幾種: 超高頻:頻率范圍 1mhz 以上,可達幾十兆赫茲。 高頻:幾百 khz 到幾 mhz。 低頻:頻率范圍為幾十 hz 到幾百 khz。 超低頻:頻率范圍為零點幾赫茲到幾百赫茲。 超高頻信號發(fā)生器,產生波形一般用 lc 振蕩電路。 高頻、低頻和超低頻信號發(fā)生器,大多使用文氏橋振蕩電路,即 rc 振蕩電路, 通過改變電容和電阻值,改變頻率。 6 用以上原理設計的信號發(fā)生器,其輸出波形一般只有兩種,即正弦波和脈沖 波,其零點不可調,而且價格也比較貴,一般在幾百元左右。在實際應用中,超 低頻波和高頻波一般是不用的,一般用中高頻,即幾十 hz 到幾 mhz。用單片機 at89c51,加上一片 dac0832,就可以做成一個簡單的信號發(fā)生器,其頻率受單片 機運行的程序的控制。 我們可以把產生各種波形的程序, 寫在 rom 中, 裝入本機, 按用戶的選擇,運行不同的程序,產生不同的波形。再在 dac0808 輸出端加上一 些電壓變換電路,就完成了一個頻率、幅值、零點均可調的多功能信號發(fā)生器的 設計。這樣的機器體積小,價格便宜,耗電少,頻率適中。 1.1.21.1.2 選題目的及意義選題目的及意義 函數發(fā)生器是一種經常使用的設備, 由純粹物理器件構成的傳統(tǒng)的設計方法 存在許多弊端,如:體積較大、重量較沉、移動不夠方便、信號失真較大、波形 種類過于單一、波形形狀調節(jié)過于死板,無法滿足用戶對精度、便攜性、穩(wěn)定性 等的要求, 研究設計出一種具有頻率穩(wěn)定、 準確、 波形質量好、 輸出頻率范圍寬、 便攜性好等特點的波形發(fā)生器具有較好的市場前景, 以滿足軍事和民用領域對信 號源的要求。 本次設計的主要目標是學習和運用單片機的 c 語言和匯編語言, 利用單片機 at89c51 和 8 位 d/a 轉換芯片 dac0832 共同實現正弦波,方波,三角波,鋸齒波 這四種常見波形的發(fā)生,并且可以接收外接鍵盤輸入而在一定范圍內改變頻率。 在無標準函數發(fā)生儀器時,本設計可以作為簡單的函數發(fā)生器使用。本次 設計準備在成本較低廉的前提下完成,主要是用 at89c51 單片機,dac0832,性 能指數都不是很高,所以對此信號源的基本要求是能發(fā)生幾種常見的波形,正弦 波,方波,三角波,鋸齒波,并且能夠在一定的范圍內改變頻率。通過該課題的 設計掌握以 at89c51 為核心的單片機系統(tǒng)的軟硬件開發(fā)過程和基本信號的產生 原理、測量及誤差分析方法,同時掌握函數發(fā)生器系統(tǒng)的設計流程;培養(yǎng)我們綜 合運用所學的基本知識、基本理論和基本技能的能力,學習解決一般工程技術和 有關專業(yè)問題的能力,學習工程設計和科學研究的基本方法,完成對所學知識的 綜合訓練。 1.21.2 設計任務及要求設計任務及要求 本設計采用 at89c51 及其外圍擴展系統(tǒng), 軟件方面主要是應用 c 語言設計程 序。 系統(tǒng)以 at89c51 單片機為核心, 配置相應的外設及接口電路, 用 c 語言開發(fā), 組成一個多功能信號發(fā)生系統(tǒng)。該系統(tǒng)的軟件可運行于 windows xp 環(huán)境下,硬 件電路設計具有典型性。同時,本系統(tǒng)中任何一部分電路模塊均可移植于實用開 發(fā)系統(tǒng)的設計中,電路設計具有實用性。 7 1.2.11.2.1 設計的基本要求設計的基本要求 (1)功能要求 1.能產生正弦波、方波、三角波、鋸齒波等 4 種周期性波形,并且可通調 節(jié)變形成其它相關波形。 2.用鍵盤輸入可生成正弦波的基波及各次諧波單獨的波形,也可生成基波 和各次諧波線形組合的波形。 3.輸出波形的頻率范圍為 1mhz1hz;可以通過鍵盤輸入粗調頻率。 4.輸出波形幅度范圍為 05v(峰-峰值) ,可調整。 5.具有顯示輸出波形類型、及其粗調頻率和幅度的功能。 1.2.21.2.2 本文結構安排本文結構安排 全文共分為 6 章,第 1 章緒論(介紹設計的研究現狀、選題意義及設計的任 務與要求) ;第 2 章系統(tǒng)總體的設計原理;第 3 章系統(tǒng)的硬件設計;第 4 章系統(tǒng) 的軟件設計;第 5 章系統(tǒng)的調試與測試;第 6 章總結與展望 8 2 2 函數發(fā)生器系統(tǒng)設計函數發(fā)生器系統(tǒng)設計 2.12.1 設計方案的比較設計方案的比較 函數發(fā)生器的設計方案可用多種方案來完成。在設計前對各種方案進行了比 較: 方案一: 用差分放大電路實現三角波到正弦波以及集成運放組成的電路實現 函數發(fā)生器。波形變換的原理是利用差分放大器的傳輸特性曲線的非線性,傳輸 特性曲線越對稱,線性區(qū)域越窄越好;三角波的幅度應正好使晶體接近飽和區(qū)域 或者截至區(qū)域。 方案二:用二極管折線近似電路以及集成運放組成的電路實現函數發(fā)生器。根據 二極管折線近似電路實現三角波正弦波的變換頻率調節(jié)部分設計時, 可先按 三個頻率段給定三個電容值:1000pf、0.01mf、0.1f 然后再計算 r 的大小。 手控與壓控部分線路要求更換方便。為滿足對方波前后沿時間的要求,以及正弦 波最高工作頻率(1mhz)的要求,在積分器、比較器、正弦波轉換器和輸出級中 應選用 sr 值較大的運放(如 lf353) 。為保證正弦波有較小的失真度,應正確計 算二極管網絡的電阻參數,并注意調節(jié)輸出三角波的幅度和對稱度。輸入波形中 不能含有直流成分。 方案三 :利用單片機 at89c51 和 8 位 d/a 轉換芯片 dac0832 共同實現正弦 波,方波,三角波,鋸齒波這四種常見波形的發(fā)生,并且可以接收外接鍵盤輸入 而在一定范圍內改變頻率。 可行性分析: 上面三種方案中,方案一與方案二中三角波正弦波部分原理雖然不一樣,但 是他們有共通的地方就是都要認為地搭建波形變換的電路圖。 而方案三利用單片 機構成的應用系統(tǒng)有較大的可靠性。系統(tǒng)擴展、系統(tǒng)配置靈活。容易構成各種規(guī) 模的應用系統(tǒng),且應用系統(tǒng)有較高的軟、硬件利用系數。單片機具有可編程性, 硬件的功能描述可完全在軟件上實現,而且設計時間短,成本低,可靠性高。 綜上所述我們選擇了第三種設計方案 2.22.2 系統(tǒng)模塊設計系統(tǒng)模塊設計 該函數發(fā)生器有以下幾部分組成: (1)控制模塊(2)按鍵及其顯示模塊(3) d/a 轉換模塊。 9 2.2.12.2.1 控制模塊控制模塊: 方案一:用單片 at89c51 作為系統(tǒng)的主控核心。具有體積小,使用靈活的, 易于人機對話和良好的數據處理,單指令周期和 35m 高速運算功能等優(yōu)點。且單 片機功耗低,價格低廉的優(yōu)點。 方案二:用單片 at89c51 作為系統(tǒng)的主控核心。具有價格低廉的優(yōu)點,但處 理速度較慢(1/12m),at89c51 是它的 35 倍。 方案三:用 fpga 等可編程器件作為控制模塊。fpga 可以實現各種復雜的邏 輯功能,密度高,速度快,穩(wěn)定性好等許多有點。fpga 在掉電后會丟失數據上 電后須進行一次配置, 因此fpga在應用中需要配置電路和一定的程序。 并且fpga 作為數字邏輯器件,競爭、冒險是數字邏輯器件較為突出的問題,因此在使用時 必須注意毛刺的產生、消除及抗干擾性。 在次系統(tǒng)中,采用單片機作為控制比采用 fpga 實現更簡便。基于綜合性價 比,確定選擇方案一. 2.2.22.2.2 按鍵及其顯示模塊按鍵及其顯示模塊: 方案一:采用傳統(tǒng)的獨立式按鍵;用傳統(tǒng)的 led 段選位選的方式進行波形的 切換及顯示。這種方式占用系統(tǒng)資源較多,并且效率低,程系編寫大量而復雜。 方案二:為了提高單片機的資源利用率和運行的效率,按鍵顯示部分我們直 接使用 zlg7289 擴展鍵盤,鍵盤與單片機連接。zlg7289 芯片與單片機之間通信 方便,而且由 zlg7289 對鍵盤進行自動掃描,可以去抖動,充分的提高了單片機 的工作效率。 在次系統(tǒng)中, 我們直接采用 zlg7289 擴展鍵盤實現更簡便, 確定選擇方案二。 2.2.32.2.3 波形產生模塊波形產生模塊 方案一:使用鎖相環(huán)通過分頻運算實現頻率的步進,這種方案頻率穩(wěn)定度高,但 程控比較困難,而且步進范圍過大,鑒于鎖相環(huán)技術比較復雜,沒有采用這種方 案。 方案二:使用專用函數發(fā)生電路,如icl8038 或max038,通過d/a轉換調整函數 發(fā)生器控制電壓實現頻率的控制,這種方案可以使頻率連續(xù)可調,省卻了波形轉 換電路,但控制電壓與頻率的變化不是嚴格的線性關系,如果不加頻率負反饋則 頻率無法穩(wěn)定準確,加上頻率負反饋將使電路大大復雜,穩(wěn)定度也會下降,而且 如果要實現比較大的帶寬, 就需要不斷更換振蕩電容, 電路復雜程度進一步增加。 為避免調試困難,沒有采用這種方案。 10 方案三:使用單片機的定時器設置定時時間,每半個周期對 i/o 口取反一次, 從而實現頻率輸出。這種方案雖然在高頻頻段誤差比較大,但是編程簡單控制容 易,權衡以上利弊,我們選擇了方案三。 2.2.4 d/ad/a 轉換轉換 單片輸出的是數字信號,必須通過 d/a 轉換后才能模擬信號。 方案一:采用 d/a 轉換器 ad7543。ad7543 是一種串行的 d/a 轉換器,與單 片機之間的連線少,布線方便,而且又是 12 位的 d/a 轉換器,精度高。但串行 數據傳輸速度慢,當頻率較高時,必須減少每周期輸出的點數,這將會導致階梯現 象更加明顯,因此,此方案不宜使用。 方案二:采用 dac0832。這是 8 位的并行 d/a 轉換器,轉換速度快。 方案三:采用 2 片 dac0832。由其中一芯片的輸出電壓作為另一芯片的參 考電壓,這樣就可以方便的控制最大輸出電壓。 若采用方案二,在輸出電壓較低的情況下,比如為 1v 時,輸出的最大電壓 只有參考電壓的 1/5,這將會使精度降低,而方案三剛好可以解決這個問題,因 此,本系統(tǒng)選擇了方案三。 dac0832 芯片介紹 dac0832 是美國國家半導體公司生產的一種 8 位分辨率、雙通道 a/d 轉換 芯片。由于它體積小,兼容性,性價比高而深受單片機愛好者及企業(yè)歡迎, 其目前已經有很高的普及率。學習并使用 dac0832 可是使我們了解 a/d 轉 換器的原理,有助于我們單片機技術水平的提高。 dac0832 具有以下特點: 8 位分辨率; 雙通道 a/d 轉換; 輸入輸出電平與 ttl/cmos 相兼容; 5v 電源供電時輸入電壓在 0 到 5v 之間; 電流建立時間 1s; 一般功耗僅為 15mw; 8p、14pdip(雙列直插)、picc 多種封裝; 商用級芯片溫寬為 0c 到 +70c,工業(yè)級芯片溫寬為40c 到 +85c; 芯片接口說明: cs 片選使能,低電平芯片使能。 ch0 模擬輸入通道 0,或作為 in+/-使用。 ch1 模擬輸入通道 1,或作為 in+/-使用。 gnd 芯片參考 0 電位(地)。 11 di 數據信號輸入,選擇通道控制。 do 數據信號輸出,轉換數據輸出。 clk 芯片時鐘輸入。 vcc/ref 電源輸入及參考電壓輸入(復用)。 dac0832 為 8 位分辨率 a/d 轉換芯片,其最高分辨可達 256 級,可以 適應一般的模擬量轉換要求。其內部電源輸入與參考電壓的復用,使得芯 片的模擬電壓輸入在 0 到 5v 之間。據有雙數據輸出可作為數據校驗,以減 少數據誤差,轉換速度快且穩(wěn)定性能強。獨立的芯片使能輸入,使多器件 掛接和處理器控制變的更加方便。通過 di 數據輸入端,可以輕易的實現通 道功能的選擇。 單片機對 dac0832 的控制原理: 正常情況下 dac0832 與單片機的接口應為 4 條數據線, 分別是 cs、 clk、 do、di。但由于 do 端與 di 端在通信時并未同時有效并與單片機的接口是 雙向的,所以電路設計時可以將 do 和 di 并聯(lián)在一根數據線上使用。當 dac0832 未工作時其 cs 輸入端應為高電平, 此時芯片禁用, clk 和 do/di 的 電平可任意。當要進行 a/d 轉換時,須先將 cs 使能端置于低電平并且保持 低電平直到轉換完全結束。此時芯片開始轉換工作,同時由處理器向芯片 時鐘輸入端 clk 輸入時鐘脈沖,do/di 端則使用 di 端輸入通道功能選擇的 數據信號。在第 1 個時鐘脈沖的下沉之前 di 端必須是高電平,表示啟始信 號。在第 2、3 個脈沖下沉之前 di 端應輸入 2 位數據用于選擇通道功能 當此2 位數據為“1”、 “0”時, 只對ch0 進行單通道轉換。 當2位數據為“1”、 “1”時,只對 ch1 進行單通道轉換。當 2 位數據為“0”、“0”時,將 ch0 作 為正輸入端 in+,ch1 作為負輸入端 in-進行輸入。當 2 位數據為“0”、“1” 時,將 ch0 作為負輸入端 in-,ch1 作為正輸入端 in+進行輸入。到第 3 個脈沖 的下沉之后 di 端的輸入電平就失去輸入作用,此后 do/di 端則開始利用數據輸 出 do 進行轉換數據的讀取。 從第 4 個脈沖下沉開始由 do 端輸出轉換數據最高位 data7,隨后每一個脈沖下沉 do 端輸出下一位數據。直到第 11 個脈沖時發(fā)出最 低位數據 data0,一個字節(jié)的數據輸出完成。也正是從此位開始輸出下一個相反 字節(jié)的數據, 即從第 11 個字節(jié)的下沉輸出 data0。 隨后輸出 8 位數據, 到第 19 個 脈沖時數據輸出完成,也標志著一次 a/d 轉換的結束。最后將 cs 置高電平禁用 芯片,直接將轉換后的數據進行處理就可以了。作為單通道模擬信號輸入時 dac0832 的輸入電壓是 0 到 5v 且 8 位分辨率時的電壓精度為 19.53mv。 如果作為 由 in+與 in-輸入的輸入時,可是將電壓值設定在某一個較大范圍之內,從而提 高轉換的寬度。但值得注意的是,在進行 in+與 in-的輸入時,如果 in-的電壓 大于 in+的電壓則轉換后的數據結果始終為 00h。 12 2.32.3 系統(tǒng)總體框圖系統(tǒng)總體框圖 本系統(tǒng)是以單片機at89c51和 8位d/a轉換芯片dac0832以及zlg7289鍵盤及顯 示共同實現正弦波,方波,三角波,鋸齒波這四種常見波形的產生及顯示相互切 換的功能。 系統(tǒng)原理框圖如圖 2-1 圖圖 2 2- -1 1 系統(tǒng)框圖系統(tǒng)框圖 2.42.4 理論分析理論分析 2.4.12.4.1 電路的理論計算電路的理論計算 由圖 3-6 可知到 u5 的輸出將作為 dac0832(2)的基準電壓。 假設運放 u6 的輸入為 1 v;dac0832(2)的內部的電阻為 1 r。設 u5 的輸入電壓為 2 v;dac0832(2)的內部的電阻為 2 r。下面進行討論計算: (1) u6 為一個反相比例器: 1281 11 1281 , out out urv uv rrr (2) u5 也為一個反相比例器: 2262 22 2262 , out out urv uv rrr 這是 u4 的輸入為 12 (u+u) outout ,記為 v 由于 2514 rr,這是 u4 實際上為為一個反響跟隨器,即: 13 312outoutout uvuu 所以: 28262826 31212 1212 () out rrrr uvvvv rrrr 2本設計中的運放的連接的第二部分如圖 3-6 如圖 3-6 中的 u2 輸入中的 out3 u為圖 3-7 中 u4 的輸出。 對于本運放組成的電路分析采用疊加法: 設 u2 的輸出為 out4 u。 當12電源全部接地時,有如下: 此時的運放實際為一個反相比例器: 111161212 ()/()rrrrr 右左 113 3 113141 149 out rr uu rrruu rr 9113 1out3 1411314 () uu () r rr rrrr (2-1) 當-12v 和 out3 u接地時: 2161312 ()/ /rrrr 右 2 - 21112-2 139 u -12 uu r rrr rr 左 92 2 1321112 u12 rr rrrr 左 (2-2) 當 12v 和 out3 u接地時: 3111312 3 - 31612-3 139 93 3 1331112 ()/ / u +12 uu u12 rrrr r rrr rr rr rrrr 左 右 左 (2-3) 14 所以綜上所述: out4 u為 1 u, 2 u, 3 u三者之和。 out4123 uu +u +u即: 91139932 out4out33 141131413211133111212 9113932 out3 1411314132113111212 () uu12u12 () () u12 () r rrrrrr rrrrrrrrrrrr r rrrrr rrrrrrrrrrr 左左 左左 () 下面對 out4 u的結果作一些輔助說明: 特例:當 23 rr時 9113 out41out3 1411314 () uuu () r rr rrrr (2-4) 以下進行代入數據的具體的分析: 于是對于將圖 3-6 與圖 3-7 及連在一起時,波形輸出與調節(jié)部分的理論計算。 當單片機分別向 dac0832(1)和 dac0832(2)輸入數據 1 d和 2 d時 0222 u =-dvr=-12 d /256 (2-5) 011021 u =-dvr=-ud /256 031010231 u =-r /ru -ur /r (2-6) 其中 13 r =r =10k, 2 r =20k,代入以上各式,得 0021 u =u(d /128-1)/2 (2-7) 或者 1002 d =128 (u /u +1) (2-8) 由(2-7)式可知,當 1 d在 0255 之間變化時, 0 u可在 02 u 2 02 u 2 之間 變化,即輸出信號的峰峰值可由 02 u控制。 該電路由 102 電位器串接 2 個 1k電阻實現調節(jié)直流偏移,電位器觸頭在最 右端和最左端時,電位器輸出的電壓分別為-5v 和+5v,電位器的電壓與 0 u通過 一個加法器后,實現直流偏移的調節(jié)。 2.4.22.4.2 波形產生相關理論波形產生相關理論 dac0832 是 8 位的 d/a 轉換器件,其工作電壓是 05v,當輸入 00 數字量的 時候,輸出為 0v 電壓;當輸入 80 數字量的時候,輸出為 2.5v 電壓;當輸入 ff 15 數字量的時候,輸出為 5v 電壓。單片機的 i/o 輸出均為+5 v 的 ttl 電平,因此 產生的正弦波幅值為+2.5 v。將一個周期內的正弦波形等分為 256 份,那么第 1 點的角度為 0,對應的正弦值為 2.5sin0;第 2 點的角度為 360/256,對 應的正弦值為 2.5sin (360/256 ) ,如此計算下去,將這些模擬量正 弦值都轉換為單極性方式下的數字量, 得到一張按照點號順序排列的正弦波波形 數據表。而每次送到 74ls373 的八位數字量是根據查正弦波形數據表格而得到。 其實在計算正弦波形數據的時候,并不需要算出整個 02區(qū)間的每一個 值,而只需計算出 0 2 1 中的值就行,其他區(qū)間的值都可以通過對 0 2 1 中 的值取不同的變換。比如 2 1 的值可以和 0 2 1 值一一對應,而2 的值可以對 0區(qū)間的值取反得到。計算值可以用 c 語言編程得到。 幅度公式為 y=2.51+sin(n 64 90 ) (n=0,1,264) 相應的 y 值數字化后的遞增量= 255 5 0.0196 那么每一個點相對于起一個點的遞增率為 a= 12yy (y2 當前的點,y1 為前一個點) 所以每一個點的數字量與遞增率 a 成一一對應關系。 2.52.5 單片機軟件開發(fā)系統(tǒng)單片機軟件開發(fā)系統(tǒng) keil c51 是美國 keil software 公司出品的 51 系列兼容單片機 c 語言軟件 開發(fā)系統(tǒng),與匯編相比,c 語言在功能上、結構性、可讀性、可維護性上有明顯 的優(yōu)勢,因而易學易用。用過匯編語言后再使用 c 來開發(fā),體會更加深刻。keil c51 軟件提供豐富的庫函數和功能強大的集成開發(fā)調試工具,全 windows 界面。 另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到 keil c51 生 成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開 發(fā)大型軟件時更能體現高級語言的優(yōu)勢。 keil c51 單片機軟件開發(fā)系統(tǒng)的整體結構 c51 工具包的整體結構,uvision 與 ishell 分別是 c51 for windows 和 for dos 的集成開發(fā)環(huán)境(ide),可以完成編輯、編譯、連接、調試、仿真等整 個開發(fā)流程。開發(fā)人員可用 ide 本身或其它編輯器編輯 c 或匯編源文件。然后分 別 由 c51 及 a51 編譯器編譯生成目標文件(.obj)。 目標文件可由 lib51 創(chuàng)建生成庫 文件,也可以與庫文件一起經 l51 連接定位生成絕對目標文件(.abs)。abs 文件 由 oh51 轉換成標準的 hex 文件,以供調試器 dscope51 或 tscope51 使用進行源 16 代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存 貯器如 eprom 中。keilc51 標準 c 編譯器為 8051 微控制器的軟件開發(fā)提供了 c 語言環(huán)境,同時保留了匯編代碼高效,快速的特點。c51 編譯器的功能不斷增強, 使你可以更加貼近 cpu 本身,及其它的衍生產品。c51 已被完全集成到 uvision2 的集成開發(fā)環(huán)境中,這個集成開發(fā)環(huán)境包含: 編譯器,匯編器,實時操作系統(tǒng),項目 管理器,調試器。uvision4 ide 可為它們提供單一而靈活的開發(fā)環(huán)境。 第二部分 uvision4 集成開發(fā)環(huán)境 一項目管理 工程(project)是由源文件、開發(fā)工具選項以及編程說明三部分組成的。 一個單一的 uvision4 工程能夠產生一個或多個目標程序。產生目標程序的源文 件構成“組”。開發(fā)工具選項可以對應目標,組或單個文件。 uvision4 包含一個器件數據庫(device database),可以自動設置匯編器、編譯 器、連接定位器及調試器選項,來滿足用戶充分利用特定 微控制器的要求。此 數據庫包含: 片上存儲器和外圍設備的信息, 擴展數據指針(extra data pointer) 或者加速器(math accelerator)的特 性。 uvision4 可以為片外存儲器產生必要的連接選項:確定起始地址和規(guī)模。 第三部分編輯器和調試器 一、源代碼編輯器 uvision4 編輯器包含了所有用戶熟悉的特性。彩色語法顯像和文件辯識都對 c 源代碼進行和優(yōu)化??梢栽诰庉嬈鲀日{試程序,它能提供一種自然的調試環(huán)境, 使你更快速地檢查和修改程序。 二、斷點 uvision4 允許用戶在編輯時設置程序斷點(甚至在源代碼未經編譯和匯編之 前) 。用戶啟動 v2 調試器之后,斷點即被激活。斷點可設置為條件表達式,變量 或存儲器訪問,斷點被觸發(fā)后,調試器命令或調試功能即可執(zhí)行。 在屬性框(attributes column)中可以快速瀏覽斷點設置情況和源程序行的位 置。代碼覆蓋率信息可以讓你區(qū)分程序中已執(zhí)行和未執(zhí)行的部分。 三、調試函數語言 uvision4 中,你可以編寫或使用類似 c 的數語言進行調試。 1.內部函數:如 printf, memset, rand 及其它功能的函數。 2.信號函數: 模擬產生cpu的模擬信號和脈沖信號(simulate analog and digital inputs to cpu)。 3.用戶函數:擴展指令范圍,合并重復動作。 17 3 3 系統(tǒng)硬件電路的設計系統(tǒng)硬件電路的設計 3.1 單片機最小系統(tǒng) 單片機最小系統(tǒng)如圖 3-1 圖圖 3 3- -1 1 單片機最小系統(tǒng)單片機最小系統(tǒng) 對圖 3-1 說明如下: (1) 單片機晶振電路 單片機外圍的晶振電路是通過單片機的第 18(xtal1),19(xtal2)引腳接 入,xtal1:振蕩器反相放大器和內部時鐘發(fā)生電路的輸入端。xtal2:振蕩器反 相放大器的輸出端。 對于 stc11cf01 一般的晶振頻率可以在 12mhz35mhz 之間選擇,這時電容 c 可 以對應的選擇 10pf30pf。對于本設計的電容 c 用 30pf,晶振選用 35mhz。晶 振電路解法圖 3-1,一條引腳接在 xtal1,另一條接在 xtal2。 (2) 單片機的復位電路 18 rst:復位輸入。晶振工作時,rst腳將持續(xù)2個機器周期高電平將使單片機 復位。 看門狗計時完成后, rst腳輸出96個晶振周期的高電平。 特殊寄存器auxr(地 址8eh)上的disrto位可以使此功能無效。disrto默認狀態(tài)下,復位高電平有效。 為了防止程序執(zhí)行過程中失步或運行紊亂, 此處我們采用了上電復位及手動復位 電路, (3)ea/vpp:訪問外部程序存儲器控制信號。為使能從0000h到ffffh的外部程 序存儲器讀取指令,ea必須接gnd。為了執(zhí)行內部程序指令,ea應該接vcc。 在flash編程期間,ea也接收12伏vpp電壓。 (4)ale/prog:地址鎖存控制信號(ale)是訪問外部程序存儲器時,鎖存低 8 位地址的輸出脈沖。在 flash 編程時,此引腳(prog)也用作編程輸入脈沖。 在一般情況下,ale 以晶振六分之一的固定頻率輸出脈沖,可以用來作為外部定 時器或時鐘使用。然而,特別強調,在每次訪問外部數據存儲器時,ale 脈沖將 會跳過。如果需要,通過將地址為 8eh 的 sfr 的第 0 位置 “1” ,ale 操作將無 效。這一位置 “1” ,ale 僅在執(zhí)行 movx 或 movc 指令時有效。否則,ale 將被 微弱拉高。這個 ale 使能標志位(地址為 8eh 的 sfr 的第 0 位)的設置對微控 制器處于外部執(zhí)行模式下無效。 3.23.2 單片機的接口電路單片機的接口電路 (1)zlg7289 芯片引腳介紹 1-2 vdd 正電源 3 5 nc 懸空 4 vss 接地 6 cs 片選輸入端此引腳為低電平時可向芯片發(fā)送指令及讀取鍵盤數據 7 clk 同步時鐘輸入端向芯片發(fā)送數據及讀取鍵盤數據時此引腳電平上 升沿表示數據有效 8 data 串行數據輸入/輸出端當芯片接收指令時此引腳為輸入端當讀取 鍵盤數據時此引腳在讀指令最后一個時鐘的下降沿變?yōu)檩敵龆?9 key 按鍵有效輸出端平時為高電平當檢測到有效按鍵時此引腳變?yōu)榈碗娖?10-16 sg-sa 段g段a 驅動輸出 17 dp 小數點驅動輸出 18-25 dig0-dig7數字0 數字7 驅動輸出 26 osc2 振蕩器輸出端 27 osc1 振蕩器輸入端 19 28 reset zlg7289a 的指令結構有三種類型1.不帶數據的純指令指令的寬度為8 個 bit 即微處理器需發(fā)送8 個clk 脈沖2.帶有數據的指令寬度為16 個bit 即微處 理器需發(fā)送16 個clk 脈沖3.讀取鍵盤數據指令寬度為16 個bit 前8 個為微處 理器發(fā)送到zlg7289a 的指令后8 個bit 為zlg7289a 返回的鍵盤代碼執(zhí)行此指 令時zlg7289a 的data 端在第9 個clk 脈沖的上升沿變?yōu)檩敵鰻顟B(tài)并與第16 個 脈沖的下降沿恢復為輸入狀態(tài)等待接收下一個指令 串行接口的時序如下圖: 1純指令: data clk cs 1 t 2 t 3 t 圖圖3 3- -2 2 純指令時序圖純指令時序圖 2帶數據指令: data clk cs 4 t 8位指令(高位在前)8位指令(高位在前) 圖圖3 3- -2 2 帶數據指令時序圖帶數據指令時序圖 3讀鍵盤指令: 20 data clk cs 5 t 6 t 7 t 8 t 讀鍵盤指令(8位,高位在前) 輸出鍵盤代碼(8為,高位在前) 圖圖3 3- -3 3 讀鍵盤指令時序圖讀鍵盤指令時序圖 12356 t =50 s,t =t ,t =25 s,t =8 s, (2)zlg7289 的接口電路圖如圖 3-4 所示。 zlg7289a應連接共陰式數碼管應用中無需用到的數碼管和鍵盤可以不連接 省去數碼管和對數碼管設置消隱屬性均不會影響鍵盤的使用如果不用鍵盤則典 型電路中連接到鍵盤的8只10k電阻和8只100k下拉電阻均可以省去如果使用了鍵 盤則電路中的8只10k電阻和8只100k 下拉電阻均不得省略除非不接數碼管否則 串入dp 及sa-sg 連線的8 只電阻均不能省去實際應用中8只下拉電阻和8只鍵盤 連接位選線dig0-dig7的8只電阻位選電阻應遵從一定的比例關系下拉電阻應大 于位選電阻的5倍而小于其50倍典型值為10倍下拉電阻的取值范圍是10k-100k位 選電阻的取值范圍是1k-10k在不影響顯示的前提下下拉電阻應盡可能的取較小 的值這樣可以提高鍵盤部分的抗干擾能力因為采用循環(huán)掃描的工作方式如果采 用普通的數碼管亮度有可能不夠采用高亮或超高亮的型號可以解決這個問題數 碼管的尺寸也不宜選的過大一般字符高度不超過1 英寸如使用大型的數碼管應 使用適當的驅動電路zlg7289a 需要一外接晶體振蕩電路供系統(tǒng)工作其典型值分 別為f=16mhz c=15p如果芯片無法正常工作請首先檢查此振蕩電路在印刷電路板 布線時所有元件尤其是振蕩電路的元件應盡量靠近zlg7289a 并盡量使電路聯(lián)線 最短zlg7289a 的reset 復位端在一般應用情況下可以直接和vcc 相連在需要較 高可靠性的情況下可以連接一外部復位電路或直接由mcu 控制在上電或reset 端由低電平變?yōu)楦唠娖絲lg7289a 大約要經過18-25ms 的時間才會進入正常工作 狀態(tài)上電后所有的顯示均為空所有顯示位的顯示屬性均為顯示及不閃爍當有鍵 按下時key 引腳輸出低電平此時如果接收到讀鍵盤指令。 zlg7289a 將輸出所按下鍵的代碼鍵盤代碼的定義中代碼以10進制表示如果 在沒有按鍵的情況下收到讀鍵盤指令zlg7289a 將輸出0ffh 255程序中盡可能地 減少cpu 對zlg7289a 的訪問次數可以使得程序更有效率因為芯片直接驅動led 數碼管顯示電流較大且為動態(tài)掃描方式故如果該部分電路電源連線較細較長可 能會引入較大的電源噪聲干擾在電源的正負極并入一47u 到220u的電容可以提 高電路抗干擾的能力注意如果有2 個鍵同時按下zlg7289a 將只能給出其中一個 21 鍵的代碼因此zlg7289a不適于應用在需要2 個或2 個以上鍵同時按下的場合。 22 圖圖 3 3- -4 4 單片機與單片機與 zlg7289zlg7289 連接電路連接電路 23 3.33.3 幅度控制模塊幅度控制模塊 3.3.13.3.1 單片機與單片機與 dac0832dac0832 的接口的接口 由于 d/a 轉換器與單片機連接時,單片機是靠指令輸出數字量供數模轉換之 用, 而指令送出的數據在數據總線上的時間是短暫的, 所以在 dac 和單片機之間, 需要有數據寄存器來保持單片機計算機輸出的數據,供 dac 轉換使用。目前生產 的 dac 芯片分為兩類,一類芯片內部設置有數據寄存器,不需要外加電路就可以 直接與微型計算機接口。另一類芯片內部沒有數據寄存器,輸出信號隨數據輸入 線的狀態(tài)變化而變化,因此不能直接與微型計算機接口,必須通過并行接口與微 型計算機接口。dac0832 是具有 20 條引線的雙列直插式 cmos 器件,它內部具有 兩級數據寄存器,完成 8 位電流 d/a 轉換。故不需要外加電路。因此單片機與 dac0832 連接方式如圖 3-5 圖圖 3 3- -5 5 d/ad/a 接線圖接線圖 3.3.3.3. 2dac08322dac0832 與運放的連接與運放的連接 1. 在本設計中的運放的連接方式第一部分如圖 3-6 24 圖圖 3 3- -6 6 三三運放連接圖運放連接圖 上圖 3-5 中的三個運放實現的功能分為:u6 作為一個反向比例器,u5 也是 一個反向比例器,然而 u4 作為一個加法器,其理論的計算分析見第二章的第四 節(jié)電路計算分析。實際上 uout3 的輸出結果為 uout1 與 uout2 的和。 2. 本設計中的運放的連接的第二部分如圖 3-7 圖圖 3 3- -7 7 直流偏移調節(jié)運放連接圖直流偏移調節(jié)運放連接圖 該電路由 102 電位器串接 2 個 1k電阻實現調節(jié)直流偏移,電位器觸頭在最右 端和最左端時,電位器輸出的電壓分別為-5v 和+5v,電位器的電壓與 0 u通過一 25 個加法器后,實現直流偏移的調節(jié)。 2電路性能指標分析 用于調壓的 dac0832 的參考電壓是 12v,所以,峰峰值可以調節(jié)到的最大值 為 12v,由于運放的電源均為12v,故均未達到飽和。 通過 1k電位器與兩個 1k的電阻進行直流偏移的調節(jié)。當電位器的滑動 觸頭分別位于最右端與最左端時,輸出電壓分別為-5v 和+5v,電位器的電壓與 輸出的電壓通過一個加法器實現直流偏移的調節(jié)。 由于 dac0832 存在的非線性,輸出信號的幅值存在一定的誤差。 由上述計算可知, 該電路產生波形的峰峰值和直流偏移調節(jié)的范圍達到并超過了 題目要求的范圍。 26 4 4 系統(tǒng)軟件設計系統(tǒng)軟件設計 4.14.1 系統(tǒng)軟件設計方案系統(tǒng)軟件設計方案 51 單片機系列的編程語言常用的有兩種,一種是匯編語言,一種是 c 語言。 匯編語言,是一種功能很強的程序設計語言,也是利用計算機所有硬件 特性并能直接控制硬件的語言。匯編語言直接同計算機的底層軟件甚至硬 件進行交互,它具有如下一些優(yōu)點:(1)能夠直接訪問與硬件相關的存儲器 或 i/o 端口;(2)能夠不受編譯器的限制,對生成的二進制代碼進行完全的 控制;(3)能夠對關鍵代碼進行更準確的控制,避免因線程共同訪問或者硬 件設備共享引起的死鎖;(4)能夠根據特定的應用對代碼做最佳的優(yōu)化,提 高運行速度;(5)能夠最大限度地發(fā)揮硬件的功能。同時還應該認識到,匯 編語言是一種層次非常低的語言,它僅僅高于直接手工編寫二進制的機器 指令碼,因此不可避免地存在一些缺點:(1)編寫的代碼非常難懂,不好維 護;(2)很容易產生 bug,難于調試;(3)只能針對特定的體系結構和處理器 進行優(yōu)化;(4)開發(fā)效率很低,時間長且單調。 c 語言,是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯 編語言的特點。它可以作為工作系統(tǒng)設計語言,編寫系統(tǒng)應用程序,也可以作為 應用程序設計語言,編寫不依賴計算機硬件的應用程序。因此,它的應

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論