




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、電子工程學院2015年大學生電子設計競賽設計報告 學院:電子工程學院 姓名:馬晨迪(2012210987)(硬件)宋明潔(2012210991)(軟件)完成任務1基本要求(1)振蕩頻率:10KHz;(2)輸出信號電壓范圍(峰-峰值):2V;(負載1K歐,500歐,50歐)(3)測量振蕩信號參數(shù):峰峰值、有效值、頻率;測量精度要求:滿足(2)的負載下測量誤差±5%。(以外接示波器測試為參考)2發(fā)揮部分指定發(fā)揮要求:(1) 振蕩頻率: 100KHz;(2) 測量精度提高:誤差±1%;(以外接示波器測試為參考)(3) 顯示并繪制輸入信號波形(繪制要求有坐標軸及刻度,單位)(4)
2、VDD <=3.3V;(5) 提交設計論文3 設計思路(1) 硬件a) 原理利用產(chǎn)生自激振蕩的條件去構(gòu)成正反饋電路,以產(chǎn)生正弦波振蕩。原理圖如下:自激振蕩的平衡條件: 1)振幅條件: 2)相位條件:A+B()=±2n要產(chǎn)生自激震蕩可以采用LC、RC或者石英晶體振蕩電路。但是在產(chǎn)生較低頻率的正弦波是時,若采用LC電路,所需電感很大,實際中往往很難找到,而石英晶體震蕩頻率雖然穩(wěn)定,但是可調(diào)節(jié)范圍較小。所以我們最終采用了RC文氏橋電路。b) 模型文氏橋電路的原始模型:改進后的模型:上圖中,在回路串聯(lián)兩個反向并聯(lián)的二極管,利用電流增大時,二極管動態(tài)電阻減小的特點,加入非線性環(huán)節(jié),使輸出
3、電壓穩(wěn)定。用兩個電位器R,調(diào)節(jié)震蕩頻率,使得滿足起振條件和滿足所要求的震蕩頻率。c) 仿真過程d) 實際操作實際操作過程中我們發(fā)現(xiàn),仿真出來的效果很好,但是嚴格按照仿真結(jié)果出來的效果卻并不是很好,甚至無法出現(xiàn)波形。開始時還以為是電路鏈接有問題,插了好幾次,不見效果,后來試著不斷調(diào)節(jié)電位器R的值,突然出現(xiàn)了波形。這說明理論和實際還真是有不小的差距。在實現(xiàn)大于10kHz的功能時,電容值C本來用的參考資料里的223但是發(fā)先頻率可調(diào)范圍較小,而且電壓最高為2.1V左右,剛剛能夠滿足要求,所以,改選了102,效果比較好不僅頻率達到了要求,而且電壓最大值可達到2.7V。再加入負載之后,我們能實現(xiàn)電壓仍大于
4、2V的負載值最小只能是68歐。未接負載前:接1000歐負載接500歐負載接68歐e) 拓展功能實現(xiàn)在實現(xiàn)100kHz時,我們更換電容C為容值更小的101(1000pF),實現(xiàn)了頻率要求,但是電壓的要求難以實現(xiàn),要實現(xiàn)仍是正弦波的要求,電壓幅度最大只能是幾百毫伏。在使用電壓3.3V供電時,頻率上可以滿足大于10k的要求(33k),但是電壓只能達到1.74V。如下圖(2) 軟件軟件設計主要包括測量正弦波頻率、測量正弦波幅度、lcd顯示模塊ü 測量正弦波頻率模塊測量正弦波頻率采用測頻法,使用兩個定時器A、B,定時器A的使用采用正弦波作為外部輸入時鐘,每輸入一個正弦波的上升沿,TRA的值加一
5、,這樣可以使用定時器A的值記錄輸入的正弦波的周期數(shù)。定時器B的時鐘采用SMCLK,用來計時,當計時到1s時觸發(fā)中斷,利用此時定時器A的值計算得到正弦波的頻率。ü 測量正弦波幅度模塊將正弦波輸入A1引腳,利用單片機內(nèi)集成的ADC進行AD轉(zhuǎn)換,對一定時間內(nèi)采集的到的幅度值進行比較,最大值作為正弦波的幅度輸出。ü Lcd顯示模塊由于msp430g2553單片機的IO管腳比較少,所以LCD12864采用串行通信模式,只用連接SID,CS,SCLK三個控制引腳,對LCD12864寫入的每一個字節(jié)的數(shù)據(jù)或者命令采用三字節(jié)的數(shù)據(jù)格式寫入,第一個字節(jié)為控制命令,第二個字節(jié)的高4位為數(shù)據(jù)的高
6、4位,第三個字節(jié)的高4位為數(shù)據(jù)的低4位。因為LCD12864內(nèi)部含有字庫,所以只需要寫入顯示符號的ASCII碼或者漢字,LCD會利用字庫映射為對應的符號并顯示出來。程序源代碼/* * measure.c * * Created on: 2015-4-6 * Author: Elan * P1.0輸入正弦波作為外部時鐘 * P1.1輸入正弦波進行adc采樣 */#include "msp430g2553.h"#define uint unsigned int#define uchar unsigned char#define ulint unsigned long intun
7、signed long data;/頻率double TA_OverflowCnt=0;/溢出次數(shù)float adc_sample=0;float adc_max=0;float effective_value=0;void init_TA();void init_adc();void cal_max();void delay(uint t);void delay1(void);void int_430(void);void sendbyte(uchar zdata);void write_com(uchar cmdcode);void write_data(uchar Dispdata);v
8、oid lcdinit();void print_string( char *s);void display_fre(void);void display_range(void);void display_effective_value(void);void main()init_TA();init_adc();int_430();lcdinit();while(1)cal_max();display_fre();display_range();display_effective_value();delay1();void init_TA()P1SEL |= BIT0; /選取管腳第二功能P1
9、DIR &= BIT0; /p1.0置為輸入TA1CCR0=65535;/定時1sTACCR0=65535;TA1CTL |= TASSEL_2 + ID_3 + MC_1 + TAIE + TACLR;/P1.1 SMCLK作為時鐘,8分頻,增計數(shù),中斷使能,初始置0TA0CTL = TASSEL_0 + TACLR + TAIE + MC_2;/P1.0 外部輸入時鐘,中斷使能,初始清零,連續(xù)計數(shù)TA0CCTL0 |= CCIE;/使能捕獲TA1CCTL0 |= CCIE;_EINT(); /打開全局中斷void init_adc()ADC10CTL1 |= CONSEQ_2;/單
10、通道重復采樣模式/ADC10CTL0 |= SREF_0+REFON+REF2_5V;/選擇內(nèi)部參考電源,打開基準源,參考電壓設置為VCC 3.3VADC10CTL0 |= SREF_0;ADC10CTL0 |= ADC10SHT_0+MSC;/過采樣率設置為4個采樣周期ADC10CTL1|= ADC10SSEL_3+ADC10DIV_1+SHS_0;/采樣時鐘為SMCLK,二分頻ADC10CTL1 |=INCH_1;/選擇采樣通道A1ADC10CTL0 |= ADC10ON;/開啟ADC10ADC10AE0 |= 0x02;/開啟外部采樣通道void cal_max()unsigned in
11、t i;for(i=0;i<65635;i+)ADC10CTL0 |=ENC+ADC10SC; /開始轉(zhuǎn)換while(ADC10CTL0 &ADC10IFG)=0); /等待ADC10IFG標志變高(轉(zhuǎn)換完成)adc_sample=(float)ADC10MEM) *4.2583) /1023-2; /讀取采樣結(jié)果if(adc_max < adc_sample)adc_max=adc_sample;effective_value=adc_max/1.414;display_fre();display_range();display_effective_value();del
12、ay1();/*延時函數(shù)*/void delay(uint t) uint i,j; for(i=0;i<t;i+) for(j=0;j<10;j+);/1s延時的計數(shù)閘門void delay1(void) unsigned long i; for(i=0;i<119000;i+) _NOP(); / 該函數(shù)用來產(chǎn)生一個 MSP430 系統(tǒng)時鐘周期的延時 void int_430(void) P1SEL&=BIT6;/輸出高電平,充當電源 P1SEL&=BIT7; P1DIR|= BIT6; P1DIR|= BIT7; P1OUT|=BIT6; P1OUT|=
13、BIT7; WDTCTL=WDTPW+WDTHOLD; / 關閉看門狗 P1SEL&=BIT4; P1DIR|= BIT4; P1OUT&=BIT4; P1SEL&=BIT5; P1DIR|= BIT5; P1OUT&=BIT5;/*數(shù)據(jù)傳送函數(shù)*/void sendbyte(uchar zdata) uchar code_seg7,serial_clk, serial_shift; code_seg7=zdata; serial_shift=0x80; for(serial_clk=0; serial_clk<8; serial_clk+) if(cod
14、e_seg7&serial_shift) P1OUT|=BIT4; /SID為1 else P1OUT&=BIT4; /SID為0 P1OUT&=BIT5; /產(chǎn)生時鐘信號下沿 P1OUT|=BIT5; /產(chǎn)生時鐘信號上沿 serial_shift=serial_shift>>1; /準備發(fā)送下一位數(shù)據(jù) /*寫命令函數(shù)*/void write_com(uchar cmdcode) /串口控制格式(11111AB0) /A數(shù)據(jù)方向控制,A=H時讀,A=L時寫 /B數(shù)據(jù)類型選擇,B=H時為顯示數(shù)據(jù),B=L時為命令 sendbyte(0xf8); /MCU向LCD
15、發(fā)命令 sendbyte(cmdcode & 0xf0); /發(fā)高四位數(shù)據(jù)(數(shù)據(jù)格式D7D6D5D4_0000) sendbyte(cmdcode << 4) & 0xf0); /發(fā)低四位數(shù)據(jù)(數(shù)據(jù)格式D3D2D1D0_0000) delay(2); /延時等待/*寫數(shù)據(jù)函數(shù)*/void write_data(uchar Dispdata) sendbyte(0xfa); /MCU向LCD發(fā)數(shù)據(jù) sendbyte(Dispdata & 0xf0); /發(fā)高四位數(shù)據(jù) sendbyte(Dispdata << 4) & 0xf0); /發(fā)低四
16、位數(shù)據(jù) delay(2);/*LCD初始化函數(shù)*/void lcdinit() delay(20000); /復位等待(內(nèi)部自帶上電復位電路),時間較長 write_com(0x30); /功能設定:基本指令集操作 delay(50); /延時等待 write_com(0x04); /光標右移一位 write_com(0x0c); /整體顯示,關游標 delay(50); write_com(0x01); /清屏/*送字符串函數(shù)*/void print_string( char *s) while(*s > 0) /C語言里字符串末尾自動加“0”(ASCII碼值為0) delay(50)
17、; write_data(*s); /發(fā)送字符對應的ASCII碼,12864指針可設置自動指向下一個顯示地址 s+; /*顯示頻率*/void display_fre()uint d1,d2,d3,d4,d5,d6;write_com(0x01);if(data>99999)/6位數(shù)的頻率d1=data/100000;d2=data%100000/10000;d3=data%100000%10000/1000;d4=data%100000%10000%1000/100;d5=data%100000%10000%1000%100/10;d6=data%100000%10000%1000%1
18、00%10;write_com(0x03);write_com(0x80);/頻率顯示在第一行print_string("頻率: ");write_com(0x83);write_data(d1+0x30);write_data(d2+0x30);write_data(d3+0x30);write_data(d4+0x30);write_data(d5+0x30);write_data(d6+0x30);else /5位數(shù)頻率d1=data/10000;d2=data%10000/1000;d3=data%10000%1000/100;d4=data%10000%1000%
19、100/10;d5=data%10000%1000%100%10;write_com(0x03);write_com(0x80);/頻率顯示在第一行print_string("頻率: ");write_com(0x83);write_data(d1+0x30);write_data(d2+0x30);write_data(d3+0x30);write_data(d4+0x30);write_data(d5+0x30);write_com(0x86);write_data('H');write_data('z');/*顯示幅度*/void di
20、splay_range()uint r1,r2,r3;if(adc_max>9.9)r1=(uint)adc_max/10;r2=(uint)adc_max%10;r3=(uint)(adc_max*10)%100%10;write_com(0x03);write_com(0x90);/第二行print_string("幅度: ");write_com(0x93);write_data(r1+0x30);write_data(r2+0x30);write_data(46);write_data(r3+0x30);elser1=(uint)adc_max/1;r2=(u
21、int)(adc_max*10)%10;write_com(0x03);write_com(0x90);/第二行print_string("幅度: ");write_com(0x93);write_data(r1+0x30);write_data(46);write_data(r2+0x30);write_com(0x95);write_data('V');/*顯示有效值*/void display_effective_value()uint e1,e2,e3;/effective_value=adc_max/1.414;if(effective_value
22、>9.9)e1=(uint)effective_value/10;e2=(uint)effective_value%10;e3=(uint)(effective_value*10)%100%10;write_com(0x03);write_com(0x88);/第s三行print_string("有效值: ");write_com(0x8c);write_data(e1+0x30);write_data(e2+0x30);write_data(46);write_data(e3+0x30);elsee1=(uint)effective_value/1;e2=(uint)(effective_value*10)%10;write_com(0x03);wr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力行業(yè)員工學習劉永坦先進事跡心得體會
- 學校科技創(chuàng)新實驗室教育工作計劃
- 幼兒園疫情期間小班活動安排班務計劃
- 合成樹脂瓦施工排氣工藝流程他
- 施工期間客戶服務措施
- 新聞媒體疫情防控應急預案及工作措施
- 副校長后勤管理年度個人工作總結(jié)范文
- 模擬法庭基本流程介紹
- 以對話之鑰啟哲學之思:高中政治《生活與哲學》模塊教學新探
- 醫(yī)院院感宣傳教育工作計劃
- 2025至2030中國實時視頻存儲行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 國家開放大學《合同法》章節(jié)測試參考答案
- GB/T 41093-2021機床安全車床
- GB/T 31158-2014電離層電子總含量(TEC)擾動分級
- 電解加工和電解磨削課件
- 小紅書運營方案
- 深藍科技風智能醫(yī)療衛(wèi)生系統(tǒng)模板課件整理
- 中藥奄包-外源性熱敷療法課件
- 造價咨詢作難點解決辦法及措施
- 商務禮儀3-2辦公室禮儀 中職高職《商務禮儀》教學教案
- 沈陽機床并購德國希斯公司的臺前幕后
評論
0/150
提交評論