




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、2015年全國大學生電子設計競賽風板控制裝置(I題)【高職高專組】本系統(tǒng)通過對直流小風扇風速的調(diào)節(jié)實現(xiàn)對風板轉(zhuǎn)角的控制,使風板轉(zhuǎn)角能夠隨風速 變化而改變,且能快速達到設定角度并穩(wěn)定。IAP15F2K61S2單片機為控制核心,通過鍵盤設定風板板角度12864實時顯示風板當前角度。單片機輸出PWM波控制風扇的風速,通過GY521mpu-6050測量風板的傾角反饋至單片機,采用PID控制經(jīng)典算法,使系統(tǒng)實現(xiàn)精確控制,然后微調(diào)小風扇的轉(zhuǎn)速改變風速的大小使風板角度達到穩(wěn)定。并且在達到設定范 圍時進行聲光提示。通過調(diào)試與測試,實現(xiàn)了基本部分與發(fā)揮部分,最終實現(xiàn)在懸掛重物 的情況下風板能達到設定角度控制,且
2、最終絕對值誤差不超過5度.關(guān)鍵字:1602; GY521mpu-6050;PWM;PID 算法。目 錄1系統(tǒng)方案11.1 角度測量方案選擇11.2 風扇控制方案選擇21.3 顯示方案選擇 21.4 控制器方案選擇 22系統(tǒng)理論分析與計算32.1 風扇調(diào)試原理32.2 角度測量原理32.3 PID控制算法的分析33電路與程序設計43.1 電路的設計43.1.1 系統(tǒng)總體框圖43.1.2 角度檢測電路43.1.3 風扇驅(qū)動電路53.1.4 按鍵及顯示電路53.1.5 電源電路63.2 程序的設計63.2.1 程序功能描述與設計思路3.2.2 程序流程圖64測試方案與測試結(jié)果74.1 測試方法與儀器
3、74.2 測試過程及數(shù)據(jù)74.3 測試分析與結(jié)論8附錄1:電路原理圖101系統(tǒng)方案根據(jù)題目要求,本系統(tǒng)可以分為控制部分和信號檢測部分.控制部分則包括顯示模塊、按鍵模塊、聲光報警模塊、風扇驅(qū)動模塊四個基本部分。信號檢測部分為角度測量模塊, 測量風板的角度。下面分別論證這幾個模塊的選擇。1.1 角度測量方案選擇方案一:采用MMA7260重力加速度傳感器,由于加速度傳感器在靜止放置時受到重力作用,因此會有1g的重力加速度。利用這個性質(zhì),通過測量重力加速度在加速度傳感器的X軸和丫軸上的分量,可以計算出其在垂直平面上的傾斜角度。根據(jù)如圖1.1所示,有Ax=gsin a , Ay =gcosa 。貝U =
4、tan a即 a =arctan().這樣,根據(jù)以上原理一個 2軸加速度傳感 器可以測量在X-Y平面上的傾斜角度。該方案原理簡單,操作方便,但使用起來運算量較 大,程序較為復雜,對于單片機來說,會顯得有點吃力,因此我們放棄選用該方案。圖1.1加速度傳感器角度測量原理方案二:MPU-6000為全球首例整合性 6軸運動處理組件,相較于多組件方案,免除了組合陀螺儀與加速器時之間軸差的問題,減少了大量的包裝空間。MPU-6000能以數(shù)字輸出6軸或9軸的旋轉(zhuǎn)矩陣、四元數(shù)(quaternion) 歐拉角格式(Euler Angle forma)的融合演 算數(shù)據(jù)。內(nèi)建之運作時間偏差與磁力感測器校正演算技術(shù),
5、免除了客戶須另外進行校正的 需求。符合設計要求,同時也是我們平時有接觸的模塊。故綜合考慮實際中選擇方案二。1.2 風扇控制方案選擇方案一:采用可控硅控制調(diào)速,通過控制雙向可控硅的導通角,使輸出端電壓發(fā)生改變, 從而使施加在電風扇的輸入電壓發(fā)生改變,以調(diào)節(jié)風扇的轉(zhuǎn)速,實現(xiàn)各檔位風速的無級調(diào) 速。但可控硅控制控制原理決定了只能滯后觸發(fā),因此,晶閘管可控制整流器對交流電源 來說相當于一個感性負載,吸取滯后的無功電流,因此功率因素低。并且晶閘管整流裝置 的輸出電壓是脈動的,而且脈波數(shù)總是有限的。如果主電路電感不是非常大,則輸出電流 總存在連續(xù)和斷續(xù)兩種情況,因而機械特性也有連續(xù)和斷續(xù)兩段,因此功率因素
6、低,故我 們不選用該方案。方案二:采用直流斬波控制,改變電壓輸出開關(guān)斷時間,將直流電源電壓斷續(xù)加到負載上, 即可實現(xiàn)風扇調(diào)速控制,它具有效率高、體積小、成本低等優(yōu)點。我們可以采用單片機由 軟件來實現(xiàn)PWM波,簡化系統(tǒng)硬件設計,通過改變PWM波的占空比的值即可改變電樞端電壓的平均值從而達到調(diào)速的目的。再加上PID算法控制,而整個系統(tǒng)的 PWM波形的產(chǎn)生是通過PID算法調(diào)節(jié),這樣提高了系統(tǒng)的穩(wěn)定性和可靠性,讓系統(tǒng)控制更加精確。故綜合考慮實際中選擇方案二。1.3 顯示方案選擇方案一:使用數(shù)碼管顯示,通過數(shù)碼管顯示被測角度和設定角度。該方案程序簡單, 但硬件占用單片機I/O 口較多,對于盡量節(jié)約端口,
7、讓線路簡單來說不是好方法,而且顯 示也不夠直觀靈活,只能顯示數(shù)字,不能顯示漢字顯示功能提示, 故不適合本次設計應用。方案二:使用液晶屏 LCD1602具有體積小,使用方便等特點。并且可以顯示字母, 數(shù)字等功能,觀察顯示很直觀,通過字幕顯示各種菜單界面、設定角度、測量角度等。該方案程序較復雜,但顯示觀察清晰,顯示直接明白,完全符合本系統(tǒng)設計功能。故為最佳 方案,我們選擇方案二。方案二:使用液晶屏 LCD1602,具有體積小,使用方便等特點。并且可以顯示字母, 數(shù)字等功能,觀察顯示很直觀,通過字幕顯示各種菜單界面、設定角度、測量角度等。該方案程序較復雜,但顯示觀察清晰,顯示直接明白,完全符合本系統(tǒng)
8、設計功能。故為最佳 方案,我們選擇方案二。1.4 控制器方案選擇方案一:采用FPGA (現(xiàn)場可編程門陣列)作為系統(tǒng)的控制器;將所有的器件集成在一塊芯片上,這樣外圍電路較少,控制板的體積小,穩(wěn)定性高,擴展性能好;而且FPGA呆用并行的輸入/輸出方式,系統(tǒng)處理速度快,再加上FPGA有方便的開發(fā)環(huán)境和豐富的開發(fā)工具等資源可利用,易于調(diào)試;但是FPGA得成本偏高,算術(shù)運算能力不強,而本設計系統(tǒng)的設計會用到較多算術(shù)運算,所以FPGA的高速處理的優(yōu)勢得不到充分體現(xiàn)。方案二:采用STC公司的IAP15F2K61S2單片機作為系統(tǒng)的控制器。單片機算術(shù)運算功 能強,軟件編程靈活,可用軟件較簡單的實現(xiàn)各種算術(shù)和邏
9、輯控制,并且由于其成本低, 體積小和功耗低等優(yōu)點,使其在各個領域應用廣泛;另外,由于本設計中會用到較多的算 術(shù)運算,所以對本系統(tǒng)來說非常適合利用單片機作為控制器。基于以上分析,選擇方案二。2系統(tǒng)理論分析與計算2.1 風扇調(diào)試原理單片機控制的小型直流電機的一般采用PWM脈沖調(diào)制方式實現(xiàn)速度的控制。PWM基本原理:PWM即脈沖寬度調(diào)制(定義),是直流電源電壓基本不變的情況下通 過電子開關(guān)的通斷,改變施加到電機電樞端得直流電壓脈沖寬度(即所謂的占空比),以調(diào)節(jié)輸入電機電樞的電壓平均值的調(diào)速方式。通過改變固定周期內(nèi)直流電壓的占空比來改變電機兩端的直流平均電壓,進而達到控制風力大小的一種方法。 PWM可
10、以應用在許多方面,如電機調(diào)速、溫度控制、壓力控制等。通過改變直流電機電樞上電壓的"占空比"來改變平均壓的大小,從而控制電動機的轉(zhuǎn)速。只要按一定規(guī)律,改變通、斷電的時間,即可讓電機轉(zhuǎn)速得到控制。設電機始終接通電源時,電機轉(zhuǎn)速最大為 Vmax,設占空比為D=t1/T,則電機的平均速度為式中,Vd -電機的平均速度;Vmax-電機全通電時的速度(最大);D=t1/T -占空比。由此可見,當我們改變占空比D: t1/T時,就可以得到不同的電機平均速度Vd ,嚴格地講,平均速度Vd與占空比D并不是嚴格的線性關(guān)系,在一般的應用中,可以將其近似地看成線性關(guān)系。2.2 角度測量原理mpu6
11、050工作原理:作為一款物理傳感器,其工作原理是利用物理效應,諸如壓電效應,將被測信號量的微小變化轉(zhuǎn)換成電信號。MPU6050是一款9軸運動處理傳感器。它集成了 3軸MEMS陀螺儀,3軸MEMS加速度計,以及一個可擴展的數(shù)字運動處理器DMP (Digital Motion Processor),可用I2C接口連接一個第三方的數(shù)字傳感器,比如磁力計。擴展之后就可以通過其I2C或SPI接口輸出一個9軸的信號(SPI接口僅在MPU-6000可用)。MPU-6050也可以通過其I2C接口連接非慣性的數(shù)字傳感器,比如壓力傳感器。極大提高系 統(tǒng)最小精度,符合題目要求。2.3 PID控制算法的分析PID算P
12、ID控制算法是控制理論中應用很廣泛的一種算法,對于一般控制系統(tǒng)來說, 法從某種意義來說具有通用性,對各種系統(tǒng)具有廣泛的適用性,通過現(xiàn)場的參數(shù)調(diào)試,可 以達到很好的控制效果。對于我們這次風板控制系統(tǒng)的設計,我們同樣也可以使用PID控制算法,具體算法如下:e(i)=t 測-t 設E=(2)算法中,u (i)為當時的功率輸出。T為采樣時間,E為誤差積累,KP為比例常數(shù),Ti 為積分常數(shù),Td為微分常數(shù)。根據(jù)實際系統(tǒng),調(diào)節(jié)這三個常數(shù),可以達到更好的效果。3電路與程序設計2.1 電路的設計2.1.1 系統(tǒng)總體框圖系統(tǒng)總體框圖如圖3.1所示:圖3.1系統(tǒng)總體框圖2.1.2 角度檢測電路采用GY-52角度傳
13、感器,免除了組合陀螺儀與加速器時之軸間差的問題,減少了大量 的包裝空間。MPU-6000整合了 3軸陀螺儀、3軸加速器,可以直接輸出角度轉(zhuǎn)換為數(shù)字信 號傳遞給單片機進行調(diào)速控制。其電路圖如圖3.2所示:圖3.2角度檢測電路2.1.3 風扇驅(qū)動電路采用單片機產(chǎn)生 PWM波,簡化硬件電路設計,實現(xiàn)性價比高特點,改變PWM波的占空比的值即可改變電樞端電壓的平均值從而達到調(diào)速的目的。外加LM298驅(qū)動電路,即可完全實現(xiàn)調(diào)速控制。LM298N它采用單片集成塑裝,是一個高電壓、大電流全雙橋驅(qū)動器,由標準的TTL電平控制。L298N支持50V以內(nèi)的電機控制電壓,在直流運轉(zhuǎn)條件下,可以 通過高達2A的電流,因
14、此它滿足了一般小型電機的控制要求。接法見圖3.3,圖中二極管的作用是消除電機的反向電動勢,保護電路,因此采用整流二極管比較合適。PWM控制信號由ini、in2輸入。如果ini為局電平,in2為低電平時電機為正向轉(zhuǎn)速,反之 ini為低電 平,in2為高電平時,電機為反向轉(zhuǎn)速。本設計將in2直接接地,即采用單向制動的方式。圖3.3 L298N模塊實物圖2.1.4 按鍵及顯示電路圖3.4 1602顯示電路本設計采用1個鍵作為鍵盤,分別為選擇2種模式。按是一種,不按又是一種。圖3.5按鍵輸入電路2.1.5 電源電路電源由變壓部分、濾波部分、穩(wěn)壓部分組成。為整個系統(tǒng)提供5V或者12V電壓,確保電路的正常
15、穩(wěn)定工作。我們采取的是單電源供電,把12V的直流電供給電機,用降壓芯片把電壓穩(wěn)定到5V,提供給單片機工作,并實現(xiàn)了互不干擾。同時單片機可以間接控制電 機的調(diào)速。LM337可調(diào)穩(wěn)壓2.2 程序的設計2.2.1 程序功能描述與設計思路1、程序功能描述:可以輸出精確的角度信息,并利用PWM來高速調(diào)節(jié)電機的開關(guān)從而實現(xiàn)對電機速度控制,使得角度傳感器,風板,電機,單片機,LCD1602形成了一個簡單的系統(tǒng)。2、程序設計思路:先是利用角度傳感器對風板的角度進行精確的實時顯示,利用角度傳感 器傳輸?shù)臄?shù)據(jù)對pwm進行控制,使得電機的風速得到控制,最后風速來反饋給角度傳感器, 形成了一個封閉的反饋使的閉環(huán)系統(tǒng)。
16、4測試方案與測試結(jié)果2.3 測試方法與儀器測試方法:先通過 Keil C軟件實現(xiàn)程序調(diào)試和進行初步仿真,再通過 protues仿真軟件搭建 電理圖,實現(xiàn)對程序功能的實現(xiàn)仿真,并且用虛擬仿真軟件 Multisim對硬件電路實現(xiàn)功能仿 真,確保電路無誤后,在制作硬質(zhì)電路板,焊接電路,實現(xiàn)軟硬件聯(lián)合調(diào)試。測試儀器:量角器、秒表、直尺、模擬示波器、數(shù)字示波器、數(shù)字萬用表、指針式萬用表。2.4 測試過程及數(shù)據(jù)1 .測試基本功能一:用手搬動風板時,數(shù)字顯示風板的轉(zhuǎn)角。實際測試時,風板角度能 夠從45-135度變化,符合題目要求。2 .測試基本功能二:當懸掛10克重物時,使風板角度能夠在45-135度范圍變
17、化,并實時顯示角度。在完成要求的同時,要求誤差不超過5度,反應時間15秒,測試如下:風力大小()角度(° )40 3044 4547 5053 8055 9560 10565 12073 135表1基本功能二測試3 .測試基本功能三:當間距為10cm時,通過控制按鍵控制風力大小,在 45° ±5°范圍內(nèi)。要求控制過程在 10秒內(nèi)完成,實時顯示 0 ,并由聲光提示,以便進行測試。測試數(shù)據(jù)如表2所示:風力大小()角度(° ) 用時(s)52 48 6.351 48 3.143 44 3.1表2.基本功能測試三4 .測試發(fā)揮功能一:當間距掛10克重物
18、時,通過鍵盤設定風板轉(zhuǎn)角,其范圍為45-135要0在15秒內(nèi)達到設定值,并實時顯示0。最大誤差的絕對值不超過50測試數(shù)據(jù)如表3所示:設定角度(° )實際角度(° )風力大小()調(diào)整時間(s)30 30 0050 14 12 1370 24 17 1690 28 22 13130 54 76 11150 180 80 05測試發(fā)揮功能二:在功能一的基礎上,通過鍵盤設定模式,要求 0在兩個預設角度間擺動四次,擺動周期不超過 5秒,最大誤差的絕對值不超過5°。測試數(shù)據(jù)達到要求2.5 測試分析與結(jié)論根據(jù)上述測試數(shù)據(jù),系統(tǒng)完全符合要求,誤差在允許范圍內(nèi),實現(xiàn)全部功能,有些指
19、標還很高精度。由此可以得出以下結(jié)論:綜上所述,本設計達到設計要求。附錄1:電路原理圖角度傳感器電路原理圖附錄2:實物圖附錄3:系統(tǒng)程序#include <stc15f2k60s2.H> #include <math.h> /Keil library #include <stdio.h> /Keil library #include <INTRINS.H> typedef unsigned char uchar;typedef unsigned short ushort;typedef unsigned int uint;*/定義51單片機端口*#
20、define DataPort P0/LCD1602 數(shù)據(jù)端口sbitSCL=P2A4;/IIC時鐘引腳定義sbitSDA=P2A3;/IIC數(shù)據(jù)引腳定義sbitLCM_RS=P2A2;/LCD1602 命令端口sbitLCM_RW=P2A1;/LCD1602 命令端口sbitLCM_EN=P2A0;/LCD1602 命令端口*/定義MPU6050內(nèi)部地址*#define SMPLRT_DIV0x19 陀螺儀采樣率,典型值:0x07(125Hz)#define CONFIG0x1A/低通濾波頻率,典型值:0x06(5Hz)#define GYROCONFIG0x1B陀螺儀自檢及測量范圍,典型值
21、:0x18(不自檢,2000deg/s)#define ACCELCONFIG0x1C/加速計自檢、測量范圍及高通濾波頻率,典型值:0x01(不自檢,2G, 5Hz)#defineACCELXOUTH0x3B#defineACCELXOUTL0x3C#defineACCELYOUTH0x3D#defineACCELYOUTL0x3E#defineACCELZOUTH0x3F#defineACCELZOUTL0x40#definePWRMGMT10x6B/電源管理,典型值:0x00(正常啟用)#defineWHOAMI0x75/IIC地址寄存器(默認數(shù)值0x68,只讀)#defineSlaveA
22、ddress 0xD0/IIC寫入時的地址字節(jié)數(shù)據(jù),+1為讀取*/定義類型及變量*uchar dis4;顯示數(shù)字(-511至512)的字符數(shù)組int dis_data;/變量/int Temperature,Temp_h,Temp_l;/溫度及高低位數(shù)據(jù)*/函數(shù)聲明*void delay(unsigned int k);/延時/LCD相關(guān)函數(shù)void InitLcd();/初始化lcd1602 void lcd_printf(uchar *s,int temp_data);void WriteDataLCM(uchar dataW);/LCD 數(shù)據(jù)void WriteCommandLCM(uc
23、har CMD,uchar Attribc);/LCD 指令void DisplayOneChar(uchar X,uchar Yuchar DData);顯示一個字符void DisplayListChar(uchar X,uchar Yuchar *DData,L);顯示字符串/MPU6050操作函數(shù)void InitMPU6050();/ 初始化MPU6050void Delay5us();void I2C_Start();void I2C_Stop();void I2C_SendACK(bit ack);bit I2C_RecvACK();void I2C_SendByte(uchar
24、 dat);uchar I2C_RecvByte();void I2C_ReadPage();void I2C_WritePage();void display_ACCEL_x();void display_ACCEL_y();void display_ACCEL_z();uchar Single_ReadI2C(uchar REG_Address);讀取 I2C 數(shù)據(jù)*void Single_WriteI2C(uchar REG_Address,uchar REG_data); 向 I2C 寫入數(shù)據(jù)*/整數(shù)轉(zhuǎn)字符串,*void lcd_printf(uchar *s,int temp_dat
25、a)*+s =temp_data/100+0x30;temp_data=temp_data%100;/取余運算*+s =temp_data/10+0x30;temp_data=temp_data%10;/取余運算*+s =temp_data+0x30;*延時*void delay(unsigned int k)unsigned int i,j;for(i=0;i<k;i+)for(j=0;j<121;j+);/*/LCD1602初始化/*void InitLcd()WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteComman
26、dLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);DisplayOneChar(0,0,'A');DisplayOneChar(0,1,'G');*/LCD1602寫允許*void WaitForEnable(void)DataPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();while(DataPort&0x80);LCM_EN=0;/* /LCD1602寫入命令 /* void WriteCommandLCM
27、(uchar CMD,uchar Attribc)if(Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;)*/LCD1602寫入數(shù)據(jù)/*void WriteDataLCM(uchar dataW)WaitForEnable();LCM_RS=1;LCM_RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;)/*/LCD1602寫入一個字符 /*vo
28、id DisplayOneChar(uchar X,uchar Yuchar DData)Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);*/LCD1602顯示字符串*void DisplayListChar(uchar X,uchar Yuchar *DData,L)uchar ListLength=0;Y&=0x1;X&=0xF;while(L-)DisplayOneChar(X,)DDataListLength);ListLength+;X+;/* / 延時
29、5 微秒(STC90C52RC12M)/不同的工作環(huán)境,需要調(diào)整此函數(shù)/當改用1T的MCU時,請調(diào)整此延時函數(shù) /* void Delay5us()_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();*/I2C起始信號*void I2C_Start()SDA = 1;
30、/拉高數(shù)據(jù)線SCL = 1;Delay5us();SDA = 0;Delay5us();SCL = 0;*/I2C停止信號*void I2C_Stop()SDA = 0;SCL = 1;/拉高時鐘線/延時產(chǎn)生下降沿/延時/拉低時鐘線/拉低數(shù)據(jù)線/拉高時鐘線SDA = 1;Delay5us();/產(chǎn)生上升沿/延時*/I2C發(fā)送應答信號 / 入口參數(shù):ack (0:ACK 1:NAK)*void I2C_SendACK(bit ack)SDA = ack;SCL = 1;Delay5us();SCL = 0;Delay5us();/寫應答信號/拉高時鐘線/延時/拉低時鐘線/延時/*/I2C接收應答
31、信號/*bit I2C_RecvACK()SCL = 1;Delay5us();CY = SDA;SCL = 0;/拉高時鐘線/延時/讀應答信號/拉低時鐘線return CY;*/向I2C總線發(fā)送一個字節(jié)數(shù)據(jù)*void I2C_SendByte(uchar dat)(/8位計數(shù)器/移出數(shù)據(jù)的最高位/送數(shù)據(jù)口/拉高時鐘線/延時/拉低時鐘線/延時uchar i;for (i=0; i<8; i+)(dat <<= 1;SDA = CY;SCL = 1;Delay5us();SCL = 0;Delay5us();)I2C_RecvACK();)/*/從I2C總線接收一個字節(jié)數(shù)據(jù)/*
32、uchar I2C_RecvByte()(uchar i;uchar dat = 0;SDA = 1;for (i=0; i<8; i+)/8(dat <<= 1;SCL = 1;Delay5us();dat |= SDA;SCL = 0;Delay5us();return dat;使能內(nèi)部上拉,準備讀取數(shù)據(jù)位計數(shù)器/拉高時鐘線/延時/讀數(shù)據(jù)/拉低時鐘線/延時*/向I2C設備寫入一個字節(jié)數(shù)據(jù)/*void Single_WriteI2C(uchar REG_Address,uchar REG_data) (I2C_Start();/ 起始信號I2C_SendByte(Slave
33、Address);/ 發(fā)送設備地址 + 寫信號I2C_SendByte(REG_Address);/ 內(nèi)部寄存器地址,I2C_SendByte(REG_data);/ 內(nèi)部寄存器數(shù)據(jù),I2C_Stop();/發(fā)送停止信號,*/從I2C設備讀取一個字節(jié)數(shù)據(jù)*uchar Single_ReadI2C(uchar REG_Address)/起始信號uchar REG_data;I2C_Start();I2C_SendByte(SlaveAddress);I2C_SendByte(REG_Address);I2C_Start();I2C_SendByte(SlaveAddress+1); / 發(fā)送設備
34、地址發(fā)送設備地址+寫信號/發(fā)送存儲單元地址,從 0開始/起始信號+讀信號/*REG_data=I2C_RecvByte();I2C_SendACK(1);I2C_Stop();return REG_data;*初始化MPU6050/*讀出寄存器數(shù)據(jù)/接收應答信號停止信號void InitMPU6050()(Single_WriteI2C(PWR_MGMT_1,0x00);/ 解除休眠狀態(tài)Single_WriteI2C(SMPLRT_DIV, 0x07);Single_WriteI2C(CONFIG, 0x06);Single_WriteI2C(GYRO_CONFIG, 0x18);Single
35、_WriteI2C(ACCEL_CONFIG, 0x01);*/合成數(shù)據(jù)*int GetData(uchar REG_Address)char H,L;H=Single_ReadI2C(REG_Address);L=Single_ReadI2C(REG_Address+1);return (H<<8)+L;/ 合成數(shù)據(jù)/* /在1602上顯示10位數(shù)據(jù) /* void Display10BitData(int value,uchar x,uchar y)lcd_printf(dis, value);/轉(zhuǎn)換數(shù)據(jù)顯示啟始列,行,顯示數(shù)組,顯示長度DisplayListChar(x,y,
36、dis,4);/* / sbit mac1=P1A0;sbit mac=P1A1;void pwm_init()CMOD=0X02;CH=0;CL=0;CCAPM0=0X42;CCAP0L=0X9a;CCAP0H=0X9a;Delay5us();CCAPM1=0X42;CCAP1L=0X9a;CCAP1H=0X9a;Delay5us();CR=1;sbit key=P2A5;sbit key1=P2A6;sbit key2=P2A7;sbit key3=P1A7;sbit led=P1A6;uint flag=0,flag1=0;uchar flag3=0;uint temp;uint cnt
37、=0,cnt1=0;uchar code angl13="060"uchar code angl210="100090"void Delay50ms(uint r) /11.0592MHzunsigned char i, j, k;uint t;for(t=0;t<r;t+)_nop_();_nop_();i = 3;j = 26;k = 223;do(do(while (-k); while (-j); while (-i);uint jd() int v10,i; int y,z;uint te;for(i=0;i<10;i+)y=Get
38、Data(ACCEL_YOUT_H);Delay5us();z=GetData(ACCEL_ZOUT_H);Delay5us();y/=64;z/=64;if(y<0)y=-y;vi=(float)(atan2(z,y)*180)/3.14159265);vi=90-vi;te=v0+v1+v2+v4+v4+v5+v6+v7+v8+v9;te=(te/10)+(te%10);Display10BitData(te,2,0);return te;void ang1_93() /需要進一步優(yōu)化基本的第一問(if(temp<140)(CCAP0L=150-36;CCAP0H=150-36
39、;CCAP1L=150-30;CCAP1H=150-30;if(temp=105)led=0; 調(diào)整時間,if(temp>94)&&(temp<101)&&(led=0)Delay50ms(1);flag+; if(flag=90)led=1;flag1=1;if(flag1=1)CCAP0L=150;CCAP0H=150;CCAP1L=150-36;CCAP1H=150-36;Delay50ms(10);CCAP0L=0x9a;CCAP0H=0x9a;CCAP1L=0x9a;CCAP1H=0x9a;void ang2_70_105()uint fl
40、ag2=0;int j,t2;int pwm_counter0=0,pwm_counter1=0;/負數(shù)for(j=0;j<2;j+)tj=jd();delay(15); if(t1-t0)>0)flag2=1;else if(t1-t0)<0)flag2=2;if(temp<85)(if(flag2=2)(pwm_counter1+;pwm_counter1+;delay(1);CCAP1L=150-pwm_counter1;CCAP1H=150-pwm_counter1;if(pwm_counter1>=51)pwm_counter1=51;if(flag2=
41、1)(pwm_counter1+;pwm_counter1+;delay(1);CCAP1L=150-pwm_counter1;CCAP1H=150-pwm_counter1;pwm_counter0-;delay(1);CCAP0L=150-pwm_counter0;CCAP0H=150-pwm_counter0;if(pwm_counter1>=51)pwm_counter1=51;if(pwm_counter0<=0)pwm_counter0=0;if(temp>95)(if(flag2=1)(pwm_counter0+; pwm_counter0+;delay(1);
42、CCAP0L=150-pwm_counter0;CCAP0H=150-pwm_counter0;pwm_counter1-; delay(1);if(pwm_counter0>=47)pwm_counter0=48;if(pwm_counter1<=0)pwm_counter1=0;if(flag2=2)pwm_counter0+; pwm_counter0+; delay(1);CCAP0L=150-pwm_counter0;CCAP0H=150-pwm_counter0;pwm_counter1-; delay(1);CCAP1L=150-pwm_counter1;CCAP1H=150-pwm_counter1;if(pwm_counter0>=47)pwm_counter0=48;if(pwm_counter1<=0)pwm_counter1=0;void time_init()TMOD=0X00;TH
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年部門安全培訓考試試題及答案突破訓練
- 2025年青霉素類藥合作協(xié)議書
- 醫(yī)院建設監(jiān)理合同內(nèi)容及措施分析
- 2025年非電力相關(guān)原動機合作協(xié)議書
- 2025年消防工程設計考試:消防法律法規(guī)精解與消防安全技術(shù)評估報告編制規(guī)范執(zhí)行試題
- 2025年營養(yǎng)師基礎知識考核試卷:營養(yǎng)師考試備考策略與技巧試題
- 2025-2030中國暖通軟件行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025-2030中國化妝品包裝行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025-2030中國公共安全LTE設備行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025-2030中國乙二醇單乙醚乙酸酯(CAC)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 品管圈-主題選定課件
- 第三章基于數(shù)據(jù)驅(qū)動的故障診斷方法ppt課件
- T∕CAAA 030-2020 澳洲白綿羊種羊
- 微波-PATHLOSS軟件的應用-入門指導
- 藍牙音響成品檢驗規(guī)范
- 材料5:個人征信系統(tǒng)機構(gòu)接入和接口驗收工作流程
- 項目選址比選方案分析參考范本
- 初三化學酸堿鹽的鑒別
- 學校總務采購業(yè)務流程圖(共1頁)
- 預制混凝土襯砌管片生產(chǎn)工藝技術(shù)規(guī)程doc
- 極域電子教室解決方案
評論
0/150
提交評論