版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、無線傳感器網(wǎng)絡(luò)實(shí)驗(yàn)指導(dǎo)書電子信息工程教研室目 錄實(shí)驗(yàn)一光照傳感器實(shí)驗(yàn) 1實(shí)驗(yàn)二紅外反射傳感器實(shí)驗(yàn) 6實(shí)驗(yàn)三溫濕度傳感器實(shí)驗(yàn) 9實(shí)驗(yàn)四LED燈控制實(shí)驗(yàn) 15實(shí)驗(yàn)五片上溫度AD實(shí)驗(yàn) 18實(shí)驗(yàn)六模擬電壓AD轉(zhuǎn)換實(shí)驗(yàn) 22實(shí)驗(yàn)七串口收發(fā)數(shù)據(jù)實(shí)驗(yàn) 25實(shí)驗(yàn)八串口控制LED實(shí)驗(yàn) 29實(shí)驗(yàn)九點(diǎn)對點(diǎn)無線通信實(shí)驗(yàn) 33實(shí)驗(yàn)十基于Z-Stack的無線組網(wǎng)實(shí)驗(yàn) 34實(shí)驗(yàn)一 基于Z-Stack的串口控制LED實(shí)驗(yàn)36實(shí)驗(yàn)一光照傳感器實(shí)驗(yàn)、實(shí)驗(yàn)?zāi)康牧私夤饷綦娮鑲鞲衅鞯奶匦?,掌握其工作原?二、實(shí)驗(yàn)環(huán)境光照傳感器模塊、ST-Link仿真器、USB2UAF模塊、IAR for STM81.30開發(fā)軟件、AccessPort
2、串口調(diào)試軟件。三、實(shí)驗(yàn)原理1、光敏電阻光敏電阻是一種對光敏感的元件,它的電阻值能隨著外界光照強(qiáng)弱變化而變化。光敏電阻 的結(jié)構(gòu)如圖1所示,光照特性曲線如圖2所示。卄HmA圖2光照特性曲線圖1光敏電阻結(jié)構(gòu)GMDDV3.3LED?圖3電路原理圖2、光敏傳感器模塊原理圖如圖3所示,光敏電阻阻值隨著光照強(qiáng)度變化時(shí),在引腳Light_AD輸出電壓也隨之變化STM8勺PD2引腳采集Light_AD電壓模擬量轉(zhuǎn)化為數(shù)字量,當(dāng)采集的 AD值大于某一閾值時(shí), 精選文檔則將PD3即Light_IO引腳置低,表明有光照。傳感器使用的光敏電阻的暗電阻為 2M 歐姆左右,亮電阻為 10K 左右。可以計(jì)算出:在黑暗 條件下
3、, Light_AD 的數(shù)值為 3.3V * 2000K/(2000K + 10K) = 3.28V 。在光照條件下, Light_AD 的數(shù)值為3.3V * 10K/(10K + 10K) = 1.65V。STM8單片機(jī)內(nèi)部帶有10位AD轉(zhuǎn)換器,參考電壓為供電電壓3.3V。根據(jù)上面計(jì)算結(jié)果,選定 1.65V (需要根據(jù)實(shí)際測量結(jié)果進(jìn)行調(diào)整) 作為臨界值。當(dāng) Light_AD 為 1.65V 時(shí),AD讀數(shù)為 1.65 / 3.3 * 1024 = 512。當(dāng)AD讀數(shù)大于512時(shí)說明無光照,當(dāng)AD讀數(shù)小于512時(shí)說明有光照,并點(diǎn)亮LED3作 為指示。并通過串口函數(shù)來傳送觸發(fā)(有光照時(shí))信號(hào)。3、
4、源碼分析#include "main.h"u8 CMD_rx_buf8; /命令緩沖區(qū)u8 DATA_tx_buf14; /返回?cái)?shù)據(jù)緩沖區(qū)u8 CMD_ID = 0; / 命令序號(hào)u8 Sensor_Type = 0; /傳感器類型編號(hào)u8 Sensor_ID = 0; /相同類型傳感器編號(hào)數(shù)字類型傳感器數(shù)據(jù) 模擬類型傳感器數(shù)據(jù) 模擬傳感器閾值u8 Sensor_Data6; /傳感器數(shù)據(jù)區(qū)u8 Sensor_Data_Digital = 0; / u16 Sensor_Data_Analog = 0; / u16 Sensor_Data_Threshod = 0;/ vo
5、id main(void)u8 i = 0;CLK_HSIPrescalerCo nfig(CLK_PRESCALER_HSIDIV1); /設(shè)置內(nèi)部時(shí)鐘 16M 為主時(shí)鐘Uart1_Init();LED_Init();for(i = 0;i < 14;i+)DATA_tx_bufi = 0; for(i = 0;i < 8;i+)CMD_rx_bufi = 0;/* 根據(jù)不同類型的傳感器進(jìn)行修改 */Sensor_Type = 2;Sensor_ID = 1;CMD_ID = 1;DATA_tx_buf0 = 0xEE;DATA_tx_buf1 = 0xCC;DATA_tx_bu
6、f2 = Sensor_Type;DATA_tx_buf3 = Sensor_ID;DATA_tx_buf4 = CMD_ID;DATA_tx_buf13 = 0xFF;GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW); / ADCADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_3, ADC1_PRESSEL_FCPU_D4,ADC1_EXTTRIG_TIM,DISABLE,ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL3, DIS
7、ABLE);ADC1_Cmd(ENABLE);ADC1_StartConversion();Sensor_Data_Analog = 0;Sensor_Data_Threshod = 700;delay_ms(1000);while (1)/ 獲取傳感器數(shù)據(jù)Sensor_Data_Analog = ADC1_GetConversionValue(); if(Sensor_Data_Analog < Sensor_Data_Threshod) Sensor_Data_Digital = 0; / 無光照 GPIO_WriteHigh(GPIOD, GPIO_PIN_3);elseSen s
8、or_Data_Digital = 1;/有光照GPIO_WriteLow(GPIOD, GPI0_PIN_3);/組合數(shù)據(jù)幀DATA_tx_buf10 = Se nsor_Data_Digital; /發(fā)送數(shù)據(jù)幀UART1_Se ndStri ng(DATA_tx_buf, 14);LED_Toggle(); delay_ms(1000);#ifdef USE_FULL_ASSERT void assert_failed(ui nt8_t* file, uin t32_t li ne)/* User can add his own implementation to report the f
9、ile name and line number,ex: printf("Wrong parameters value: file %s on line %drn", file, line) */* Infinite loop */while (1)#en dif四、實(shí)驗(yàn)步驟1) 首先,我們要把傳感器模塊插到 USB2UAR模塊上,再把ST-Link插到JTAG 口上,最后把 兩根USB線插至U PC機(jī)的USB端口。2) 我們用 IAR SWSTM8 1.30 軟件,打開.2-Sensor_ 光照傳感器 ProjectSensor.ewp 。然 后,在窗口左側(cè)的User文件
10、夾下的main.c中輸入上述源代碼。3)打開后點(diǎn)擊“ Project ”的“ Rebuil All ”或者選中工程文件右鍵“ Rebuil All ”把我們的 工程編譯一下。4)點(diǎn)擊“ Rebuil All ”編譯完后,無警告,無錯(cuò)誤。5) 編譯完后我們要把程序燒到模塊里,點(diǎn)擊蔑 上占 中間的Download and Debug進(jìn)行燒寫。6) 打開串口工具.AccessPort.exe ,配置好串口參數(shù),波特率115200, 8個(gè)數(shù)據(jù)位,1個(gè)停止位,無校驗(yàn)位。單片機(jī)采集的信息發(fā)送給PC機(jī)。7)傳感器底層串口協(xié)議返回14個(gè)字節(jié),第1位字節(jié)和2位字節(jié)是包頭,第3位字節(jié)是傳感器 類型,第4位字節(jié)是傳
11、感器ID,第5位字節(jié)是節(jié)點(diǎn)命令I(lǐng)D,第6位字節(jié)到11位字節(jié)是數(shù)據(jù)位, 其中第11位字節(jié)是傳感器的狀態(tài)位,第12位字節(jié)和第13位字節(jié)是保留位,第14位字節(jié)是包 尾。例如:返回“ EE CC 02 01 01 00 00 00 00 00 00 00 00 FF ”時(shí),第 11 位字節(jié)為“ 0” 時(shí), 表示無光照,返回“ EE CC 02 01 01 00 00 00 00 00 01 00 00 FF ”時(shí),第11位字節(jié)為“ 1” 是表示有光照。測試結(jié)果如圖4所示。與 AcccssPort COMr(llSJOOrNHS,l) Opered.二 回圖4測試結(jié)果五、思考題1、如何編程控制PD3輸出
12、高低電平?2、編程實(shí)現(xiàn)求解光敏電阻的阻值。DV3 3R41KX050S LED3二 J'Rcd實(shí)驗(yàn)二紅外反射傳感器實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康牧私饧t外反射傳感器的特性,掌握其工作原理。二、實(shí)驗(yàn)環(huán)境紅外反射傳感器模塊、ST-Link仿真器、USB2UAR模塊、IAR for STM8 1.30開發(fā)軟件、AccessPort串口調(diào)試軟件。三、實(shí)驗(yàn)原理1、紅外反射傳感器紅外反射傳感器使用的是反射型紅外光電開關(guān),反射型紅外光電開關(guān)把一個(gè)紅外光發(fā)射 器和一個(gè)紅外光接收器裝在一個(gè)同一面上, 前方裝有濾鏡,濾除干擾光。發(fā)光器能發(fā)出紅外光, 在無阻情況下光接收器不能收到光。 但當(dāng)前方有障礙物時(shí),光被反射回接收器,
13、光電開關(guān)便動(dòng) 作,輸出一個(gè)開關(guān)控制信號(hào),切斷或接通負(fù)載電流,從而完成一次控制動(dòng)作。DV3.3L| IR DATAR5 0KO !R IOGNDGND圖5電路原理圖2、紅外反射傳感器模塊原理圖如圖5所示,紅外光電開關(guān)U3供電電壓為5V,集電極開路輸出。當(dāng)無障礙物時(shí),U3的1腳輸 出高電平,Q1導(dǎo)通,IR_DATA為低電平;當(dāng)有障礙物時(shí),U3的1腳輸出低電平,Q1截止,IR_DATA 為高電平。通過STM8單片機(jī)讀取IR_DATA的高低電平狀態(tài),即可獲知紅外反射傳感器是否檢 測到障礙物,當(dāng)檢測到障礙物時(shí),可以點(diǎn)亮 LED3作為指示。通過串口傳輸信號(hào)。3、源碼分析#in clude "ma
14、i n.h"u8 CMD_rx_buf8; / 命令緩沖區(qū)u8 DATA_tx_buf14; /返回?cái)?shù)據(jù)緩沖區(qū)u8 CMD_ID = 0; / 命令序號(hào)u8 Sensor_Type = 0; /傳感器類型編號(hào)u8 Sensor_ID = 0; /相同類型傳感器編號(hào)數(shù)字類型傳感器數(shù)據(jù) 模擬類型傳感器數(shù)據(jù) 模擬傳感器閾值u8 Sensor_Data6; /傳感器數(shù)據(jù)區(qū)u8 Sensor_Data_Digital = 0; / u16 Sensor_Data_Analog = 0; / u16 Sensor_Data_Threshod = 0;/ void main(void)u8 i =
15、 0;CLK_HSIPrescalerCo nfig(CLK_PRESCALER_HSIDIV1); / 設(shè)置內(nèi)部時(shí)鐘 16M 為主時(shí)鐘Uart1_Init(); LED_Init();GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_SLOW);for(i = 0;i < 14;i+)DATA_tx_bufi = 0;for(i = 0;i < 8;i+)CMD_rx_bufi = 0;/* 根據(jù)不同類型的傳感器進(jìn)行修改 */
16、Sensor_Type = 4;Sensor_ID = 1;CMD_ID = 1;DATA_tx_buf0 = 0xEE;DATA_tx_buf1 = 0xCC;DATA_tx_buf2 = Sensor_Type;DATA_tx_buf3 = Sensor_ID;DATA_tx_buf4 = CMD_ID;精選文檔DATA_tx_buf13 = 0xFF;delay_ms(1000);while (1)/ 獲取傳感器數(shù)據(jù) if(!GPIO_ReadInputPin(GPIOD, GPIO_PIN_3) Sensor_Data_Digital = 0; / 無障礙 GPIO_WriteHigh
17、(GPIOD, GPIO_PIN_2);elseSensor_Data_Digital = 1; / 有障礙 GPIO_WriteLow(GPIOD, GPIO_PIN_2);/組合數(shù)據(jù)幀DATA_tx_buf10 = Sensor_Data_Digital;/發(fā)送數(shù)據(jù)幀UART1_SendString(DATA_tx_buf, 14); LED_Toggle();delay_ms(1000);#ifdef USE_FULL_ASSERTvoid assert_failed(uint8_t* file, uint32_t line)/* User can add his own impleme
18、ntation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %drn", file, line) */* Infinite loop */while (1)#endif精選文檔四、實(shí)驗(yàn)步驟我們把紅外反射傳感器模塊插到 USB2UAR模塊上,重復(fù)第1個(gè)實(shí)驗(yàn)的編譯、鏈接、下載代碼、 與 PC 機(jī)通信過程。例如:返回“ EE CC 04 01 01 00 00 00 00 00 00 00 00 FF”時(shí),第 11 位字節(jié)為“ 0”時(shí),表示
19、無障礙,返回“ EE CC 04 01 01 00 00 00 00 00 01 00 00 FF”時(shí), 第 11 位字節(jié)為“ 1”是表示有障礙。五、思考題1、簡述紅外反射傳感器模塊IR_DATA引腳電平變化原理。2、編程實(shí)現(xiàn)計(jì)數(shù),紅外反射傳感器模塊被障礙物擋住的次數(shù)。實(shí)驗(yàn)三 溫濕度傳感器實(shí)驗(yàn)、實(shí)驗(yàn)?zāi)康牧私鉁貪穸葌鞲衅鞯奶匦裕莆掌涔ぷ髟?二、實(shí)驗(yàn)環(huán)境溫濕度傳感器模塊、ST-Link仿真器、USB2UAR模塊、IAR for STM8 1.30 開發(fā)軟件、AccessPort串口調(diào)試軟件。三、實(shí)驗(yàn)原理1、溫濕度傳感器AM2302濕敏電容數(shù)字溫濕度模塊是一款含有己校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳
20、感器。它應(yīng) 用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個(gè)電容式感濕元件和一個(gè)高精度測溫元件,并與一個(gè)高性能8位單片機(jī)相連接。如圖6所示,AM2302引腳圖。引腳:名稱描述VDD電握(3.5V-55V)SDA串用遂斕匸NC空UGNI)NC圖6 AM2302引腳圖-ft S 三-s圖7 AM2302單總線通信協(xié)議AM2302器件采用簡化的單總線通信,單總線通信協(xié)議如圖7所示,單總線通信格式如圖8 所示。單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換、控制均由數(shù)據(jù)線完成。設(shè)備(微處理器) 通過一個(gè)漏極開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)
21、時(shí)能夠釋放總線, 而讓其它設(shè)備使用總線;單總線通常要求外接一個(gè)約5.1k Q的上拉電阻,這樣,當(dāng)總線閑置時(shí),其狀態(tài)為高電平。由于它們是主從結(jié)構(gòu),只有主機(jī)呼叫傳感器時(shí),傳感器才會(huì)應(yīng)答,因此主機(jī) 訪問傳感器都必須嚴(yán)格遵循單總線序列,如果出現(xiàn)序列混亂,傳感器將不響應(yīng)主機(jī)。精選文檔單總線數(shù)據(jù)計(jì)算示例示例一:接收到的"位數(shù)拯為:OOD0 0010 濕J®,頁H位 計(jì)算匕l(fā)orn oniooooooom濕度低8応 溫度為nd000。1101 1010 0010溫度低«位 校驗(yàn)位(JO10+ 1001 0010 +0000 0001+0000 1101= 1010 0010 (
22、校驗(yàn))接收數(shù)據(jù)正確,濕度:0000 00101001 0010 = 0292H (十六進(jìn)制尸 2 x 25& + 9x16 + 2 = 658=> 濕度=65.8%1<H00(>0 ()001000() I im = 10Dhi(卜六進(jìn)制)=1 x 256 + <) x 6 + = 269=a 溫度=26.9*XZ名稱單總線格式定義做處理曙把敵據(jù)息純(SDA)拉低 段財(cái)何(勒少曲h?。┩ㄖ厦軇?zhǔn)簫數(shù)搦響應(yīng)仿:傳臨器把數(shù)抑:總級C SDA )拉低押叭.再接加】M3 以響Z 1制1的起幷StIK格式收:刑主機(jī)屆焰倩打眉.代燭器-次忖從數(shù)撫總線(SDA>和侍數(shù)
23、整“梅位先HI濰度4UE分耕率建高悅在1)筋 倚率出的蓬度館繪耗關(guān)濕度備的 血倍袒度分耕申址Ifitiir. iPVi iiVt傳曲器的ill度就址實(shí)降MEH肯的I命伯t 溫理漲7;位(Bills ) 7; t炭示員iA度.度fti商位f BitlS >尊TO &示正ai度*校監(jiān)位檢灘恤=濕陵再位+瑤酸低位+渦度曲位+J山夏低位圖8 AM2302單總線通信格式2、溫濕度傳感器模塊原理圖如圖9所示,AM2302通過DATA與單片機(jī)相連。VISdLbOi RXDSeiM ftST亠U,V廣廣1H 4.7KDATA十IC? DATAA3GND斗1DV7.3TfAPEWHISiBLET
24、TTE CIIIUT CKPm'iES).|S lTIM2 CH: .AlX'JTR EIS) .AK5 C.ym TXP):(HS>|.4N1)|TM?_(Tn| PLK<EiSi.>6C.RTL RX(il>MtSL<6C1SPAL<ri(K'| PVWDPC-HfISi TD1I VCAPPDKEbiSWJMrceiEisi spi so引 jd.ii cmrcsiEEj spian;CEUC1X ICO TTMinEN(T1MI nt IN TU UM 013 (H5iPC3ADC ElKl3T_SCL(riP&4 S
25、PI KS5| T1M2JCW (HSJP.A3UML BKINJJ2C SDAi'IiHJ?jii r3、源碼分析#in elude "mai n.h"圖9溫濕度傳感器原理圖u8 CMD_rx_buf8; /命令緩沖區(qū)u8 DATA_tx_buf14; /返回?cái)?shù)據(jù)緩沖區(qū)u8 CMD_ID = 0; / 命令序號(hào)u8 Sensor_Type = 0; /u8 Sensor_ID = 0; /傳感器類型編號(hào) 相同類型傳感器編號(hào)數(shù)字類型傳感器數(shù)據(jù) 模擬類型傳感器數(shù)據(jù) 模擬傳感器閾值u8 Sensor_Data6; / 傳感器數(shù)據(jù)區(qū)u8 Sensor_Data_Digit
26、al = 0; / u16 Sensor_Data_Analog = 0; / u16 Sensor_Data_Threshod = 0;/ void main(void) u8 i = 0;CLK_HSIPrescalerCo nfig(CLK_PRESCALER_HSIDIV1); /設(shè)置內(nèi)部時(shí)鐘 16M 為主時(shí)鐘Uart1_Init(); LED_Init(); DHT22_Init();for(i = 0;i < 14;i+)DATA_tx_bufi = 0;for(i = 0;i < 8;i+)CMD_rx_bufi = 0;/* 根據(jù)不同類型的傳感器進(jìn)行修改 */Sen
27、sor_Type = 10;Sensor_ID = 1;CMD_ID = 1;DATA_tx_buf0 = 0xEE;DATA_tx_buf1 = 0xCC;DATA_tx_buf2 = Sensor_Type;DATA_tx_buf3 = Sensor_ID;DATA_tx_buf4 = CMD_ID;DATA_tx_buf13 = 0xFF;delay_ms(1000);精選文檔while (1)/ 獲取傳感器數(shù)據(jù)if(DHT22_Read()Sensor_Data2 = Humidity >> 8;Sensor_Data3 = Humidity&0xFF;Sensor
28、_Data4 = Temperature >> 8;Sensor_Data5 = Temperature&0xFF;/ 組合數(shù)據(jù)幀for(i = 0;i < 6;i+)DATA_tx_buf5+i = Sensor_Datai;/ 發(fā)送數(shù)據(jù)幀UART1_SendString(DATA_tx_buf, 14);LED_Toggle();delay_ms(1000);#ifdef USE_FULL_ASSERT void assert_failed(uint8_t* file, uint32_t line)/* User can add his own implement
29、ation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %drn", file, line) */* Infinite loop */while (1)#endif四、實(shí)驗(yàn)步驟我們把溫濕度傳感器模塊插到 USB2UAR模塊上,重復(fù)第1個(gè)實(shí)驗(yàn)的編譯、鏈接、下載代碼、與 PC 機(jī)通信過程。例如:返回 EE CC 0A 01 01 00 00 HH HL TH TL 00 00 FF ,HH,HL 代表溫度變化, TH, TL 代表濕度變化
30、。五、思考題1、計(jì)算溫濕度傳感器輸出的溫度值、濕度值。2、分析 C 語言實(shí)現(xiàn)單總線協(xié)議的過程。3、編程實(shí)現(xiàn)模擬報(bào)警系統(tǒng),當(dāng)溫度超過某一閾值時(shí),LED閃爍。實(shí)驗(yàn)四 LED燈控制實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康恼莆誄C2530芯片的輸入輸出端口編程控制。二、實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)開發(fā)箱平臺(tái)、ZigBee(CC2530模塊、J-Link仿真器、IAR for MCS-51開發(fā)軟件、 AccessPort串口調(diào)試軟件。三、實(shí)驗(yàn)原理原理圖如圖10所示,ZigBee(CC2530)模塊硬件上設(shè)計(jì)有2個(gè)LED燈,2個(gè)按鍵,用來編程 調(diào)試使用。2個(gè)LED燈分別連接CC2530的P1_0 P1_1兩個(gè)IO引腳。從原理圖上可以看出,2 個(gè)
31、LED燈共陽極,當(dāng)P1_0 P1_1引腳為低電平時(shí)候,LED燈點(diǎn)亮。ITD1R3510LLD2Pl 10 LuFDV3.3RESETRESET N 20PIOPl 1Pl 2PBP14Pl?PI 6Pl -RESET NXOSC32K QI SOSC QI S0SC_Q2 DCOUFL "圖10輸入輸出原理圖2、源碼分析#in clude <ioCC2530.h>#defi ne uint un sig ned int#defi ne uchar un sig ned char/定義控制LED燈的端口#define LED1 P1_0 / 定義 LED1 為 P10口控制
32、#define LED2 P1_1 / 定義 LED2為 P11 口控制9/ 函數(shù)聲明延時(shí)函數(shù)/ 初始化 P1 口void Delay(uint);void Initial(void); /* / 延時(shí)函數(shù)void Delay(uint n) uint i,t;for(i = 0;i<5;i+) for(t = 0;t<n;t+);/*/ 初始化程序void Initial(void)P1DIR |= 0x03; P1_0、P1 1定義為輸出燈熄滅LED1 = 1; /LED1LED2 = 1; /LED2 燈熄滅/ 主函數(shù)* void main(void)Delay(50000)
33、;Initial();/ 調(diào)用初始化函數(shù)LED1 = 0;/LED1 點(diǎn)亮LED2 = 0;/LED2 點(diǎn)亮while(1)LED2 =!LED2; /LED2閃爍四、實(shí)驗(yàn)步驟(在實(shí)驗(yàn)箱的ZigBee協(xié)調(diào)器(CC2530上進(jìn)行實(shí)驗(yàn))1) 把J-Link仿真器一端連到實(shí)驗(yàn)箱右下角的 JLink插座上,另一端連到PC機(jī)USB端口上。 打開實(shí)驗(yàn)箱左上角的開關(guān)和 ZigBee協(xié)調(diào)器的開關(guān)供電,Power LED紅燈點(diǎn)亮。按下“選擇” 按鈕,當(dāng)ZigBee協(xié)調(diào)器的Debugled黃燈點(diǎn)亮?xí)r,選中該模塊。2) 用 IAR for MCS-51 軟件,打開. SrcZigBeeTIexpBasicExp1.
34、ewp。然后,在窗口左 側(cè)的main.c中輸入上述源代碼。3)打開后點(diǎn)擊“ Project ”的“ Rebuil All ”把工程編譯一下。點(diǎn)擊“ Rebuil All ”編譯完后, 無警告,無錯(cuò)誤。4)編譯完后我們要把程序燒到模塊里,點(diǎn)擊丄丄左側(cè)的Debug進(jìn)行燒寫。若燒寫失敗,重 新插拔J-Link仿真器的USB端口。5)點(diǎn)擊二運(yùn)行,點(diǎn)擊塔停止。五、思考題1、分析輸入輸出端口的編程控制 2、編程實(shí)現(xiàn),初始化LED1, LED2全滅;按下S2, LED1, LED2點(diǎn)亮;按下3次S4, LED1, LED2閃爍。實(shí)驗(yàn)五 片上溫度 AD 實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康睦肅C2530勺內(nèi)部溫度傳感器作為AD
35、輸入源,將轉(zhuǎn)換后的溫度數(shù)值利用串口發(fā)送給 PC 機(jī)終端。二、實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)開發(fā)箱平臺(tái)、ZigBee(CC2530模塊、J-Link仿真器、IAR for MCS-51開發(fā)軟件、 AccessPort 串口調(diào)試軟件。三、實(shí)驗(yàn)原理1 、源碼分析 #include <iocc2530.h> #include <stdio.h> #include "./uart/hal_uart.h"#define uchar unsigned char#define uint unsigned int#define uint8 uchar#define uint16 uin
36、t#define TRUE 1#define FALSE 0 /定義控制LED燈的端口#define LED1 P1_0 / 定義 LED1 為 P10口控制#define LED2 P1_1 / 定義 LED2為 P11 口控制9/#define HAL_MCU_CC2530 1/ ADC definitions for CC2430/CC2530 from the hal_adc.c file#define HAL_ADC_REF_125V 0x00#define HAL_ADC_DEC_064 0x00#define HAL_ADC_DEC_128 0x10 #define HAL_AD
37、C_DEC_512/* Internal 1.25V Reference */* Decimate by 64 : 8-bit resolution */* Decimate by 128 : 10-bit resolution */0x30 /* Decimate by 512 : 14-bit resolution */#define HAL_ADC_CHN_VDD3 0x0f /* Input channel: VDD/3 */#define HAL_ADC_CHN_TEMP 0x0e /* Temperature sensor */*/ 延時(shí)函數(shù)* void Delay(uint n)
38、uint i,t;for(i = 0;i<5;i+)for(t = 0;t<n;t+);void InitLed(void)、P1_1定義為輸出燈熄滅燈熄滅P1DIR |= 0x03; /P1_0LED1 = 1; /LED1LED2 = 1; /LED2/* fn readTemp* brief read temperature from ADC* param none* return temperature*/static char readTemp(void)static uint16 voltageAtTemp22;static uint8 bCalibrate=TRUE;
39、 / Calibrate the first time the temp sensor is read uint16 value;char temp;ATEST = 0x01;TR0 |= 0x01;ADCIF = 0; /clear ADC interrupt flagADCCON3 = (HAL_ADC_REF_125V | HAL_ADC_DEC_512 | HAL_ADC_CHN_TEMP);while ( !ADCIF ); /wait for the conversion to finishvalue = ADCL; /get the resultvalue |= (uint16)
40、 ADCH) << 8;value >>= 4;/ Use the 12 MSB of adcValue/* Assume ADC = 1480 at 25C and ADC = 4/C */#define VOLTAGE_AT_TEMP_25 1480#define TEMP_COEFFICIENT 4/ Calibrate for 22C the first time the temp sensor is read./ This will assume that the demo is started up in temperature of 22C if(bCal
41、ibrate)voltageAtTemp22=value;bCalibrate=FALSE;temp = 22 + ( (value - voltageAtTemp22) / TEMP_COEFFICIENT );/ Set 0C as minimum temperature, and 100C as maxif( temp >= 100) return 100;else if(temp <= 0) return 0;elsereturn temp;void main(void)char temp_buf20;/, vol_buf20;uint8 temp;/, vol;InitU
42、art(); / baudrate:57600InitLed();LED1 = 0;while(1)LED2 = !LED2; /LED2 blink表示程序運(yùn)行正常temp = readTemp();/vol = readVoltage();sprintf(temp_buf, (char*)"temperature:%drn", temp);/spri ntf(vol_buf, (char*)"vol:%drn", vol);prin ts(temp_buf);/prin ts(vol_buf);Delay(50000); Delay(50000);
43、Delay(50000);四、實(shí)驗(yàn)步驟1) 重復(fù)第四個(gè)實(shí)驗(yàn)的實(shí)驗(yàn)步驟 1)5),打開. SrcZigBeeTIexpBasicExp6.ewp 。2) 串口線一端連到PC機(jī)COM口,另一端連到實(shí)驗(yàn)箱右下角 Debug_UAR端口,僅把撥碼開關(guān) S7的4開關(guān)撥上去,其余3個(gè)及S8、S9 S10的撥碼開關(guān)都撥下來。3) 打開串口工具.AccessPort.exe,配置好串口參數(shù),波特率 57600,8個(gè)數(shù)據(jù)位,無奇偶校驗(yàn)位,無硬件流模式。單片機(jī)采集的溫度發(fā)送給PC機(jī),如圖11所示。圖11實(shí)驗(yàn)結(jié)果五、思考題1、編寫溫度轉(zhuǎn)換的流程圖實(shí)驗(yàn)六模擬電壓AD轉(zhuǎn)換實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康睦肅C2530勺1/3模擬電壓
44、源作為AD輸入源,將轉(zhuǎn)換后的數(shù)值利用串口發(fā)送給 PC機(jī)終 端。二、實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)開發(fā)箱平臺(tái)、ZigBee(CC2530模塊、J-Link仿真器、IAR for MCS-51開發(fā)軟件、 AccessPort 串口調(diào)試軟件。三、實(shí)驗(yàn)原理1 、源碼分析#include "ioCC2530.h" #include "./uart/hal_uart.h"#define uint unsigned int#define ConversionNum 20/ 定義控制燈的端口#define led1 P1_0 #define led2 P1_1void Delay(uin
45、t);void InitialAD(void);char adcdata=" 0.0V "/*/ 延時(shí)函數(shù)*/void Delay(uint n)uint i,t;for(i = 0;i<5;i+)for(t = 0;t<n;t+);void InitialAD(void) P1DIR = 0x03; led1 = 1;led2 = 1;/P1 控制 LED/ 關(guān) LEDADCC0N1 &= 0X80;/ 清 EOC標(biāo)志12 位分辨率ADCCON3=Oxbf; /單次轉(zhuǎn)換,對1/3 AVDD進(jìn)行A/D轉(zhuǎn)換,ADCCON1 = 0X30;/ 停止 A/DA
46、DCCON1 |= 0X40; / 啟動(dòng) A/Dvoid main(void)char temp2;float num;InitUart();/ baudrate: 57600InitialAD();/初始化 ADCled1 = 1;while(1)if(ADCCON1>=0x80)led1 = 1;temp1 = ADCL;temp0 = ADCH;ADCCON1 |= 0x40;temp1 = temp1>>2; temp1 |= temp0<<6;/ 轉(zhuǎn)換完畢指示/ 開始下一轉(zhuǎn)換/ 數(shù)據(jù)處理temp0 = temp0>>2;位,取2A12;tem
47、p0 &= 0x3f;num = (temp0*256+temp1)*3.3/4096; /12num = num/2+0.05; / 四 舍五入處理/定參考電壓為3.3V。12位精確度adcdata1 = (char)(num)%10+48;adcdata3 = (char)(num*10)%10+48;prints(adcdata); /Delay(30000);led1 = 0; /Delay(30000);將模擬電壓值發(fā)送到串口完成數(shù)據(jù)處理四、實(shí)驗(yàn)步驟1)重復(fù)第五個(gè)實(shí)驗(yàn)的實(shí)驗(yàn)步驟 1)3),打開. SrcZigBeeTIexpBasicExp7.ewp 單片機(jī)采集的模擬電壓發(fā)送
48、給PC機(jī)。五、思考題1、編寫模擬電壓轉(zhuǎn)換的流程圖。2、求10次電壓的和,并顯示在 PC機(jī)上實(shí)驗(yàn)七 串口收發(fā)數(shù)據(jù)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康睦肅C2530勺串口與PC機(jī)之間實(shí)現(xiàn)數(shù)據(jù)收發(fā)。二、實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)開發(fā)箱平臺(tái)、ZigBee (CC2530模塊、J-Link仿真器、IAR for MCS-51開發(fā)軟件、 AccessPort 串口調(diào)試軟件。三、實(shí)驗(yàn)原理1 、源碼分析 #include <iocc2530.h> #include <stdio.h> #include "./uart/hal_uart.h" #define uchar unsigned char#
49、define uint unsigned int#define uint8 uchar#define uint16 uint#define TRUE 1#define FALSE 0/定義控制LED燈的端口#define LED1 P1_0 / 定義 LED1 為 P10口控制#define LED2 P1_1 / 定義 LED2為 P11 口控制9uchar temp;void Delay(uint n)uint i,t;for(i = 0;i<5;i+)for(t = 0;t<n;t+);void InitLed(void)P1DIR |= 0x03; /P1_0、 P1_1
50、定義為輸出LED1 = 1; /LED1 燈熄滅LED2 = 1; /LED2 燈熄滅void main(void)char receive_buf30;uchar counter =0;uchar RT_flag=1;InitUart(); / baudrate:57600InitLed();while(1) if(RT_flag = 1)/ 接收LED2=0; / 接收狀態(tài)指示 if( temp != 0)回車鍵為結(jié)束字符進(jìn)入發(fā)送狀態(tài) if(temp!='r')&&(counter<30) /'r/ 最多能接收 30 個(gè)字符receive_bu
51、fcounter+ = temp;elseRT_flag = 3;/ if(counter = 30) RT_flag = 3;temp = 0;if(RT_flag = 3)/ 發(fā)送LED2 = 1;LED1 = 0;UOCSR &= 0x40; receive_bufco un ter prin ts(receive_buf); prin ts("rn");U0CSR |= 0x40;RT_flag = 1; coun ter = 0;LED1 = 1;/關(guān) LED2/發(fā)送狀態(tài)指示/ 禁止接收'0'/允許接收/恢復(fù)到接收狀態(tài)/指針歸0/關(guān)發(fā)送指示
52、函數(shù)功能:串口接收一個(gè)字符說 明:接收完成后打開接收#pragma vector = URX0_VECTOR_in terrupt void UART0_ISR(void)URX0IF = 0;/清中斷標(biāo)志temp = U0DBUF;四、實(shí)驗(yàn)步驟1)重復(fù)第五個(gè)實(shí)驗(yàn)的實(shí)驗(yàn)步驟 1)3),打開. SrcZigBeeTIexpBasicExp9.ewp在圖11中,選中字符串,在下面的窗口輸入字符串,必須以回車鍵結(jié)束或輸入字符串長度超 過30個(gè)字符,才會(huì)顯示在的上面窗口。圖11串口調(diào)試窗口五、思考題1、編寫串口數(shù)據(jù)收發(fā)的流程圖。error 。2、在串口調(diào)試窗口,輸入 5 個(gè)字符密碼,按下回車。正確返回
53、 right ,錯(cuò)誤返回實(shí)驗(yàn)八 串口控制 LED 實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康睦肅C2530與PC機(jī)之間串口通信,由PC機(jī)發(fā)送命令控制CC2530莫塊LED燈亮滅。二、實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)開發(fā)箱平臺(tái)、ZigBee(CC2530模塊、J-Link仿真器、IAR for MCS-51開發(fā)軟件、 AccessPort 串口調(diào)試軟件。三、實(shí)驗(yàn)原理1 、源碼分析 #include <iocc2530.h> #include <stdio.h> #include "./uart/hal_uart.h" #define uchar unsigned char#define uint un
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年南京客運(yùn)急救考試題及答案
- 2024年貴州客運(yùn)從業(yè)資格證2024年考試題
- 2024年紹興客運(yùn)資格證考試題目
- 2024年遼陽道路客運(yùn)輸從業(yè)資格證理論考題
- 2024年黑龍江駕??荚嚳瓦\(yùn)從業(yè)資格證考試
- 2024年度物業(yè)服務(wù)合同管理與維修責(zé)任規(guī)定
- 2024年度城市園林綠化工程合同
- 232分子間的作用力分子的手性-2021-2022學(xué)年高二化學(xué)課后分層練(人教版2019選擇性必修2)(原卷版)
- 電子銷售工程師招聘筆試題及解答(某世界500強(qiáng)集團(tuán))2025年
- 教師資格考試高中化學(xué)學(xué)科知識(shí)與教學(xué)能力試卷及解答參考
- 顏真卿書法藝術(shù) 完整版課件
- SPECTRO直讀光譜儀使用課件
- 2021年盤錦北方瀝青股份有限公司校園招聘筆試試題及答案解析
- 小學(xué)道德與法治 五年級上冊 傳統(tǒng)美德源遠(yuǎn)流長 天下興亡 匹夫有責(zé)的愛國情懷 教學(xué)設(shè)計(jì)
- 國開作業(yè)《公共部門人力資源管理》形考任務(wù)4:撰寫課程學(xué)習(xí)總結(jié)(第1-9章權(quán)重25%)參考882
- 暈厥護(hù)理查房(與“暈厥”相關(guān)共28張)課件
- 全國護(hù)士延續(xù)注冊體檢表-(正式)
- 礦山三違識(shí)別表
- 危房封條格式
- 智慧校園項(xiàng)目—數(shù)據(jù)大腦等平臺(tái)建設(shè)方案
- 300mw汽輪機(jī)畢業(yè)設(shè)計(jì)論文
評論
0/150
提交評論