基于DA轉(zhuǎn)換模塊的單片機(jī)仿真與C語言開發(fā) 能力拓展訓(xùn)練_第1頁
基于DA轉(zhuǎn)換模塊的單片機(jī)仿真與C語言開發(fā) 能力拓展訓(xùn)練_第2頁
基于DA轉(zhuǎn)換模塊的單片機(jī)仿真與C語言開發(fā) 能力拓展訓(xùn)練_第3頁
基于DA轉(zhuǎn)換模塊的單片機(jī)仿真與C語言開發(fā) 能力拓展訓(xùn)練_第4頁
基于DA轉(zhuǎn)換模塊的單片機(jī)仿真與C語言開發(fā) 能力拓展訓(xùn)練_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目 錄摘要IAbstractII1設(shè)計(jì)任務(wù)11.1設(shè)計(jì)要求11.2理論分析12硬件電路設(shè)計(jì)32.1單片機(jī)波形產(chǎn)生模塊32.2 D/A轉(zhuǎn)換模塊32.3顯示模塊42.4總體電路設(shè)計(jì)53程序設(shè)計(jì)63.1程序框圖63.2源程序74軟件仿真135心得體會14參考文獻(xiàn)15摘要 波形發(fā)生器是一種能夠產(chǎn)生不同波形、不同頻率的設(shè)備。在本次課程設(shè)計(jì)中,要求設(shè)計(jì)一種采用D/A轉(zhuǎn)換的波形發(fā)生器,擬采用單片機(jī)產(chǎn)生各個時間點(diǎn)不同波形的值,利用D/A轉(zhuǎn)換芯片將單片機(jī)輸出的數(shù)字量轉(zhuǎn)換為模擬量輸出,形成相應(yīng)波形。 利用Keil軟件進(jìn)行C語言編程開發(fā),使用Proteus畫出電路圖,并對實(shí)驗(yàn)結(jié)果進(jìn)行軟件仿真。通過獨(dú)立鍵盤來控制兩種

2、波形的類型選擇、頻率變化,并且頻率按1Hz的幅度等量變化,最終通過LCD液晶顯示器輸出顯示其各自的類型以及頻率。關(guān)鍵字:波形發(fā)生器、單片機(jī)、A/D轉(zhuǎn)換、LCD液晶顯示器Abstract Waveform generator is a kind of can produce different waveform and frequency of the equipment. In the curriculum design, asked to design A waveform generator adopts D/A conversion, proposed values of various

3、 points in different waveforms by single chip microcomputer, using D/A conversion chip microcontroller output of digital quantity can be converted into analog output, form the corresponding waveform. Using the Keil software development, C programming language to use Proteus draw circuit diagram, sof

4、tware simulation and the results of the experiment. Through independent keyboard to control the type selection of two kinds of waveform, frequency variation, and the frequency change 1 Hz every times, finally using LCD liquid crystal display output according to their respective types and frequency.K

5、eywords: Waveform generator, MCU, A/D conversion, Liquid Crystal DisplayII1設(shè)計(jì)任務(wù)1.1設(shè)計(jì)要求設(shè)計(jì)一種采用D/A轉(zhuǎn)換的波形發(fā)生器,比如產(chǎn)生矩形波、三角波、鋸齒波、梯形波或正弦波及余弦波。要求進(jìn)行電路仿真實(shí)驗(yàn),并使用C語言進(jìn)行程序的開發(fā)。1.2理論分析一.波形函數(shù) 正弦波表達(dá)式:ft=Asin(t+),其波形如下圖所示:圖1 正弦波波形 鋸齒波表達(dá)式:ft=A(t-nT),其波形如下圖所示:4T3T2TT5TAftt圖2 鋸齒波波形二.信號發(fā)生電路方案論證 方案一:通過單片機(jī)AT89C51控制D/A,輸出三種波形。此方

6、案輸出的波形不夠穩(wěn)定,抗干擾能力弱,不易調(diào)節(jié)。但此方案電路簡單、成本低。 方案二:利用ADC9851芯片組成的電路輸出波形。ADC9851是精密高頻波形產(chǎn)生電路,能夠產(chǎn)生準(zhǔn)確的三角波、方波和正弦波三種周期性波形。但此方案成本高,程序復(fù)雜度高。 以上兩種方案綜合考慮,選擇方案一。三.顯示方案論證 方案一:采用LED數(shù)碼管。由于人眼具有視覺暫留特性,當(dāng)每只數(shù)碼管顯示的時間間隔小于1/16s時人眼感覺不到閃動,看到的是每只數(shù)碼管常亮。使用數(shù)碼管顯示編程較易,但要顯示內(nèi)容多,且數(shù)碼管不能顯示字母。 方案二:采用LCD液晶顯示器1602。其功率小,效果明顯,顯示編程容易控制,可以顯示字母。 綜合考慮以上

7、兩種方案,選擇方案二。四.鍵盤方案論證 方案一:矩陣式鍵盤。矩陣式鍵盤的按鍵觸點(diǎn)接于由行、列母線構(gòu)成的矩陣電路的交叉處。當(dāng)鍵盤上沒有鍵閉合時,所有的行和列線都斷開,行線都呈高電平。當(dāng)某一個鍵閉合時,該鍵所對應(yīng)的行線和列線被短路。 方案二:獨(dú)立式鍵盤。獨(dú)立式鍵盤有一個電源和上拉電阻和按鍵構(gòu)成。當(dāng)按鍵按下時,利用單片機(jī)查詢方式來進(jìn)行相應(yīng)的波形顯示及頻率值。 綜合考慮以上兩種方案,選擇方案二。 確定方案如下:利用AT89C51單片機(jī)采用程序設(shè)計(jì)方法產(chǎn)生鋸齒波、正弦波兩種波形,再通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號轉(zhuǎn)換成模擬信號,濾波放大,最終由示波器顯示出來。通過獨(dú)立鍵盤來控制波形類型選擇、頻率

8、變化,最終通過LCD液晶顯示器輸出顯示其各自的類型以及頻率值。設(shè)計(jì)流程如圖3所示。示波器顯示波形LCD液晶顯示器顯示波形和頻率模擬量DAC0832D/A轉(zhuǎn)換AT89C51產(chǎn)生波形數(shù)字量放大器濾波放大圖3設(shè)計(jì)流程圖2硬件電路設(shè)計(jì)2.1單片機(jī)波形產(chǎn)生模塊 AT89C51集成了CPU、RAM、ROM、定時/計(jì)數(shù)器和多功能I/O口等計(jì)算機(jī)所需要的基本功能部件,其構(gòu)成的最小系統(tǒng)由單片機(jī)、時鐘電路、復(fù)位電路等構(gòu)成,具有簡單可靠的優(yōu)點(diǎn)。如圖4所示為89C51單片機(jī)構(gòu)成的最小系統(tǒng),采用內(nèi)部振蕩方式產(chǎn)生時鐘信號,復(fù)位電路采用開關(guān)復(fù)位。RP1為P0口的上拉電阻,P0口輸出LCD液晶顯示器顯示的相關(guān)信息,P1口輸出

9、波形數(shù)字量到D/A轉(zhuǎn)換模塊,P2口一部分與獨(dú)立鍵盤相連,一部分控制LCD液晶顯示器,P3口閑置不用。圖4 單片機(jī)最小系統(tǒng)2.2 D/A轉(zhuǎn)換模塊 單片機(jī)產(chǎn)生的波形通過DAC0832完成D/A轉(zhuǎn)換,并經(jīng)過放大器濾波放大之后輸出,如下圖所示為D/A轉(zhuǎn)換模塊電路圖。圖5 D/A轉(zhuǎn)換模塊 DAC0832芯片采用直通工作方式,8位數(shù)字量只要輸入到DI7 DI0端,就立即進(jìn)行D/A轉(zhuǎn)換。經(jīng)DAC0832轉(zhuǎn)換后的模擬量通過放大器濾波放大之后,輸入到示波器顯示波形。2.3顯示模塊 顯示模塊通過液晶顯示器顯示輸出的波形和頻率,其電路圖如下圖所示。LM016L的8位數(shù)據(jù)端接單片機(jī)的P0口,三個控制端RS、RW、E也

10、分別與單片機(jī)的P2口相連。圖6 液晶顯示模塊2.4總體電路設(shè)計(jì) 根據(jù)上述模塊電路的設(shè)計(jì),設(shè)計(jì)總體電路如下圖所示。單片機(jī)由編程產(chǎn)生波形數(shù)字量,波形和頻率值通過P0口輸入到LCD液晶顯示器顯示,波形數(shù)字量由P1口輸入到DAC0832進(jìn)行D/A轉(zhuǎn)換之后通過放大器放大濾波,由示波器顯示波形。單片機(jī)P2.0、P2.1、P2.2分別控制頻率增加、頻率減少和波形轉(zhuǎn)換,P2.4、P2.5、P2.6用與控制LCD液晶顯示器。圖7 總體電路設(shè)計(jì)3程序設(shè)計(jì)3.1程序框圖開 始初始化LCD液晶顯示器顯示否有鍵按下?是key3鍵按下key2鍵按下key1鍵按下標(biāo)志位flag=1波形類別k1取反標(biāo)志位flag=1頻率f-

11、頻率f+計(jì)算定時器初值并賦值計(jì)算定時器初值并賦值定時器開始計(jì)算定時器初值并賦值波形類別k1=0波形類別k1=1鋸齒波相應(yīng)值查正弦函數(shù)表相應(yīng)值num=255num=0結(jié) 束圖8 程序框圖3.2源程序#include#include#define uint unsigned int #define uchar unsigned charuint flag=0; /按鍵按下標(biāo)志位uint f=10; /初始頻率uint num=0; /正弦波計(jì)數(shù)變量uint T0h,T0l; /定時器0的的初始值sbit key1=P20; /頻率加按鍵sbit key2=P21; /頻率減按鍵sbit key3=

12、P22; /波形轉(zhuǎn)換 bit k1=0; /k1=0為鋸齒波,k1=1為正弦波 sbit lcden=P24; /液晶使能端sbit lcdrs=P25; /液晶數(shù)據(jù)/命令選擇端sbit lcdrw=P26; /液晶讀/寫選擇端code uchar sinx=0x7F,0x82,0x85,0x88,0x8B,0x8F,0x92,0x95,0x98,0x9B,0x9E,0xA1,0xA4,0xA7,0xAA,0xAD,0xB0,0xB3,0xB6,0xB8,0xBB,0xBE,0xC1,0xC3,0xC6,0xC8,0xCB,0xCD,0xD0,0xD2,0xD5,0xD7,0xD9,0xDB,

13、0xDD,0xE0,0xE2,0xE4,0xE5,0xE7,0xE9,0xEB,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFB,0xFC,0xFD,0xFD,0xFE,0xFE,0xFE,0xFF,0XFF,0XFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEB,0xE9,0xE7,0xE5,0xE4,0xE2,

14、0xE0,0xDD,0xDB,0xD9,0xD7,0xD5,0xD2,0xD0,0xCD,0xCB,0xC8,0xC6,0xC3,0xC1,0xBE,0xBB,0xB8,0xB6,0xB3,0xB0,0xAD,0xAA,0xA7,0xA4,0xA1,0x9E,0x9B,0x98,0x95,0x92,0x8F,0x8B,0x88,0x85,0x82,0x7F,0x7C,0x79,0x76,0x73,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x54,0x51,0x4E,0x4B,0x48,0x46,0x43,0x40,0x3D,0x3B,0x38,

15、0x36,0x33,0x31,0x2E,0x2C,0x29,0x27,0x25,0x23,0x21,0x1E,0x1C,0x1A,0x19,0x17,0x15,0x13,0x12,0x10,0x0F,0x0D,0x0C,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0C,0x0D,0x0F,0x10,0x12,

16、0x13,0x15,0x17,0x19,0x1A,0x1C,0x1E,0x21,0x23,0x25,0x27,0x29,0x2C,0x2E,0x31,0x33,0x36,0x38,0x3B,0x3D,0x40,0x43,0x46,0x48,0x4B,0x4E,0x51,0x54,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x73,0x76,0x79,0x7C,0x7F; 15/延時tmsdelayms(uint t) uint i,j; for(i=t;i0;i-) for(j=110;j0;j-);/鍵盤檢測void keyscan() if(

17、key1=0) delayms(5); if(key1=0) flag=1; f+; while(!key1); if(key2=0) delayms(5); if(key2=0) flag=1; f-; while(!key2); if(key3=0) delayms(5); if(key3=0) k1=!k1; while(!key3); /通過輸入頻率計(jì)算對應(yīng)sin函數(shù)輸出間隔,也就是設(shè)置定時器0的初始值void calculate() float n; n=65536-12000000/f/12/256; T0h=(uint)n/256; T0l=(uint)n%256;/1602寫命

18、令void write_com(uchar com) lcdrs=0;P0=com;delayms(5);lcden=1;delayms(5);lcden=0;/1602寫數(shù)據(jù)void write_data(uchar date)lcdrs=1;P0=date;delayms(5);lcden=1;delayms(5);lcden=0;/初始化void init()lcdrw=0;lcden=0;write_com(0x38); /設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口write_com(0x0c); /設(shè)置開顯示,不顯示光標(biāo)write_com(0x06); /寫一個字符后地址指針加1wr

19、ite_com(0x01); /顯示清0,數(shù)據(jù)指針清0write_com(0x80+0x00); write_data(0x77); /寫wave: write_data(0x61); write_data(0x76); write_data(0x65); write_data(0x3a); write_com(0x80+0x40); /換行寫f: write_data(0x66); write_data(0x3a);TMOD=0x01;/定時器T0初始化calculate(); TH0=T0h; TL0=T0l; EA=1; ET0=1;TR0=1;/寫頻率void write_f(uint

20、 f)uint bai,shi,ge;bai=f/100;shi=f%100/10;ge=f%10;write_com(0x80+0x42); write_data(0x30+bai); write_data(0x30+shi); write_data(0x30+ge);write_data(0x48); /H write_data(0x7a); /z/顯示波形頻率void xsf()if(k1=0) /顯示鋸齒波write_com(0x80+0x05); write_data(0x73); /寫sawtooth write_data(0x61); write_data(0x77); writ

21、e_data(0x74);write_data(0x6f);write_data(0x6f);write_data(0x74);write_data(0x68);write_f(f);if(k1=1) /顯示正弦波write_com(0x80+0x05); write_data(0x73);/寫sinusoid write_data(0x69); write_data(0x6e); write_data(0x75);write_data(0x73);write_data(0x6f);write_data(0x69);write_data(0x64);write_f(f);/主函數(shù)void main() i

溫馨提示

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

評論

0/150

提交評論