freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于stm32和u10通訊模塊的智能大棚控制系統(tǒng)軟件設計(編輯修改稿)

2025-03-12 11:00 本頁面
 

【文章內(nèi)容簡介】 制 電話號碼、系統(tǒng)定時控制的一些時間數(shù)據(jù)、 當?shù)亟?jīng)緯度等等,其作用至關(guān)重要。 魯東大學本科畢業(yè)設計 8 CAT1640 基本操作介紹 CAT1640 的寫操作: 在本系統(tǒng)中 CAT1640 作為從機使用,在進行 單個字節(jié) 寫操作的時候,主機先發(fā)送 start 信號和從機地址,從機收到 后給主機發(fā)送 一個應答信號。然后,主機發(fā)送兩個 8 位要寫到從機存儲位置的地址 。在主機收 到應答信號之后, 開始發(fā)送 8 位數(shù)據(jù) 。發(fā)送完成后, CAT1640 再發(fā)出應答信號,主機接收到后 發(fā)出停止條件。這時, CAT1640 啟動內(nèi)部非易失性存儲編程周期,不接受主機的任何 要求。 CAT1640 寫 周期時序圖 如圖 5 。 圖 5 CAT1640 寫周 期 時序圖 CAT1640 內(nèi)含 64 字節(jié)的頁寫緩沖區(qū),因此在一個頁面寫入周期內(nèi), 寫入的字節(jié)數(shù)不能超過 64 字節(jié)。 在執(zhí)行頁面寫操作時,開始的第一個字節(jié)跟單個字節(jié)寫入基本相同。不同的是,寫完第一個字主機收到 CAT1640 發(fā)來的應答信號之后,并不發(fā)送停止條件,而是接著寫下一個字節(jié),直到寫完后,才發(fā)送停止條件。需要注意的是,如果在停止條件之前發(fā)送的字節(jié)數(shù)超過 64 字節(jié),則之前寫入的數(shù)據(jù)將會被后來的數(shù)據(jù)覆蓋。 頁面寫入的周期時序圖如圖 6: 魯東大學本科畢業(yè)設計 9 圖 6 CAT1640 寫周期時序 CAT1640 的讀操作分為當前地址讀取和選擇地址讀取兩種,具體讀取時序跟寫操作類似,在此不再贅述。 CAT1640 操作函數(shù)介紹 主要的操作函數(shù)如下: uint8_t I2C_Read(I2C_TypeDef *I2Cx,uint8_t I2C_Addr,uint16_t addr,uint8_t *buf,uint16_t num) //通過指定 I2C 接口讀取多個字節(jié)數(shù)據(jù),成功返回 0 uint8_t I2C_Write(I2C_TypeDef *I2Cx,uint8_t I2C_Addr,uint16_t addr,uint8_t *buf,uint16_t num)。 //通過指定 I2C 接口寫入多個字節(jié)數(shù)據(jù),成功返回 0 USART 通訊部分 Usart 通訊部分主 要是微處理器與 電腦 、 U10 手機模塊的通訊 。 STM32F103系列 MCU 擁有 3 個 USART,在本系統(tǒng)中 Usart2 用于 MCU 與 U10 通訊模塊之間的通訊, Usart3 用于 MCU 與電腦之間的通訊 。 Usart 的主要操作函數(shù)如下: 對 USART 進行基本配置的函數(shù) USART_Init(USARTx, amp。USART_InitStructure) //初始化串口 USART_Cmd(USARTx, ENABLE) //使能串口 USART_ITConfig(USARTx, USART_IT_RXNE, ENABLE) //開啟串口接魯東大學本科畢業(yè)設計 10 收中斷 USART_ClearFlag(USARTx, USART_FLAG_TC) //清除串口發(fā)送完成中斷 串口的讀寫操作的函數(shù) void Uartx_PutChar(u8 ch) //串口寫單個字符函數(shù) void Uartx_PutStr(char *str) //串口寫字符串函數(shù) void USARTx_IRQHandler(void) //串口讀函數(shù) { while(USART_GetITStatus(USART2, USART_IT_RXNE) !=SET)。 TIM_Cmd(TIM2, ENABLE)。 str2[x2]= USART_ReceiveData(USART2)。 x2++。 } 溫度檢測函數(shù) 計算溫度值 程序 DS18B20 存儲的溫度是 16 位的帶符號擴展的二進制補碼形式 當工作在 12 位分辨率時,其中 5 個符號位, 7 個整數(shù)位, 4 個小數(shù)位 |整數(shù) |小數(shù) 分辨率 1/(2^4)=| 低字節(jié) | 2^3 | 2^2 | 2^1 | 2^0 | 2^(1) | 2^(2) | 2^(3) | 2^(4) | |符號位: 0正 1負 |整數(shù) | 高字節(jié) | s | s | s | s | s | 2^6 | 2^5 | 2^4 | 溫度 = 符號位 + 整數(shù) + 小數(shù) * 計算溫度的程序如下: float DS18B20_Get_Temp(void) { uint8_t tpmsb, tplsb。 short s_tem。 float f_tem。 DS18B20_Rst()。 DS18B20_Presence()。 DS18B20_Write_Byte(0XCC)。 /* 跳過 ROM */ 魯東大學本科畢業(yè)設計 11 DS18B20_Write_Byte(0X44)。 /* 開始轉(zhuǎn)換 */ DS18B20_Rst()。 DS18B20_Presence()。 DS18B20_Write_Byte(0XCC)。 /*跳過 ROM */ DS18B20_Write_Byte(0XBE)。 /* 讀溫度值 */ tplsb = DS18B20_Read_Byte()。 tpmsb = DS18B20_Read_Byte()。 s_tem = tpmsb8。 s_tem = s_tem | tplsb。 if( s_tem 0 ) /* 負溫度 */ f_tem = (~s_tem+1) * 。 else f_tem = s_tem * 。 return f_tem。 } DS18B20 檢測和初始化函數(shù) static uint8_t DS18B20_Presence(void) { uint8_t pulse_time = 0。 /* 主機設置為上拉輸入 */ DS18B20_Mode_IPU()。 /* 等待存在脈沖的到來,存在脈沖為一個 60~240us 的低電平信號 , 如果存在脈沖沒有來則做超時處理,從機接收到主機的復位信號后,會在 15~60us 后給主機發(fā)一個存在脈沖 */ while( DS18B20_DATA_IN() amp。amp。 pulse_time100 ) { pulse_time++。 delay_us(1)。 } /* 經(jīng)過 100us 后,存在脈沖都還沒有到來 */ if( pulse_time =100 ) return 1。 else pulse_time = 0。 /* 存在脈沖到來,且存在的時間不能超過 240us */ while( !DS18B20_DATA_IN() amp。amp。 pulse_time240 ) { 魯東大學本科畢業(yè)設計 12 pulse_time++。 delay_us(1)。 } if( pulse_time =240 ) return 1。 else return 0。 } uint8_t DS18B20_Init(void) { DS18B20_GPIO_Config()。 DS18B20_Rst()。 return DS18B20_Presence()。 } 5 主要部分源程序 主函數(shù)部分 主函數(shù)中首先進行各個模塊進行初始化,然后在循環(huán)函數(shù)中 反復查詢各個模塊的狀態(tài),若狀態(tài)有變化,則執(zhí)行相應的操作。程序如下: include include include extern u8 t3。 extern tm timer。 extern char str3[32]。 extern char str2[200]。 u8 AlarmReadBuffer[16]。 u8 AlarmWriteBuffer[16]={17,30,1+2,4+8+16, 7,0,4+8+16,1+2, 9,30,1+2+4+8+16,0, 3,0,0,1+2+4+8+16}。 // [0][1]conrelay1 [2][3] marks1 [4][5]conrelay2 [6][7] mars2 //[8][9]conrelay3 [10][11] marks3 [12][13]conrelay4 [14][15] mars4 int main(void) { 魯東大學本科畢業(yè)設計 13 RCC_Configuration()。 GPIO_Configuration()。 NVIC_Configuration()。 USART3_Configuration()。 USART2_Configuration()。 I2C_Configuration()。 Timer2_Configuration()。 Timer3_Configuration()。 delay_init(72)。 RTC_init()。 //I2C_Write(I2C1,CAT1640,128,AlarmWriteBuffer,16 )。 Start_U10(str2)。 delay_ms(2021)。 Check_10086(str2)。 Uart2_PutStr(AT+CMGF=1\r\n)。 delay_ms(50)。 Uart2_PutStr(AT+CMGF=1\r\n)。 delay_ms(50)。 GPIO_Close_Relay(1+2+4+8+16)。 Check_Start()。 while(1) { Check_sec()。 Check_Data2(str2)。 Check_Data(str3)。 Check_Alarm()。 Check_NewDay()。 } } 分析手機模塊傳來的數(shù)據(jù)的函數(shù) void Check_Data2(char *str) 魯東大學本科畢業(yè)設計 14 { u8 k,i,u。 char *p,*ttime。 char p1[11],pnstr[44],pn[11]。 char time[11]。 if(t2==1) { t2=0。 p=strstr(str,+CMTI)。 //+CMTI: SM,2 if(p[1]==39。C39。amp。amp。p[2]==39。M39。amp。amp。p[3]==39。T39。amp。amp。p[4]==39。I39。) { Uart2_PutStr(AT+CMGF=1\r\n)。 delay_ms(50)。 Uart2_PutStr(AT+CMGL\r\n)。 delay_ms(50)。 } p=
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1