找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5014|回復(fù): 3
收起左側(cè)

基于單片機(jī)的簡易信號發(fā)生器的課程設(shè)計(jì)論文

[復(fù)制鏈接]
ID:305306 發(fā)表于 2018-4-10 17:30 | 顯示全部樓層 |閱讀模式
機(jī)械工程學(xué)院
設(shè)計(jì)
基于AT89C52單片機(jī)的
簡易函數(shù)信號發(fā)生器設(shè)計(jì)
業(yè)
機(jī)械電子工程
機(jī)電08101
*
指導(dǎo)教師
陳衛(wèi)國

課程設(shè)計(jì)任務(wù)書
姓   名
譚鵬輝
學(xué) 號
51
班 級
機(jī)電08101班
課程名稱
單片機(jī)課程設(shè)計(jì)
課程性質(zhì)
必修
設(shè)計(jì)時(shí)間
2011年 11 月 28日——  2011年 12 月 9 日
設(shè)計(jì)名稱
基于AT89C52單片機(jī)的簡易函數(shù)信號發(fā)生器設(shè)計(jì)
設(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)告。   
計(jì)劃與進(jìn)度
時(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ù):
設(shè)定頻率(HZ)
示波器測試頻率(HZ)
相對誤差%
3.9
3.96
1.5
7.8
7.93
1.28
15.63
16.13
3.19
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)證,更能增加對理論知識的理解。

附錄三 電路原理圖
                             圖12 電路原理圖


完整的Word格式文檔51黑下載地址(含源碼)
基于AT89C52單片機(jī)簡易函數(shù)信號發(fā)生器設(shè)計(jì).doc (768 KB, 下載次數(shù): 80)


評分

參與人數(shù) 2黑幣 +55 收起 理由
DPW + 5 贊一個(gè)!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:276332 發(fā)表于 2018-4-26 10:26 | 顯示全部樓層
很不錯(cuò),每個(gè)都有不同的解決方法,值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:440374 發(fā)表于 2018-12-5 20:11 | 顯示全部樓層
不錯(cuò),看了很有幫助
回復(fù)

使用道具 舉報(bào)

ID:840663 發(fā)表于 2020-12-15 09:04 | 顯示全部樓層
不錯(cuò)   很有幫助
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表