第一篇:課程設計任務書-6基于單片機的多功能信號發(fā)生器的設計
課程設計任務書
學生姓名:專業(yè)班級:指導教師:工作單位:
題目: 基于單片機的多功能信號發(fā)生器的設計初始條件:
1.運用所學的單片機原理與接口技術知識和數(shù)字電路知識;
2.51單片機應用開發(fā)系統(tǒng)一套;
3.PC機及相關應用軟件;
要求完成的主要任務:
多功能信號發(fā)生器是工業(yè)測量領域使用廣泛的測量設備,要求能夠輸出方波、正弦波、鋸齒波;其輸出頻率可調(diào)、輸出幅度可調(diào),要求該設備采用單片機實現(xiàn),可調(diào)部分具備粗調(diào)和細調(diào)功能并具備一定功率輸出。
1.完成多功能信號發(fā)生器的設計和調(diào)試。
2.撰寫課程設計說明書,說明書使用A4打印紙計算機打印,用Protel等繪圖軟件繪制電子線路圖紙。
時間安排:
第1周 下達課程設計任務書和日程安排,調(diào)研和查找資料,明確設計任務要求; 第2周 完成方案論證、總體設計和硬件設計;
第3周 完成軟件設計和程序的編寫;
第4周 調(diào)試硬件系統(tǒng)和軟件程序,完成整個系統(tǒng)的設計和調(diào)試;
第5周 結果分析整理、撰寫課程設計報告,驗收和答辯。
指導教師簽名:2010 年 12 月 15 日 系主任(或責任教師)簽名:2010 年 12 月 16 日
第二篇:51單片機設計多功能低頻函數(shù)信號發(fā)生器
【轉(zhuǎn)】 51單片機設計多功能低頻函數(shù)信號發(fā)生器 2010-06-05 17:37 轉(zhuǎn)載自 yeyongan1987 最終編輯 yeyongan1987
51單片機設計多功能低頻函數(shù)信號發(fā)生器
應用89S52單片機和DAC0832進行低頻函數(shù)信號發(fā)生器的設計。本設計能產(chǎn)生正弦波、鋸齒波、三角波和方波。這里著重介紹正弦波和鋸齒波的生成原理。
ADC0832的介紹:DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個DA芯片以其價格低廉、接口簡單、轉(zhuǎn)換控制容易等優(yōu)點,在單片機應用系統(tǒng)中得到廣泛的應用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構成。
D0~D7:八位數(shù)據(jù)輸入端 ILE: 數(shù)據(jù)允許鎖存信號 /CS: 輸入寄存器選擇信號 /WR1: 輸入寄存器選擇信號 /XFER:數(shù)據(jù)傳送信號
/WR2: DAC寄存器的寫通選擇信號 Vref: 基準電源輸入端 Rfb: 反饋信號輸入端 Iout1: 電流輸出1 Iout2: 電流輸出2 Vcc: 電源輸入端 AGND: 模擬地 DGND: 數(shù)字地 DAC0832結構:
D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時間應大于90ns(否則鎖存器的數(shù)據(jù)會出錯);
ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效;
CS:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效;
WR1:數(shù)據(jù)鎖存器寫選通輸入線,負脈沖(脈寬應大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當LE1為高電平時,數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負跳變時將輸入數(shù)據(jù)鎖存;
XFER:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負脈沖(脈寬應大于500ns)有效;
WR2:DAC寄存器選通輸入線,負脈沖(脈寬應大于500ns)有效。由WR1、XFER的邏輯組合產(chǎn)生LE2,當LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負跳變時將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。
IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化;
IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);
Rfb:反饋信號輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度;
Vcc:電源輸入端,Vcc的范圍為+5V~+15V;
VREF:基準電壓輸入線,VREF的范圍為-10V~+10V; AGND:模擬信號地 DGND:數(shù)字信號地 DAC0832的工作方式:
根據(jù)對DAC0832的數(shù)據(jù)鎖存器和DAC寄存器的不同的控制方式,DAC0832有三種工作方式:直通方式、單緩沖方式和雙緩沖方式。本設計選用直通方式。
DAC0832工作時序:
DAC0832內(nèi)部結構圖:
當ILE為1時,只有當/CS、/WR1都為0時輸入寄存器才允許輸入;當/WR2、/XFER也都為0時,輸入寄存器里的信息才能寫入DAC寄存器。根據(jù)實際電路圖我們就可以得到DAC0832工作的時序的程序。如下:
P37=0;//P37=CS _nop_();//P36=WR P36=0;
P0=value;(數(shù)據(jù)端口信號數(shù)值0~255)P36=1;_nop_();P37=1;硬件電路:
P0口是數(shù)據(jù)端口,接上拉電阻(其他端口則不用)。電源質(zhì)量要好,質(zhì)量越好的電源,芯片工作就越穩(wěn)定。
從LM358運放輸出的電壓最大峰峰值就是12V所以在二級運放的放大倍數(shù)要注意跟基準電壓想匹配,否則輸出信號會很容易失真。
正弦波的生成:
DAC0832產(chǎn)生信號的原理可以說是ADC0809AD轉(zhuǎn)換的逆過程,但DAC0832生成的信號是離散的。假設要生成一個Y=Asin(2*pi*f*t)的正弦波。adc0832數(shù)據(jù)端口給的數(shù)據(jù)的范圍是0~255一共256個。前0~127表示是X軸上方的電壓值(也可能是下方)。那么128~255是X軸下方的電壓值。那么我們可以得到數(shù)據(jù)端口的數(shù)值的具體量,即value=127sin(2*pi*f*t)+127;假設我在X軸上抽樣100個點(0~99),那么value=127sin(pi/50*t)+127;t:0~99.(這個100位的數(shù)組可以用MATALB生成)。也可以抽樣更多的點,抽樣的點越多,得到的信號越保真,但信號的頻率會有所下降。抽樣的點越少,失真越大,但頻率能成大幅度遞增。怎么選擇,具體情況具體分析。其他的波形也跟正弦波一樣。
程序如下:
#include
void getkey(void){ if(KEY1==0){ //按鍵按下后為電電平 RCAP2L+=10;//調(diào)節(jié)頻率 if(CY==1){ RCAP2H+=1;} } if(KEY2==0){ RCAP2L-=10;if(CY==1){ RCAP2H-=1;} } } void Timer2_Init(){ T2CON=0x00;TH2=(65536-300)/256;TL2=(65536-300)%256;RCAP2H=0XFE;RCAP2L=0XDA;//穩(wěn)定在50Hz左右 EA=1;ET2=1;TR2=1;} void T0_service()interrupt 1 { TH0=0XEC;TL0=0X77;keyflag=1;}
void Timer2_service()interrupt 5 { TF2=0;//清除中斷標志位 dac_cs=0;dac_WR=0;P1=tab[i];dac_WR=1;i++;dac_cs=1;if(i==100)i=0;} void main(){ Timer2_Init();TMOD=0x01;TH0=0XEC;TL0=0X77;EA=1;ET0=1;TR0=1;while(1){ if(keyflag){ keyflag=0;getkey();} } } 本程序需注意:按鍵是低電平有效。定時器2中斷發(fā)送數(shù)據(jù)給DAC0832,0832在得到一個數(shù)據(jù)后生成相應的電壓值。所以他的中斷時間決定信號的頻率,調(diào)節(jié)它的中斷時間就能調(diào)節(jié)信號的頻率。
其他波形的生成,其他的波形也跟正弦波一樣,但鋸齒波和三角波可以不用查表法,應用加減計算得到就可以得到。下面介紹的是鋸齒波: #include
while(1){ DAC_0832();} } DAC0832有著致命的一個缺點就是輸出的波形里的含有的頻率比較雜亂,常常出現(xiàn)過激的現(xiàn)象。如果你需要精確的信號的話,那么你必須在信號輸出端就如濾波器。得到干凈的低頻函數(shù)信號。如果要作為信號源的話最好是能就上一級攻放。效果會好很多。雖然DAC0832不是非常專業(yè)的函數(shù)信號發(fā)生芯片,但是它的輸出波形的范圍比較廣,常常能輸出一些,你意想不到得很有意思的信號曲線。
下面發(fā)幾張示波器觀察到得曲線:實驗室里手機照的,不是太清晰但還能看。
第三篇:單片機課程設計——中低頻信號發(fā)生器設計(范文模版)
中低頻信號發(fā)生器設計
一、方案設計:
使用單片機控制DA芯片產(chǎn)生模擬波形是一種產(chǎn)生所需信號的簡單方式,但由于受到普通DA芯片的設置時間以及單片機自身晶振頻率的限制,產(chǎn)生的波形頻率往往難以超過10khz,本設計不使用傳統(tǒng)DA芯片而使用模電知識設計頻率可變的波形發(fā)生器電路,額外添加一個乘法器實現(xiàn)AM調(diào)制功能,并使用單片機控制其頻率切換。
本設計從總體上可分為三個模塊:(1)單片機控制部分(2)波形發(fā)生模塊(3)AM調(diào)制模塊
由于大部分工作使用模電完成了,所以單片機部分就相對簡單,只需最基本的用于維持單片機工作的分立元件,使用IO口控制模擬部分產(chǎn)生所需波形。
波形發(fā)生器模塊分為兩部分,一部分為正弦波、方波、三角波產(chǎn)生電路,另一部分設計為提供單片機控制上述波形發(fā)生電路中的振蕩回路中的RC值的接口,以實現(xiàn)對其的頻率進行控制。
AM調(diào)制模塊使用市場上現(xiàn)有的乘法器芯片mc1496,使用該芯片文檔中的AM調(diào)制電路并適當調(diào)節(jié)電路參數(shù),即可實現(xiàn)AM調(diào)制功能。
二、方案仿真與實現(xiàn):
(一)AM調(diào)制模塊
Mc1496芯片手冊中的AM調(diào)制電路:
該電路在仿真和實際電路中都無法實現(xiàn)所需功能,經(jīng)過反復實驗結合網(wǎng)上的資源,得出了如下圖的電路,在仿真中該電路載波輸入小于100mv時可以輸出比較良好的AM調(diào)制波形(調(diào)制信號不能大于該幅值的1/2),在實際電路中載波輸入的峰峰值必須小于70mV。仿真電路:
0R51kΩJ1XFG1Key = A 11J209XFG2C3Key = A 10μF173C2100nF18R121kΩ0R9750ΩR85R10750ΩC4100nFR111kΩ1080VDD5VR1351Ω2IO2IO3IO8IO10IO1IO4IO6IO12R420kΩC110nFR15131kΩ14u26V112 V 0R620kΩR720kΩXSC1Ext Trig+164A+_+_B_IO14IO512mc1496_1R1414kΩ050kΩ6Key=A50%7V28 V 仿真結果:
(二)正弦波發(fā)生模塊
使用文氏橋式振蕩電路輸出正弦波,使用八路模擬開關CD4051實現(xiàn)振蕩回路頻率的調(diào)節(jié),具體電路見下圖:
R2100kΩ50%V2Key=A5 V D11N4002GPR3120kΩD2112U1A11N4002GPXSC1Ext Trig+R533kΩ34LM324DR41kΩC2100nFV15 V C1100nFR11kΩ+_A_+B_ 仿真結果:
R2100kΩ50%V2Key=A5 V D11N4002GPR3120kΩD2112U1A11N4002GPR533kΩCD4051INPUT34CD4051OUTPUTXSC1Ext Trig+LM324DR41kΩC2100nFV15 V C1100nFR11kΩ+_A_+B_CD4051INPUTJ1AKey = A J2BKey = A J3CKey = A J4DKey = A J6FKey = A J7GKey = A J5EKey = A C3100nFR61kΩC4100nFR71kΩC5100nFR81kΩC6100nFR91kΩC7100nFR101kΩC8100nFR111kΩC9100nFR121kΩ1J8AKey = A J9BKey = A J10CKey = A J11DKey = A J13FKey = A J14GKey = A J12EKey = A C10100nFR131kΩC11100nFR141kΩC12100nFR151kΩC13100nFR161kΩC14100nFR171kΩC15100nFR181kΩC16100nFR191kΩ30
因為CD4051在Mutisim仿真庫中沒有,只好使用開關表示CD4051的功能,使用單片機控制CD4051的A、B、C三個引腳選擇0~7八個開關閉合,使得RC振蕩回路的頻率可以被 當輸出頻率較高時波形會產(chǎn)生比較明顯的失真,可以使用可編程濾波器改善波形,但考慮到成本因素,在本設計中沒有采用這種方案(以上電阻電容和實際電路中的值不同)。正弦波頻率的計算公式:
f?1/(2?RC)
方波和三角波產(chǎn)生電路:
R110kΩC124V25 V R250kΩ40%Key=AU1AR313XSC1Ext Trig+_A+_+B_50nFR410kΩ81kΩLM358ADR5V15 V 10kΩD11N5759A
方波和三角波頻率計算公式: f?1/(2*(R1?R2)*C1*ln(1?2*R4/R5))
正弦波電路中的頻率調(diào)節(jié)電路也可以適用于方波和三角波發(fā)生器上,實現(xiàn)利用單片機控制輸出頻率的目的。
(三)單片機控制模塊: 本設計側重于使用廉價的模擬電路代替高昂的DA芯片實現(xiàn)較高頻率波形發(fā)生器的功能,對于單片機的控制作用并不是十分依賴,使用單片機可以使得頻率的調(diào)節(jié)更加簡單,也可以為進一步開發(fā)提供幫助,單片機仿真電路:
C2U122pF19XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617SINASINBSINCSININHSQU_TRI_ASQU_TRI_BSQU_TRI_CSQU_TRI_INHX1CRYSTAL18C122pFXTAL2C3910uFRSTR110k293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51 SINA、SINB、SINC為正弦波發(fā)生電路中用到的CD4051的3位地址,用于選擇某一個RC回路作為振蕩回路,SININH為正弦波發(fā)生電路中用到的CD4051芯片的片選。
SQU_TRI_A、SQU_TRI_B、SQU_TRI_C為方波和三角波發(fā)生電路中用到的CD4051的3位地址,用于選擇某一個RC回路作為振蕩回路,SQU_TRI_INH為為方波和三角波發(fā)生電路中用到的CD4051芯片的片選。
用以上八個腳控制輸出的正弦波、方波、三角波的頻率。
P1.0~P1.3為用戶改變電路運行狀態(tài)的按鍵,分別為:改變輸出波形類型、增大輸出頻率、降低輸出頻率、改變AM調(diào)制波形輸出信號的載波頻率。
三、課程設計感想
正如方案設計中所述,這個課程設計的目的是為了克服普通DA+單片機構成的波形發(fā)生器電路只能輸出低頻信號的障礙,在實驗中,我發(fā)現(xiàn)使用文氏振蕩器產(chǎn)生正弦波可以輸出頻率100khz以上的信號,可以滿足本設計要求,但當其輸出頻率較高時會出現(xiàn)比較明顯的失真,這個問題可以使用可編程濾波器濾出所需頻率來解決,也可以自建中心頻率可變的帶通濾波器濾出所需頻率,雖然最后由于時間和成本的限制沒能夠設計出一個符合要求的濾波器,但我找到了一款非常人性化的濾波器設計軟件FWP3232,使用該軟件可以方便的設計有源濾波器,但要實現(xiàn)中心頻率可變需要的模擬開關數(shù)目太多(我目前只想到這種使用模擬開關的解決辦法),只好放棄這個想法。單片機的設計比較簡單,只要在主程序中不斷查詢幾個按鍵,根據(jù)用戶的按鍵操作改變控制模擬開關的管腳電平實現(xiàn)對輸出波形頻率、類型的控制即可。最麻煩的是乘法器的制作,因為我最開始不知道使用mc1496構成的乘法器用于實現(xiàn)AM調(diào)制時載波的峰峰值不能大于70mv,連續(xù)兩天都看不到AM調(diào)制波形還十分匪夷所思的看到類似載波和調(diào)制信號疊加的波形;另外,我最開始不知道m(xù)c1496的輸出幅值和那些參數(shù)有關,只是單純的使用了pdf中的電路,結果怎么也看不到,后來在網(wǎng)上搜集了一些資料才知道我放置在管腳5上的電阻太大了,導致mc1496芯片中的三極管射級輸出電流太小,乘法器無法起到相乘的作用,自然無法實現(xiàn)調(diào)制。本次課程設計最大的收獲在于深化了我對單片機在控制系統(tǒng)中的作用的理解,單片機不一定要承擔所有的功能(輸出波形、提供菜單、控制外圍器件),使用輔助的外圍模塊實現(xiàn)主要功能,使用單片機提供操作接口,則更可以滿足性能需求又可以提供實時高效的服務。
第四篇:基于51單片機函數(shù)信號發(fā)生器設計.
摘 要: 本系統(tǒng)利用單片機AT89S52采用程序設計方法產(chǎn)生鋸齒波、正弦波、矩形波三種波形,再通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號轉(zhuǎn)換成模擬信號,濾波放大,最終由示波器顯示出來,能產(chǎn)1Hz—3kHz的波形。通過鍵盤來控制三種波形的類型選擇、頻率變化,并通過液晶屏1602顯示其各自的類型以及數(shù)值,系統(tǒng)大致包括信號發(fā)生部分、數(shù)/模轉(zhuǎn)換部分以及液晶顯示部分三部分,其中尤其對數(shù)/模轉(zhuǎn)換部分和波形產(chǎn)生和變化部分進行詳細論述。
關鍵詞:單片機AT89S52、DAC0832、液晶1602 Abstract: this system capitalize on AT89s52,it makes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile.In this system it can control wave form choosing, frequency, range,can have the sine wave, the square-wave, the triangular wave.Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602.this design includes three modules.They are D/A conversion module, wave generate module and liquid crystal display of LED module.In this design, the wave generator into wave form module and D/A conversion module are discussed in detail.key word: AT89S52, DAC0832, liquid crystal 1602.目錄
1.系統(tǒng)設計
1.1 設計要求
1.2方案設計與論證
1.2.1 信號發(fā)生電路方案論證 1.2.2 單片機的選擇論證 1.2.3 顯示方案論證 1.2.4 鍵盤方案論證 1.3 總體系統(tǒng)設計 1.4 硬件實現(xiàn)及單元電路設計 1.4.1 單片機最小系統(tǒng)的設計
1.4.2 波形產(chǎn)生模塊設計 1.4.3 顯示模塊的設計 1.4.4 鍵盤模塊的設計
1.5 軟件設計流程 1.6 源程序
2.輸出波形的種類與頻率的測試
2.1 測試儀器及測試說明
2.2 測試結果 3.設計心的及體會 4.附錄 4.1 參考文獻 4.2 附圖
1、系統(tǒng)設計
經(jīng)過考慮,我們確定方案如下:利用AT89S52單片機采用程序設計方法產(chǎn)生鋸齒波、正弦波、矩形波三種波形,再通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號轉(zhuǎn)換成模擬信號,濾波放大,最終由示波器顯示出來,通過鍵盤來控制三種波形的類型選擇、頻率變化,最終輸出顯示其各自的類型以及數(shù)值。
1.1、設計要求
1、利用單片機采用軟件設計方法產(chǎn)生三種波形 2)、三種波形可通過鍵盤選擇 3)、波形頻率可調(diào)
4)、需顯示波形的種類及其平率
1.2方案設計與論證
1.2.1 信號發(fā)生電路方案論證
方案一:通過單片機控制D/A,輸出三種波形。此方案輸出的波形不夠穩(wěn)定,抗干擾能力弱,不易調(diào)節(jié)。但此方案電路簡單、成本低。
方案二:使用傳統(tǒng)的鎖相頻率合成方法。通過芯片IC145152,壓控振蕩器搭接的鎖相環(huán)電路輸出穩(wěn)定性極好的正弦波,再利用過零比較器轉(zhuǎn)換成方波,積分電路轉(zhuǎn)換成三角波。此方案,電路復雜,干擾因素多,不易實現(xiàn)。
方案三:利用MAX038芯片組成的電路輸出波形。MAX038是精密高頻波形產(chǎn)生電路,能夠產(chǎn)生準確的三角波、方波和正弦波三種周期性波形。但此方案成本高,程序復雜度高。
以上三種方案綜合考慮,選擇方案一。
1.2.2 單片機的選擇論證
方案一:AT89S52單片機是一種高性能8位單片微型計算機。它把構成計算機的中央處理器CPU、存儲器、寄存器、I/O接口制作在一塊集成電路芯片中,從而構成較為完整的計算機、而且其價格便宜。
方案二:C8051F005單片機是完全集成的混合信號系統(tǒng)級芯片,具有與8051兼容的微控制器內(nèi)核,與MCS-51指令集完全兼容。除了具有標準8052的數(shù)字外設部件,片內(nèi)還集成了數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬部件和其他數(shù)字外設及功能部件,而且執(zhí)行速度快。但其價格較貴
以上兩種方案綜合考慮,選擇方案一
1.2.3 顯示方案論證
方案一:采用LED數(shù)碼管。LED數(shù)碼管由8個發(fā)光二極管組成,每只數(shù)碼管輪流顯示各自的字符。由于人眼具有視覺暫留特性,當每只數(shù)碼管顯示的時間間隔小于1/16s時人眼感覺不到閃動,看到的是每只數(shù)碼管常亮。使用數(shù)碼管顯示編程較易,但要顯示內(nèi)容多,而且數(shù)碼管不能顯示字母。
方案二:采用LCD液晶顯示器1602。其功率小,效果明顯,顯示編程容易控制,可以顯示字母。
以上兩種方案綜合考慮,選擇方案二。
1.2.4 鍵盤方案論證
方案一:矩陣式鍵盤。矩陣式鍵盤的按鍵觸點接于由行、列母線構成的矩陣電路的交叉處。當鍵盤上沒有鍵閉合時,所有的行和列線都斷開,行線都呈高電平。當某一個鍵閉合時,該鍵所對應的行線和列線被短路。
方案二:編碼式鍵盤。編碼式鍵盤的按鍵觸點接于74LS148芯片。當鍵盤上沒有閉合時,所有鍵都斷開,當某一鍵閉合時,該鍵對應的編碼由74LS148輸出。
以上兩種方案綜合考慮,選擇方案一。
1.3總體系統(tǒng)設計
該系統(tǒng)采用單片機作為數(shù)據(jù)處理及控制核心,由單片機完成人機界面、系統(tǒng)控制、信號的采集分析以及信號的處理和變換,采用按鍵輸入,利用液晶顯示電路輸出數(shù)字顯示的方案。將設計任務分解為按鍵電路、液晶顯示電路等模塊。圖(1)為系統(tǒng)的總體框圖
圖(1)總體方框圖
1.4硬件實現(xiàn)及單元電路設計
1.4.1單片機最小系統(tǒng)的設計
89C51是片內(nèi)有ROM/EPROM的單片機,因此,這種芯片構成的最小系統(tǒng)簡單﹑可靠。用80C51單片機構成最小應用系統(tǒng)時,只要將單片機接上時鐘電路和復位電路即可,如圖(2)89C51單片機最小系統(tǒng)所示。由于集成度的限制,最小應用系統(tǒng)只能用作一些小型的控制單元。其應用特點:
(1 有可供用戶使用的大量I/O口線。(2 內(nèi)部存儲器容量有限。(3 應用系統(tǒng)開發(fā)具有特殊性。
圖(2)89C51單片機最小系統(tǒng)
1.4.2 波形產(chǎn)生模塊設計
由單片機采用編程方法產(chǎn)生三種波形、通過DA轉(zhuǎn)換模塊DAC0832在進過濾波放大之后輸出。其電路圖如下:
圖(3)波形產(chǎn)生電路
如上圖所示,單片機的P0口連接DAC0832的八位數(shù)據(jù)輸入端,DAC0832的輸出端接放大器,經(jīng)過放大后輸出所要的波形。DAC0832的為八位數(shù)據(jù)并行輸入的,其結構圖如下:
圖(4)DAC0832的內(nèi)部結構
1.4.3 顯示模塊的設計
通過液晶1602顯示輸出的波形、頻率,其電路圖如下:
圖(5)液晶顯示
如上圖所示,1602的八位數(shù)據(jù)端接單片機的P1口,其三個使能端RS、RW、E分別接單片機的P3.2—P3.4。通過軟件控制液晶屏可以顯示波形的種類以及波形的頻率。
1.4.4 鍵盤顯示模塊的設計
本系統(tǒng)采用獨立鍵盤,其連接電路圖如下:
圖(6)鍵盤
圖中鍵盤獨立鍵盤引出的八跟線分別接單片機的P2口,只用其第四列,因此在程序初始化時P2.7腳給低電平。如圖開關3用來切換輸出波形、開關7和8用
來調(diào)節(jié)頻率的加減。當按開關7時輸出波形的頻率增加,按開關8時輸出波形的頻率減小。
1.5 軟件設計流程
本系統(tǒng)采用AT89S52單片機,用編程的方法來產(chǎn)生三種波形,并通過編程 來切換三種波形以及波形頻率的改變。
具體功能有:(1)各個波形的切換;(2)各種參數(shù)的設定;(3)頻率增減等。
軟件調(diào)通后,通過編程器下載到AT89S52芯片中,然后插到系統(tǒng)中即可獨立完成所有的控制。
軟件的流程圖如下:
圖(7)程序流程圖
1.6源程序
#include #define uchar unsigned char #define uint unsigned int
sbit lcdrw=P3^3;sbit lcdrs=P3^2;sbit lcde=P3^4;sbit d=P2^7;sbit s1=P2^0;sbit s2=P2^1;sbit s3=P2^2;sbit cs=P3^5;sbit wr=P3^6;uchar s1num,a,ys,j;uint fre;uchar code tosin[256]={ 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,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,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,0xda, 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,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51, 0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,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, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05, 0x06,0x07,0x08,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(uint z //延時子程序 { uchar i,j;for(i=z;i>0;i--for(j=110;j>0;j--;} void delay1(uint y { uint i;for(i=y;i>0;i--;} void write_com(uchar com //1602寫指令
{ lcdrs=0;P1=com;delay(5;lcde=1;delay(5;lcde=0;} void write_data(uchar date //1602數(shù)據(jù) { lcdrs=1;P1=date;delay(5;lcde=1;delay(5;lcde=0;} void init(//初始化 { lcdrw=0;lcde=0;wr=0;cs=0;
write_com(0x38;write_com(0x0c;write_com(0x06;write_com(0x01;write_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;} void write_f(uint date //寫頻率 { uchar qian,bai,shi,ge;qian=date/1000;bai=date/100%10;shi=date/10%10;ge=date%10;write_com(0x80+0x42;write_data(0x30+qian;
write_data(0x30+bai;write_data(0x30+shi;write_data(0x30+ge;write_data(0x48;write_data(0x5a;} void xsf(//顯示頻率 { if(s1num==1 { fre=(1000/(9+3*ys;write_f(fre;} if(s1num==2 { fre=(100000/(3*ys;write_f(fre;} if(s1num==3 { fre=(1000/(15+3*ys;write_f(fre;}
} void keyscanf({ d=0;if(s1==0 { delay(5;if(s1==0 { while(!s1;s1num++;if(s1num==1 { ys=0;write_com(0x80+0x05;write_data(0x73;//寫sine: write_data(0x69;write_data(0x6e;write_data(0x65;write_data(0x20;write_data(0x20;} if(s1num==2
{ ys=10;write_com(0x80+0x05;write_data(0x73;//寫squrae write_data(0x71;write_data(0x75;write_data(0x61;write_data(0x72;write_data(0x65;} if(s1num==3 { ys=0;write_com(0x80+0x05;//train write_data(0x74;write_data(0x72;write_data(0x61;write_data(0x69;write_data(0x6e;write_data(0x20;} if(s1num==4 {
s1num=0;P1=0;write_com(0x80+0x05;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_com(0x80+0x42;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;} } } if(s2==0 { delay(5;if(s2==0
{ while(!s2;ys++;} } if(s3==0 { delay(5;if(s3==0 { while(!s3;ys--;} } } void main({ init(;while(1 { keyscanf(;if(s1num==1 //正弦波// {
for(j=0;j<255;j++ { P0=tosin[j];delay1(ys;} } if(s1num==2 //方波// { P0=0xff;delay1(ys;P0=0;delay1(ys;} if(s1num==3 //三角波// { if(a<128 { P0=a;delay1(ys;} else { P0=255-a;
delay1(ys;} a++;}
if(!(s1&s2&s3 { xsf(;} } }
2、輸出波形的種類與頻率的測試
2.1、測量儀器及測試說明
測量儀器:穩(wěn)壓電源、示波器、數(shù)字萬用表。
測量說明:正弦波、矩形波、三角波信號的輸出,通過對獨立鍵盤來實現(xiàn)其的不同波形的輸出以及其頻率的改變。
2.2測試過程
當程序下進去時經(jīng)過初始化,液晶屏的上只顯示“wave:”和“f:“,當開關三按一下是此時輸出波形為正弦波,按兩下時輸出為方波,按三下時輸出為三角波。另外兩個開關可以調(diào)節(jié)頻率,三種波形的頻率可調(diào)范圍不同,分別如下: 正弦波:1—180HZ 方 波:1——3.3KHZ 三角波:1——180HZ
根據(jù)示波器的波形頻率的顯示計算出三種波形的頻率計算公式如下: 正弦波:f=(1000/(9+3*ys 方 波:f=(100000/(3*ys 三角波:f=(1000/(15+3*ys 其中ys為延時的變量。三種波形的仿真波形圖如下:
圖(8)正弦波圖形
圖(9)方波圖形
圖(10)三角波圖行
2.3、測試結果
各項指標均達到要求。
測試數(shù)據(jù)如下:
1)、產(chǎn)生正弦波、方波、三角波基本實現(xiàn)
2)、三種波形的頻率都可調(diào),但不能步進的調(diào)節(jié),其中方波的可調(diào)范圍最廣為1—3.3KHZ,其他兩種波形的頻率范圍不大1—180HZ 3)、顯示部分基本實現(xiàn) 4)、鍵盤功能實現(xiàn)
3、設計心的及體會
通過這次畢業(yè)設計,使我深刻地認識到學好專業(yè)知識的重要性,也理解了理論聯(lián)系實際的含義,并且檢驗了大學三年的學習成果,進一步加深了我對專業(yè)知識的了解和認識以及動手的能力。雖然在這次設計中對于所學知識的運用和銜接還不夠熟練,作品完成的還不是很出色。但是我將在以后的工作和學習中繼續(xù)努力、不斷完善。這個設計是對我們過去所學知識的系統(tǒng)提高和擴充的過程,為今后的發(fā)展打下了良好的基礎。
4、附錄
4.1 參考文獻
[1] 戴仙金主編 51單片機及其C語言匯編程序開發(fā)實例 清華大學出版社,2008 [2] 高吉祥主編 全國大學生電子設計競賽培訓系列教程 電子工業(yè)出版社,2007 [3] 楊素行主編 模擬電子技術基礎簡明教程 高等教育出版社,2007 [4] 蔣輝平主編 單片機原理與應用設計 北京航空航天大學出版社 2007 4.2 附圖
圖(11)總體原理設計圖
第五篇:基于51單片機函數(shù)信號發(fā)生器設計
湘南學院
電子工程設計
題 目: 基于51單片機的函數(shù)信號發(fā)生器設計
學院(系): 電子信息與電氣工程學院 年級專業(yè): 2013級電子信息科學與技術 學 號: 201314110144,201314110106 學生姓名: 周 慧 程迅 指導教師: 王 龍
2016年 4 月 1 日
課程設計任務書
學生姓名:程迅 周慧
專業(yè)班級:電子信息科學與技術
(一)班 指導教師:王 龍 工作單位:電子信息與電氣工程學院
題 目:
基于51單片機的函數(shù)信號發(fā)生器的設計 初始條件:
1.運用所學的單片機原理與接口技術知識和數(shù)字電路知識; 2.51單片機最小系統(tǒng); 3.PC機及相關應用軟件。
要求完成的主要任務: 系統(tǒng)大致包括信號發(fā)生部分、數(shù)/模轉(zhuǎn)換部分以及液晶顯示部分三部分,通過程序設計方法產(chǎn)生鋸齒波、正弦波、三角波、矩形波四種波形,通過按鍵來控制四種波形的類型選擇、頻率變化,并通過液晶屏1602顯示其各自的類型以及頻率值。
1.完成函數(shù)信號發(fā)生器的設計和調(diào)試。
2.撰寫課程設計說明書,說明書使用A4打印紙計算機打印,用proteus等仿真軟件繪制電子線路圖紙。
基于51單片機的函數(shù)信號發(fā)生器的設計
摘 要
本系統(tǒng)利用單片機STC89C52采用程序設計方法產(chǎn)生鋸齒波、正弦波、三角波、矩形波四種波形,再通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號轉(zhuǎn)換成模擬信號,濾波放大,最終由示波器顯示出來,能產(chǎn)0Hz—535Hz的波形。通過按鍵來控制三種波形的類型選擇、頻率變化,并通過液晶屏1602顯示其各自的類型以及數(shù)值,系統(tǒng)大致包括信號發(fā)生部分、數(shù)/模轉(zhuǎn)換部分以及液晶顯示部分三部分,其中尤其對數(shù)/模轉(zhuǎn)換部分和波形產(chǎn)生和變化部分進行詳細論述。
關鍵詞:單片機STC89C52、DAC0832、液晶1602
目錄
前言..........................................................................1 第一章 系統(tǒng)設計要求及設計方案..................................................2
1.1 設計要求.................................................................2 1.2 方案設計與論證...........................................................2 1.2.1 信號發(fā)生電路方案論證...............................................2 1.2.2 單片機的選擇論證..................................................2 1.2.3 顯示方案論證.....................................................3 1.2.4 鍵盤方案論證......................................................3 1.3 系統(tǒng)主要功能.............................................................3 第二章 系統(tǒng)的硬件設計..........................................................4 2.1 總體系統(tǒng)設計.............................................................4 2.2 硬件實現(xiàn)及單元電路設計...................................................4 2.2.1 振蕩電路..........................................................4 2.2.2 復位電路設計.....................................................5 2.2.3 波形產(chǎn)生模塊設計..................................................6 2.2.4顯示模塊的設計.....................................................7 2.2.5 鍵盤顯示模塊的設計.................................................7 2.3 軟件設計流程.............................................................8 第三章 proteus的簡介..........................................................9 3.1 proteus介紹.............................................................9 3.1.1 keil調(diào)試.........................................................10 3.1.2 proteus仿真調(diào)試..................................................10 3.2 測試過程................................................................11 附錄一:總電路圖..............................................................12 附錄二:部分程序..............................................................12
前言
信號發(fā)生器是一種常用的信號源,廣泛應用于電子電路、自動控制系統(tǒng)和教學實驗等領域。信號的產(chǎn)生有模擬電路、專用硬件和軟件產(chǎn)生等方法。采用模擬電路搭建函數(shù)信號發(fā)生器,可產(chǎn)生方波、三角波、正弦波、鋸齒波,但不能產(chǎn)生任意波形,存在波形質(zhì)量差、控制難、可調(diào)范圍小,電路復雜和體積大等缺點,且頻率調(diào)節(jié)不方便。專用硬件方法產(chǎn)生的信號頻率分辨率高、穩(wěn)定性好、在線調(diào)整方便,如目前在通訊系統(tǒng)中應 用廣泛的直接數(shù)字頻率合成(DDS)技術,例如 AD9854是一種典型的信號產(chǎn)生方法,但是價格昂貴。
利用單片機通過程序設計方法產(chǎn)生低頻信號,其頻率底線較低,具有線路簡單、結構緊湊、體積小、價格低廉、頻率穩(wěn)定度高、抗干擾能力強、用途廣泛等優(yōu)點,且如需要產(chǎn)生新的波形時,只需對程序進行修改即可。該系統(tǒng)利用單片機STC89C52和D /A 轉(zhuǎn)換器DAC0832 轉(zhuǎn)換數(shù)字信號為 0 ~ 5 V 模擬電壓信號,并在 LCD1602 顯示,通過示波器就能得知產(chǎn)生的信號波形。
第一章 系統(tǒng)設計要求及設計方案
1.1 設計要求
1)、利用單片機采用軟件設計方法產(chǎn)生四種波形 2)、四種波形可通過按鍵選擇輸出 3)、波形頻率可調(diào) 4)、需顯示波形的頻率
1.2 方案設計與論證 1.2.1 信號發(fā)生電路方案論證
方案一:通過單片機控制D/A,輸出三種波形。此方案輸出的波形不夠穩(wěn)定,抗干擾能力弱,不易調(diào)節(jié)。但此方案電路簡單、成本低。
方案二:使用傳統(tǒng)的鎖相頻率合成方法。通過芯片IC145152,壓控振蕩器搭接的鎖相環(huán)電路輸出穩(wěn)定性極好的正弦波,再利用過零比較器轉(zhuǎn)換成方波,積分電路轉(zhuǎn)換成三角波。此方案,電路復雜,干擾因素多,不易實現(xiàn)。
方案三:利用MAX038芯片組成的電路輸出波形。MAX038是精密高頻波形產(chǎn)生電路,能夠產(chǎn)生準確的三角波、方波和正弦波三種周期性波形。但此方案成本高,程序復雜度高。
以上三種方案綜合考慮,選擇方案一。
1.2.2 單片機的選擇論證
方案一:STC89C52單片機是一種高性能8位單片微型計算機。它把構成計算機的中央處理器CPU、存儲器、寄存器、I/O接口制作在一塊集成電路芯片中,從而構成較為完整的計算機、而且其價格便宜。
方案二:C8051F005單片機是完全集成的混合信號系統(tǒng)級芯片,具有與8051兼容的微控制器內(nèi)核,與MCS-51指令集完全兼容。除了具有標準8052的數(shù)字外設部件,片內(nèi)還集成了數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬部件和其他數(shù)字外設及功能部件,而且執(zhí)行速度快。但其價格較貴。
以上兩種方案綜合考慮,選擇方案一
1.2.3 顯示方案論證
方案一:采用LED數(shù)碼管。LED數(shù)碼管由8個發(fā)光二極管組成,每只數(shù)碼管輪流顯示各自的字符。由于人眼具有視覺暫留特性,當每只數(shù)碼管顯示的時間間隔小于1/16s時人眼感覺不到閃動,看到的是每只數(shù)碼管常亮。使用數(shù)碼管顯示編程較易,但要顯示內(nèi)容多,而且數(shù)碼管不能顯示字母。
方案二:采用LCD液晶顯示器1602。其功率小,效果明顯,顯示編程容易控制,可以顯示字母。
以上兩種方案綜合考慮,選擇方案二。
1.2.4 鍵盤方案論證
方案一:矩陣式鍵盤。矩陣式鍵盤的按鍵觸點接于由行、列母線構成的矩陣電路的交叉處。當鍵盤上沒有鍵閉合時,所有的行和列線都斷開,行線都呈高電平。當某一個鍵閉合時,該鍵所對應的行線和列線被短路。
方案二:獨立點觸按鍵。點觸按鍵體積小,安裝方便,成本低。以上兩種方案綜合考慮,選擇方案二。
1.3 系統(tǒng)主要功能
經(jīng)過考慮,我們確定方案如下:利用STC89C52單片機采用程序設計方法產(chǎn)生鋸齒波、正弦波、矩形波鋸齒波四種波形,再通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號轉(zhuǎn)換成模擬信號,濾波放大,最終由示波器顯示出來,通過按鍵來控制四種波形的類型選擇、頻率變化,最終輸出顯示其各自的類型以及數(shù)值。
第二章 系統(tǒng)的硬件設計
2.1 總體系統(tǒng)設計
該系統(tǒng)采用單片機作為數(shù)據(jù)處理及控制核心,由單片機完成人機界面、系統(tǒng)控制、信號的采集分析以及信號的處理和變換,采用按鍵輸入,利用液晶顯示電路輸出數(shù)字顯示的方案。將設計任務分解為按鍵電路、液晶顯示電路等模塊。下
圖2.1為系統(tǒng)的總體框圖
圖2.1 總體方框圖
2.2 硬件實現(xiàn)及單元電路設計
2.2.1 振蕩電路
單片機內(nèi)部有一個高增益、反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容振蕩電路脈沖經(jīng)過二分頻后作為系統(tǒng)的時鐘信號,再在二分頻的基礎上三分頻產(chǎn)
4(電容和一般取30pF)。這樣就構成一個穩(wěn)定的自激振蕩器。
生ALE信號,此時得到的信號時機器周期信號。
振蕩電路如圖2.2.1所示:
圖2.2.1 振蕩電路
2.2.2 復位電路設計
復位操作有兩種基本形式:一種是上電復位,另一種是按鍵復位。按鍵復位具有上電復位功能外,若要復位,只要按圖中的RESET鍵,電源VCC經(jīng)電阻R1、R2分壓,在RESET端產(chǎn)生一個復位高電平。上電復位電路要求接通電源后,通過外部電容充電來實現(xiàn)單片機自動復位操作。上電瞬間RESET引腳獲得高電平,隨著電容的充電,RERST引腳的高電平將逐漸下降。RERST引腳的高電平只要能保持足夠的時間(2個機器周期),單片機就可以進行復位操作。按鍵復位電路圖如圖2.2.2所示。
圖2.2.2 復位電路
2.2.3 波形產(chǎn)生模塊設計
由單片機采用編程方法產(chǎn)生四種波形、通過DA轉(zhuǎn)換模塊DAC0832在進過濾波放大之后輸出。
其電路圖如下圖2.2.3(1):
圖2.2.3(1)波形產(chǎn)生電路
如上圖2.2.3(1)所示,單片機的P0口連接DAC0832的八位數(shù)據(jù)輸入端,DAC0832的輸出端接放大器,經(jīng)過放大后輸出所要的波形。DAC0832的為八位數(shù)據(jù)并行輸入的,其結構圖如下圖2.2.3(2):
圖2.2.3(2)DAC0832的內(nèi)部結構
2.2.4顯示模塊的設計
通過液晶1602顯示輸出的波形、頻率。1602的八位數(shù)據(jù)端接單片機的P0口,其使能端RS、E分別接單片機的P3.5、P3.4。通過軟件控制液晶屏可以顯示波形的種類以及波形的頻率。
其電路圖如下圖2.2.4:
圖2.2.4 液晶顯示
2.2.5 鍵盤顯示模塊的設計
其連接電路圖如下圖2.2.5:
圖2.2.5 鍵盤
圖中鍵盤引出的5跟線分別接單片機的P1口,其中P1.0連接按鍵1用于切換波形,P1.1、P1.2連接按鍵2、3用于調(diào)節(jié)波形的頻率的增減,P1.3連接的按鍵用于占空比的升高。
2.3 軟件設計流程
本系統(tǒng)采用STC89C52單片機,用編程的方法來產(chǎn)生四種波形,并通過編程 來切換四種波形以及波形頻率的改變。
具體功能有:(1)各個波形的切換;(2)各種參數(shù)的設定;(3)頻率增減等。
軟件調(diào)通后,通過編程器下載到STC89C52芯片中,然后插到系統(tǒng)中即可獨立完成所有的控制。
軟件的流程圖如下圖2.3:
圖2.3 程序流程圖
第三章 proteus的簡介
3.1 proteus介紹
Proteus軟件是來自英國Labcenter electronics公司的EDA工具軟件,它組合了高級原理布圖、混合模式SPICE仿真,PCB設計以及自動布線來實現(xiàn)一個完整的電子設計系統(tǒng)。此系統(tǒng)受益于15年來的持續(xù)開發(fā),被《電子世界》在其對PCB設計系統(tǒng)的比較文章中評為最好產(chǎn)品—“The Route to PCB CAD”。Proteus 產(chǎn)品系列也包含了我們革命性的VSM技術,用戶可以對基于微控制器的設計連同所有的周圍電子器件一起仿真。用戶甚至可以實時采用諸如LED/LCD、鍵盤、RS232終端等動態(tài)外設模型來對設計進行交互仿真。
其功能模塊:—個易用而又功能強大的ISIS原理布圖工具;PROSPICE混合模型SPICE仿真;ARES PCB設計。PROSPICE 仿真器的一個擴展PROTEUS VSM:便于包括所有相關的器件的基于微處理器設計的協(xié)同仿真。此外,還可以結合微控制器軟件使用動態(tài)的鍵盤,開關,按鈕,LEDs甚至LCD顯示CPU模型。支持許多通用的微控制器,如PIC,AVR,HC11以及8051。最新支持ARM。交互的裝置模型包括:LED和LCD顯示,RS232終端,通用鍵盤,I2C,SPI器件。強大的調(diào)試工具,包括寄存器和存儲器,斷點和單步模式。IAR C-SPY 和Keil uVision2等開發(fā)工具的源層調(diào)試。應用特殊模型的DLL界面-提供有關元件庫的全部文件。
在完成了函數(shù)信號發(fā)生器的硬件設計和軟件設計以后,便進入系統(tǒng)的調(diào)試階段。系統(tǒng)的調(diào)試步驟和方法基本上是相同的,但具體細節(jié)和所采用的開發(fā)系統(tǒng)以及用戶系統(tǒng)選用的單片機型號有關,我們選用的是Keil軟件進行軟件調(diào)試,用Proteus軟件完成硬件調(diào)試。
3.1.1 keil調(diào)試
3.1.2 proteus仿真調(diào)試
3.2 測試過程
1)、當程序下進去時經(jīng)過初始化,液晶屏的上只顯示“Frequency:”和“0050Hz”,默認狀態(tài)輸出波形為正弦波,按一下按鍵1時輸出為方波,按按鍵1兩下時輸出為鋸齒波,按按鍵1三下時輸出三角波。按鍵2、3可以調(diào)節(jié)頻率,三種波形的頻率可調(diào)范圍,分別如下: 正弦波:0—535Hz 方 波:0——535Hz 三角波:0——535Hz 鋸齒波:0——535Hz 根據(jù)示波器的波形頻率的顯示計算出三種波形的頻率計算公式如下:
正弦波:f= 65536-10^6//(512*FREQ)方 波:f= 65336-10^6/(256*FREQ)三角波:f= 65336-10^6/(256*FREQ)鋸齒波:f= 100(+-)n*2Hz.2)、四種種波形的仿真波形圖如下:
圖3.2(1)方波圖形
圖3.2(2)正弦波圖形
圖3.2(3)三角波圖形 圖3.2(4)鋸齒波圖形
附錄一:總電路圖
附錄二:部分程序
//調(diào)節(jié)部分——頻率 void freq_ud(void){ unsigned int temp;if(freq_d==0){ FREQ--;
} else if(freq_u==0){ FREQ++;} if(cho==1|cho==3)//鋸齒波256次中斷一周期,否則他的頻率是100(+-)n*2Hz.{temp=0xffff-3906/FREQ;//默認為100hz,切換后頻率為50HZ65336-10^6/(256*FREQ)TIME0_H=temp/256;TIME0_L=temp%256;} else if(cho==0|cho==3)//正弦波 三角波默認周期50hz 65536-10^6//(512*FREQ){temp=0xffff-1953/FREQ;TIME0_H=temp/256;TIME0_L=temp%256;}}
//調(diào)節(jié)部分——方波的占空比
void duty_ud(void)//方波也采用512次中斷構成一個周期。{ if(duty_d==0&sqar_num>0)sqar_num--;else if(duty_u==0&sqar_num<255)} //波形發(fā)生函數(shù) void sint(void){ if(!flag){ cs=0;P2=sin_num[num++];cs=1;if(num==0){num=255;flag=1;} sqar_num++;} else if(flag){
} void square(void){ if(i++ cs=0;P2=num++;cs=1;} void stw(void){ if(~flag){ cs=0;P2=num++;cs=1;if(num==0){num=255;flag=1;} } else if(flag){ } void main(){ TMOD=0X01;TH0=0xff;TL0=0xd9;IT0=1;//設置中斷觸發(fā)方式,下降沿 EA=1;EX0=1;ET0=1;IP=0X01;//鍵盤中斷級別高 init_1602();//初始化lcd write_command(0x80);//液晶顯示位置 delay(5); for(i=0;i { } write_data(value1[i]);delay(5);TR0=1;while(1){ show_frequency();} } //按鍵中斷處理程序。void it0()interrupt 0 { if(chg==0){FREQ=50;if(++cho==4){cho=0;num=0;}}//num=0;所有數(shù)據(jù)從新開始,保證波形的完整性 else if(freq_u==0|freq_d==0){freq_ud();} else if(cho==1&(duty_d==0|duty_u==0)){duty_ud();} else;}