基于DA轉(zhuǎn)換模塊的單片機(jī)仿真和C語(yǔ)言開(kāi)發(fā)_第1頁(yè)
基于DA轉(zhuǎn)換模塊的單片機(jī)仿真和C語(yǔ)言開(kāi)發(fā)_第2頁(yè)
基于DA轉(zhuǎn)換模塊的單片機(jī)仿真和C語(yǔ)言開(kāi)發(fā)_第3頁(yè)
基于DA轉(zhuǎn)換模塊的單片機(jī)仿真和C語(yǔ)言開(kāi)發(fā)_第4頁(yè)
基于DA轉(zhuǎn)換模塊的單片機(jī)仿真和C語(yǔ)言開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名: 專業(yè)班級(jí): 指導(dǎo)教師: 工作單位: 信息工程學(xué)院 題 目: 基于D/A轉(zhuǎn)換模塊的單片機(jī)仿真和C語(yǔ)言開(kāi)發(fā) 初始條件:本課程設(shè)計(jì),要求用使用Proteus仿真軟件進(jìn)行系統(tǒng)設(shè)計(jì)與仿真。 要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說(shuō)明書(shū)撰寫(xiě)等具體要求)1、課程設(shè)計(jì)工作量:1周內(nèi)完成對(duì)系統(tǒng)的設(shè)計(jì)、仿真。2、技術(shù)要求:1)設(shè)計(jì)一種采用D/A轉(zhuǎn)換的波形發(fā)生器,比如產(chǎn)生矩形波、三角波、鋸齒波、梯形波或正弦波及余弦波。要求進(jìn)行電路仿真實(shí)驗(yàn),并使用C語(yǔ)言進(jìn)行程序的開(kāi)發(fā)。 2)要求學(xué)生主動(dòng)思考,自主發(fā)揮,實(shí)現(xiàn)系統(tǒng)的特色功能。3、查閱至少5篇參考文獻(xiàn)。按武漢理工大學(xué)課程設(shè)計(jì)

2、工作規(guī)范要求撰寫(xiě)設(shè)計(jì)報(bào)告書(shū)。全文用A4紙打印,圖紙應(yīng)符合繪圖規(guī)范。提交報(bào)告的主要內(nèi)容:(使用Proteus 7.5 sp3)1) 題目2) 仿真所完成的主要功能和特色簡(jiǎn)介摘要(特別是自己擴(kuò)展的功能,根據(jù)特色功能評(píng)優(yōu))3) Proteus仿真的基本流程4) 所使用芯片以及引腳功能簡(jiǎn)介(需要提供對(duì)應(yīng)芯片DataSheet的下載鏈接)5) 設(shè)計(jì)方案與工作原理,給出仿真電路圖6) 實(shí)驗(yàn)記錄與結(jié)果分析時(shí)間安排:1) 2011 年 7 月 910 日, 查閱相關(guān)資料,學(xué)習(xí)設(shè)計(jì)原理。2) 2011 年 7 月 1112 日, 方案選擇和電路設(shè)計(jì)仿真。3) 2011 年 7 月 13 日, 設(shè)計(jì)說(shuō)明書(shū)撰寫(xiě)。4

3、) 2011 年 7 月 14 日 上交報(bào)告,同時(shí)進(jìn)行答辯。指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日目錄1.總體設(shè)計(jì)思路22.芯片介紹2.1 DAC0832芯片介紹32.2 AT89C52管腳說(shuō)明43.原理圖設(shè)計(jì)及仿真結(jié)果3.1總體硬件原理圖63.2方波產(chǎn)生原理及波形73.3正弦波產(chǎn)生原理及波形83.4三角波產(chǎn)生原理及波形104.其他模塊及拓展部分4.1 通過(guò)開(kāi)關(guān)實(shí)現(xiàn)波形的切換及調(diào)頻11 4.2 運(yùn)算放大器模塊124.3 拓展功能簡(jiǎn)介135.心得體會(huì)146.參考文獻(xiàn)157.程序附錄1.總體設(shè)計(jì)思路波形發(fā)生器是一種常用的信號(hào)源,廣泛地應(yīng)用于電子電路、自動(dòng)控制系統(tǒng)和教學(xué)實(shí)驗(yàn)

4、等領(lǐng)域。函數(shù)信號(hào)發(fā)生器是一種能夠產(chǎn)生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波的電路。函數(shù)信號(hào)發(fā)生器在電路實(shí)驗(yàn)和設(shè)備檢測(cè)中具有十分廣泛的用途。通過(guò)對(duì)函數(shù)波形發(fā)生器的原理以及構(gòu)成分析,可設(shè)計(jì)一個(gè)能變換出三角波、正弦波、方波的函數(shù)波形發(fā)生器。目前使用的信號(hào)發(fā)生器大部分是函數(shù)信號(hào)發(fā)生器,且特殊波形發(fā)生器的價(jià)格昂貴。所以本設(shè)計(jì)使用的是DAC0832芯片構(gòu)成的發(fā)生器,可產(chǎn)生三角波、方波、正弦波等多種特殊波形和任意波形,波形的頻率可用程序控制改變。在單片機(jī)上加外圍器件距陣式鍵盤(pán),通過(guò)鍵盤(pán)控制波形頻率的增減以及波形的選擇,并用了LCD顯示頻率大小。在單片機(jī)的輸出端口接DAC0832進(jìn)行D/A轉(zhuǎn)換,

5、再通過(guò)運(yùn)放進(jìn)行波形調(diào)整,最后輸出波形接在示波器上顯示。本設(shè)計(jì)具有線路簡(jiǎn)單、結(jié)構(gòu)緊湊、價(jià)格低廉、性能優(yōu)越等優(yōu)點(diǎn)。本設(shè)計(jì)制作的波形發(fā)生器,可以輸出多種標(biāo)準(zhǔn)波形,如方波、正弦波、三角波、鋸齒波等,還可以輸出任意波形,如用鼠標(biāo)創(chuàng)建的一個(gè)周期的非規(guī)則波形或用函數(shù)描述的波形等,輸出的波形的頻率、幅度均可調(diào),且能脫機(jī)輸出。設(shè)計(jì)的人機(jī)界面不但清晰美觀,而且操作方便。設(shè)計(jì)思路:課設(shè)需要各個(gè)波形的基本輸出。如輸出三角波、方波、正弦波。這些波形的實(shí)現(xiàn)的具體步驟:鋸齒波實(shí)現(xiàn)很簡(jiǎn)單,只需要一開(kāi)始定義一個(gè)初值,然后不斷的加1,當(dāng)溢出后又重初值開(kāi)始加起,就這樣循環(huán)下去。三角波的實(shí)驗(yàn)過(guò)程是先加后減,實(shí)現(xiàn)方法是先是開(kāi)始加1直到

6、溢出后就執(zhí)行減1操作,就這樣不斷調(diào)用這個(gè)循環(huán)。方波的實(shí)現(xiàn)方法是連續(xù)輸出一個(gè)數(shù),到某個(gè)時(shí)候就改變一下值,可以把值定義為正極性的,也可以是負(fù)極性。正弦波的實(shí)現(xiàn)是非常麻煩的。它的實(shí)現(xiàn)過(guò)程是通過(guò)定義一些數(shù)據(jù),然后執(zhí)行時(shí)直接輸出定義的數(shù)據(jù)就可以了。元件選型:?jiǎn)纹瑱C(jī)AT89C51系統(tǒng),DAC0832一片,PC機(jī)一臺(tái),運(yùn)算放大器2. 芯片簡(jiǎn)介2.1 DAC0832芯片介紹:0832采用雙緩沖接口方式,其傳送控制端接地,輸入所存允許斷ILE與+5V電源相連,利用一個(gè)地址碼進(jìn)行二次輸出操作,完成數(shù)據(jù)的傳送和激動(dòng)轉(zhuǎn)換,第一次操作室P2.6為高電平,將P0口數(shù)據(jù)線上的數(shù)據(jù)鎖存于DAC0832的輸入寄存器中。第二次操

7、作是寫(xiě)控制信號(hào)由效,傳送控制端為低電平,將輸入寄存器中的內(nèi)容鎖存入0832的DAC寄存器中,D/A轉(zhuǎn)換器便開(kāi)始對(duì)鎖存于DAC寄存器的8位數(shù)據(jù)進(jìn)行轉(zhuǎn)換,約經(jīng)過(guò)1/2時(shí)鐘周期后,在輸出端(IOUT2、IOUT1)建立穩(wěn)定的電流輸出。運(yùn)放的作用是將0832輸出的模擬電流信號(hào)轉(zhuǎn)換為電壓波形。DAC0832為一個(gè)8位D/A轉(zhuǎn)換器,單電源供電,在+5+15V范圍內(nèi)均可正常工作。基準(zhǔn)電壓的范圍為±10V,電流建立時(shí)間為1s,CMOS工藝,低功耗20mW。DAC0832的外部引腳及功能介紹圖如下:圖2-3 DAC0832引腳圖DAC0832內(nèi)部結(jié)構(gòu)資料:芯片內(nèi)有兩級(jí)輸入寄存器,使DAC0832具備雙

8、緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉(zhuǎn)換等)。D/A轉(zhuǎn)換結(jié)果采用電流形式輸出。要是需要相應(yīng)的模擬信號(hào),可通過(guò)一個(gè)高輸入阻抗的線性運(yùn)算放大器實(shí)現(xiàn)這個(gè)供功能。運(yùn)放的反饋電阻可通過(guò)RFB端引用片內(nèi)固有電阻,還可以外接DI0DI7:數(shù)據(jù)輸入線,TLL電平。 ILE:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效。 CS:片選信號(hào)輸入線,低電平有效。 WR1:為輸入寄存器的寫(xiě)選通信號(hào)。 XFER:數(shù)據(jù)傳送控制信號(hào)輸入線,低電平有效。 WR2:為DAC寄存器寫(xiě)選通輸入線。 Iout1:電流輸出線。當(dāng)輸入全為1時(shí)Iout1最大。 Iout2: 電流輸出線。其值與Io

9、ut1之和為一常數(shù)。 Rfb:反饋信號(hào)輸入線,芯片內(nèi)部有反饋電阻. Vcc:電源輸入線 (+5v+15v) Vref:基準(zhǔn)電壓輸入線 (-10v+10v) AGND:模擬地,摸擬信號(hào)和基準(zhǔn)電源的參考地. DGND:數(shù)字地,兩種地線在基準(zhǔn)電源處共地比較好2.2 AT89C52管腳說(shuō)明:VCC:供電電壓。 GND:接地。 P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必

10、須被拉高。 P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地

11、址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí)

12、,ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。 /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H

13、-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來(lái)自反向振蕩器的輸出。3. 原理圖設(shè)計(jì)及仿真結(jié)果3.1. 總體硬件原理圖:3.2 方波產(chǎn)生原理及波形此波形的實(shí)現(xiàn)更加簡(jiǎn)單,只需開(kāi)始的時(shí)候設(shè)置一個(gè)初值然后直接輸出這個(gè)值就行了,輸出一段時(shí)間后,然后再重新置一個(gè)數(shù)據(jù),然后再輸出這個(gè)數(shù)據(jù)一段時(shí)間,但是此時(shí)的時(shí)間一定要等于前面那段時(shí)間。這樣才是一個(gè)方波,如果兩個(gè)時(shí)間不相同,那就相當(dāng)于一

14、個(gè)脈沖波了。流程圖如下圖所示:開(kāi) 始循環(huán)開(kāi)始 給p0賦值0x00延時(shí)給p0賦值0xff延時(shí)判斷按鍵是否為0圖3.2 方波產(chǎn)生流程圖仿真結(jié)果圖:3.3 正弦波產(chǎn)生原理及波形正弦波的實(shí)現(xiàn)則相對(duì)比較復(fù)雜,因?yàn)檎也ǖ膶?shí)現(xiàn)是輸出各個(gè)點(diǎn)的值就行了,可是各個(gè)點(diǎn)值則要通過(guò)正弦函數(shù)來(lái)求出。輸出的數(shù)據(jù)剛好是256個(gè)數(shù)據(jù),這樣則可以直接相加就行了定義變量i循環(huán)開(kāi)始如果i=0;+i=128把p0定義為數(shù)組tab【i判斷按鍵是否為0延時(shí)為0則終止 圖3.3 正弦波產(chǎn)生流程圖仿真結(jié)果圖:3.4三角波產(chǎn)生原理及波形三角波的實(shí)定義變量iuchar ifor(i=0;i<255;i+)for(i=255;i>0;

15、i-)判斷p0是否已滿否是延時(shí)否/是開(kāi) 始現(xiàn)是設(shè)置一個(gè)初值,然后進(jìn)行加數(shù),同樣是加到某個(gè)數(shù)之后再行減數(shù),減到初值之后就再返回到先前的操作,這個(gè)操作跟鋸齒波的實(shí)現(xiàn)是相似的。此程序輸入的VREF的電壓是5V,因此該波形輸出的最大頻率是初值為0和最終值為256,這樣輸出的波形是最大的。流程圖如下圖所示:判斷按鍵是否為0圖3.4 三角波產(chǎn)生流程圖仿真結(jié)果圖:4.其他模塊及拓展部分4.1 通過(guò)開(kāi)關(guān)實(shí)現(xiàn)波形的切換及調(diào)頻通過(guò)開(kāi)關(guān)實(shí)現(xiàn)波形的切換比較簡(jiǎn)單只需通過(guò)輸出波形后不斷返回到檢測(cè)開(kāi)關(guān)的子程序中,判斷是否有別的開(kāi)關(guān)撥動(dòng),如果有別的開(kāi)關(guān)撥動(dòng)則執(zhí)行別的程序,否則輸出原來(lái)的波形,不過(guò)如果要能夠識(shí)別別的開(kāi)關(guān)發(fā)生變化

16、,必須將此開(kāi)關(guān)關(guān)掉否則會(huì)識(shí)別不了別的鍵按下。當(dāng)然開(kāi)關(guān)的調(diào)頻和調(diào)幅的實(shí)現(xiàn)也一樣,不過(guò)首先先輸出一個(gè)波形,然后再檢測(cè)開(kāi)關(guān)是否需要調(diào)頻或者調(diào)幅,如果需要?jiǎng)t轉(zhuǎn)入到相應(yīng)的程序中,最后再重新輸出波形。電路模塊實(shí)現(xiàn):4.2 運(yùn)算放大器模塊大多數(shù)常用的D/A轉(zhuǎn)換器的數(shù)字輸入時(shí)二進(jìn)制或BCD碼形式,輸出可以是電流也可以使電壓,而多數(shù)是電流。因此,在多數(shù)電路中,D/A轉(zhuǎn)換器的輸出需要用運(yùn)算放大器組成的I/V轉(zhuǎn)換器將電流輸出轉(zhuǎn)換成電壓輸出4.3 擴(kuò)展功能簡(jiǎn)介電位器RV1用于調(diào)整輸入的I/V轉(zhuǎn)換系數(shù)。調(diào)節(jié)可變電阻RV1可以調(diào)整電壓,電流轉(zhuǎn)化比例。該電壓,電流成正比變化,當(dāng)可變電阻變大時(shí),輸出波形隨輸出電壓增大而增大;

17、當(dāng)可變電阻變小時(shí),輸出波形隨輸出電壓變小而變小。通過(guò)電阻調(diào)節(jié),可顯示電壓的變化,如圖所示:輸出波形可隨電壓值變化而變化該LED模塊可顯示1. 波形選擇提示 2. 可顯示通過(guò)按鍵調(diào)節(jié)的增大或減小的頻率。LED通過(guò)接AT89C52的P0口和排阻,實(shí)現(xiàn)數(shù)據(jù)傳輸和顯示功能。5.心得體會(huì)本次的設(shè)計(jì)中利用AT89C52和DAC0832以及放大器完成電路的設(shè)計(jì),用開(kāi)關(guān)來(lái)控制各種波形的發(fā)生及轉(zhuǎn)換,用單片機(jī)輸出后,經(jīng)過(guò)模數(shù)轉(zhuǎn)換器生成波形,最終可以通過(guò)示波器觀察。在這次的軟件設(shè)計(jì)中,程序設(shè)計(jì)采用的是C語(yǔ)言。C語(yǔ)言具有速度快,可以直接對(duì)硬件進(jìn)行操作的優(yōu)點(diǎn),它可以極好的發(fā)揮硬件的功能。并且C語(yǔ)言編寫(xiě)的代碼非常容易理解

18、,但存在不好維護(hù),很容易產(chǎn)生 bug,難于調(diào)試的缺點(diǎn)。因此,在大型程序的設(shè)計(jì)中,多采用C語(yǔ)言進(jìn)行程序編譯。C語(yǔ)言簡(jiǎn)潔高效,是最貼近硬件的高級(jí)編程語(yǔ)言,經(jīng)過(guò)多年的發(fā)展,現(xiàn)在已成熟為專業(yè)水平的高級(jí)語(yǔ)言。而且,現(xiàn)在單片機(jī)產(chǎn)品推出時(shí)紛紛配套了C語(yǔ)言編譯器,應(yīng)用廣泛。就本次課程設(shè)計(jì)來(lái)說(shuō),C語(yǔ)言完全適用本次課設(shè)的。由于真正意義上的程序設(shè)計(jì)還不多,因此還不是很得心應(yīng)手,所以在設(shè)計(jì)中遇到一些問(wèn)題和一些難點(diǎn)。比如:在程序設(shè)計(jì)中如何實(shí)現(xiàn)程序結(jié)構(gòu)的最優(yōu)化,以達(dá)到較高的質(zhì)量。這是以后設(shè)計(jì)中要注意的問(wèn)題。 通過(guò)這次課程設(shè)計(jì),我進(jìn)一步了解了波形發(fā)生器的原理,在實(shí)際動(dòng)手操作過(guò)程中,使我接觸了許多我以前沒(méi)接觸過(guò)的元件,而且重

19、新溫習(xí)了學(xué)了已久的C語(yǔ)言,使我學(xué)得了許多知識(shí),使我獲益匪淺。這次課程設(shè)計(jì),使我的動(dòng)手能力得到了很大的提高,更使我們懂得理論知識(shí)的重要性,沒(méi)有理論的指導(dǎo)一切實(shí)際行動(dòng)都是盲目的,且實(shí)際操作是我們得到的理論知識(shí)得到驗(yàn)證,更能增加對(duì)理論知識(shí)的理解。雖然在這次設(shè)計(jì)的過(guò)程中,困難不少,但是正是在自己的努力,同學(xué)們的幫助下,自己能夠順利的完成,確實(shí)還是蠻欣慰的。感謝這次課程設(shè)計(jì)給了自己鍛煉的機(jī)會(huì),自己在今后的學(xué) 習(xí)和生活中,會(huì)更加的努力,爭(zhēng)取更大的進(jìn)步!6.參考文獻(xiàn)1 朱定華,馬愛(ài)梅,林衛(wèi). 微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)M. 武漢:華中科技大學(xué)出版社,1999:130-1332 顧德英,張健,馬淑華. 計(jì)算機(jī)控制技術(shù)M

20、. 北京:北京郵電大學(xué)出版社,2006:64-703 朱定華,戴汝平等,單片微機(jī)原理與應(yīng)用M.北京交通大學(xué)出版社,清華大學(xué)出版社.4 彭介華.電子技術(shù)課程設(shè)計(jì)指導(dǎo)J.北京:高等教育出版社,1997.5彭楚武. 微計(jì)原理與接口技術(shù)M. 長(zhǎng)沙:湖南大學(xué)出版社6(美)Richard Blum著;馬朝暉等譯;C語(yǔ)言程序設(shè)計(jì)M 北京市:機(jī)械工業(yè)出版社本科生課程設(shè)計(jì)成績(jī)?cè)u(píng)定表姓 名性 別專業(yè)、班級(jí)課程設(shè)計(jì)題目:基于D/A轉(zhuǎn)換模塊的單片機(jī)仿真和C語(yǔ)言開(kāi)發(fā)課程設(shè)計(jì)答辯或質(zhì)疑記錄:成績(jī)?cè)u(píng)定依據(jù):最終評(píng)定成績(jī)(以優(yōu)、良、中、及格、不及格評(píng)定)指導(dǎo)教師簽字: 年 月 日#include<reg52.h>

21、#define uchar unsigned char#define uint unsigned int/#define Fosc 24000000/12000000 /12分頻后的頻率#define DAdata P0/DA數(shù)據(jù)端口sbit DA_S1= P20; / 控制DAC0832的8位輸入寄存器,僅當(dāng)都為0時(shí),可以輸出數(shù)據(jù)(處于直通狀態(tài)),否則,輸出將被鎖存sbit DA_S2= P21; / 控制DAC0832的8位DAC寄存器,僅當(dāng)都為0時(shí),可以輸出數(shù)據(jù)(處于直通狀態(tài)),否則,輸出將被鎖存sbit key= P32;uchar wavecount; /'抽點(diǎn)'計(jì)數(shù)

22、uchar THtemp,TLtemp;/傳遞頻率的中間變量/uint T_temp;uchar judge=1; /在方波輸出函數(shù)中用于簡(jiǎn)單判別作用uchar waveform; /當(dāng)其為0、1、2時(shí),分別代表三種波uchar code freq_unit3=10,50,200; /三種波的頻率單位uchar idata wavefreq3=1,1,1; /給每種波定義一個(gè)數(shù)組單元,用于存放單位頻率的個(gè)數(shù)uchar code lcd_hang1="Sine Wave " "Triangle Wave " "Square Wave "

23、 "Select Wave: " "press No.1 key! "uchar idata lcd_hang216="f= Hz "/*uchar code wave_freq_adjust= /頻率調(diào)整中間值 0xff,0xb8,0x76,0x56,0x43,0x37,0x2e,0x26,0x20,0x1c, /正弦波頻率調(diào)整中間值0xff,0x8e,0x5a,0x41,0x32,0x28,0x20,0x1b,0x17,0x0e,/三角波頻率調(diào)整中間值0xff,0x8e,0x5a,0x41,0x32,0x28,0x20,0x1b,

24、0x17,0x0e; uint code wave_freq_adjust= /頻率調(diào)整中間值 380,184,118,86,67,55,46,28,38,32,295,142, 90,65,50,40,32,27,23,14,295,142, 90,65,50,40,32,27,23,14; */*uchar code waveTH= 0xfc,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

25、0xff,0xff,0xff,0xff;uchar code waveTL= 0xf2,0x78,0xfb,0x3c,0x63,0x7d,0x8f,0x9d,0xa8,0xb1,0x17,0x0b,0xb2,0x05,0x37,0x58,0x70,0x82,0x90,0x9b, 0x4d,0xa7,0xc4,0xd3,0xdc,0xe2,0xe6,0xea,0xec,0xee;*/*這兩組數(shù)組很重要,需要根據(jù)波形來(lái)調(diào)試,選擇合適的值,使輸出波形達(dá)到頻率要求*/uchar code waveTH= 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff

26、,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe;uchar code waveTL= 0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6, /正弦波頻率調(diào)整中間值0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde,/三角波頻率調(diào)整中間值0x88,0x50,0x90,0x32,0x34,0xbe,0x4a,0xa3,0xe5,0x2c; /*/uch

27、ar code triangle_tab= /每隔數(shù)字8,采取一次0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x78,0x70,0x68,0x60,0x

28、58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00;uchar code sine_tab256=/輸出電壓從0到最大值(正弦波1/4部分)0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe

29、9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,/輸出電壓從最大值到0(正弦波1/4部分)0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0x

30、da,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,/輸出電壓從0到最小值(正弦波1/4部分)0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,

31、0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,/輸出電壓從最小值到0(正弦波1/4部分)0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x

32、08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80; void delay(uchar z) uint x,y;for(x=z;x>0;x-)fo

33、r(y=110;y>0;y-);void triangle_out()/三角波輸出 DAdata=triangle_tabwavecount+;if(wavecount>64) wavecount=0;DA_S1=0; /打開(kāi)8位輸入寄存器DA_S1=1; /關(guān)閉8位輸入寄存器void sine_out() /正弦波輸出 DAdata=sine_tabwavecount+;DA_S1=0; /打開(kāi)8位輸入寄存器DA_S1=1; /關(guān)閉8位輸入寄存器void square_out() /方波輸出 judge=judge; if(judge=1) DAdata=0xff;else DA

34、data=0x00;DA_S1=0; /打開(kāi)8位輸入寄存器DA_S1=1; /關(guān)閉8位輸入寄存器/*1602液晶的相關(guān)函數(shù)*/#define lcd_ports P1sbit rs=P22;sbit rw=P23;sbit lcden=P24;void write_com(uchar com)rs=0;/置零,表示寫(xiě)指令lcden=0;lcd_ports=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;/置1,表示寫(xiě)數(shù)據(jù)(在指令所指的地方寫(xiě)數(shù)據(jù))lcden=0;lcd_ports=date;delay(

35、5);lcden=1;delay(5);lcden=0;void disp_lcd(uchar addr,uchar *temp1)uchar num;write_com(addr);delay(1); /延時(shí)一會(huì)兒?for(num=0;num<16;num+)write_date(temp1num);/或者這樣寫(xiě)write_date(*(temp1+num);delay(1);void init_lcd()/uchar num;lcden=0; /可有可無(wú)?rw=0; /初始化一定要設(shè)置為零,表示寫(xiě)數(shù)據(jù)write_com(0x38); /使液晶顯示點(diǎn)陣,為下面做準(zhǔn)備write_com(

36、0x0c); /初始設(shè)置write_com(0x06); /初始設(shè)置write_com(0x01); /清零write_com(0x80); /使指針指向第一行第一格 disp_lcd(0x80,&lcd_hang13*16); /在第一行顯示 disp_lcd(0xc0,&lcd_hang14*16); /在第二行顯示/*for(num=0;num<16;num+)write_date(tablenum);delay(5);write_com(0x80+0x40); /給指針重新賦值,使之指向第二行第一格for(num=0;num<16;num+)write_da

37、te(table1num);delay(5); */*TMOD=0x01; /選用定時(shí)方式1TH0=(65536-50000)/256; /賦初值TL0=(65536-50000)%256;/EA=1;/開(kāi)總中斷ET0=1; /開(kāi)定時(shí)器中斷TR0=1; /啟動(dòng)定時(shí)器*/*1602液晶函數(shù)聲明結(jié)束*/void main() uchar i=0;DA_S2=0; /使DAC寄存器處于直通狀態(tài)DAdata=0;DA_S1=1; /關(guān)閉8位輸入寄存器init_lcd(); waveform=0;TMOD=0x01; /設(shè)置定時(shí)器0為16位工作方式IT0=1; /設(shè)置外部中斷0為下降沿觸發(fā)ET0=1; /開(kāi)定時(shí)器中斷EX0=1; EA=1;while(1)/DAout(0xff); /可輸出TTL波形/DAout(0x80);/T_temp=32; void timer0() inte

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論