機械工程學院 課程設計
課程設計任務書 | | | | | | | | | | | 2011年 11 月 28日—— 2011年 12 月 9 日 | | | | - 以單片機為核心,經過D/A轉換和放大電路的處理,最后輸出信號;
- 要求能輸出正弦波、三角波、鋸齒波和方波四種信號;
- 輸出信號可以通過按鍵來改變
- 完成系統電路設計;
- 完成系統軟件設計;
- 完成系統Proteus下的仿真。
5)完成課程設計報告。 | | 時間:二周 - 方案設計 2天
- 電路設計 2天
- 軟件設計 3天
- 軟、硬件聯調 2天
- 系統仿真 2天
- 答辯 1天
- 完成報告 2天
| | | | | | 平時考勤:20% 設計:30% 仿真:20% 答辯:10% 設計報告:20% 共計100分。 |
目錄 目 錄 摘 要 4 第一章 緒論 5 1.1單片機概述 5 1.2信號發生器的分類 5 1.3研究內容 5 第二章 函數信號發生器設計 6 2.1課程設計的目的 6 2.2課程設計要求 6 第三章 設計方案 7 3.1系統主要功能 7 3.2系統硬件構成及功能 7 2.2.1 AT89C52單片機及其說明 7 3.2.2資源分配 10 3.2.3 D/A轉換模件部件 11 3.2.4 外部控制模塊部件 74LS22 12 3.2.5 放大部分 12 3.3系統軟件設計及接口電路 13 3.3.1 信號頻率數據采集 13 3.3.2 正弦波產生程序 13 3.3.3 三角波產生程序 14 3.3.4方波產生程序 14 3.3.5 鋸齒波產生程序.......... 15 3. 3. 6信號放大模塊設計...................................................................................15 3. 3. 7 數模轉換模塊設計..................................................................................16 第四章 仿真圖及及結果分析...................................................................................................17 4.1波形發生器的調試與測試.............................................................................17 4.2仿真結果圖.....................................................................................................18 第五章 總結與展望...................................................20 參考文獻 21 附錄一 元器件清單 22 附錄二 程序清單 23 附錄三 電路原理圖...................................................30
摘要 本次作品是一個基于單片機設計的函數信號發生器。函數信號發生器的設計方法有多種,利用單片機設計的函數信號發生器具有編程靈活,功能更以擴充等實際的優點。利用單片機設計的函數信號發生器能夠產生正弦波,鋸齒波,三角波,方波,并實現對頻率和占空比的調節,以及液晶屏顯示波形名稱和波形頻率,波形的切換和頻率的調節以及占空比的改變都可以用按鍵實現。在編程語言上,我們選擇自身比較熟悉的 C語言,這樣在后期波形的調試及與硬件銜接方面更容易發揮出自身優勢。經過設計及后期長時間的調試,設計的所有功能均已實現。 關鍵詞:單片機,函數發生器,液晶LCD
第一章 緒論 1.1單片機概述 隨著大規模集成電路技術的發展,中央處理器(CPU)、隨機存取存儲器(RAM)、只讀存儲器(ROM)、(I/O)接口、定時器/計數器和串行通信接口,以及其他一些計算機外圍電路等均可集成在一塊芯片上構成單片微型計算機,簡稱為單片機。單片機具有體積小、成本低,性能穩定、使用壽命長等特點。其最明顯的優勢就是可以嵌入到各種儀器、設備中,這是其他計算機和網絡都無法做到的[9,10]。 1.2信號發生器的分類 信號發生器應用廣泛,種類繁多,性能各異,分類也不盡一致。按照頻率范圍分類可以分為:超低頻信號發生器、低頻信號發生器、視頻信號發生器、高頻波形發生器、甚高頻波形發生器和超高頻信號發生器。按照輸出波形分類可以分為:正弦信號發生器和非正弦信號發生器,非正弦信號發生器又包括:脈沖信號發生器,函數信號發生器、掃頻信號發生器、數字序列波形發生器、圖形信號發生器、噪聲信號發生器等。按照信號發生器性能指標可以分為一般信號發生器和標準信號發生器。前者指對輸出信號的頻率、幅度的準確度和穩定度以及波形失真等要求不高的一類信號發生器。后者是指其輸出信號的頻率、幅度、調制系數等在一定范圍內連續可調,并且讀數準確、穩定、屏蔽良好的中、高檔信號發生器。 1.3 研究內容 本文是做基于單片機的信號發生器的設計,將采用編程的方法來實現三角波、鋸齒波、矩形波、正弦波的發生。根據設計的要求,對各種波形的頻率和幅度進行程序的編寫,并將所寫程序裝入單片機的程序存儲器中。在程序運行中,當接收到來自外界的命令,需要輸出某種波形時再調用相應的中斷服務子程序和波形發生程序,經電路的數/模轉換器和運算放大器處理后,從信號發生器的輸出端口輸出 第二章:函數信號發生器的設計 設計一個基于單片機的函數信號發生器,該函數信號發生器可以輸出四種波形,有正弦波,鋸齒波,三角波,方波。在此基礎上進一步實現對波形頻率和占空比的調節,并用液晶屏分兩行顯示波形名稱和波形頻率。 2.1課程設計的目的: 1、鞏固、加深和擴大單片機應用的知識面,提高綜合及靈活運用所學知識解決實際課題設計的能力。 2、培養針對課題需要,選擇和查閱有關手冊、圖表及文獻資料的能力,提高組成系統、編程、調試的動腦動手能力。 3、通過對課題設計方案的分析、選擇、比較,熟悉運用單片機系統開發、軟硬件設計的方法內容及步驟。 4、掌握DAC0832,LM324,74LS22的接口電路,及使用方法。 5、熟悉掌握函數信號發生器的工作原理。 2.2 課程設計要求: 2、 寫出完整的設計任務書:課題的名稱、系統的功能、硬件原理圖、軟件框圖、元件清單、程序清單、參考資料。 3、輸出幾種波形,實現對頻率和占空比的調節,以1HZ作為步進進行調節。 第三章:設計方案 3.1 系統主要功能 該函數信號發生器可以輸出四種波形,有正弦波,鋸齒波,三角波,方波。在此基礎上進一步實現對波形頻率和占空比的調節,并用液晶屏分兩行顯示波形名稱和波形頻率。 3.2 系統硬件構成及功能 函數信號發生器的設計總體框圖如圖所示,主要有單片機AT89C52,電源,鍵盤模塊,LCD1602顯示模塊構成。 按案件模塊:由5個復位開關與74LS21組成的系統通過對單片機傳輸中斷信號來實現波形切換及頻率和占空比的調節。 顯示模塊:用LCD1602,分行顯示波形類型和波形頻率的顯示。 電源模塊:電源模塊有220V市變電壓經變壓,整流,穩壓得到+ -5V, + -12V的電壓,維持系統正常工作。 系統的總體框圖如圖1所示: 圖1系統總體框圖
3.2.3 D/A轉換模塊部件 DAC0832芯片原理管腳功能介紹(如圖6所示) 圖3 DAC0832管腳圖 DI7~DI0:8位的數據輸入端,DI7為最高位。 ILE:數據鎖存允許控制信號輸入線,高電平有效。 CS:選片信號輸入線(選通數據鎖存器),低電平有效。 WR1:數據鎖存器寫選選通輸入線,負脈沖有效,由ILE、CS、WR1的邏輯組合產生LE1,當LE1為高電平時,數據鎖存器狀態隨輸入數據線變化,LE1的負跳變時將輸入數據鎖存。 XFER:數據傳輸控制信號輸入線,低電平有效,負脈沖有效。 WR2:DAC寄存器選通輸入線,負脈沖有效,由WR2、XFER的邏輯組合產生LE2,當LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負跳變時將數據鎖存器的內容打入DAC寄存器并開始D/A轉換。 IOUT1:模擬電流輸出端1,當DAC寄存器中數據全為1時,輸出電流最大,當 DAC寄存器中數據全為0時,輸出電流為0。 IOUT2:模擬電流輸出端2, IOUT2與IOUT1的和為一個常數,即IOUT1+IOUT2=常數。 RFB:反饋電阻引出端,DAC0832內部已經有反饋電阻,所以 RFB端可以直接接到外部運算放大器的輸出端,這樣相當于將一個反饋電阻接在運算放大器的輸出端和輸入端之間。 VREF:參考電壓輸入端,此端可接一個正電壓,也可接一個負電壓,它決定0至255的數字量轉化出來的模擬量電壓值的幅度,VREF范圍為(+10~-10)V。VREF端與D/A內部T形電阻網絡相連。Vcc:芯片供電電壓,范圍為(+5~+15)V。 AGND:模擬量地,即模擬電路接地端。 DGND:數字量地。 3.2.4 外部控制模塊部件 74LS22 
圖4 74LS22為四輸入雙與門 A1,B1,C1,D1為第一個與門的輸入,Y1為第一個與門的輸出。 A2,B2,C2,D2為第一個與門的輸入,Y2為第一個與門的輸出。在此系統中用來給單片機提供中斷信號。 3.2.5 放大部分 LM324 LM324引腳圖(管腳圖) 圖5 LM324引腳圖 簡介: LM324系列器件為價格便宜的帶有真差動輸入的四運算放大器。與單電源應用場合的標準運算放大器相比,它們有一些顯著優點。該四放大器可以工作在低到3.0伏或者高到32伏的電源下,靜態電流為MC1741的靜態電流的五分之一。共模輸入范圍包括負電源,因而消除了在許多應用場合中采用外部偏置元件的必要性。它有5個引出腳,其中“+”、“-”為兩個信號輸入端,“V+”、“V-”為正、負電源端,“Vo”為輸出端。兩個信號輸入端中,Vi-(-)為反相輸入端,表示運放輸出端Vo的信號與該輸入端的位相反;Vi+(+)為同相輸入端,表示運放輸出端Vo的信號與該輸入端的相位相同。 3.3 系統的軟件設計及接口電路 3.3.1 信號頻率數據采集 本程序通過外部中斷,接收減頻或加頻按鍵,單片機內部對接受的值經過運算得出波形的輸出延時,從而產生頻率的改變。電路較為簡單,成本較低。 3.3.2 正弦波產生程序 輸入正弦波的采樣點,計算出256個(一個周期內)正弦波信號值。然后通過輸出的兩點間的延時來實現調頻。依次循環輸出,可得出正弦波。 采點值放在table2[]中,程序如下: void sin()//正弦波 { unsigned int i; for(i=0;i<256;i++) { DAC0832=table2[ i]; delay(pinlv/256); } } 3.3.3 三角波產生程序 設個自變量i讓它不斷地自加1,直到加到255時,t=i,對t進行不斷地自減1直到減到t=0,然后再不斷地重復上述過程產生三角波。程序如下: void tran()//三角波 { unsigned char i; for(i=0;i<255;i++) { DAC0832=i; delay(pinlv/64); } for(i=255;i>0;i--) { DAC0832=i; delay(pinlv/64); } } 3.3.4 方波產生程序 設個自變量i=0使之延時一段時間,再另i=255時在延時與i=0相同的時間,然后再重復上述過程。程序如下: void fang()//方波 { DAC0832=0; delay(pinlv/2); DAC0832=0xff; delay(pinlv/2); } 3.3.5 鋸齒波產生程序 鋸齒波中的斜線用一個個小臺階來逼近,在一個周期內從最小值開始逐步遞增,當達到最大值后又回到最小值,如此循環,當臺階間隔很小時,波形基本上近似于直線。適當選擇循環的時間,可以得到不同的周期鋸齒波。鋸齒波發生原理與方波類似,只是高低兩個時延的常數不同,所以用延時法,來產生鋸齒波,設個自變量i讓它不斷地自加1,直到叫到255,DAC0832可以又自動歸0,然后再不斷地重復上述過程。程序如下: void jvchi()//鋸齒波 { unsigned char i; for(i=0;i<255;i++) { DAC0832=i; delay(pinlv/256); } } 3.3.6信號放大模塊設計 從單片機中輸出的數字信號經過DAC0832轉換后,由于信號的幅值比較小,所以 需要放大。采用常規的放大方式,采用兩片運放,實現兩級放大,設計的電路如圖6:圖6
圖6放大電路接口 3. 3. 7數模轉換模塊設計 本設計模數轉換采用常見的芯片:DAC0832,本設計采用直通方式進行模數轉換。為了簡潔起見,在仿真圖中采用網絡節點的方式進行連線,從單片機P0口輸出的數據直接連接到模數芯片DAC0832的數據口。如圖:
圖7DA轉換接口電路
第四章 仿真圖及結果分析 4.1波形發生器的調試與測試 本系統是在protues下仿真,使用Keil C編程。從而實現其設計及仿真。 在測試本系統是采用的是將設置的數值與示波器所測值進行對比,進而可以知道本系統的性能。 頻率測試數據: 4.2仿真結果圖 正弦波仿真圖 圖8正弦波圖 三角波仿真圖 圖9三角波圖 鋸齒波仿真圖 圖10鋸齒波圖 方波仿真圖 圖11方波圖 第五章 總結與展望本次的設計中利用AT89C52和DAC0832以及放大器完成電路的設計,用開關來控制各種波形的發生及轉換,用單片機輸出后,經過模數轉換器生成波形,最終可以通過示波器觀察。 在這次的軟件設計中,程序設計采用的是匯編語言。匯編語言具有速度快,可以直接對硬件進行操作的優點,它可以極好的發揮硬件的功能。但是匯編語言也存在編寫的代碼非常難懂,不好維護,很容易產生 bug,難于調試的缺點。因此,在大型程序的設計中,多采用C語言進行程序編譯。C語言簡潔高效,是最貼近硬件的高級編程語言,經過多年的發展,現在已成熟為專業水平的高級語言。而且,現在單片機產品推出時紛紛配套了C語言編譯器,應用廣泛。不過就本次課程設計來說,匯編語言還是適用的。 由于真正意義上的程序設計還不多,因此還不是很得心應手,所以在設計中遇到一些問題和一些難點。比如:在程序設計中如何實現程序結構的最優化,以達到較高的質量。這是以后設計中要注意的問題。 通過這次課程設計,我進一步了解了波形發生器的原理,在實際動手操作過程中,使我接觸了許多我以前沒接觸過的元件,而且重新溫習了剛學不久的匯編語言,使我學得了許多知識,使我獲益匪淺。 這次課程設計,使我的動手能力得到了很大的提高,更使我們懂得理論知識的重要性,沒有理論的指導一切實際行動都是盲目的,且實際操作是我們得到的理論知識得到驗證,更能增加對理論知識的理解。
附錄三 電路原理圖 |