欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

基于單片機(jī)的多種波形發(fā)生器設(shè)計(jì)論文

[復(fù)制鏈接]
ID:339208 發(fā)表于 2018-5-27 17:43 | 顯示全部樓層 |閱讀模式
目錄

1前言
2硬件電路設(shè)計(jì)
2.1主要芯片介紹
2.1.1單片機(jī)AT89C52
2.1.2 DAC0832數(shù)模轉(zhuǎn)換器
2.1.3其他器件
2.2硬件連接圖
2.2.1主控電路
2.2.2 獨(dú)立式鍵盤(pán)
2.2.3數(shù)模轉(zhuǎn)換電路
2.2.4驅(qū)動(dòng)電路
2.3總電路圖
3 程序設(shè)計(jì)
3.1主流程圖的設(shè)計(jì)
3.2 子程序的設(shè)計(jì)
3.2.1鋸齒波的產(chǎn)生
3.2.2三角波的產(chǎn)生
3.2.3梯形波的產(chǎn)生
3.2.4正弦波的產(chǎn)生
3.2.5主程序
4應(yīng)用軟件
4.1 Proteus
4.2 KeilC51
5調(diào)試與仿真結(jié)果
6總結(jié)
參考文獻(xiàn)



1前言

在電子工程、通信工程、自動(dòng)控制、遙測(cè)控制、測(cè)量?jī)x器、儀表和計(jì)算機(jī)等技術(shù)領(lǐng)域,經(jīng)常需要用到各種各樣的信號(hào)波形發(fā)生器。隨著集成電路的迅速發(fā)展,用集成電路可很方便地構(gòu)成各種信號(hào)波形發(fā)生器。用集成電路實(shí)現(xiàn)的信號(hào)波形發(fā)生器與其它信號(hào)波形發(fā)生器相比,其波形質(zhì)量、幅度和頻率穩(wěn)定性等性能指標(biāo),都有了很大的提高。

    波形發(fā)生器是能夠產(chǎn)生大量的標(biāo)準(zhǔn)信號(hào)和用戶定義信號(hào),并保證高精度、高穩(wěn)定性、可 重復(fù)性和易操作性的電子儀器。函數(shù)波形發(fā)生器具有連續(xù)的相位變換、和頻率穩(wěn)定性等優(yōu)點(diǎn),不僅可以模擬各種復(fù)雜信號(hào),還可對(duì)頻率、幅值、相移、波形進(jìn)行動(dòng)態(tài)、及時(shí)的控制,并能夠與其它儀器進(jìn)行通訊,組成自動(dòng)測(cè)試系統(tǒng),因此被廣泛用于自動(dòng)控制系統(tǒng)、震動(dòng)激勵(lì)、通訊和儀器儀表領(lǐng)域。

2硬件電路設(shè)計(jì)

   本方案是基于AT89C52與DAC0832的單緩沖方式接口電路來(lái)設(shè)計(jì)。單緩沖式接口電路具有過(guò)程簡(jiǎn)單,容易實(shí)現(xiàn)。由于本設(shè)計(jì)運(yùn)用匯編的編程語(yǔ)言,導(dǎo)致用獨(dú)立式鍵盤(pán)來(lái)實(shí)現(xiàn)簡(jiǎn)單控制。本方案所產(chǎn)生的信號(hào)頻率穩(wěn)定性高,精確度高。而且在硬件方面它所選的元器件比較常見(jiàn)。其主要流程圖和模塊如圖1所示。

圖1軟硬件結(jié)合設(shè)計(jì)框圖

2.1主要芯片介紹

2.1.1單片機(jī)AT89C52

   AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),



片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。

   AT89C52為8位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52相同,其主要用于會(huì)聚調(diào)整時(shí)的功能控制。功能包括對(duì)會(huì)聚主IC 內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會(huì)聚調(diào)整控制,會(huì)聚測(cè)試圖控制,紅外遙控信號(hào)IR的接收解碼及與主板CPU通信等。圖2為AD89C52單片機(jī)的管腳圖。

圖2 AT89C52管腳圖

其各管腳功能為:

    P0口:P0口是一組8位漏極開(kāi)路型雙向I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門(mén)電路,對(duì)端口P0寫(xiě)“1”時(shí),可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。在Flash 編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。

    P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。與AT89C51 不同之處是,P1.0 和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(P1.0/T2)和輸入。   

    P2口:P2 是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2的輸出緩沖級(jí)



可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)端口P2寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX @RI 指令)時(shí),P2口輸出P2鎖存器的內(nèi)容。Flash 編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。

    P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流個(gè)TTL邏輯)4門(mén)電路。對(duì)P3口寫(xiě)入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能。P3口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。

RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。

    ALE/PROG:當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOV指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE 禁止位無(wú)效。

    PSEN:程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次PSEN信號(hào)。

    EA/VPP:外部訪問(wèn)允許。欲使CPU僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000H—FFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash 存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。

    XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。

    XTAL2:振蕩器反相放大器的輸出端。

2.1.2 DAC0832數(shù)模轉(zhuǎn)換器

    DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)DA芯片以其價(jià)格低廉、接口簡(jiǎn)單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。圖3為其芯片管腳圖。

圖3 DAC0832管腳圖

各個(gè)管腳功能如下:

    D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時(shí)間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會(huì)出錯(cuò))

    ILE:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效;   

    CS:片選信號(hào)輸入線(選通數(shù)據(jù)鎖存器),低電平有效;  

    WR1:數(shù)據(jù)鎖存器寫(xiě)選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時(shí),數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負(fù)跳變時(shí)將輸入數(shù)據(jù)鎖存;   

    XFER:數(shù)據(jù)傳輸控制信號(hào)輸入線,低電平有效,負(fù)脈沖(脈寬應(yīng)大于500ns)有效;   

    WR2:DAC寄存器選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由WR2、XFER 的邏輯組合產(chǎn)生LE2,當(dāng)LE2為高電平時(shí),DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負(fù)跳變時(shí)將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開(kāi)始D/A轉(zhuǎn)換。   

   IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化;  

   IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);   

   Rfb:反饋信號(hào)輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度;   

   Vcc:電源輸入端,Vcc的范圍為+5V~+15V;   

   VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V~+10V;  

   AGND:模擬信號(hào)地  

   DGND:數(shù)字信號(hào)地

2.1.3其他器件

   本次設(shè)計(jì)中,不僅僅用到了AT89C52單片機(jī)和DAC0832數(shù)模轉(zhuǎn)換芯片,還用到了74HC138譯碼器和74HC573鎖存器。

   74HC138 作用原理于高性能的存貯譯碼或要求傳輸延遲時(shí)間短的數(shù)據(jù)傳輸系統(tǒng),在高性能存貯器系統(tǒng)中,用這種譯碼器可以提高譯碼系統(tǒng)的效率。

   74HC573數(shù)據(jù)鎖存器。主要用于數(shù)碼管、按鍵等等的控制。

             

          圖4 74HC138                              圖5  74HC573

2.2硬件連接圖

2.2.1主控電路

中斷系統(tǒng)是使處理器具有對(duì)外界異步事件的處理能力而設(shè)置的。當(dāng)中央處理器CPU正在處理某件事的時(shí)候外界發(fā)生了緊急事件,要求CPU暫停當(dāng)前的工作,轉(zhuǎn)而去處理這個(gè)緊急事件。在波形發(fā)生器中,只用到片內(nèi)定時(shí)器/計(jì)數(shù)器溢出時(shí)產(chǎn)生的中斷請(qǐng)求,即是在AT89C52輸出一個(gè)波形采樣點(diǎn)信號(hào)后,接著啟動(dòng)定時(shí)器,在定時(shí)器未產(chǎn)生中斷之前,AT89C52等待,直到定時(shí)器計(jì)時(shí)結(jié)束,產(chǎn)生中斷請(qǐng)求,AT89C52響應(yīng)中斷,接著輸出下一個(gè)采樣點(diǎn)信號(hào),如此循環(huán)產(chǎn)生所需要的信號(hào)波形。如圖所示2.1,AT89C52所在電路中的工作情況。

    本此課設(shè)中,AT89C52單片機(jī)的P1口接獨(dú)立式按鍵電路,P2口部分接譯碼器,P0口接鎖存器。主控電路圖如圖6所示

圖6 主控電路

2.2.2 獨(dú)立式鍵盤(pán)

    獨(dú)立式鍵盤(pán)中,各按鍵相互獨(dú)立,每個(gè)按鍵各接一根輸入線,每根輸入線上的按鍵工作狀態(tài)不會(huì)影響其它輸入線上的工作狀態(tài)。因此,通過(guò)檢測(cè)輸入線的電平狀態(tài)就可以很容易的判斷按鍵是否被按下了。獨(dú)立式鍵盤(pán)電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單。但每個(gè)按鍵需占用一根輸入線,在按鍵數(shù)量較多時(shí),輸入口浪費(fèi)大,電路結(jié)構(gòu)顯得很繁雜,故此種鍵盤(pán)適用于按鍵較少或操作速度較高的場(chǎng)合。如圖7所示。

按鍵與AT89C52的P1口連接。 KEY1是監(jiān)測(cè)是否輸出鋸齒波按鍵;KEY2是監(jiān)測(cè)是否輸出三角波按鍵;KEY3監(jiān)測(cè)是否輸出梯形波按鍵;KEY4監(jiān)測(cè)是否輸出正弦波按鍵;KEY5是調(diào)頻按鍵。

圖7 獨(dú)立式鍵盤(pán)電路圖

2.2.3數(shù)模轉(zhuǎn)換電路

DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)DA芯片以其價(jià)格低廉、接口簡(jiǎn)單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。

    由于AT89C51所產(chǎn)生的是數(shù)字信號(hào),所以通過(guò)DAC0832把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)。DAC0832輸出的模擬量是電流,為了轉(zhuǎn)換成電壓,所以在它后面接入一個(gè)運(yùn)放器。如圖8。

圖 8 數(shù)模轉(zhuǎn)換電路圖

2.2.4驅(qū)動(dòng)電路

    74HC138作用原理于高性能的存貯譯碼或要求傳輸延遲時(shí)間短的數(shù)據(jù)傳輸系統(tǒng),在 高性能存貯器系統(tǒng)中,用這種譯碼器可以提高譯碼系統(tǒng)的效率。

    74HC573數(shù)據(jù)鎖存器。主要用于數(shù)碼管、按鍵等等的控制。如圖9所示,74HC138加74HC573的工作電路。

圖9 74HC138和74HC573的工作電路。

2.3總電路圖

    多種波形發(fā)生器的總電路圖如圖10所示

圖11 總電路圖

3 程序設(shè)計(jì)

3.1主流程圖的設(shè)計(jì)

主程序的流程圖如圖12所示,開(kāi)始時(shí)判斷是否調(diào)頻,然后判斷是否調(diào)用鋸齒波程序,然后判斷是否調(diào)用三角波程序,然后判斷是否調(diào)用梯形波程序,然后判斷是否調(diào)用正弦波程序,最后在循環(huán)回到判斷是否調(diào)頻。

圖12 軟件主程序流程圖

3.2 子程序的設(shè)計(jì)

3.2.1鋸齒波的產(chǎn)生

    鋸齒波的實(shí)現(xiàn)過(guò)程是首先定義一個(gè)初值然后進(jìn)行加法操作,加的步數(shù)的多少則根據(jù)要求的頻率來(lái)進(jìn)行。然后加到某個(gè)數(shù)之后就再重新設(shè)置為初值,再重復(fù)執(zhí)行剛剛的操作,如此循環(huán)下去。子程序如下:

  ST:MOV A,#00H           ;設(shè)置初值

LOOP:MOVX @DPTR,A         ;把數(shù)據(jù)送到端口轉(zhuǎn)換

     ADD A,R6             ;通過(guò)步長(zhǎng)改變數(shù)據(jù),上升波形

     CJNE A,#00H,LOOP     ;A值是否到最高點(diǎn)

                DJNZ R5,LOOP

      SJMP LOP

3.2.2三角波的產(chǎn)生

    三角波的實(shí)現(xiàn)是設(shè)置一個(gè)初值,當(dāng)加到某個(gè)值的時(shí)候,執(zhí)行減一操作,減到初值時(shí),再加一。子程序如下:

TRIANGLE:MOV A,#00H           ;設(shè)置初值

   LOOP3:MOVX @DPTR,A         ;把數(shù)據(jù)送到端口轉(zhuǎn)換

         ADD A,R6             ;通過(guò)步長(zhǎng)改變數(shù)據(jù)上升波形

         CJNE A,#00H,LOOP3    ;A值是否到最高點(diǎn)

         DEC A                ;減少步長(zhǎng)改變數(shù)據(jù)下降波形

   LOOP2:MOVX @DPTR,A         ;把數(shù)據(jù)送到端口轉(zhuǎn)換

         DEC A                ;減少步長(zhǎng)改變數(shù)據(jù)下降波形

         CJNE A,#00H,LOOP2    ;A值是否到最低點(diǎn)   

                    DJNZ R5,LOOP3       ;波形周期

         SJMP LOP             ;返回檢測(cè)開(kāi)關(guān)

3.2.3梯形波的產(chǎn)生

梯形波的實(shí)現(xiàn)是設(shè)置一個(gè)初值,然后進(jìn)行加一,當(dāng)加到某個(gè)數(shù)時(shí)延時(shí),之后減一,減到初值時(shí)在返回到之前的操作,繼續(xù)加一、延時(shí)、減一。梯形波產(chǎn)生的子程序如下:

TXING:MOV A,#00H             ;設(shè)置初值

LOOP4:MOVX @DPTR,A           ;把數(shù)據(jù)送到端口轉(zhuǎn)換

      ADD A,R6               ;增加步長(zhǎng)改變數(shù)據(jù)上升波形

      CJNE A,#00H,LOOP4      ;A值是否到最高點(diǎn)

      SUBB A,R6              ;下降波形做準(zhǔn)備

      DEC A

      MOV R7,0EEH            ;循環(huán)次數(shù)

LOP2:MOVX @DPTR,A           ;進(jìn)行延時(shí)

      DJNZ R7,LOP2

LOOP1:MOVX @DPTR,A           ;把數(shù)據(jù)送到端口轉(zhuǎn)換

      SUBB A,R6

      DEC A

      CJNE A,#00H,LOOP1      ;是否到最低點(diǎn)

      MOV R7,0EEH            ;循環(huán)次數(shù)

   LOP1:MOVX @DPTR,A         ;把數(shù)據(jù)送到端口轉(zhuǎn)換

        DJNZ R7,LOP1         ;進(jìn)行延時(shí)

        SJMP LOP             ;返回檢測(cè)開(kāi)關(guān)

3.2.4正弦波的產(chǎn)生

    正弦波的實(shí)現(xiàn)比較麻煩,需要查表,每查一次表,輸出一個(gè)數(shù)值,之后查下一個(gè)數(shù)值繼續(xù)輸出,當(dāng)一個(gè)波形的256個(gè)數(shù)值全部輸出之后,從頭開(kāi)始繼續(xù)輸出。正弦波產(chǎn)生的子程序如下:

SINE:MOV A,#00H              ;設(shè)置初值

LOOP7:MOV R7,A                ;保存當(dāng)前的數(shù)據(jù)

      MOV DPTR,#SIN           ;讀取表的地址

      MOVC A,@A+DPTR          ;讀取表中的數(shù)據(jù)

      MOV DPTR,#7FFH          ;D/A0832的端口地址

      MOVX @DPTR,A            ;進(jìn)行數(shù)據(jù)轉(zhuǎn)換

      MOV A,R7                ;恢復(fù)當(dāng)前數(shù)據(jù)

      INC A                   ;為讀取表的下一個(gè)值做準(zhǔn)備

      CJNE A,#00H,LOOP7       ;是否讀完表的數(shù)據(jù)

      SJMP START              ;返回檢測(cè)開(kāi)關(guān)

   FM:MOV R6,#04H             ;改變調(diào)頻/調(diào)幅

      MOV R5,#02H  

      SJMP START              ;返回檢測(cè)開(kāi)關(guān)

;--------以下是通過(guò)正弦的值所建立的一個(gè)表

SIN:   DB  80H, 83H, 86H, 89H, 8DH, 90H, 93H, 96H

       DB  99H, 9CH, 9FH,0A2H,0A5H,0A8H,0ABH,0AEH

       DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H

       DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H

       DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H

       DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H

       DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH

       DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

   DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH

   DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H

   DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH

   DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH

   DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H

   DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H

   DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H

   DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H

   DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H

   DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H

   DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH

   DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H

   DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H

   DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH

   DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H

   DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H

   DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H

   DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H

   DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H

   DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H

   DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H

   DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH

   DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H

   DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H

3.2.5主程序

    主程序的代碼如下:

      ORG 0000H              ;程序開(kāi)始

      MOV SP,#60H            ;設(shè)置堆棧

      MOV DPTR,#7FFH         ;0832的地址

  LOP:MOV P1,#0FFH

      MOV A,P1

      JNB P1.5,FM            ;是否需要調(diào)頻

      MOV R6,#01H            ;設(shè)置步長(zhǎng)

      MOV R5,#01H  

START:JNB P1.0,ST            ;輸出鋸齒波程序

      JNB P1.1,TRIANGLE      ;輸出三角波程序

      JNB P1.2,TXING         ;輸出梯形波程序

      JNB P1.3,SINE          ;輸出正弦波程序

      SJMP LOP               ;循環(huán)檢測(cè)

4應(yīng)用軟件

    本次課程設(shè)計(jì)中,我們用到了Protues7.8對(duì)其電路圖進(jìn)行繪制和仿真,還用到了Keil C51對(duì)程序進(jìn)行譯碼和編譯。下面對(duì)這兩個(gè)軟件進(jìn)行簡(jiǎn)單的介紹。

4.1 Proteus

   Protues軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。

    Protues軟件具有其它EDA工具軟件的功能。它能夠完成原理布圖、PCB自動(dòng)或人工布線和SPICE電路仿真的功能。同時(shí)Protues具有革命性的特點(diǎn):

  • 互動(dòng)的電路仿真。用戶甚至可以實(shí)時(shí)采用諸如RAM,ROM,鍵盤(pán),馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
  • 仿真處理器及其外圍電路。可以仿真51系列、AVR、PIC、ARM、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Protues建立了完備的電子設(shè)計(jì)開(kāi)發(fā)環(huán)境。

Protues提供了4大功能模塊:

(1)智能原理圖設(shè)計(jì)(ISIS

豐富的器件庫(kù):超過(guò)27000種元器件,可方便地創(chuàng)建新元件;智能的器件搜索:通過(guò)模糊搜索可以快速定位所需要的器件;智能化的連線功能:自動(dòng)連線功能使連接導(dǎo)線簡(jiǎn)單快捷,大大縮短繪圖時(shí)間;支持總線結(jié)構(gòu):使用總線器件和總線布線使電路設(shè)計(jì)簡(jiǎn)明清晰;可輸出高質(zhì)量圖紙:通過(guò)個(gè)性化設(shè)置,可以生成印刷質(zhì)量的BMP圖紙,可以方便地供WORD、POWERPOINT等多種文檔使用。

(2)完善的電路仿真功能(Prospice

ProSPICE混合仿真:基于工業(yè)標(biāo)準(zhǔn)SPICE3F5,實(shí)現(xiàn)數(shù)字/模擬電路的混合仿真;超過(guò)27000個(gè)仿真器件:可以通過(guò)內(nèi)部原型或使用廠家的SPICE文件自行設(shè)計(jì)仿真器件,Labcenter也在不斷地發(fā)布新的仿真器件,還可導(dǎo)入第三方發(fā)布的仿真器件; 多樣的激勵(lì)源:包括直流、正弦、脈沖、分段線性脈沖、音頻(使用wav文件)、指數(shù)信號(hào)、單頻FM、數(shù)字時(shí)鐘和碼流,還支持文件形式的信號(hào)輸入; 豐富的虛擬儀器:13種虛擬儀器,面板操作逼真,如示波器、邏輯分析儀、信號(hào)發(fā)生器、直流電壓/電流表、交流電壓/電流表、數(shù)字圖案發(fā)生器、頻率計(jì)/計(jì)數(shù)器、邏輯探頭、虛擬終端、SPI調(diào)試器、I2C調(diào)試器等; 生動(dòng)的仿真顯示:用色點(diǎn)顯示引腳的數(shù)字電平,導(dǎo)線以不同顏色表示其對(duì)地電壓大小,結(jié)合動(dòng)態(tài)器件(如電機(jī)、顯示器件、按鈕)的使用可以使仿真更加直觀、生動(dòng); 高級(jí)圖形仿真功能(ASF):基于圖標(biāo)的分析可以精確分析電路的多項(xiàng)指標(biāo),包括工作點(diǎn)、瞬態(tài)特性、頻率特性、傳輸特性、噪聲、失真、傅立葉頻譜分析等,還可以進(jìn)行一致性分析。

(3)獨(dú)特的單片機(jī)協(xié)同仿真功能(VSM

支持主流的CPU類型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU類型隨著版本升級(jí)還在繼續(xù)增加,如即將支持CORTEX、DSP處理器;支持通用外設(shè)模型:如字符LCD模塊、圖形LCD模塊、LED點(diǎn)陣、LED七段顯示模塊、鍵盤(pán)/按鍵、直流/步進(jìn)/伺服電機(jī)、RS232虛擬終端、電子溫度計(jì)等等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過(guò)PC機(jī)串口和外部電路實(shí)現(xiàn)雙向異步串行通信; 實(shí)時(shí)仿真:支持UART/USART/EUSARTs仿真、中斷仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。編譯及調(diào)試:支持單片機(jī)匯編語(yǔ)言的編輯/編譯/源碼級(jí)仿真,內(nèi)帶8051、AVR、PIC的匯編編譯器,也可以與第三方集成編譯環(huán)境(如IAR、Keil和Hitech)結(jié)合,進(jìn)行高級(jí)語(yǔ)言的源碼級(jí)仿真和調(diào)試。

(4)實(shí)用的PCB設(shè)計(jì)平臺(tái)

原理圖到PCB的快速通道:原理圖設(shè)計(jì)完成后,一鍵便可進(jìn)入ARES的PCB設(shè)計(jì)環(huán)境,實(shí)現(xiàn)從概念到產(chǎn)品的完整設(shè)計(jì);先進(jìn)的自動(dòng)布局/布線功能:支持器件的自動(dòng)/人工布局;支持無(wú)網(wǎng)格自動(dòng)布線或人工布線;支持引腳交換/門(mén)交換功能使PCB設(shè)計(jì)更為合理; 完整的PCB設(shè)計(jì)功能:最多可設(shè)計(jì)16個(gè)銅箔層,2個(gè)絲印層,4個(gè)機(jī)械層(含板邊),靈活的布線策略供用戶設(shè)置,自動(dòng)設(shè)計(jì)規(guī)則檢查,3D可視化預(yù)覽;多種輸出格式的支持:可以輸出多種格式文件,包括Gerber文件的導(dǎo)入或?qū)С,便利與其它PCB設(shè)計(jì)工具的互轉(zhuǎn)(如protel)和PCB板的設(shè)計(jì)和加工。

4.2 KeilC51

    Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。

    Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。

    C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51 for Windows和for Dos的集成開(kāi)發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫(xiě)入程序存貯器如EPROM中。

Keil具有具有很多優(yōu)點(diǎn):

(1)Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。

(2)與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過(guò)匯編語(yǔ)言后再使用C來(lái)開(kāi)發(fā),體會(huì)更加深刻。 Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。

5調(diào)試與仿真結(jié)果

    本次的設(shè)計(jì)主要應(yīng)用了protues和keilC51軟件進(jìn)行系統(tǒng)設(shè)計(jì)和仿真,經(jīng)過(guò)仿真后,結(jié)果較好,示波器可以正確的輸出鋸齒波、三角波、梯形波、正弦波。

    沒(méi)有按鍵按下時(shí),波形圖如圖13所示

圖13 沒(méi)有按鍵按下時(shí)波形圖

當(dāng)按下K1按鍵時(shí),產(chǎn)生鋸齒波,如圖14所示

圖14 按下K1鍵產(chǎn)生鋸齒波

當(dāng)按下K2按鍵時(shí),產(chǎn)生三角波,15如圖所示

圖15 按下K2鍵時(shí)產(chǎn)生三角波

當(dāng)按下按鍵K3時(shí),產(chǎn)生梯形波,如圖16所示

圖16 按下K3產(chǎn)生梯形波

當(dāng)按下K4按鍵時(shí),產(chǎn)生正弦波,如圖17所示

圖17 按下K4產(chǎn)生正弦波

按下K5按鍵的時(shí)候采樣頻率會(huì)發(fā)生變化。

6總結(jié)

經(jīng)過(guò)近兩周的單片機(jī)課程設(shè)計(jì),終于完成了我們組的波形發(fā)生器的設(shè)計(jì),基本達(dá)到了設(shè)計(jì)要求,從心底里來(lái)說(shuō),還是很高興的。但還是有很多需要反思的問(wèn)題。

在本次設(shè)計(jì)的過(guò)程中,雖然讓我長(zhǎng)進(jìn)了很多。對(duì)于單片機(jī)設(shè)計(jì),其中硬件電路是比較簡(jiǎn)單的,主要是解決程序設(shè)計(jì)的問(wèn)題,而程序設(shè)計(jì)它反映了我們解決問(wèn)題的思維邏輯和創(chuàng)新能力。因此在整個(gè)設(shè)計(jì)過(guò)程中大部分時(shí)間是用在程序上面的。

要設(shè)計(jì)一個(gè)成功的電路,必須要有耐心,要有堅(jiān)持的毅力。完成這次設(shè)計(jì)后,我在書(shū)本理論知識(shí)的基礎(chǔ)上又有了更深層次的理解。我發(fā)現(xiàn),在我們所使用的書(shū)籍上有些知識(shí)在實(shí)際應(yīng)用中其實(shí)并不是十分理想,各種參數(shù)都需要自己去調(diào)整。這就要求我們更加注重實(shí)踐環(huán)節(jié)。



完整的Word格式文檔51黑下載地址:
基于單片機(jī)的多波形信號(hào)發(fā)生器設(shè)計(jì).docx (368.93 KB, 下載次數(shù): 84)


回復(fù)

使用道具 舉報(bào)

ID:771950 發(fā)表于 2020-6-7 17:26 | 顯示全部樓層
求資源
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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