版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、無(wú)線傳感器網(wǎng)絡(luò)第第6 6章章 常用常用傳傳感器感器計(jì)計(jì)算機(jī)科算機(jī)科學(xué)學(xué)系系 宋文強(qiáng)宋文強(qiáng)1 6.1 6.1 數(shù)數(shù)字字溫濕溫濕度度傳傳感器感器DHT11 DHT11 v 含有已校準(zhǔn)含有已校準(zhǔn)數(shù)數(shù)字信字信號(hào)輸號(hào)輸出的出的溫濕溫濕度度復(fù)復(fù)合合傳傳感器。感器。v 應(yīng)應(yīng)用用數(shù)數(shù)字模字模塊塊采集技采集技術(shù)術(shù)和和溫濕溫濕度度傳傳感技感技術(shù)術(shù),確保,確保產(chǎn)產(chǎn)品具有品具有極極高的可靠性高的可靠性與長(zhǎng)與長(zhǎng)期期穩(wěn)穩(wěn)定性。定性。v 傳傳感器包括一感器包括一個(gè)電個(gè)電阻式感阻式感濕濕元件和一元件和一個(gè)個(gè)NTCNTC測(cè)溫測(cè)溫元元件,件,并與并與一一個(gè)個(gè)高性能高性能8 8位位單單片機(jī)相片機(jī)相連連接。接。2 DHT11DHT1
2、1典型典型應(yīng)應(yīng)用用電電路路 3 DHT11DHT11連連接接實(shí)實(shí)體體圖圖4 DHT11DHT11串行接口串行接口 DATA DATA 引腳用于引腳用于單單片機(jī)片機(jī)與與DHT11DHT11之之間間的通的通訊訊和同步和同步, ,采用采用單總單總線數(shù)線數(shù)據(jù)格式據(jù)格式, ,一次通一次通訊時(shí)間訊時(shí)間4ms,4ms,數(shù)數(shù)據(jù)分小據(jù)分小數(shù)數(shù)部分和整部分和整數(shù)數(shù)部分部分, ,具具體格式在下面體格式在下面說(shuō)說(shuō)明明, ,當(dāng)當(dāng)前小前小數(shù)數(shù)部分用于以后部分用于以后擴(kuò)擴(kuò)展展, ,現(xiàn)讀現(xiàn)讀出出為為零。零。操作流程如下操作流程如下: :u 一次完整的一次完整的數(shù)數(shù)據(jù)據(jù)傳輸為傳輸為40bit40bit,高位先出。,高位先出。u
3、 數(shù)數(shù)據(jù)格式:據(jù)格式:u 8bit8bit濕濕度整度整數(shù)數(shù)數(shù)數(shù)據(jù)據(jù) + 8bit+ 8bit濕濕度小度小數(shù)數(shù)數(shù)數(shù)據(jù)據(jù)u +8bit+8bit溫溫度整度整數(shù)數(shù)數(shù)數(shù)據(jù)據(jù) + 8bit+ 8bit溫溫度小度小數(shù)數(shù)數(shù)數(shù)據(jù)據(jù)u +8bit+8bit校校驗(yàn)驗(yàn)和和u 數(shù)數(shù)據(jù)據(jù)傳傳送正確送正確時(shí)時(shí),校,校驗(yàn)驗(yàn)和和數(shù)數(shù)據(jù)等于據(jù)等于“ “8bit8bit濕濕度整度整數(shù)數(shù)數(shù)數(shù)據(jù)據(jù)+8bit+8bit濕濕度小度小數(shù)數(shù)數(shù)數(shù)據(jù)據(jù)+8bi+8bi溫溫度整度整數(shù)數(shù)數(shù)數(shù)據(jù)據(jù)+8bit+8bit溫溫度小度小數(shù)數(shù)數(shù)數(shù)據(jù)據(jù)” ”所得所得結(jié)結(jié)果的果的末末8 8位。位。5 v 用用戶戶MCUMCU發(fā)發(fā)送一次送一次開(kāi)開(kāi)始信始信號(hào)號(hào)后后,D
4、HT11,DHT11從從低功耗模式低功耗模式轉(zhuǎn)換轉(zhuǎn)換到高速模式到高速模式, ,等待主機(jī)等待主機(jī)開(kāi)開(kāi)始信始信號(hào)結(jié)號(hào)結(jié)束后束后,DHT11,DHT11發(fā)發(fā)送送響應(yīng)響應(yīng)信信號(hào)號(hào), ,送出送出40bit40bit的的數(shù)數(shù)據(jù)據(jù), ,并觸發(fā)并觸發(fā)一次信一次信號(hào)號(hào)采集采集, ,用用戶戶可可選擇讀選擇讀取部分取部分?jǐn)?shù)數(shù)據(jù)。據(jù)。v 如果如果沒(méi)沒(méi)有接收到主機(jī)有接收到主機(jī)發(fā)發(fā)送送開(kāi)開(kāi)始信始信號(hào)號(hào),DHT11,DHT11不不會(huì)會(huì)主主動(dòng)動(dòng)進(jìn)進(jìn)行行溫濕溫濕度采集度采集. .采集采集數(shù)數(shù)據(jù)后據(jù)后轉(zhuǎn)換轉(zhuǎn)換到低速模式。到低速模式。6 DHT11DHT11串行接口通串行接口通訊過(guò)訊過(guò)程程 v 總線總線空空閑狀態(tài)為閑狀態(tài)為高高電電
5、平平, ,主機(jī)把主機(jī)把總線總線拉低等待拉低等待DHT11DHT11響應(yīng)響應(yīng), ,主機(jī)主機(jī)把把總線總線拉低必拉低必須須大于大于1818毫秒毫秒, ,保保證證DHT11DHT11能能檢測(cè)檢測(cè)到起始信到起始信號(hào)號(hào)。v DHT11DHT11接收到主機(jī)的接收到主機(jī)的開(kāi)開(kāi)始信始信號(hào)號(hào)后后, ,等待主機(jī)等待主機(jī)開(kāi)開(kāi)始信始信號(hào)結(jié)號(hào)結(jié)束束, ,然后然后發(fā)發(fā)送送80us80us低低電電平平響應(yīng)響應(yīng)信信號(hào)號(hào)。v 主機(jī)主機(jī)發(fā)發(fā)送送開(kāi)開(kāi)始信始信號(hào)結(jié)號(hào)結(jié)束后,延束后,延時(shí)時(shí)等待等待20-40us20-40us后后, , 讀讀取取DHT11DHT11的的響應(yīng)響應(yīng)信信號(hào)號(hào),主機(jī),主機(jī)發(fā)發(fā)送送開(kāi)開(kāi)始信始信號(hào)號(hào)后,可以切后,可以
6、切換換到到輸輸入模式,或入模式,或者者輸輸出高出高電電平均可平均可, , 總線總線由上拉由上拉電電阻拉高,阻拉高,總線為總線為低低電電平平, ,說(shuō)說(shuō)明明DHT11DHT11發(fā)發(fā)送送響應(yīng)響應(yīng)信信號(hào)號(hào),DHT11,DHT11發(fā)發(fā)送送響應(yīng)響應(yīng)信信號(hào)號(hào)后后, ,再把再把總線總線拉高拉高80us,80us,準(zhǔn)準(zhǔn)備發(fā)備發(fā)送送數(shù)數(shù)據(jù)。據(jù)。v 如果如果讀讀取取響應(yīng)響應(yīng)信信號(hào)為號(hào)為高高電電平,平,則則DHT11DHT11沒(méi)沒(méi)有有響應(yīng)響應(yīng),請(qǐng)檢查線請(qǐng)檢查線路路是否是否連連接正常。接正常。當(dāng)當(dāng)最后一最后一bitbit數(shù)數(shù)據(jù)據(jù)傳傳送完送完畢畢后,后,DHT11DHT11拉低拉低總總線線50us50us,隨隨后后總線總
7、線由上拉由上拉電電阻拉高阻拉高進(jìn)進(jìn)入空入空閑狀態(tài)閑狀態(tài)。 7 串行接口通串行接口通訊過(guò)訊過(guò)程程 8 DHT11DHT11串行接口每一位串行接口每一位數(shù)數(shù)據(jù)都以據(jù)都以50us50us低低電電平平時(shí)時(shí)隙隙開(kāi)開(kāi)始始, ,高高電電平平長(zhǎng)長(zhǎng)短定了短定了數(shù)數(shù)據(jù)位是據(jù)位是0 0還還是是1 1 9 數(shù)數(shù)字字1 1信信號(hào)號(hào)表示方法表示方法 10 6.1.5 6.1.5 實(shí)驗(yàn)實(shí)驗(yàn):DHT11DHT11實(shí)驗(yàn)實(shí)驗(yàn)(1 1)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模耗康模壕幘幊坛虒?shí)現(xiàn)實(shí)現(xiàn)不不斷讀斷讀取取DHT11DHT11的的溫濕溫濕度度值并值并通通過(guò)過(guò)串口串口發(fā)發(fā)送送給給PCPC,掌握,掌握DHT11DHT11溫濕溫濕度度傳傳感感器器編編程的方
8、法程的方法11 簡(jiǎn)單實(shí)驗(yàn)簡(jiǎn)單實(shí)驗(yàn)程序程序#include #include #include #include #include UART.H#include UART.H#include DHT11.H“#include DHT11.H“void main(void)void main(void) uchar temp3; uchar temp3; uchar humidity3; uchar humidity3; uchar strTemp13=Temperature:; uchar strTemp13=Temperature:; uchar strHumidity10=Humidity:
9、; uchar strHumidity10=Humidity:; Delay_ms(1000); Delay_ms(1000); / / 讓設(shè)備穩(wěn)讓設(shè)備穩(wěn)定定 InitUart(); InitUart(); / / 串口初始化串口初始化12 while(1)while(1) memset(temp, 0, 3); memset(temp, 0, 3); memset(humidity, 0, 3); memset(humidity, 0, 3); DHT11(); DHT11(); / / 獲獲取取溫濕溫濕度度 temp0=wendu_shi+0 x30; temp0=wendu_shi+0
10、x30; / / 將溫濕將溫濕度的度的轉(zhuǎn)換轉(zhuǎn)換成字符串成字符串 temp1=wendu_ge+0 x30; temp1=wendu_ge+0 x30; humidity0=shidu_shi+0 x30; humidity0=shidu_shi+0 x30; humidity1=shidu_ge+0 x30; humidity1=shidu_ge+0 x30; UartSendString(strTemp, 12); UartSendString(strTemp, 12); / / 獲獲得的得的溫濕溫濕度通度通過(guò)過(guò)串口串口輸輸出到出到電腦顯電腦顯示示 UartSendString(temp,
11、2); UartSendString(temp, 2); UartSendString( , 3); UartSendString( , 3); UartSendString(strHumidity, 9); UartSendString(strHumidity, 9); UartSendString(humidity, 2); UartSendString(humidity, 2); UartSendString(n, 1); UartSendString(n, 1); Delay_ms(2000); Delay_ms(2000); / / 延延時(shí)時(shí),2S 2S 讀讀取取 1 1 次次 13
12、 實(shí)驗(yàn)實(shí)驗(yàn)效果效果14 6.2 6.2 紅紅外人體感外人體感應(yīng)應(yīng)模模塊塊菲涅爾透鏡15 6.2 6.2 紅紅外人體感外人體感應(yīng)應(yīng)模模塊塊 (1 1)全自)全自動(dòng)動(dòng)感感應(yīng)應(yīng): :人人進(jìn)進(jìn)入其感入其感應(yīng)應(yīng)范范圍則輸圍則輸出高出高電電平,平, 人離人離開(kāi)開(kāi)感感應(yīng)應(yīng)范范圍則圍則自自動(dòng)動(dòng)延延時(shí)關(guān)閉時(shí)關(guān)閉高高電電平,平,輸輸出低出低電電平。平。(2 2)工作)工作電壓電壓范范圍寬圍寬:默:默認(rèn)認(rèn)工作工作電壓電壓DC 4.5V-20VDC 4.5V-20V。(3 3)微功耗:)微功耗:靜態(tài)電靜態(tài)電流流50 50 微安,特微安,特別別適合干適合干電電池供池供電電的自的自動(dòng)動(dòng)控制控制產(chǎn)產(chǎn)品。品。(4 4)感)感
13、應(yīng)應(yīng)模模塊塊通通電電后有一分后有一分鐘鐘左右的初始化左右的初始化時(shí)間時(shí)間,在此期,在此期間間模模塊會(huì)間塊會(huì)間隔地隔地輸輸出出03 03 次,一分次,一分鐘鐘后后進(jìn)進(jìn)入待機(jī)入待機(jī)狀態(tài)狀態(tài)。(5 5)感)感應(yīng)應(yīng)距離距離7 m7 m以以內(nèi)內(nèi),感,感應(yīng)應(yīng)角度角度100 100 度度錐錐角,工作角,工作溫溫度度- -15+7015+70。 16 6.2 6.2 紅紅外人體感外人體感應(yīng)應(yīng)模模塊塊17 6.2 6.2 紅紅外人體感外人體感應(yīng)應(yīng)模模塊塊#include #include #include “exboard.h”#include “exboard.h”#define signal P0_5#de
14、fine signal P0_5void main()void main() P1SEL &= 0 xC0; P1SEL &= 0 xC0; P1DIR |= 0 xC0; P1DIR |= 0 xC0; P0SEL &= 0 x20; P0SEL &= 0 x20; P0DIR &= 0 x20; P0DIR &= 0 x20; while(1) while(1) if(signal) if(signal)/ / 如果如果監(jiān)測(cè)監(jiān)測(cè)范范圍內(nèi)圍內(nèi)有人,有人,signalsignal為為“ “1”1” led1 = 1; led1 = 1; led2
15、 = 1; led2 = 1; else else led1 = 0; led1 = 0; led2 = 0; led2 = 0; 18 6.3 6.3 結(jié)結(jié)露露傳傳感器感器應(yīng)用于電子、制藥、糧食、煙應(yīng)用于電子、制藥、糧食、煙草、紡織、氣象、倉(cāng)儲(chǔ)等行業(yè)草、紡織、氣象、倉(cāng)儲(chǔ)等行業(yè)應(yīng)用于空調(diào)、冰箱、微波爐、應(yīng)用于空調(diào)、冰箱、微波爐、加濕器、溫濕度表等產(chǎn)品加濕器、溫濕度表等產(chǎn)品19 產(chǎn)產(chǎn)品品概概述述20 結(jié)結(jié)露露傳傳感器感器與單與單片機(jī)的片機(jī)的連連接接21 HDS10HDS10結(jié)結(jié)露露傳傳感器技感器技術(shù)參數(shù)術(shù)參數(shù)22 6.3.4 6.3.4 結(jié)結(jié)露露傳傳感器感器實(shí)驗(yàn)實(shí)驗(yàn) HDS05結(jié)露傳感器特性曲線
16、結(jié)露傳感器特性曲線 :23 6.3.4 6.3.4 結(jié)結(jié)露露傳傳感器感器實(shí)驗(yàn)實(shí)驗(yàn)程序程序#include #include #include “exboard.h”#include “exboard.h”char Txdata25;char Txdata25;void Delay(uint n)void Delay(uint n) uint i; uint i; for(i=0; in; i+); for(i=0; in; i+); for(i=0; in; i+); for(i=0; in; i+); for(i=0; in; i+); for(i=0; in; i+); for(i=0;
17、in; i+); for(i=0; in; i+); for(i=0; in; i+); for(i=0; in; i+); 24 6.3.4 6.3.4 結(jié)結(jié)露露傳傳感器感器實(shí)驗(yàn)實(shí)驗(yàn)程序程序void intUARTSEND()void intUARTSEND() CLKCONCMD &= 0 x40; CLKCONCMD &= 0 x40; while(CLKCONSTA & 0 x40); while(CLKCONSTA & 0 x40); CLKCONCMD &= 0 x47; CLKCONCMD &= 0 x47; PERCFG = 0
18、x00; PERCFG = 0 x00; P0SEL = 0 x3C; P0SEL = 0 x3C; U0CSR |= 0 x80; U0CSR |= 0 x80;/ UART/ UART模式模式 U0GCR |= 9; U0GCR |= 9; U0BAUD |= 59; U0BAUD |= 59;/ / 波特率波特率1920019200 UTX0IF = 0; UTX0IF = 0;/ / 中中斷標(biāo)斷標(biāo)志初始位置志初始位置0 0 25 6.3.4 6.3.4 結(jié)結(jié)露露傳傳感器感器: :串口串口發(fā)發(fā)送字符串函送字符串函數(shù)數(shù)void UartTX_Send_String(char void Ua
19、rtTX_Send_String(char * *Data, int len)Data, int len) int j; int j; for(j=0; jlen; j+) for(j=0; j 2; value = ADCL 2;/ / 低低2 2位無(wú)效,去掉位無(wú)效,去掉 value = ADCH; value = ADCH;/ / 得到得到結(jié)結(jié)果高字果高字節(jié)節(jié) value |= (value6); value |= (value3500) if(vol3500) strcpy(Txdata,”water”); strcpy(Txdata,”water”); UartTX_Send_Stri
20、ng(Txdata, sizeof(“water”); UartTX_Send_String(Txdata, sizeof(“water”);/通通過(guò)過(guò)串口串口發(fā)給發(fā)給上位機(jī)上位機(jī) else else strcpy(Txdata,”no water”); strcpy(Txdata,”no water”); UartTX_Send_String(Txdata, sizeof(“no water”); UartTX_Send_String(Txdata, sizeof(“no water”); 28 6.4.1 6.4.1 煙煙霧傳霧傳感器模感器模塊塊 煙煙霧傳霧傳感器模感器模塊塊功能特點(diǎn):功能
21、特點(diǎn):(1 1)具有信)具有信號(hào)輸號(hào)輸出指示。出指示。(2 2)雙雙路信路信號(hào)輸號(hào)輸出(模出(模擬擬量量輸輸出及出及TTLTTL電電平平輸輸出)出)(3 3)TTLTTL輸輸出有效信出有效信號(hào)為號(hào)為低低電電平(平(輸輸出低出低電電平平時(shí)時(shí)信信號(hào)號(hào)燈亮,燈亮,可直接接可直接接單單片機(jī))片機(jī)) (4 4)模)模擬擬量量輸輸出出05V05V電壓電壓,濃濃度越高度越高電壓電壓越高越高(5 5)對(duì)對(duì)液化液化氣氣,天然,天然氣氣,城市煤,城市煤氣氣有有較較好的好的靈靈敏度敏度(6 6)具有)具有長(zhǎng)長(zhǎng)期的使用期的使用壽壽命和可靠的命和可靠的穩(wěn)穩(wěn)定性定性(7 7)快速的)快速的響應(yīng)響應(yīng)恢恢復(fù)復(fù)特性特性29 6
22、.4.2 6.4.2 煙煙霧傳霧傳感器模感器模塊實(shí)塊實(shí)物物30 6.4.3 6.4.3 煙煙霧傳霧傳感器感器編編程程#include #include #include “exboard.h”#include “exboard.h”#define signal P0_6#define signal P0_6void main()void main() P1SEL &= 0 xC0; P1SEL &= 0 xC0; P1DIR |= 0 xC0; P1DIR |= 0 xC0; P0SEL &= 0 x40; P0SEL &= 0 x40; P0DIR &
23、= 0 x40; P0DIR &= 0 x40; while(1) while(1) if(signal) if(signal)/ / 一一種種非常非常簡(jiǎn)單簡(jiǎn)單的的處處理方法,理方法,P0.6P0.6電壓電壓大于大于2V2V,即,即LEDLED點(diǎn)亮點(diǎn)亮 led1 = 1; led1 = 1; led2 = 1; led2 = 1; else else led1 = 0; led1 = 0; led2 = 0; led2 = 0; 31 6.5 6.5 光強(qiáng)度光強(qiáng)度傳傳感器模感器模塊塊 GY-30 GY-30 數(shù)數(shù)字光強(qiáng)度模字光強(qiáng)度模塊塊特點(diǎn)特點(diǎn)(1 1)I2C I2C 總線總線接口接口
24、(2 2)光)光譜譜的范的范圍圍是人眼相近是人眼相近(3 3)照度)照度數(shù)數(shù)字字轉(zhuǎn)換轉(zhuǎn)換器器(4 4)寬寬范范圍圍和高分辨率和高分辨率. . (1 65535 1 65535 勒克斯)勒克斯)(5 5)低)低電電流流關(guān)關(guān)機(jī)功能機(jī)功能(6 6)50Hz / 60Hz 50Hz / 60Hz 光噪光噪聲聲r(shí)eject-functionreject-function(7 7)1.8V 1.8V 邏輯輸邏輯輸入接口入接口(8 8)無(wú)需任何外部零件)無(wú)需任何外部零件(9 9)光源依)光源依賴賴性不大(例如白性不大(例如白熾熾燈、燈、熒熒光燈、光燈、鹵鹵素?zé)?、白素?zé)簟譒EDLED)(10)10)可能的可
25、能的選擇選擇2 2 類類型的型的IC slave-address.IC slave-address.(11)11)紅紅外外線線的影的影響響很小很小 32 GY-30(BH1750)GY-30(BH1750)外外觀觀33 原理原理圖圖34 I2CI2C總線 v I2C(InterI2C(InterIntegrated Circuit)Integrated Circuit)總線總線是一是一種種由由PHILIPSPHILIPS公司公司開(kāi)發(fā)開(kāi)發(fā)的的兩線兩線式式串行串行總線總線,用于,用于連連接微控制器及其外接微控制器及其外圍設(shè)備圍設(shè)備( (特特別別是外部存是外部存儲(chǔ)儲(chǔ)器件器件) )。 v 由由數(shù)數(shù)據(jù)據(jù)
26、線線SDASDA和和時(shí)鐘時(shí)鐘SCLSCL構(gòu)構(gòu)成的串行成的串行總線總線,可,可發(fā)發(fā)送和接收送和接收數(shù)數(shù)據(jù)。據(jù)。 v 在在傳傳送送數(shù)數(shù)據(jù)據(jù)過(guò)過(guò)程中共有三程中共有三種種特殊特殊類類型信型信號(hào)號(hào), 它們它們分分別別是:是:開(kāi)開(kāi)始信始信號(hào)號(hào)、結(jié)結(jié)束信束信號(hào)號(hào)和和應(yīng)應(yīng)答信答信號(hào)號(hào)。 v 最主要的最主要的優(yōu)優(yōu)點(diǎn)是其點(diǎn)是其簡(jiǎn)單簡(jiǎn)單性和有效性。由于接口直接在性和有效性。由于接口直接在組組件之上,因此件之上,因此I2CI2C總線總線占用的空占用的空間間非常小,非常小,減減少了少了電電路板的空路板的空間間和芯片管腳的和芯片管腳的數(shù)數(shù)量,降低量,降低了互了互聯(lián)聯(lián)成本。成本。I2CI2C總線總線的另一的另一個(gè)優(yōu)個(gè)優(yōu)點(diǎn)是
27、,點(diǎn)是,它它支持多主機(jī),其中任何能支持多主機(jī),其中任何能夠夠進(jìn)進(jìn)行行發(fā)發(fā)送和接收的送和接收的設(shè)備設(shè)備都可以成都可以成為為主機(jī)。一主機(jī)。一個(gè)個(gè)主控能主控能夠夠控制信控制信號(hào)號(hào)的的傳輸傳輸和和時(shí)鐘頻時(shí)鐘頻率。率。當(dāng)當(dāng)然,在任何然,在任何時(shí)間時(shí)間點(diǎn)上只能有一點(diǎn)上只能有一個(gè)個(gè)主機(jī)。主機(jī)。v 由由數(shù)數(shù)據(jù)據(jù)線線SDASDA和和時(shí)鐘時(shí)鐘SCLSCL構(gòu)構(gòu)成的串行成的串行總線總線,可,可發(fā)發(fā)送和接收送和接收數(shù)數(shù)據(jù)。各據(jù)。各種種I2CI2C均均并聯(lián)并聯(lián)在在這條總線這條總線上,但就像上,但就像電話電話機(jī)一機(jī)一樣樣只有只有撥撥通各自的通各自的號(hào)碼號(hào)碼才能工作才能工作,所以每,所以每個(gè)電個(gè)電路和模路和模塊塊都有唯一的地
28、址。都有唯一的地址。 35 I2CI2C總線總線的起始和停止的起始和停止 v SCLSCL線為線為高高電電平期平期間間,SDASDA線線由高由高電電平向低平向低電電平的平的變變化表示起始信化表示起始信號(hào)號(hào);SCLSCL線為線為高高電電平期平期間間,SDASDA線線由低由低電電平向高平向高電電平的平的變變化表示化表示終終止信止信號(hào)號(hào) 36 I2CI2C的的數(shù)數(shù)據(jù)據(jù)傳輸傳輸 v SCLSCL為為高高電電平期平期間間,數(shù)數(shù)據(jù)據(jù)線線上的上的數(shù)數(shù)據(jù)必?fù)?jù)必須須保持保持穩(wěn)穩(wěn)定定v 只有只有SCLSCL信信號(hào)為號(hào)為低低電電平期平期間間,SDASDA狀態(tài)狀態(tài)才允才允許變?cè)S變化化37 I2CI2C的的數(shù)數(shù)據(jù)據(jù)讀寫
29、讀寫和和應(yīng)應(yīng)答答v I2CI2C與與UARTUART不同的地方首先在于先不同的地方首先在于先傳傳高位,后高位,后傳傳送低位。送低位。v 主機(jī)主機(jī)寫數(shù)寫數(shù)據(jù)據(jù)時(shí)時(shí),每,每發(fā)發(fā)送一送一個(gè)個(gè)字字節(jié)節(jié),接收機(jī)需要回,接收機(jī)需要回復(fù)復(fù)一一個(gè)應(yīng)個(gè)應(yīng)答位答位“ “0”0”,通,通過(guò)應(yīng)過(guò)應(yīng)答位答位來(lái)來(lái)判判斷從斷從機(jī)是否接收成功。機(jī)是否接收成功。v 主機(jī)主機(jī)讀數(shù)讀數(shù)據(jù)據(jù)時(shí)時(shí),接收一,接收一個(gè)個(gè)字字節(jié)結(jié)節(jié)結(jié)束后,主機(jī)也需要束后,主機(jī)也需要發(fā)發(fā)送一送一應(yīng)應(yīng)答位答位“ “0”0”,但是,但是當(dāng)當(dāng)接收最后一接收最后一個(gè)個(gè)字字節(jié)結(jié)節(jié)結(jié)束后,束后,則則需需發(fā)發(fā)送送一一個(gè)個(gè)非非應(yīng)應(yīng)答位答位“ “1”1”,發(fā)發(fā)完了完了1 1后
30、,再后,再發(fā)發(fā)一一個(gè)個(gè)停止信停止信號(hào)號(hào),最,最終終結(jié)結(jié)束通信。束通信。 38 6.5.4 6.5.4 實(shí)驗(yàn)實(shí)驗(yàn):光強(qiáng)度:光強(qiáng)度傳傳感器模感器模塊塊#include #include #include “uart.h”#include “uart.h”#include “exboard.h”#include “exboard.h”#define BV(n)#define BV(n)(1(n)(1(n)#define st(x)#define st(x)dox while_LINE_ = -1)dox while_LINE_ = -1)#define HAL_IO_SET(port,pin,val
31、) HAL_IO_SET_PREP(port,pin,val)#define HAL_IO_SET(port,pin,val) HAL_IO_SET_PREP(port,pin,val)#define HAL_IO_SET_PREP(port,pin,val) st(P#port#_#pin# = #define HAL_IO_SET_PREP(port,pin,val) st(P#port#_#pin# = val;)val;)#define HAL_IO_GET(port,pin) HAL_IO_GET_PREP(port,pin)#define HAL_IO_GET(port,pin)
32、HAL_IO_GET_PREP(port,pin)#define HAL_IO_GET_PREP(port,pin) (P#port#_#pin)#define HAL_IO_GET_PREP(port,pin) (P#port#_#pin)#define LIGHT_SCL_0() HAL_IO_SET(1,4,0)#define LIGHT_SCL_0() HAL_IO_SET(1,4,0)#define LIGHT_SCL_1() HAL_IO_SET(1,4,1)#define LIGHT_SCL_1() HAL_IO_SET(1,4,1)#define LIGHT_DTA_0() H
33、AL_IO_SET(1,3,0)#define LIGHT_DTA_0() HAL_IO_SET(1,3,0)#define LIGHT_DTA_1() HAL_IO_SET(1,3,1)#define LIGHT_DTA_1() HAL_IO_SET(1,3,1)#define LIGHT_DTA() HAL_IO_GET(1,3)#define LIGHT_DTA() HAL_IO_GET(1,3)39 #define SDA_W() (P1DIR |= BV(3)#define SDA_W() (P1DIR |= BV(3)#define SCL_W() (P1DIR |= BV(4)#
34、define SCL_W() (P1DIR |= BV(4)#define SDA_R() (P1DIR &= BV(3)#define SDA_R() (P1DIR &= BV(3)#define delay() asm(“nop”); asm(“nop”); asm(“nop”); asm(“nop”);#define delay() asm(“nop”); asm(“nop”); asm(“nop”); asm(“nop”);/ /* * * * * * * * * *BH1750BH1750命令命令* * * * * * * * */ /#define DPOWR#de
35、fine DPOWR0 x000 x00/ / 斷電斷電#define POWER#define POWER0 x010 x01/ / 上上電電#define RESET#define RESET 0 x070 x07/ / 重置重置#define CHMODE#define CHMODE0 x100 x10/ / 連續(xù)連續(xù)高分辨率高分辨率#define CHMODE2#define CHMODE20 x110 x11/ / 連續(xù)連續(xù)高分辨率高分辨率2 2#define CLMODE#define CLMODE0 x130 x13/ / 連續(xù)連續(xù)低分辨率模式低分辨率模式#define HMOD
36、E#define HMODE0 x200 x20/ / 一次高分辨率一次高分辨率#define HMODE2#define HMODE20 x210 x21/ / 一次高分辨率一次高分辨率2 2#define LMODE#define LMODE0 x230 x23/ / 一次低分辨率模式一次低分辨率模式#define SlaveAddress 0 x46#define SlaveAddress 0 x46/ / 定定義義器件在器件在I2CI2C總線總線中的中的從從地址地址40 char BUF8;char BUF8;char lux5;char lux5;char txdata25=“cha
37、r txdata25=“當(dāng)當(dāng)前光照度前光照度”;”;char ack;char ack;void delay_us(int n)void delay_us(int n)/ / 微秒延微秒延時(shí)時(shí) while(n-) while(n-) char i; char i; for(i=0; i32; i+) asm(“nop”); for(i=0; i0) while(k0) t=temp_data/k; t=temp_data/k; temp_data -= t temp_data -= t* *k;k; if(flag = 0) if(flag = 0) if(t != 0) if(t != 0)
38、 luxi+ = t+0 x30; luxi+ = t+0 x30; flag = 1; flag = 1; else else luxi+ = t+0 x30; luxi+ = t+0 x30; k = k/10; k = k/10; return i+1; return i+1; 42 啟動(dòng)啟動(dòng)I2CI2C函函數(shù)數(shù)void start_i2c()void start_i2c() SDA_W(); SDA_W(); SCL_W(); SCL_W(); LIGHT_DTA_1(); LIGHT_DTA_1(); delay_us(5); delay_us(5); LIGHT_DTA_0();
39、LIGHT_DTA_0(); delay_us(5); delay_us(5); LIGHT_SCL_0(); LIGHT_SCL_0(); delay_us(5); delay_us(5); 43 結(jié)結(jié)束束I2CI2C函函數(shù)數(shù)void stop_i2c()void stop_i2c() SDA_W(); SDA_W(); LIGHT_DTA_0(); LIGHT_DTA_0(); LIGHT_SCL_1(); LIGHT_SCL_1(); delay_us(5); delay_us(5); LIGHT_DTA_1(); LIGHT_DTA_1(); delay_us(5); delay_us
40、(5); LIGHT_SCL_0(); LIGHT_SCL_0(); delay_us(5); delay_us(5); 44 I2CI2C字字節(jié)發(fā)節(jié)發(fā)送送static int send_byte(unsigned char c)static int send_byte(unsigned char c) char i,error=0; char i,error=0; SDA_W(); SDA_W(); for(i=0 x80; i0; i/=2) for(i=0 x80; i0; i/=2) LIGHT_SCL_0(); LIGHT_SCL_0(); delay_us(5) delay_us(
41、5) if(i & c) LIGHT_DTA_1(); else LIGHT_DTA_0(); if(i & c) LIGHT_DTA_1(); else LIGHT_DTA_0(); LIGHT_SCL_1(); LIGHT_SCL_1(); delay_us(6); delay_us(6); delay_us(1) delay_us(1) LIGHT_SCL_0(); LIGHT_SCL_0(); LIGHT_DTA_1(); LIGHT_DTA_1(); SDA_R(); SDA_R(); P1INP = 0; P1INP = 0; P2INP = 0; P2INP =
42、0; LIGHT_SCL_1(); LIGHT_SCL_1(); delay_ms(6) delay_ms(6) if(LIGHT_DTA() ack = 0; else ack = 1; if(LIGHT_DTA() ack = 0; else ack = 1; LIGHT_SCL_0(); LIGHT_SCL_0(); delay_us(6) delay_us(6) return error; return error; 45 I2CI2C應(yīng)應(yīng)答答void sendACK(char ack)void sendACK(char ack) SDA_W(); SDA_W(); if(ack) i
43、f(ack) LIGHT_DTA_1(); LIGHT_DTA_1(); else else LIGHT_DTA_0(); LIGHT_DTA_0(); LIGHT_SCL_1(); LIGHT_SCL_1(); delay_us(6); delay_us(6); 46 I2CI2C字字節(jié)讀節(jié)讀char read_byte()char read_byte() uint i; uint i; char val = 0; char val = 0; LIGHT_DTA_1(); LIGHT_DTA_1(); SDA_R() SDA_R() for(i=0 x80; i0; i/=2) for(i=0 x80; i0; i/=2) LIGHT_SCL_1(); LIGHT_SCL_1(); delay_us(5); delay_us(5); if(LIGHT_DTA() if(LIGHT_DTA() val = (val | i); val = (val | i); LIGHT_S
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)小區(qū)防汛應(yīng)急預(yù)案(14篇)
- 影子培訓(xùn)總結(jié)15篇
- 領(lǐng)導(dǎo)證婚人婚禮致辭匯編(14篇)
- 新教材高考地理二輪專題復(fù)習(xí)單元綜合提升練6人口城市及城市輻射含答案
- 豐城中學(xué)2024-2025學(xué)年上學(xué)期初三創(chuàng)新班期中考試生物試卷
- 人教版高中語(yǔ)文高一上冊(cè)期末復(fù)習(xí)-字音強(qiáng)化訓(xùn)練(解析版)
- 試驗(yàn)檢測(cè)技術(shù)服務(wù)合同2024年
- 2024年版二手車轉(zhuǎn)讓協(xié)議參考
- 勞動(dòng)合同終止操作流程
- 里程表的課程設(shè)計(jì)
- 《突發(fā)事件應(yīng)急預(yù)案管理辦法》知識(shí)培訓(xùn)
- 江蘇省南京市建鄴區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期中考試物理試題(無(wú)答案)
- QCT457-2023救護(hù)車技術(shù)規(guī)范
- DZ∕T 0207-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 硅質(zhì)原料類(正式版)
- 《燒(創(chuàng))傷的急救復(fù)蘇與麻醉管理》智慧樹(shù)知到課后章節(jié)答案2023年下中國(guó)人民解放軍總醫(yī)院第四醫(yī)學(xué)中心
- 變性玉米粉項(xiàng)目文本0001
- 優(yōu)質(zhì)護(hù)理服務(wù)PPT
- 第三章 閘板防噴器
- 市值管理十大經(jīng)典案例
- 馬克思主義基本原理概論課程論文
- 用樣方法調(diào)查草地中某種雙子葉植物的種群密度實(shí)驗(yàn)設(shè)計(jì)[實(shí)驗(yàn)報(bào)告]
評(píng)論
0/150
提交評(píng)論