2015年 電子設(shè)計(jì)大賽 風(fēng)板控制系統(tǒng)_第1頁
2015年 電子設(shè)計(jì)大賽 風(fēng)板控制系統(tǒng)_第2頁
2015年 電子設(shè)計(jì)大賽 風(fēng)板控制系統(tǒng)_第3頁
2015年 電子設(shè)計(jì)大賽 風(fēng)板控制系統(tǒng)_第4頁
2015年 電子設(shè)計(jì)大賽 風(fēng)板控制系統(tǒng)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

精心整理精心整理頁眉內(nèi)容2015年全國大學(xué)生電子設(shè)

計(jì)競(jìng)賽風(fēng)板控制裝置(I題)【高職高專組】2015年8月15日摘要本系統(tǒng)以MSP430單片機(jī)為控制核心,通過PID算法,實(shí)現(xiàn)了對(duì)風(fēng)板的控制。

系統(tǒng)主要由電源模塊、角度測(cè)量模塊、電機(jī)驅(qū)動(dòng)模塊、顯示模塊、鍵盤模塊和聲

光模塊等構(gòu)成。通過PID反饋輸出PWM來改變直流風(fēng)機(jī)風(fēng)力大小,使風(fēng)板轉(zhuǎn)角根

據(jù)需求變化。加速度傳感器MPU6050檢測(cè)風(fēng)板位置的變化,并將風(fēng)板角度在LCD

液晶器上顯示,同時(shí)單片機(jī)對(duì)采集的數(shù)據(jù)進(jìn)行分析,實(shí)時(shí)調(diào)整PWM輸出,通過驅(qū)

動(dòng)芯片L298N控制風(fēng)機(jī)風(fēng)速,使風(fēng)板達(dá)到穩(wěn)定的狀態(tài),并帶有相應(yīng)的聲光提醒功

能,使系統(tǒng)人性化,經(jīng)過反復(fù)測(cè)試,達(dá)到了設(shè)計(jì)要求。關(guān)鍵詞:MSP430;PID;PWM;直流風(fēng)機(jī);MPU6050目錄1系統(tǒng)方案本系統(tǒng)主要由主控模塊、角度檢測(cè)模塊、電機(jī)驅(qū)動(dòng)模塊、顯示模塊、電源

模塊組成,下面分別論證這幾個(gè)模塊的選擇。主控模塊的論證與選擇方案一:采用傳統(tǒng)8位的51單片機(jī)作為該系統(tǒng)的控制核心。經(jīng)典51單片機(jī)具有價(jià)格低廉,使用簡(jiǎn)單等特點(diǎn),但其存在外設(shè)I/O端口較少,運(yùn)算速度低,功能單一,不穩(wěn)定等缺點(diǎn)。方案二:采用TI公司所生產(chǎn)的MSP430F149單片機(jī)為主控制芯片,運(yùn)算速度快,超低功耗,有非常豐富的片內(nèi)資源,性價(jià)比高。綜合比較以上兩個(gè)方案,選擇TI公司生產(chǎn)的430芯片,在低功耗方面有顯著的優(yōu)勢(shì),處理數(shù)據(jù)快,且其片內(nèi)資源豐富,滿足系統(tǒng)設(shè)計(jì)需求。1.2角度檢測(cè)模塊方案論證方案一:采用模擬三軸加速度計(jì)MMA7260,MMA7260QT是檢測(cè)物件運(yùn)動(dòng)和方向的傳感器,它根據(jù)物件運(yùn)動(dòng)和方向改變輸出信號(hào)的電壓值。通過A/D轉(zhuǎn)換器讀取輸出信號(hào),檢測(cè)其運(yùn)動(dòng)和方向。方案二:采用mpu6050傳感器可準(zhǔn)確追蹤快速與慢速動(dòng)作,并且可調(diào)整感測(cè)范圍,可快速、直接將檢測(cè)信號(hào)給控制器??刂品褰嵌仁莻€(gè)快速處理的過程,方案一還需采集電路對(duì)AD進(jìn)行采集轉(zhuǎn)化為數(shù)字量,綜合考慮選擇方案二。1.3電機(jī)驅(qū)動(dòng)模塊本設(shè)計(jì)的主要目的在于控制風(fēng)機(jī)的轉(zhuǎn)速,因此電機(jī)驅(qū)動(dòng)模塊是必不可少,其方案有以下兩種。方案一:采用大功率晶體管組合電路構(gòu)成驅(qū)動(dòng)電路,這種方法結(jié)構(gòu)簡(jiǎn)單,成本低、易實(shí)現(xiàn),但由于在驅(qū)動(dòng)電路中采用了大量的晶體管相互連接,使得電路復(fù)雜、抗干擾能力差、可靠性下降,我們知道在實(shí)際的生產(chǎn)實(shí)踐過程中可靠性是一個(gè)非常重要的方面。因此此中方案不宜采用。方案二:采用專用的電機(jī)驅(qū)動(dòng)芯片,例如L298N、L297N等電機(jī)驅(qū)動(dòng)芯片,由于它內(nèi)部已經(jīng)考慮到了電路的抗干擾能力,安全、可靠行,所以我們?cè)趹?yīng)用時(shí)只需考慮到芯片的硬件連接、驅(qū)動(dòng)能力等問題就可以了,所以此種方案的電路設(shè)計(jì)簡(jiǎn)單、抗干擾能力強(qiáng)、可靠性好。設(shè)計(jì)者不需要對(duì)硬件電路設(shè)計(jì)考慮很多,可將重點(diǎn)放在算法實(shí)現(xiàn)和軟件設(shè)計(jì)中,大大的提高了工作效率。基于上述理論分析和實(shí)際情況,電機(jī)驅(qū)動(dòng)模塊選用方案二。1.4顯示模塊方案方案一:選用常見的數(shù)碼管顯示,成本低,只能顯示簡(jiǎn)單的字符和數(shù)字。顯

示位數(shù)較多時(shí),輪番掃描占用CPU時(shí)間。方案二:選用12864顯示屏做顯示。12864的顯示為128x64,顯示面積大,

數(shù)字和漢字顯示容易實(shí)現(xiàn),程序要求不是很高,更加方便。方案三:用彩屏做顯示。彩屏顯示效果好,但成本高,功耗大,編程設(shè)計(jì)相對(duì)繁瑣。由于系統(tǒng)顯示信息量較多,對(duì)比所述方案,選擇12864作為系統(tǒng)顯示器。1.5電源模塊方案電源是任何系統(tǒng)能否運(yùn)行的能量來源,本系統(tǒng)中電源模塊為主控制器、電機(jī)驅(qū)動(dòng)、角度檢測(cè)模塊等提供電源。方案一:通過電阻分壓的形式將整流后的電壓分別降為控制芯片和電機(jī)運(yùn)行所需的電壓,此種方案原理和硬件電路連接都比較簡(jiǎn)單,但對(duì)能量的損耗大,在實(shí)際應(yīng)用系統(tǒng)同一般不宜采用。方案二:通過固定芯片對(duì)整流后的電壓進(jìn)行降壓、穩(wěn)壓處理(如7812、7805等),此種方案可靠性、安全性高,對(duì)能源的利用率高,并且電路簡(jiǎn)單容易實(shí)現(xiàn)。根據(jù)系統(tǒng)的具體要求,采用方案二作為系統(tǒng)的供電模塊。2.系統(tǒng)理論分析與計(jì)算2.1角度確定風(fēng)板運(yùn)動(dòng)過程中需要實(shí)時(shí)檢測(cè)角度的變化,通過計(jì)算加速度傳感器傳回的數(shù)據(jù),可以測(cè)得風(fēng)板的角度,加速度與角度存在如下關(guān)系:2.2風(fēng)速控制風(fēng)速的快慢直接決定了系統(tǒng)風(fēng)板角度的大小。通過pid調(diào)節(jié),單片機(jī)輸出PWM

波形,可對(duì)風(fēng)板進(jìn)行快速、準(zhǔn)確的調(diào)整。通過不斷調(diào)整P(比例)、1(積分)、D(微分)值,系統(tǒng)的穩(wěn)定性得到明顯的

提高,響應(yīng)時(shí)間也加快了。由各個(gè)參數(shù)的控制規(guī)律可知,比例P使反應(yīng)變快,微

分D使反應(yīng)提前,積分I使反應(yīng)滯后。在一定范圍內(nèi),P,D值越大,調(diào)節(jié)的效

果越好。3.電路與程序設(shè)計(jì)硬件電路設(shè)計(jì)系統(tǒng)總體框圖如圖3.1所示。圖3.1系統(tǒng)總體框圖單片機(jī)最小系統(tǒng)設(shè)計(jì)

MSP430F149單片機(jī),其最小系統(tǒng)包括電源電路、復(fù)位電路、時(shí)鐘電路,具體

電路設(shè)計(jì)如圖3.2所示。Ghrn!?■■上一|<乂?.?”二一喟一=二1i?51.11+fCOUT■■:rr性暁嚴(yán)14pf-|*01.-tsi1_uH^kkr■143TJV-i!忙2一目XXNJLL河一cwcm_已EK1鯊:一1一H7一淫屋赳£■?_£7--鬥£si3.6siU¥crbJ』”M'AAbd'MbL#'A6IFtl'ATVH£T?-3CIN3Cm;T>TCI.K.VtEEr?-VHUr-.rVi:REr-ri.^TACUE7I.LITAD7I.3JTAI7l.riA32n>-n??L23亠…:圖X1ZK石口£起J-2?.L匸£皀總KJV.HFEAzlZV1.HZ一£Z一479_in;CUKLPSii^run-pinnTE'H題TF$T4IsTflJH軸THdHIsTfllH3iTF3HhiTJlhH!?T1WT1雷1*=霑PiMiTX^r和.如E事vnrI4電源MBTW11Ti^ir'■JVz-lCfjrir^T-■i;―'D--■..£>■:ClhJ-15-H■4:74■-Is!41-Ji-+J-diJ.'-41M-411-H最小系Fifeij贏i;3:1.2角度測(cè)量設(shè)計(jì)jh!n-JNDHiikrJA-L>pki魂HjiJc:J.K-亠|.+vJ本系統(tǒng)中要實(shí)時(shí)監(jiān)控風(fēng)板的角度,系統(tǒng)采用mpu6O50傳感器,通過計(jì)算可迅速得出測(cè)量由角度川從而反饋給單片機(jī)進(jìn)行相應(yīng)操作。速得出測(cè)量3.1.3顯示模塊設(shè)計(jì)本系統(tǒng)米用LCD12864作為顯示,模塊電路圖如圖3.3所示。圖3.3LCD12864電路圖3.1.4直流風(fēng)機(jī)驅(qū)動(dòng)電機(jī)驅(qū)動(dòng)芯片L298N內(nèi)部包含4通道邏輯驅(qū)動(dòng)電路。是一種二相和四相電機(jī)的專用驅(qū)動(dòng)器。L298可驅(qū)動(dòng)2個(gè)電機(jī),0UT1、OUT2和0UT3、OUT4之間分別接2個(gè)電動(dòng)機(jī)。5、7、10、12腳接輸入控制電平,控制電機(jī)的正反轉(zhuǎn),ENA,ENB接控制使能端,控制電機(jī)的停轉(zhuǎn)。利用單片機(jī)產(chǎn)生PWM信號(hào)接到ENA,ENB端子,對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行調(diào)節(jié)。電機(jī)驅(qū)動(dòng)電路如圖3.4所示。圖3.4電機(jī)驅(qū)動(dòng)3.1.5供電系統(tǒng)電路在電子電路及設(shè)備中,一般都需要穩(wěn)定的直流電源供電。小功率的穩(wěn)壓電源的組成如圖3.5所示,它由電源變壓器、整流電路、濾波電路和穩(wěn)壓電路四部分組成。直流穩(wěn)壓電源電路如圖3.6所示。圖3.5直流穩(wěn)壓電路工作原理圖3.6LM2596可調(diào)電源模塊3.2程序設(shè)計(jì)3.2.1程序功能描述根據(jù)設(shè)計(jì)要求,軟件部分主要實(shí)現(xiàn)風(fēng)機(jī)轉(zhuǎn)速控制以及聲光報(bào)警與液晶顯示。(1)風(fēng)機(jī)轉(zhuǎn)速控制部分:在鍵盤按下設(shè)定風(fēng)板的角度后,風(fēng)板15s內(nèi)處于指定

位置并穩(wěn)定5秒以上,上下波動(dòng)不超過5度,根據(jù)傳感器測(cè)出的距離通過PID算

法調(diào)整風(fēng)機(jī)轉(zhuǎn)速來調(diào)整風(fēng)板的位置。(2)鍵盤設(shè)置部分:在鍵盤按下后,風(fēng)機(jī)作出相應(yīng)轉(zhuǎn)速,風(fēng)板達(dá)到指定位置。(3)液晶顯示部分:液晶器顯示風(fēng)板位置及維持時(shí)間。3.2.2程序設(shè)計(jì)思路系統(tǒng)程序主要由角度檢測(cè)部分,PID調(diào)節(jié)部分和顯示部分組成。設(shè)定需求角度,通過獲取測(cè)量角度值來反饋給單片機(jī),單片機(jī)做出相應(yīng)的PWM調(diào)節(jié),從而達(dá)到需求的角度。同時(shí)液晶將對(duì)實(shí)時(shí)米集的角度和按鍵值信息進(jìn)行顯示。3.2.3程序流程圖程序總體流程圖如圖3.7所示,PWM控制流程圖如圖3.8所示,12864液晶顯示電路流程圖如圖3.9所示。圖3.7程序主流程圖圖3.8PWM控制電路圖3.912864液晶程序流程圖4系統(tǒng)測(cè)試4.1測(cè)試儀器高精度的數(shù)字毫伏表、模擬示波器、數(shù)字示波器、數(shù)字萬用表、指針式萬

用表、量角器、秒表。4.2測(cè)試方案1、硬件測(cè)試對(duì)各個(gè)模塊進(jìn)行測(cè)試,測(cè)試通過后使用。2、軟件仿真測(cè)試

對(duì)程序的錯(cuò)誤和不能正確實(shí)現(xiàn)的部分進(jìn)行調(diào)節(jié)和改正。3、硬件軟件聯(lián)調(diào)

對(duì)整體功能的實(shí)現(xiàn)進(jìn)行進(jìn)一步調(diào)節(jié)。4.3測(cè)試結(jié)果及分析測(cè)試結(jié)果a.風(fēng)板實(shí)際角度與角度傳感器角度比較實(shí)測(cè)角406080100120130150角度傳感器值405981101120131150b.風(fēng)板角度與pwm關(guān)系如表4.2所示。不帶砝碼測(cè)試次數(shù)設(shè)定角度14526538549051156135帶砝碼74586598510901111512135測(cè)試結(jié)果測(cè)試誤差完成時(shí)間4.3.2測(cè)試分析與結(jié)論根據(jù)上述測(cè)試數(shù)據(jù),隨著PWM的增加,風(fēng)機(jī)的風(fēng)速逐漸加大,風(fēng)板設(shè)定的

角度能維持3~5s,由此可以得出以下結(jié)論:

1、風(fēng)機(jī)的轉(zhuǎn)速可通過PWM調(diào)控且成正比關(guān)系。2、風(fēng)板實(shí)際角度與傳感器檢測(cè)的角度誤差1度,當(dāng)穩(wěn)定時(shí),角度誤差小于5度波動(dòng),符合系統(tǒng)要求。

綜上所述,本系統(tǒng)達(dá)到設(shè)計(jì)要求。5不說我們?cè)陔娰愔袑W(xué)到的新知識(shí)是多么有價(jià)值,也不用說它拓寬了多少我們的眼界,只是說它讓我們的能力得到提高就已足以成為我們努力付出的回報(bào)。在這四天三夜的奮戰(zhàn)中,遇到過很多困難,搭載硬件時(shí),由于對(duì)量角器安裝角度有誤差,導(dǎo)致軟件校準(zhǔn)時(shí)存在較大誤差,經(jīng)過仔細(xì)排查,不斷改變方案,最終解決了問題。軟件調(diào)試時(shí),PID參量設(shè)置成了最頭疼的問題,過大調(diào)整系統(tǒng)波動(dòng)較大,過小調(diào)整風(fēng)板很難達(dá)到預(yù)設(shè)角度。功夫不負(fù)有心人,兩天的幸苦沒有白費(fèi),當(dāng)風(fēng)機(jī)穩(wěn)定的轉(zhuǎn)動(dòng)到達(dá)預(yù)設(shè)角度時(shí),喜悅之情難以言表。理論與現(xiàn)實(shí)總是用通過實(shí)踐聯(lián)系起來的,我們?cè)谶@次比賽中不再是局限于課本或是參考資料中的理論知識(shí),而是把所有的實(shí)驗(yàn)都按部就班的做過,并通過實(shí)驗(yàn)結(jié)果對(duì)所理解的知識(shí)進(jìn)行了加強(qiáng)鞏固,更是對(duì)原來的理解偏差進(jìn)行了改正,使我們對(duì)平時(shí)所學(xué)的課程更加透徹。當(dāng)然,我們自己動(dòng)手焊接了不少硬件電路,用到了大量的基礎(chǔ)知識(shí),還把實(shí)習(xí)中學(xué)到的焊接技術(shù),對(duì)以前的知識(shí)進(jìn)行了一次整合。再來,它增強(qiáng)了我們的溝通能力。合作精神是一個(gè)團(tuán)隊(duì)成立成長(zhǎng)的根本所在,我們組的隊(duì)員從第一個(gè)合作項(xiàng)目起就十分的團(tuán)結(jié),大家各有分工,共同討論,為我們?nèi)蘸蟮墓ぷ髂芰Υ蛳铝嘶A(chǔ)。這次大賽給予了我們很多,通過這次比賽大家一起交流學(xué)習(xí),互幫互助,增

強(qiáng)了合作意識(shí)。老師們的幫助讓我們感覺老師不再僅僅是一個(gè)指導(dǎo)者,更像一個(gè)

家長(zhǎng)帶領(lǐng)我們成長(zhǎng),讓我們跟老師之間的關(guān)系更加的緊密。最后,我們衷心感謝

我們的指導(dǎo)老師,也祝愿此次大賽圓滿成功!附錄1:電路原理圖

附錄2:源程序

#include〈msp430xl4x.h〉

#include〃PID.h〃

#defineP_DATA0.5

#defineI_DATA0

#defineD_DATA0

typedefstructPID{intSetPoint;//設(shè)定目標(biāo)DesiredValue

longSumError;//誤差累計(jì)

doubleProportion;//比例常數(shù)ProportionalConst

doubleIntegral;//積分常數(shù)IntegralConst

doubleDerivative;//微分常數(shù)DerivativeConstintLastError;//Error[-1]

intPrevError;//Error[-2]

}PID;staticPIDsPID;staticPID*sptr=&sPID;voidIncPIDInit(inttarget)

sptr-〉SumError=0;//誤差的累加

sptr-〉LastError=0;//Error[-l]

sptr-〉PrevError=0;//Error[-2]sptr-〉Proportion二P_DATA;//比例常數(shù)ProportionalConst

sptr-〉Integral=I_DATA;//積分常數(shù)IntegralConst

sptr-〉Derivative=D_DATA;//微分常數(shù)DerivativeConst

sptr-〉SetPoint二target;//目標(biāo)}//增量式PID控制設(shè)計(jì)

voidPID_dat(unsignedinttarget){sptr-〉SetPoint二target;//目標(biāo)}intIncPIDCalc(intNextPoint){

registerintiError,iIncpid;//當(dāng)前誤差

iError=sptr-〉SetPoint-NextPoint;//增量計(jì)算

iIncpid=sptr-〉Proportion*iError//E[k]項(xiàng)

-sptr-〉Integral*sptr-〉LastError//E[k—1]項(xiàng)

+sptr-〉Derivative*sptr-〉PrevError;//E[k—2]項(xiàng)

//存儲(chǔ)誤差,用于下次計(jì)算

sptr-〉PrevError=sptr-〉LastError;

sptr->LastError=iError;//返回增量值

return(iIncpid);}//位置式PID控制設(shè)計(jì)

unsignedintLocPIDCalc(intNextPoint){registerintiError,dError;iError二sptr-〉SetPoint-NextPoint;//偏差

sptr-〉SumError+二iError;//積分

dError二iError-sptr-〉LastError;//微分

sptr-〉LastError二iError;return(sptr—〉Proportion*iError//比例項(xiàng)+sptr-〉Integral*sptr-〉SumError//積分項(xiàng)

+sptr-〉Derivative*dError);//微分項(xiàng)}#include〈msp430xl4x.h〉

#include〃IIC.h〃

#include〃lcdl2864.h〃

#include<math.h〉#include<stdio.h〉

intcunt=0;uchardis[5];//顯示數(shù)字(-511至512)的字符數(shù)組intdis_data;floatTvae()

{

intdata_xyz[3];

floatRoll,Pitch,zz,Q,T,K;data_xyz[0]=GetData(ACCEL_XOUT_H);//合成數(shù)據(jù)

data_xyz[1]=GetData(ACCEL_YOUT_H);

data_xyz[2]=GetData(ACCEL_ZOUT_H);Q=(float)data_xyz[0]*3.9;//分別是加速度X,Y,Z的原始數(shù)據(jù),10

位的T=(float)data_xyz[1]*3.9;K=(float)data_xyz[2]*3.9;

return(-Roll);voidlcd_printf(uchar*s,inttemp_data){if(temp_data〈0){temp_data二-temp_data;*s=,_,;}else*s=,,;*++s=temp_data/100+,0,;temp_data二temp_data%100;//取余運(yùn)算*++s二temp_data/10+,0,;temp_data二temp_data%10;//取余運(yùn)算*++s二temp_data+,0,;

*++s=,\0,;}voidInitMPU6050(){//Single_WriteI2C(PWR_MGMT_l,0x80);//復(fù)位Single_WriteI2C(PWR_MGMT_l,0x00);//解除休眠狀態(tài)Single_WriteI2C(SMPLRT_DIV,0x07);//陀螺儀采樣率,典型值:

0x07(125Hz)Single_WriteI2C(CONFIG,0x06);//低通濾波頻率,典型值:

0x06(5Hz)Single_WriteI2C(GYRO_CONFIG,0xl8);//陀螺儀自檢及測(cè)量范圍,典

型值:0x18(不自檢,2000deg/s)Single_WriteI2C(ACCEL_CONFIG,0x01);//加速計(jì)自檢,測(cè)量范圍及

高通濾波頻率,典型值:0x01(不自檢,2G,5Hz)}//*1<**1<**!<**!<**!<**!<**!<**!<**!<**!<**!<**!<**1<**1<**!<**!<**!<**!<**!<**!<**1<**1<**!<**!<**!<**!<**!<**!<**1<**1<**!<**!<**!<**!<*//*t**t**r**r**r**t**t**t**t**t**t**t**T**T**T**T**T**T**T**T**?**?**?**?**T**T**T**?**?**?**?**T**T**T**T*//合成數(shù)據(jù)//*1<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<*

//*t**t**r**r**r**t**t**t**t**t**t**t**T**T**T**T**T**T**T**T**?**?**?**?**T**T**T**?**?**?**?**T**T**T**T*intGetData(ucharREG_Address)

{charH,L;H二Single_ReadI2C(REG_Address);L二Single_ReadI2C(REG_Address+l);

return(H〈〈8)+L;//合成數(shù)據(jù)}//*1<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**1<**J<**J<**1<**J<**J<**J<**J<**J<**J<**1<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<*//*t**t**r**r**r**t**t**t**t**t**t**t**T**T**T**T**T**T**T**T**?**?**?**?**T**T**T**T**T**T**T**T**T**T**T*//在12864上顯示10位數(shù)據(jù)//*1<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<**J<*//*t**t**r**r**r**t**t**t**t**T**t**t**T**T**T**T**T**T**T**T**?**?**?**?**T**T**T**?**?**?**?**T**T**T**T*intDisplaylOBitData(intvalue){value/=64;//轉(zhuǎn)換為10位數(shù)據(jù)lcd_printf(dis,value);//轉(zhuǎn)換數(shù)據(jù)顯示//csj(y,x,dis);returnvalue;}

voidI2C_Start(){SDA1;//拉高數(shù)據(jù)線SCL1;//拉高時(shí)鐘線

delayus(5);//延時(shí)SDA0;//產(chǎn)生下降沿

delayus(5);//延時(shí)SCL0;//拉低時(shí)鐘線//vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*

//*1**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T*//I2C停止信號(hào)//vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*

//*1**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T*voidI2C_Stop(){SDA0;//拉低數(shù)據(jù)線SCL1;//拉高時(shí)鐘線

delayus(5);//延時(shí)SDA1;//產(chǎn)生上升沿

delayus(5);//延時(shí)}//*X*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vl*vt*vl*vt*vl**X*vt*vt*vt*%X*vt*vt*//*T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**1**T**T**T**T**T**T**T**T**T**T**T**T**T**T*//I2C發(fā)送應(yīng)答信號(hào)//入口參數(shù):ack(0:ACKl:NAK)//*X*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**1**X*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*//*1**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**4**4**T**T**T**T**T**T**T**T**T**T**T**T*voidI2C_SendACK(ucharack){SDAOUT;

if(ack)SDAl;

elseSDAO;//SDA=ack;//寫應(yīng)答信號(hào)SCL1;//拉高時(shí)鐘線

delayus(5);//延時(shí)

SCL0;//拉低時(shí)鐘線

delayus(5);//延時(shí)

}//*X*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*

//*1**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T*//I2C接收應(yīng)答信號(hào)//vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*

//*1**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T*ucharI2C_RecvACK(){ucharcy;SCL1;//拉高時(shí)鐘線SDAIN;delayus(5);//延時(shí)

if(SDADATA){cy=l;}else{

cy=0;}//cy=SDA;//讀應(yīng)答信號(hào)

SCL0;//拉低時(shí)鐘線

delayus(5);//延時(shí)

SDAOUT;returncy;}//*1*vt*vt*vt*vt*vt*vt**1*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*//*t**t**t**t**T**T**T**T**T**T**T**T**4**T**T**T**T**T**T**T**T**T**T**T**?**T**T**T**?**?**?**?**T**?**T*//向I2C總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)//vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*//*T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T*voidI2C_SendByte(uchardat){uchari;

for(i=0;i〈8;i++)//8位計(jì)數(shù)器{if((dat〈〈i)&0x80){SDA1;}else{SDA0;//SDA二cy;//送數(shù)據(jù)口SCL1;//拉高時(shí)鐘線

delayus(5);//延時(shí)SCL0;//拉低時(shí)鐘線

delayus(5);//延時(shí)}I2C_RecvACK();}//vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vl*vt*vl*vt*vl*vt*vt*vt*%X*vt*vt*//*T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**1**T**T**T**T**T**T**T**T**T**T**T**T**T**T*//從I2C總線接收一個(gè)字節(jié)數(shù)據(jù)//vt*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*vt**X*%X*vt*vt**X*vt**X**X**X*vt*vt*vt*vt*vt**X*vt*vt*vt*vt*vt*vt*//*1**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T*ucharI2C_RecvByte(){uchari;uchardat二0,cy;SDA1;//使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),SDAIN;

for(i=0;i〈8;i++)//8位計(jì)數(shù)器{dat〈〈=l;SCL1;//拉高時(shí)鐘線

delayus(5);//延時(shí)

if(SDADATA)

cy=1;

}

else{cy=0;}dat|二cy;//讀數(shù)據(jù)SCL0;//拉低時(shí)鐘線delayus(5);//延時(shí)}SDAOUT;returndat;}//*J**vL*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt**X*vt*vt*%X*vt*vt*vt*//*T**T**T**T**T**T**T**T**T**T**T**T**

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論