基于單片機的函數(shù)信號發(fā)生器設計.doc
《基于單片機的函數(shù)信號發(fā)生器設計.doc》由會員分享,可在線閱讀,更多相關《基于單片機的函數(shù)信號發(fā)生器設計.doc(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
基于單片機的函數(shù)信號發(fā)生器設計所用元器件:元器件數(shù)量(個)電阻3電容9STC89C52芯片1DAC0832芯片1MAX232芯片1按鍵7OP07運算放大器1LED發(fā)光二極管1LCD1602液晶屏幕1晶振1電位器1芯片底座4排阻1電解電容2排針若干跳線若干基于單片機的函數(shù)信號發(fā)生器1.設計目的1學習使用keil編程,使用Altium Designer繪制原理圖;2使用單片機產(chǎn)生正弦波、方波、三角波、鋸齒波并可通過按鍵對波形切換、幅值和頻率的調整;3學習使用示波器顯示波形;2.設計原理基于單片機的函數(shù)發(fā)生器原理以STC89C51為整個函數(shù)發(fā)生器的核心部分,通過編寫程序和執(zhí)行程序,運用示波器顯示出四種波形,分別是正弦波、三角波、方波和鋸齒波。本設計擁有五個按鍵,分別實現(xiàn)波形的切換,改變波形的頻率和幅值的大小。芯片DAC0832將數(shù)字信號轉換成模擬信號輸出并通過外接運算放大器OP07實現(xiàn)電流向電壓的轉換,最后通過示波器顯示出波形。3.設計內容3.1基本設計內容本次設計的主要內容是設計一個基于單片的函數(shù)信號發(fā)生器實現(xiàn)正弦波、三角波、方波和鋸齒波。利用單片機設計程序,使其能夠通過按鍵有效切換四種波形,并且實現(xiàn)波形幅值和頻率的調整滿足本設計的要求,進行硬件系統(tǒng)和軟件系統(tǒng)的設計,最后調試完成本次設計。LCD1602液晶顯示波形種類、幅值以及頻率。頻率的可調范圍在110HZ,幅值可調范圍在15V。顯示屏上顯示參數(shù),第一行顯示波形。第二行左邊顯示波形頻率,右邊顯示波形幅值。本設計由五個功能按鍵,分別進行波形切換,加減幅值和加減頻率。電壓在示波器上顯示,硬件原理示意圖,如圖1.1所示。顯示電路單片機D/A轉換電路放大電路按鍵復位電路波形輸出圖1.1 硬件原理設計圖3.2模塊設計3.2.1單片機最小系統(tǒng)模塊本設計STC89C51為整個函數(shù)發(fā)生器的核心部分,單片機、時鐘電路和復位電路構成單片機的最小系統(tǒng),如圖2.1所示。圖2.1單片機最小系統(tǒng)模塊原理圖晶體諧振器是時鐘電路的重要組成部分,將晶體諧振器放入電路,上電后它會產(chǎn)生機械振蕩,單片機憑借晶體諧振器的頻率運行所設計出來的頻率,所以說晶體諧振器的頻率是單片機操作時間規(guī)律,保證單片機平穩(wěn)的工作。晶體諧振器是控制CPU的時鐘頻率的。頻率控制運行速度。晶體諧振器雖然是振蕩電路的一部分,但是它自身不會產(chǎn)生震蕩,它會有一個固定的頻率,然后與外圍電路發(fā)生諧振。諧振的產(chǎn)生需要晶體諧振器固定頻率和外圍電路的頻率一致,如果差距大,或者根本對不上則會使電路不在振蕩。單片機會根據(jù)實際所能承受的晶體諧振器頻率來選擇自己的運行頻率,不會因為晶體諧振器頻率快單片機運行就快,頻率慢單片機運行速度就會降低。復位電路包含一個電容、兩個電阻包括一個接地電阻和一個復位按鍵,電容和電阻采用值為10F和10K。復位電路讓單片機回到原始工作狀態(tài),RST復位引腳高電平有效,高電平有效的持續(xù)時間應為24個時鐘周期以上,才能有效復位。根據(jù)公式電容的充電時間為t=R*C,則電容的充電時間為100ms,充滿使得單片機復位。電容充滿,與地相接的的電阻電壓、電流都降為零,在開機上電的0.1s鐘內,單片機系統(tǒng)會自動復位,在單片機工作期間,按下復位按鍵,電容放電,接地電阻出現(xiàn)電壓,單片機復位松開按鍵,電容充電,幾個毫秒之后單片機開始工作。3.2.2顯示模塊LCD1602能同時顯示32個字符。LCD1602采用的是數(shù)據(jù)并行接法,特點主要是使用方便,需要很多的I/O口,函數(shù)發(fā)生器設計中I/O口是夠用的,所以可以使用這種數(shù)據(jù)傳輸方式。八位的數(shù)據(jù)賦給I/O口。讀取數(shù)據(jù)時也只要讀取整個I/O口。LCD1602顯示模塊,如圖2.2所示。圖2.2顯示模塊原理圖3.2.3 D/A轉換電路DA轉換模塊由DAC0832、OP07運算放大電路組成,DAC0832作為函數(shù)發(fā)生器數(shù)模轉換模塊的核心芯片,轉換時間為1us,工作電壓為+5v+15v,基準電壓為正負10v。它主要由兩個8為寄存器和一個8位D/A轉換器組成,片內有輸入數(shù)據(jù)寄存器,所以芯片可以直接與單片機相接。DAC0832以電流的形式輸出信號,所以需要在Iout后接一個OP07運算放大器,把輸出電流信號轉換成電壓的形式,供示波器顯示,在信號輸出之前OP07輸出口接一個電阻和一個電容組成一個簡單的濾波電路,用來抑制其他雜波,得到正常信號。D/A轉換模塊,如圖2.3所示。圖2.3 D/A轉換模塊原理圖3.2.4提供運放電源電路DAC0832輸出的是電流信號,要將電流轉換成電壓,OP07運算放大器需要提供正負10v的電壓,在單片機與計算機通信時需要加電平轉換芯片,MAX232可以完成電平轉換功能,因此MAX232芯片上可以找到正、負電壓。根據(jù)測量,MAX232芯片的2、6引腳分別輸出+10v和-10v左右的電壓,所以可以作為運算放大器OP07的電源電壓,分別接在運放兩端,MAX232芯片,如圖2.4所示。圖2.4 MAX232原理圖4.硬件設計調試4.1測試儀器為確保硬件和軟件的正確性及完善性,需要一些測試儀器進行調試,硬件調試所需儀器如表3.1所示:表3.1測試儀器表硬件調試所需儀器數(shù)量電腦1臺萬用表1個USB線1條示波器1臺連接板子和示波器的探頭線1條4.2硬件調試過程硬件調試是設計是否能成功的關鍵,通過調試可以檢查板子是否能正確運行以及檢測設計功能是否按要求實現(xiàn)。畫原理圖很多細節(jié)需要注意,原理圖的正確性很重要,這關系到板子的焊接和實現(xiàn),原理圖布局劃線最好規(guī)整,本設計需要焊接的元器件不多,但焊接時還是需要認真檢查特別注意的,比如短距離焊點的焊接方法,或是線與線之間很近,線與焊盤之間距離太小,線細易斷等。在線密集的地方避免焊接在一起,同時還要避免虛焊、短路、斷路等現(xiàn)象。按照原理圖有順序的焊接器件,從低到高焊接,芯片的焊接需要注意,不可將芯片直接焊上。在焊接的時候看見虛斷的線路,需要用焊錫補,在拉焊錫時為了避免影響其他的線路,在拉完焊錫的路徑上進行檢測,檢查相關電路的連通和無關電路的隔斷,找出問題電路線,并及時改正。在焊完電路以后檢查電路的可實際操作性是一定需要的,因為在焊接的時候芯片很容易出現(xiàn)問題,板子上有些元件接口還加有跳線,需要檢查是否有正確連接,有無短路、斷路、線的連通性,跳線有沒有松動等,對照電路圖按照順序逐一對照檢查。板子實物圖,如圖3.1所示。圖3.1 板子實物圖上電后,板子上的最小系統(tǒng)的復位按鍵,按下是否能復位,LED燈點亮。檢測完畢后在進行下一步的調試工作。板子通電時不要急于把重要的芯片插上,更不能將芯片或電源插反,若電路出現(xiàn)問題很有可能將芯片燒壞。通電后查看顯示屏能否正常顯示。若板子出現(xiàn)異?,F(xiàn)象,例如異常氣味、出現(xiàn)煙霧和器件發(fā)燙等現(xiàn)象,立即切斷電源。如果測試沒有任何問題,硬件也確定是好的,結束硬件調試下載正確程序,并連接示波器。(1)板子上電后,通過示波器顯示頻率為1HZ,幅值為5V的正弦波。圖3.2 正弦波實現(xiàn)圖(2)通過按鍵,實現(xiàn)頻率和幅值的調整,示波器上顯示調整后的正弦波波形,頻率為5HZ,幅值為2V。圖3.3 正弦波實現(xiàn)圖(3)通過波形切換按鍵,將正弦波波形切換到三角波波形,并通過示波器上顯示頻率為5HZ,幅值為2V三角波波形。圖3.4三角波實現(xiàn)圖(4)通過波形切換按鍵,將三角波波形切換到方弦波波形,并通過示波器上顯示頻率為5HZ,幅值為2V方波波形。 圖3.5 方波實現(xiàn)圖(5)通過波形切換按鍵,將方弦波波形切換到鋸齒波波形,并通過示波器上顯示頻率為5HZ,幅值為2V方波波形。圖3.6 鋸齒波實現(xiàn)圖4.3 調試所遇問題及解決辦法將元器件根據(jù)原理圖焊接在板子上后,給板子上電,單片機最小系統(tǒng)沒有異常,液晶顯示屏正常,MAX232芯片在上電幾分鐘后芯片發(fā)燙,立刻切斷電源,并檢查原理圖各個引腳是否焊接正確,地和電源是否焊接錯誤,檢查有無短路現(xiàn)象,發(fā)現(xiàn)無誤,再次上電,其他模塊正常運作,MAX232芯片仍然發(fā)燙,斷電后將芯片取下,給板子供電,用萬用表測量DAC0832輸出引腳,萬用表顯示有電流輸出,可以確定DAC0832芯片正常運作。這時將MAX232換下,換成一個升壓模塊電路,對OP07運放提供正負電壓,將模塊接入后,上電,發(fā)現(xiàn)幾分鐘后升壓模塊也迅速發(fā)燙,切斷電源將模塊取下,這時通過查找資料后發(fā)現(xiàn)OP07正負10V引腳接反,這時將OP07運放的正負電源輸入端口引腳反過來,將MAX232芯片的6引腳與運放OP07的4引腳相接,之后再將MAX232芯片的2引腳與運放OP07的7引腳相接。4.4調試結果通過對軟件和硬件的檢查,反復的修改和調試,上電后,電源指示燈正常亮,LCD1602液晶顯示屏可以正常顯示波形種類、幅值和頻率大小,按下按鍵后,相應的顯示屏顯示的內容會有所改變,示波器顯示正確的波形,本設計可以手動復位。5.軟件調試基于單片機函數(shù)信號發(fā)生器是由硬件和軟件來相互結合實現(xiàn)的,任一部分存在問題都會影響總體功能,達不到預期效果。在本設計確定硬件電路沒有問題以后,就開始對軟件的調試了。由于軟硬件相互結合,根據(jù)題目要求設計硬件電路,查看相關資料以及整合相關電路功能及性能,將硬件電路設計出來,確定好硬件電路后,根據(jù)要實現(xiàn)的硬件功能,軟件設計也會逐步確定下來。根據(jù)函數(shù)發(fā)生器所要實現(xiàn)的具體功能設計出合理的程序結構。單片機的軟件設計調試主要有兩種,一是使用軟件仿真進行調試,運用計算機軟件區(qū)模擬單片機環(huán)境的指令執(zhí)行,并虛擬單片機內部資源從而實現(xiàn)功能演示。另外一種就是通過軟硬件結合來進行程序的調試,使用Keil軟件編譯好程序下載到單片機中,然后在系統(tǒng)中觀察軟件功能是否實現(xiàn)。在本次設計中我們先使用proteus對本設計進行仿真,之后再運用軟硬結合下載進單片機的方式完成本次設計。6.心得體會為期兩周的單片機實訓結束了,我們小組學到了很多東西。隨著電子技術的發(fā)展,特別是隨著大規(guī)模集成電路的產(chǎn)生,給人們的生活帶來了根本性的變化,我們學習了單片機這門課程,感覺是有點難,不過在學習中,我才發(fā)現(xiàn)學習單片機不僅僅需要軟件的知識,還需要硬件的知識。單片機是一門很好的學問,需要我們去鉆研它。說起本次設計,我認為最重要的就是做好設計的預習,認真的研究老師給的題目,選一個小組成員都感興趣的題目。其次,老師在實驗課上的講解要認真的去聽去想,因為只有都明白了,做起設計就會事半功倍,如果沒弄明白,就迷迷糊糊的去選題目做設計,到頭來一點收獲也沒有。最后,要重視程序的規(guī)范,便于修改,也要注重程序的調試,掌握其方法。在全組人竭盡全力,程序編寫成功,這是我們共同努力的結果,在享受我們成果之時,不得不感慨單片機的重要性,所以為期兩周的單片機課程設計沒有浪費我們學到了很多知識,本次設計和課堂上老師所講的內容有所相似,需要我們在結合所學只是上進一步升華。也讓我們對單片機有了更深一步的了解,雖然最后結果是出來了,可這與老師的精心指導是分不開的她引導我們的思路,所以老師是功不可沒的??偠灾瑔纹瑱C課程設計對于我們有很大的幫助,我們從中受益匪淺。附錄1原理圖Protues仿真圖附錄2源程序#includereg52.h#define uchar unsigned char#define uint unsigned intsbit key1=P10;sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit key5=P14;sbit lcden=P34;sbit lcdrs=P35;sbit dacwr=P36;uchar flag,freq,size; / 分別用來標記波的種類、頻率HZ、幅值Vuchar num,key; /定義數(shù)組元素、以及是否有按鍵按下uint value; /定時器裝初值uchar lcd_table=wave:;uchar lcd_table1=fre:;uchar lcd_table2=amp:;uchar lcd_table3=sin; /LCD波形種類數(shù)組uchar code sin_table64=0x00,0x03,0x06,0x0a,0x10,0x17,0x1e,0x27,0x30,0x3b,0x46,0x51,0x5d,0x69,0x76,0x83,0x8f,0x9c,0xa8,0xb3,0xbf,0xc9,0xd3,0xdc,0xe4,0xec,0xf2,0xf7,0xfb,0xfe,0xff,0xff,0xff,0xfc,0xf9,0xf5,0xef,0xe8,0xe1,0xd8,0xce,0xc4,0xb9,0xae,0xa2,0x96,0x89,0x7d,0x70,0x64,0x58,0x4c,0x41,0x36,0x2c,0x23,0x1b,0x14,0x0d,0x08,0x04,0x01,0x00,0x00; /正弦波uchar code tri_table64=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,0xfe,0xf6,0xee,0xe6,0xde,0xd6,0xce,0xc6,0xbe,0xb6,0xae,0xa6,0x9e,0x96,0x8e,0x86,0x7e,0x76,0x6e,0x66,0x5e,0x56,0x4e,0x46,0x3e,0x36,0x2e,0x26,0x1e,0x16,0x0e,0x06; /三角波uchar code zig_table64=0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c,0x20,0x24,0x28,0x2c,0x30,0x34,0x38,0x3c,0x40,0x44,0x48,0x4c,0x50,0x54,0x58,0x5c,0x60,0x64,0x68,0x6c,0x70,0x74,0x78,0x7c,0x80,0x84,0x88,0x8c,0x90,0x94,0x98,0x9c,0xa0,0xa4,0xa8,0xac,0xb0,0xb4,0xb8,0xbc,0xc0,0xc4,0xc8,0xcc,0xd0,0xd4,0xd8,0xdc,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc; /鋸齒波uchar code squ_table64=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff; /方波void delayms(uchar xms) uchar i,j; for(i=xms;i0;i-) for(j=110;j0;j-);void write_com(uchar com) /液晶寫指令 lcdrs=0; P0=com; delayms(2); lcden=1; delayms(2); lcden=0;void write_data(uchar date) /液晶寫數(shù)據(jù) lcdrs=1; P0=date; delayms(2); lcden=1; delayms(2); lcden=0;void lcd_init() /液晶初始化 lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);void init() key=1;value=15625; /按鍵標志位、定時初值(1450微秒為人工減小誤差值)初始化 flag=1;freq=1;size=5; /變量初始化,初始產(chǎn)生正弦波,頻率為1HZ,幅值為5V dacwr=0;/0832初始化 TMOD=0x01; /定時器T0初始化 TH0=(65536-value+1400)/256;/頻率為1HZ時,每點之間隔15625微秒 TL0=(65536-value+1400)%256; EA=1; ET0=1; TR0=1;void keyscan() if(key1=0) /key1選擇波形 delayms(5); if(key1=0) while(!key1); key=1; flag+; /flag為1、2、3、4時,分別對應正弦方波、三角方波、鋸齒方波、方波 if(flag=5)flag=1; if(key2=0) /頻率增大 delayms(5); if(key2=0) while(!key2); key=1; freq+; if(freq10)freq=1; value=1000000/(freq*64); if(key3=0) /頻率減小 delayms(5); if(key3=0) while(!key3); key=1; freq-; if(freq5)size=1; if(key5=0) /幅值減小 delayms(10); if(key5=0) while(!key5); key=1; size-; if(size1)size=5; void gene_wave() switch(flag) case 1:P2=sin_tablenum*size/5;lcd_table30=s;lcd_table31=i;lcd_table32=n;break; case 2:P2=tri_tablenum*size/5;lcd_table30=t;lcd_table31=r;lcd_table32=i;break; case 3:P2=zig_tablenum*size/5;lcd_table30=z;lcd_table31=i;lcd_table32=g;break; case 4:P2=squ_tablenum*size/5;lcd_table30=s;lcd_table31=q;lcd_table32=u;break; default:P2=sin_tablenum*size/5;lcd_table30=s;lcd_table31=i;lcd_table32=n; void lcd_display() uchar i,ge,shi; lcd_init(); key=0; /置按鍵標志位為0 shi=freq/10; ge=freq%10; write_com(0x80); /第一行:顯示波形 for(i=0;i5;i+) write_data(lcd_tablei); for(i=0;i3;i+) write_data(lcd_table3i); write_com(0x80+0x40); /第二行:顯示頻率和振幅 for(i=0;i4;i+) write_data(lcd_table1i); write_data(shi+0x30); write_data(ge+0x30); write_data(H); write_data(Z); for(i=0;i2;i+) write_data( ); for(i=0;i=64) num=0; gene_wave();- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 基于 單片機 函數(shù) 信號發(fā)生器 設計
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.italysoccerbets.com/p-6643679.html