亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9571|回復: 4
打印 上一主題 下一主題
收起左側

基于51單片機的波形發生器的設計論文

[復制鏈接]
跳轉到指定樓層
樓主
ID:374325 發表于 2018-7-19 08:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
目錄
1 引言
1.1 題目要求及分析
1.1.1 示意圖
1.2 設計要求
2 波形發生器系統設計方案
2.1 方案的設計思路
2.2 設計框圖及系統介紹
2.3 選擇合適的設計方案
3 主要硬件電路及器件介紹
3.1 80C51單片機
3.2 DAC0832
3.3 數碼顯示管
4 系統的硬件設計
4.1 硬件原理框圖
4.2 89C51系統設計
4.3 時鐘電路
4.4 復位電路
4.5 鍵盤接口電路
4.7 數模轉換器
5 系統軟件設計
5.1 流程圖:
5.2 產生波形圖
5.2.1 正弦波
5.2.2 三角波
5.2.3 方波
6 結論
主要參考文獻
致謝


1 引言
1.1 題目要求及分析
題目:基于51單片機的波形發生器設計,即由51單片機控制產生正弦波、方波、三角波等的多種波形。
1.1.1 示意圖
圖1:系統流程示意圖

1.2 設計要求
(1) 系統具有產生正弦波、三角波、方波三種周期性波形的功能。
(2) 用鍵盤控制上述三種波形(同周期)的生成,以及由基波和它的諧波(5次以下)線性組合的波形。
(3) 系統具有存儲波形功能。
(4) 系統輸出波形的頻率范圍為1Hz~1MHz,重復頻率可調,頻率步進間隔≤100Hz,非正弦波的頻率按照10次諧波來計算。
(5) 系統輸出波形幅度范圍0~5V。
(6) 系統具有顯示輸出波形的類型、重復頻率和幅度的功能。


2 波形發生器系統設計方案
設計并制作一個波形信號發生器,能夠產生正弦波、方波、三角波的波形,其中不使用DDS和一些專用的波形產生芯片。并讓系統的頻率范圍在1Hz~1MHZ可調節,在頻率范圍在1HZ~10KHz時,步進小于或等于10Hz,在頻率范圍在10KHz~1MHz時,步進小于或等于100Hz,并且電壓在0~5V范圍,能夠實時的顯示波形的類型、頻率和幅值。
2.1 方案的設計思路
以AT89C51單片機作為系統的控制核心,其中P0口接DAC0832作為信號輸入同時進行數模轉換,P1口用來接鍵盤,P2口接LED顯示器,由程序來控制P0口產生的波形,再由按鍵和按鍵次數控制波形的種類、頻率和幅值的大小,并且能夠通過按鍵來控制波形頻率值和幅度值。由運算放大器DAC0832來實現輸出電流到電壓的轉換,即實現數字信號到模擬信號的轉換。另外在LED上顯示實時的頻率值和幅度值,產生的波形在示波器顯示。并且通過按鍵來決定波形數據的存儲方式,在按鍵按下后,就把當時的波形所對應的幅度值、頻率值等參數存儲下來。
波形的合成:在波形的合成時,通過外部中斷高低電平的延時的時間來進行解碼,在采樣的時,對正弦波,三角波,方波都只取了20個采樣點,因為采樣點越少,其頻率能夠達到的值就會越大,合成時就是對幅值點進行一個疊加來輸出一組波形。
2.2 設計框圖及系統介紹
系統主要部分設計框圖如下圖所示:

圖2:框圖設計

2.3 選擇合適的設計方案
方案一:采用模擬分立元件或單片函數發生器就可以產生正弦波、方波、三角波,方法簡單。通過調整外部元件也可以實現輸出頻率的改變,但采用模擬元器件造成元件分散性太大,從而產生的頻率穩定性較差、抗干擾能力低、靈活性較差、而且精度低,不能實現任意波形轉換和波形運算輸出等方面自主控制功能。
方案二:采用專業的鎖相式頻率合成方案,這種鎖相式頻率合成是一種高穩定度和高精確度的大量離散技術,他能夠準確的產生波形,可以很好的解決頻率穩定精確的情況下又要求頻率在較大的范圍內可調的問題。但是頻率受VCO可變頻率范圍上的影響,高低頻率比無法做到很高,還有其只能產生正弦波或方波,不能滿足產生三角波的要求。
方案三:采用AT89C51單片機和數模轉換器DAC0832實現波形的產生。波形的產生方法是用AT89C51單片機執行波形程序,向DAC0832轉換器的輸入端輸入相應的數據,從而在DA轉換電路輸出端再通過運放電路轉換得到相應的電壓波形。在AT89C51的P1口接按鍵控制波形的種類和波形的頻率,每種波形對應一種按鍵方式。此方案原理簡單,同時適合操作,實現起來也相對較容易。
經比較,方案三的設計能夠更好的實現和完成題目的要求,產生的三種波形和頻率可由按鍵控制,并通過按鍵改變來轉換不同的波形,也能夠在示波器上顯示出所要求的波形。波形的頻率步進也可以實現調節,具有線路簡單、可行性高、符合設計要求等優點。在本設計的基礎上,加上LED數碼顯示管,從而能夠在LED上顯示出頻率值、幅度值信息。輸出的波形也較穩定,精度較高,通過濾波電路使得系統的抗干擾性增強,電路簡單,性價比高。綜上所述,我們選擇了第三種方案。


3 主要硬件電路及器件介紹
3.1
80C51單片機

圖3:8051引腳圖

80C51單片機按功能劃分,由8個部件組成:微處理器(CPU)、數據存儲器(RAM)、程序存儲器(ROM/EPROM)、四個I/O口(P0口、P1口、P2口、P3口)、串行口、定時器/計數器、中斷系統及特殊功能寄存器(SFR)的集中控制方式[1]。
各功能部件的介紹:
(1) 數據存儲器(RAM):片內為128個字節單元,片外最多可擴展至64K字節。用以存放數據,我們稱之為片內數據存儲器。
(2) 程序存儲器(ROM/EPROM):片內ROM為4K,片外最多可擴展至64K字節。
(3) 中斷系統:具有5級中斷的中斷系統,2級中斷優先權。
(4) 定時器/計數器:2個16位的定時器/計數器,具有四種工作方式。
(5) 串行口:1個全雙工的串行通信接口,具有四種工作方式。
(6) 特殊功能寄存器(SFR)共有21個,每個寄存器占一個存儲單元。
(7) 微處理器:為8位CPU,內部具有一個8位CPU(位處理器),不僅可處理字節數據,還可以進行位變量的處理。
另外還有四個8位雙向并行的輸入/輸出(I/O)端口,每個端口都有八條引線和一個輸出驅動器和一個輸入緩沖器。這四個端口的功能不完全相同。P0口既可作一般I/O端口使用,又可作地址/數據總線使用;P1口是一個準雙向并行口,作通用并行I/O口使用;P2口除了可作為通用I/O使用外,還可在CPU訪問外部存儲器時作高八位地址線使用;P3口是一個多功能口除具有準雙向I/O功能外,還具有第二功能。
控制引腳介紹:
(1) 電源:單片機使用的是5V電源,其中40引腳接電源正級,20引腳接地。
(2) 時鐘引腳XTAL1、XTAL2時鐘引腳外接晶體與片內反相放大器構成了振蕩器,產生片內CPU時鐘控制信號。此引腳也可外接晶體振蕩器。
(3) RST:當時鐘電路開始工作時,在此引腳上出現24個時鐘周期以上的高電平能夠使單片機復位。另外我們在此引腳與VCC之間連接一個24兆歐的下拉電阻,在外接電路之間連接二個36微法的電容,可以保證有效的復位。在單片機正常工作時,此引腳應為≤0.5V低電平。
(4) ALE:當訪問外部程序存儲器時ALE(地址鎖存允許)輸出脈沖用于16位地址中的低8位的鎖存信號,以便P0口實現地址/數據復用。當不去訪問外部鎖存器時,ALE端將輸出一個1/6的時鐘頻率正脈沖信號輸出,此頻率約為時鐘振蕩器的1/6。但是每當訪問外部數據存儲器時,在兩個機器周期中ALE只出現一次,即ALE會跳過一個脈沖。因此,嚴格來說,用戶不能用ALE做時鐘源或定時。ALE端可以驅動8個TTL負載
(5) /PSEN(29腳):此引腳是單片機訪問片外ROM存儲器的讀選通信號。在執行訪問片外ROM的MOVC指令期間,每個機器周期PSEN上產生一個負脈沖,用于對于片外ROM數據存儲器選通,這兩次有效的/PSEN信號不出現。其他情況下,/PSEN線均為高電平封鎖狀態。
(6) /EA/VPP(31腳):當EA端保持高電平時并且程序地址小于4KB時,讀取內部存儲器指令,但在PC值超過4KB程序地址時則執行外部存儲器內的程序;當/EA保持低電平時,不管地址大小則只訪問外部程序存儲器,一律讀取外部程序存儲器指令[2]。

3.2 DAC0832
圖4:DAC0832引腳圖

DAC0832是8分辨率的D/A轉換芯片,集成電路內有兩級輸入寄存器。由8位輸入鎖存器、8位DAC 寄存器、8 位D/A 轉換器及轉換控制電路四部分構成。8位輸入鎖存器用于存放主機送來的數字量,使輸入數字得到緩沖和鎖存,并加以控制。DAC0832輸出的是電流,一般要求輸出是電壓,所以還必須經過一個外接的運算放大器轉換成電壓[3]。DAC0832芯片具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉換等)。
DAC0832的引腳功能如下:
(1) D0~D7:數字信號輸入端。
(2) ILE:輸入寄存器允許,高電平有效。
(3) CS:片選信號,低電平有效。
(4) WR1:寫信號1,低電平有效。
(5) XFER:傳送控制信號,低電平有效。
(6) WR2:寫信號2,低電平有效。
(7) IOUT1、IOUT2:DAC電流輸出端。
(8) RFB:是集成在片內的外接運放的反饋電阻。
(9) VREF:基準電壓(-10~10V)。
(10) Vcc:是源電壓(+5~+15V)。
(11) AGND:模擬地 NGND:數字地,可與AGND接在一起使用。
3.3 數碼顯示管
通過控制7個筆畫段的亮或暗,和控制一個小數點的亮和暗來實現數碼管顯示。LED 顯示器有共陰極和共陽極2 種形式。共陽極顯示器是發光二極管的陽極連接在一起,當需要顯示某字符時,只需要將共陽極端接高電平,根據顯示需要讓a-h中某些位置接低電平。共陰極顯示器是發光二極管的陰極連接在一起,當需要顯示某字符時,只需要將共陰極端接低電平,a-h 中某些位接高電平即可。
顯示器的工作方式分為靜態顯示方式和動態顯示方式兩種:
(1) 靜態顯示方式就是顯示器在顯示一個字符時,相應的發光二極管恒定的導通或截止,例如a、b、c、d、e、f導通,g截止時顯示“0”,這種使顯示器顯示字符的字形數據常稱為段數據。靜態顯示方式的每一個七段顯示器,需要由一個8 位并行口控制。優點是顯示穩定,提高了工作效率,缺點是位數較多時顯示口隨之增加。
(2) 動態顯示方式是一位一位的輪流點亮各位顯示器,對于每一位顯示器來說,每隔一段時間點亮一次。顯示器的亮度既與導通電流有關,也與點亮時間和間隔時間的比例有關。調整電流和時間參數可以實現亮度較高較穩定的顯示,如顯示器的位數不大于8位,則控制顯示器公共極的電位只需要一個8位口(位數據口),控制字形也需要一個8位口(段數據口)。要使顯示管顯示不同的數字或者字符,需要使端口輸出相應的字型碼


4 系統的硬件設計
4.1
硬件原理框圖
對于該波形發生器的設計,我們采用了以AT89C51 單片機芯片作為核心處理器,編程實現各種不同類型信號的產生,最后通過D/A轉換輸出到示波器。結構簡單,思路井井有條。根據設計的基本要求,我們又把其細分為不同的功能模塊,各個功能模塊相互聯系,相互協調,通過單片機程序構成一個統一的整體。其整體電路原理框圖如圖5 所示:


圖5:電路原理框圖(見附件)

4.2 89C51系統設計
89C51單片機是該波形發生器的核心,具有2個定時器,32個并行I/O口,1個串行I/O口,5個中斷源[4]。由于本設計功能簡單,數據處理容易,數據存儲空間也足夠,因為我們采用了片選法選擇芯片,進行芯片的選擇和地址的譯碼。在單片機最小系統中,單片機從P1口接收來自鍵盤的信號,并通過P0口輸出控制信號,通過DA轉換芯片最終由示波器顯示輸出波形,P2控制顯示器段選碼,P3口中的P3.4-P3.6通過74LS138譯碼器控制位選碼,輸出顯示信息。如果有鍵盤按下,則在控制器端產生一個讀信號,使單片機讀入信號,如果有信號輸出,則在寫控制端產生一個寫信號,并通過示波器和顯示器顯示相應的信息。
單片機引腳分配如下:
RST:用于復位電路;
XTAL1,XTAL2:外接晶振,產生時鐘信號;
P0 口:鍵盤輸出信號。
P1 口:8 位數字信號輸出,外接DAC0832; 具體為:P1.0、P1.1 波形選擇;P1.2、P1.3、P1.4 頻率個位,十位,百位調節;P1.5 頻率加減控制;P1.6 跳出循環。
P2 口:LED 顯示器段選碼;
P3 口:P3.0 鎖存器74HC573 片選信號;P3.2 中斷控制;P3.4-P3.6 為74LS138 輸入信號,譯碼控制LED 顯示器位選。P3.7 為74LS138 片選碼。
4.3 時鐘電路
單片機的時鐘信號通常用兩種電路形式得到:內部振蕩和外部振蕩方式。在引腳XTAL1 和XTAL2 外接晶體振蕩器,構成了內部振蕩方式。由于單片機內部有一個高增益的反相放大器,當外接晶振后,就構成了自激振蕩,并產生振動時鐘脈沖。晶振通常選用6MHZ、12MHZ、24MHZ。我們選擇了24MHZ和晶振分別接引腳XTAL1 和XTAL2,電容C1,C2 均選擇為30pF,對振蕩器的頻率有穩定作用,當頻率較大時,正弦波方波、三角波中每一點的延時時間為幾微秒,故延時時間還要加上指令時間才能獲得較大的頻率波形。

圖6:時鐘電路

4.4 復位電路
復位引腳RST 通過一個施密特觸發器與復位電路相連,施密特觸發器用來抑制噪聲。復位電路通常采用上電自動復位和按鈕復位兩種方式。在每個機器周期的S5P2,施密特觸發器的輸出電平由復位電路采樣一次,然后才能得到內部復位操作所需要的信號。本設計選擇了按鍵復位如圖7, 在系統運行時,按一下開關,就在RST 斷出現一段高電平,使圖6 時鐘電路圖器件復位。此時ALE、PSEN、P0、P1、P2、P4 輸出高電平,在RST 上輸入返回低電平以后,就退出復位狀態開始工作。

圖7:按鍵復位
4.5 鍵盤接口電路
常用的鍵盤電路一般為矩陣式,但是對于此設計,為了方便程序的簡單化,我們采用了一般的鍵盤接口輸出信號。具體實現方法:P1.0、P1.1用來作為波形選擇,其中當P1.0=0,P1.1=0 輸出正弦波,當P1.0=0,P1.1=1 輸出三角波,當P1.0=1,P1.1=1 輸出方波。P1.2、P1.3、P1.4 用來作為頻率個位,十位,百位調節;P1.5 控制頻率加減;P1.6 跳出循環。

圖8:鍵盤接口電路

4.6 LED顯示電路
本設計選擇了8位共陰極數碼管如圖9,它的8個發光二極管的陰極(二極管正端)連接在一起,通常公共陰極接低電平,其它管腳接驅動電路輸出端。當某段驅動電路的輸出端為低電平時,則該端所連接的字段導通并點亮,根據發光字段的不同組合可顯示出各種數字或字符。此時,要求段驅動電路能吸收額定的位置導通電流,還需根據外接電源及額定位置導通電流來確定相應的限流電阻。顯示電路用于顯示信號的波形種類和信號的頻率,并且使系統能根據按鍵實時顯示相關信息。該系統中添加74LHC573 鎖存器,用于驅動數碼顯示管,使其更易于控制,增加顯示的準確性。使用74LS138 譯碼器,利用P3.4-P3.6 控制數碼管的位選。

1



圖9:數碼管顯示電路

4.7 數模轉換器
由于單片機輸出的是數字信號,因為要得到模擬信號的波形就必須對其進行數模換。我們采用了DAC0832 數模轉換器,該芯片由8 位輸入鎖存器、8 位DAC 寄存器、8 位D/A 轉換器及轉換控制電路四部分構成。由于其輸出為電流輸出,因為外加運算放大器OP07 使之裝換為電壓輸出。最后通過示波器顯示輸出的波形。

圖10:D/A轉換電路


5 系統軟件設計
5.1
流程圖:

圖11:流程圖(見附件)

5.2 產生波形圖
本設計將各種波形的數據通過P1.0 口和P1.1 口選擇,送往在單片機的程序儲存器里,通過改變信號的頻率的個位,十位,百位來改變這個頻率,然后計算其技術初值,開啟中斷,通過改變D/A 轉換器輸出波形。
5.2.1 正弦波
圖12:仿真正弦波

正弦波程序如下:
void zhengxuanbo()
         {
           uint k=0;
           while(1)
          {
             P0=table[k++];
             delay(t);
             xianshiqi(t);
             if(k==182)
             {
              k=0;
            }
            if(s5==0)
            {
              t=t+1;
            }
           if(s6==0)
            {
               t=t-1;
             }
           }
}
5.2.2 三角波
產生三角波的原理:三角波產生是通過P0口將00H送入寄存器A中,DAC0832輸出A中的內容,通過A中數值的加1遞升,同時延時,當A中的內容為0FF時,A中的內容減1遞減,從而循環產生三角波[5]。

圖13:仿真三角波

三角波程序:void sanjiaobo()  
{
            uint j=0;
              while(1)
            {
                            P0=j;
                            delay(t);
                            j=j+1;
              P0=j;
              delay(t);
                 xianshiqi(t);
                            if(j==256)
                            {
                             if(j!=0)
                             {
                                         j=j-1;
                                         P0=j;
                                           delay(t);
                                           xianshiqi(t);
                      if(s5==0)
                                {
                                  t=t+1;
                                }
                                if(s6==0)
                                {
                                 t=t-1;
                                }
                          }
                            }
                 if(s5==0)
                 {
                   t=t+1;
                  }
                 if(s6==0)
                 {
                   t=t-1;
                 }
               }
}
5.2.3 方波
產生方波的原理:方波產生是通過P0口將00H輸出給DAC0808,輸出對應模擬量,然后讀取P2口的狀態,取反后作為延時常量,延時時間到,將FFH輸出時,同樣輸出對應模擬量,再延時,從而得到方波。

圖14:仿真方波

方波程序:void fangbo()   
{
            while(1)
           {
            P0=256;
                      delay(t);
                       P0=0;
                      delay(t);
                      xianshiqi(t);
            if(s5==0)
              {
                t=t+1;
              }
            if(s6==0)
             {
               t=t-1;
             }
           }
}
6  結論
  在三個多月的時間里,終于順利地完成了此次論文設計,并從中學習到了很多的知識和經驗,對單片機以及C語言有了更深刻的了解。本次課程設計也發現了許多問題,此次單片機的設計硬件電路較為簡單,而程序的設計在當中占據很重要的部分,它考驗我們靈活的運用所學知識,培養了我們在遇到問題善于解決的良好學習態度,使我認識到設計思路更節省了時間。靈活運用,以書本知識為基礎靈活的擴展,學習前人的經驗,向高層次邁進。當然還是存在不足的地方,例如當頻率過小的時候矩形波會有些失真,轉換器轉換時可以加一個鎖存器,放大電路設計上還有待進一步改進,使其具有更強的輸出能力等。


完整的Word格式文檔51黑下載地址:
基于51單片機的波形發生器的設計.doc (718.3 KB, 下載次數: 139)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:643049 發表于 2019-11-16 11:00 | 只看該作者
老哥穩
回復

使用道具 舉報

板凳
ID:598535 發表于 2020-8-31 14:34 | 只看該作者
有完整的源程序嗎,新手一枚
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表