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