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

正文內(nèi)容

基于物聯(lián)網(wǎng)技術的室內(nèi)led智能照明控制系統(tǒng)-資料下載頁

2024-11-07 21:19本頁面

【導讀】基礎AT指令........

  

【正文】 DIO=1。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 DIO=0。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 } //低速模式數(shù)碼 BIT1(高電平時間: 2020ns 低電平時間: 500ns ) void h_dat1() { DIO=1。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 nop。 DIO=0。 } //RGB 顯示控制程序 void Reset(void) { DIO=1。 nop。 基于物聯(lián)網(wǎng)技術的室內(nèi) LED 照明控制系統(tǒng) 30 DIO=0。 delay_nms(1)。 } //===================發(fā)送 RGB 灰度數(shù)據(jù) =================== void send_single_data() //數(shù)據(jù)格式: G7~G0~R7~R0~B7~B0 { LED_DAT=GG。 if(bit7) h_dat1()。 else h_dat0()。 if(bit6) h_dat1()。 else h_dat0()。 if(bit5) h_dat1()。 else h_dat0()。 if(bit4) h_dat1()。 else h_dat0()。 if(bit3) h_dat1()。 else h_dat0()。 if(bit2) h_dat1()。 else h_dat0()。 if(bit1) h_dat1()。 else h_dat0()。 if(bit0) h_dat1()。 else h_dat0()。 LED_DAT=RR。 if(bit7) h_dat1()。 else h_dat0()。 if(bit6) h_dat1()。 else h_dat0()。 if(bit5) h_dat1()。 else h_dat0()。 if(bit4) h_dat1()。 else h_dat0()。 if(bit3) h_dat1()。 else h_dat0()。 if(bit2) h_dat1()。 else h_dat0()。 if(bit1) h_dat1()。 else h_dat0()。 if(bit0) h_dat1()。 else h_dat0()。 LED_DAT=BB。 if(bit7) h_dat1()。 else h_dat0()。 基于物聯(lián)網(wǎng)技術的室內(nèi) LED 照明控制系統(tǒng) 31 if(bit6) h_dat1()。 else h_dat0()。 if(bit5) h_dat1()。 else h_dat0()。 if(bit4) h_dat1()。 else h_dat0()。 if(bit3) h_dat1()。 else h_dat0()。 if(bit2) h_dat1()。 else h_dat0()。 if(bit1) h_dat1()。 else h_dat0()。 if(bit0) h_dat1()。 else h_dat0()。 } WIFI驅(qū)動編寫 ESP8266 WIFI 模塊具有透傳功能,在初始化設置好網(wǎng)絡參數(shù)建立鏈路連接后即可通過命令進入透傳模式,透傳模式下 Host 通過 uart 將數(shù)據(jù)發(fā)給 ESP8266, ESP8266 再通過無線網(wǎng)絡將數(shù)據(jù)傳出去; ESP8266 通過無線網(wǎng)絡接收到 的數(shù)據(jù),同理通過 uart 傳到 Host。 ESP8266 只負責將數(shù)據(jù)傳到目標地址,不對數(shù)據(jù)進行處理,發(fā)送方和接收方的數(shù)據(jù)內(nèi)容、長度完全一致,傳輸過程就好像透明一樣。 本系統(tǒng)就是采用了這種方式來實現(xiàn)的網(wǎng)絡數(shù)據(jù)包收發(fā),在串口透傳模式下,ESP8266 模塊 擁有數(shù)據(jù)包自動打包機制, ESP8266 判斷 UART 傳來的數(shù)據(jù)時間間隔,若時間間隔大于 20ms,則認為一幀結(jié)束;否則,一直接收數(shù)據(jù)到上限值2KB,認為一幀結(jié)束。 ESP8266 模塊判斷 UART 來的數(shù)據(jù)一幀結(jié)束后,通過 WIFI接口將數(shù)據(jù)轉(zhuǎn)發(fā)出去。 成幀時間間隔為 20ms,一幀上限值為 2KB。 基于物聯(lián)網(wǎng)的室內(nèi) LED 照明控制系統(tǒng)在上電后會把 WIFI 模塊配置為 AP模式,然后配置好相應網(wǎng)絡參數(shù),隨即進入透傳模式,下面附上 ESP8266 模塊初始化代碼。 UART_Init()。 delay_nms(4000)。 //ESP8266 網(wǎng)絡初始化 UART_Send_Str(AT+CWMODE=2\r\n)。 //設置成路由模式 基于物聯(lián)網(wǎng)技術的室內(nèi) LED 照明控制系統(tǒng) 32 delay_nms(1000)。 UART_Send_Str(AT+CWSAP=\My_RGB\,\0123456789\,11,4\r\n)。 //設置路由 SSID 和密碼 delay_nms(1000)。 UART_Send_Str(AT+RST\r\n)。 //復位重啟 delay_nms(4000)。 UART_Send_Str(AT+CIPMUX=0\r\n)。 //設置成單連接 delay_nms(1000)。 UART_Send_Str(AT+CIPSTART=\UDP\,\\,7136,7671\r\n)。 //連接 UDP 客戶端 delay_nms(1000)。 UART_Send_Str(AT+CIPMODE=1\r\n)。 //進入透傳模式 delay_nms(1000)。 數(shù)據(jù)幀處理機制 通信中的數(shù)據(jù)往往以數(shù)據(jù)包的形式進行傳送的,我們把這樣的一個數(shù)據(jù)包稱作為一幀數(shù)據(jù)。類似于網(wǎng)絡通信中的 TCPIP 協(xié)議一般,比較可靠的通信協(xié)議往往包含有以下幾個組成部分:幀頭、地址信息、數(shù)據(jù)類型、數(shù)據(jù)長度、數(shù)據(jù)塊、校驗碼、幀尾。 幀頭和幀尾用于數(shù)據(jù)包完整性的判別,通常選擇一定長度的固定字節(jié)組成,要求是在整個數(shù)據(jù)鏈中判別數(shù)據(jù)包的誤碼率越低越好。減小固定字節(jié)數(shù)據(jù)的匹配機會,也就是說使幀頭和幀 尾的特征字節(jié)在整個數(shù)據(jù)鏈中能夠匹配的機會最小。通常有兩種做法,一、減小特征字節(jié)的匹配幾率。二、增加特征字節(jié)的長度。通常選取第一種方法的情況是整個數(shù)據(jù)鏈路中的數(shù)據(jù)不具有隨即性,數(shù)據(jù)可預測,可以通過人為選擇幀頭和幀尾的特征字來避開,從而減小特征字節(jié)的匹配幾率。使用第二種方法的情況更加通用,適合于數(shù)據(jù)隨即的場合。通過增加特征字節(jié)的長度減小匹配幾率,雖然不能夠完全的避免匹配的情況,但可以使匹配幾率大大減小,如果碰到匹配的情況也可以由校驗碼來進行檢測,因此基于物聯(lián)網(wǎng)技術的室內(nèi) LED 照明控制系統(tǒng) 33 這種情況在絕大多說情況下比較可靠。 下位機接收數(shù)據(jù)有兩種方式, 一、等待接收,處理器一直查詢串口狀態(tài),來判斷是否接收到數(shù)據(jù)。二、中斷接收。本系統(tǒng)采用中斷接收的方法,選擇中斷接收法效率比較高而且不會丟失數(shù)據(jù),數(shù)據(jù)包的解析過程可以設置到不同的位置。如果協(xié)議比較簡單,整個系統(tǒng)只是處理一些簡單的命令,那么可以直接把數(shù)據(jù)包的解析過程放入到中斷處理函數(shù)中,當收到正確的數(shù)據(jù)包的時候,置位相應的標志,在主程序中再對命令進行處理。如果協(xié)議稍微復雜,比較好的方式是將接收的數(shù)據(jù)存放于緩沖區(qū)中,主程序讀取數(shù)據(jù)后進行解析。也有兩種方式交叉使用的,比如一對多的系統(tǒng)中,首先在接收中斷中解析 “連接 ”命 令,連接命令接收到后主程序進入設置狀態(tài),采用查詢的方式來解析其余的協(xié)議。 在這個系統(tǒng)中,數(shù)據(jù)幀結(jié)構并不復雜。所有的協(xié)議全部在串口中斷中進行。數(shù)據(jù)包的解析代碼如下: /**************************************** CMD 指令解析引擎 at_scan 函數(shù)用于監(jiān)測 s 開頭 ,并存儲一條數(shù)據(jù) ,此例放到串口接收中斷 at_cmp 函數(shù)用于解析存儲的 AT 數(shù)組 ,并執(zhí)行相應命令 結(jié)構體部分位 AT 指令描述以及函數(shù)的對應關系 ******************************************/ include include include unsigned int uart_timer=0。 code unsigned char at_head[AT_HEAD_LEN]={39。s39。}。 //指令開頭 unsigned char addr_cmp=0。 //AT 指令開頭校驗位置 unsigned char at_addr=0。 //AT 緩沖區(qū)最后一個數(shù)據(jù)位置 bit at_head_flag=0。 //檢測 AT 指令 開頭標志位 基于物聯(lián)網(wǎng)技術的室內(nèi) LED 照明控制系統(tǒng) 34 unsigned char at_buf[AT_BUF_MAX]={0}。 code AT_STRUCT at_array[AT_CMD_COUNT]= { {red=,4,1,amp。cmd_red}, {green=,6,1,amp。cmd_green}, {blue=,5,1,amp。cmd_blue} }。 //監(jiān)測 AT 開頭并將 AT 命令存儲到緩沖區(qū) void at_scan(void) { if(at_head_flag) if(at_addrAT_BUF_MAX) at_buf[at_addr++]=SBUF。 if(SBUF==at_head[addr_cmp]) addr_cmp++。 else addr_cmp=0。 if(addr_cmp==AT_HEAD_LEN) { at_head_flag=1。 addr_cmp=0。 at_addr=0。 } uart_timer=0。 } //比較兩個字符串 cont 字節(jié) ,相同為 1,否則返回 0 unsigned char at_cmp(unsigned char *s,unsigned char count) { unsigned char res。 基于物聯(lián)網(wǎng)技術的室內(nèi) LED 照明控制系統(tǒng) 35 for(res=0。rescount。res++) { if(*(s+res) != at_buf[res]) return 0。 } return 1。 } //AT 指令解析后并執(zhí)行相應函數(shù) void CMD(void) { unsigned char i。 uart_timer++。 if(at_head_flag) { for(i=0。iAT_CMD_COUNT。i++) { if(at_addr = (at_array[i].cmd_len+at_array[i].data_len)) { if( (uart_timer 1000) amp。amp。 at_cmp(at_array[i].s,at_array[i].cmd_len)) { at_head_flag=0。 (*at_array[i].Subs)()。 } } } } 基于物聯(lián)網(wǎng)技術的室內(nèi) LED 照明控制系統(tǒng) 36 } void cmd_green(void) { unsigned char i。 GG=0。 for(i=at_array[1].cmd_len。iat_addr。i++) { GG *= 10。 GG += (at_buf[i] 0x30)。 } send_string_data()。 } void cmd_red(void) { unsigned char i。 RR=0。 for(i=at_array[0].cmd_len。iat_addr。i++) { RR *= 10。 RR += (at_buf[i] 0x30)。 } send_string_data()。 } void cmd_blue(void) { 基于物聯(lián)網(wǎng)技術的室內(nèi) LED 照明控制系統(tǒng) 37 unsigned char i。 BB=0。 // UART_Send_Str(blue\r\n)。 for(i=at_array[2].cmd_len。iat_addr。i++) { // UART_Send_Byte(at_buf[i])。 BB *= 10。 BB += (at_buf[i]
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1