在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【開源獲獎(jiǎng)案例】智能培養(yǎng)室

迪文智能屏 ? 2024-01-09 08:13 ? 次閱讀

——來自迪文開發(fā)者論壇
本期為大家推送迪文開發(fā)者論壇獲獎(jiǎng)開源案例——智能培養(yǎng)室工程師通過Modbus協(xié)議實(shí)現(xiàn)了T5L智能屏控制加熱、風(fēng)機(jī)控溫功能,還可調(diào)節(jié)電源功率實(shí)現(xiàn)模擬光照功能。系統(tǒng)可根據(jù)屏幕上設(shè)定的參數(shù)自動(dòng)運(yùn)行,并保存故障歷史記錄。


UI素材展示 db96ee72-ae83-11ee-aa22-92fbcf53809c.jpg ?dba6d3be-ae83-11ee-aa22-92fbcf53809c.jpg

UI開發(fā)示例 dbbe0f16-ae83-11ee-aa22-92fbcf53809c.png C51代碼設(shè)計(jì)

(1)主界面溫度、濕度、高度等數(shù)據(jù)獲取和更新,以及使用modbus rtu控制控溫模塊、電機(jī)、報(bào)警檢測(cè)等各個(gè)從機(jī)的主要代碼如下:

主界面代碼參考:

#include "main_win.h"#include "modbus.h"#include "sys_params.h"

#include "func_handler.h"

#include "uart2.h"#include #include #define TEMP_HUM_SLAVE_ADDR 2#define TEMP_HUM_VAL_MAX_NUM 2

#define ALERT_BIT_MAX_NUM 30

#define ALERT_BYTE_NUM (ALERT_BIT_MAX_NUM/8+((ALERT_BIT_MAX_NUM%8)!=0))#define GET_ALERT_BIT(val, pos) ((val[pos/8]>>(pos%8))&0x01)typedef struct{ char date[17]; u8 desc;}ALERT;#defineALERT_TABLE_LEN

20static u8 btn_sta[MAIN_WIN_BTN_MAX_NUM] = {0};static u8 btn_addr[MAIN_WIN_BTN_MAX_NUM] = {50, 51, 52, 69, 53, 54, 55, 70, 56, 57, 58, 59};u16 main_win_val[MAIN_WIN_VAL_MAX_NUM];u16 temp_hum_val[TEMP_HUM_VAL_MAX_NUM] = {0};u16 date_val[MAIN_WIN_DATE_MAX_NUM] = {0};u8

alert_val[ALERT_BYTE_NUM] = {0};u8 old_alert_val[ALERT_BYTE_NUM] = {0};ALERT alert_table[ALERT_TABLE_LEN];u16 alert_num = 0;bit is_main_win = 0;void main_win_update(){}void main_win_disp_date()

{ u8 len; len = sprintf(common_buf,"%u:%u", (u16)date_val[3], (u16)date_val[4]); common_buf[len+1] = 0; sys_write_vp(MAIN_WIN_DATE_VP, common_buf,

len/2+2);}void main_win_process_alert()

{ u8 i; for(i=0;i { if(GET_ALERT_BIT(old_alert_val, i)) continue;

if(GET_ALERT_BIT(alert_val, i)) { if(alert_num>=ALERT_TABLE_LEN) alert_num = ALERT_TABLE_LEN-1;

alert_table[alert_num].desc = i+1; sprintf(alert_table[alert_num].date, "%u/%u/%u %u:%u", date_val[0], date_val[1],

date_val[2], date_val[3], date_val[4] ); alert_num++; } }

memcpy(old_alert_val, alert_val, sizeof(alert_val));}void main_win_disp_alert(){ u16 i; u16 val; u16 len = 0; common_buf[0] = 0; for(i=0;i { val = 0; if(i { val = alert_table.desc; len += sprintf(common_buf+len, "%s\r\n", alert_table.date); } sys_write_vp(ALERT_WIN_DESC_START_VP+i, (u8*)&val, 1); }

common_buf[len+1] = 0; sys_write_vp(ALERT_WIN_DATE_VP, common_buf, len/2+2);}void main_win_init(){ float fixed_val; u8 i; is_main_win = 1;
main_win_val[5] = (u16)(temp_hum_val[0]/10.0+0.5f); main_win_val[6] = (u16)(temp_hum_val[1]/10.0+0.5f); for(i=0;i { if(i==0) continue;sys_write_vp(MAIN_WIN_WIND_SPEED_VP+MAIN_WIN_VAL_OFFSET*i, (u8*)&main_win_val, 1); } fixed_val = main_win_val[0]/WIND_SPEED_SCALE+FLOAT_FIX_VAL; sys_write_vp(MAIN_WIN_WIND_SPEED_VP, (u8*)&fixed_val, 2);}void main_win_click_handler(u16 btn_val){ u8 index; if(btn_val==0x0B) { main_win_disp_alert(); return; } index = btn_val-1; btn_sta[index] = !btn_sta[index];

if((index==3)||(index==7)) btn_sta[index] = 1; modbus_write_bit(btn_addr[index], btn_sta[index]?0xFF00:0x0000); btn_val = btn_sta[index];sys_write_vp(MAIN_WIN_BTN_STA_START_VP+MAIN_WIN_BTN_STA_OFFSET*index, (u8*)&btn_val, 1); if(index==9) is_main_win = 0; else if((index==3)||(index==7)) { while(sys_get_touch_sta()); modbus_write_bit(btn_addr[index], 0x0000); }}

void main_win_msg_handler(u8 *msg,u16 msg_len){ u8 f_code = msg[MODBUS_RESPOND_POS_FUNC_CODE];

u8 data_len = msg[MODBUS_RESPOND_POS_DATA_LEN]; u8 i; u8 offset; msg_len = msg_len; if(!is_main_win) return;if((f_code==MODBUS_FUNC_CODE_03)&&(data_len==MAIN_WIN_VAL_MAX_NUM*2)) { offset = MODBUS_RESPOND_POS_DATA; for(i=0;i { main_win_val = SYS_GET_U16(msg[offset], msg[offset+1]); offset += 2; } main_win_update(); }

else if((f_code==MODBUS_FUNC_CODE_01)&&(data_len==ALERT_BYTE_NUM)) { offset = MODBUS_RESPOND_POS_DATA; for(i=0;i { alert_val = msg[offset]; offset++; }

main_win_process_alert(); }else if((f_code==MODBUS_FUNC_CODE_03)&&(data_len==TEMP_HUM_VAL_MAX_NUM*2))

{ offset = MODBUS_RESPOND_POS_DATA; for(i=0;i { temp_hum_val = SYS_GET_U16(msg[offset], msg[offset+1]);

offset += 2; modbus_write_word(5+i, temp_hum_val); } main_win_update(); }else if((f_code==MODBUS_FUNC_CODE_03)&&(data_len==MAIN_WIN_DATE_MAX_NUM*2)) { offset = MODBUS_RESPOND_POS_DATA; for(i=0;i { date_val = SYS_GET_U16(msg[offset], msg[offset+1]); offset += 2; } main_win_disp_date(); }}void main_win_read_temp_hum(){ u8 old_slave_addr = SLAVE_ADDR; sys_params.user_config[5] = TEMP_HUM_SLAVE_ADDR; modbus_read_words(0, TEMP_HUM_VAL_MAX_NUM); sys_params.user_config[5] = old_slave_addr;//還原}void main_win_handler(){ static u8 flag = 0; if(is_main_win) { if(alert_read_period==ALERT_READ_PERIOD) { alert_read_period = 0; modbus_read_bits(510, ALERT_BIT_MAX_NUM); return; } if(date_update_period==DATE_UPDATE_PERIOD) { date_update_period = 0; modbus_read_words(180, MAIN_WIN_DATE_MAX_NUM); return; } flag = !flag; if(flag) modbus_read_words(0, MAIN_WIN_VAL_MAX_NUM); else main_win_read_temp_hum(); }}

modbus rtu代碼參考:

#include "modbus.h"#include "crc16.h"#include "sys_params.h"#define UART_INCLUDE "uart2.h"#define UART_INIT uart2_init#define UART_SEND_BYTES uart2_send_bytes#define UART_BAUD 9600#define MODBUS_RECV_TIMEOUT (u8)(35000.0f/UART_BAUD+2)#define MODBUS_SEND_INTERVAL 150#include UART_INCLUDEstatic bit is_modbus_recv_complete = 0;static u8 modbus_recv_buff[270];

static u16 modbus_recv_len = 0;//接受的總字節(jié)長(zhǎng)度

static u8 modbus_recv_timeout = 0;//接受溢出時(shí)間static volatile u16 modbus_send_interval = 0;MODBUS_PACKET packet;void modbus_init()

{ UART_INIT(UART_BAUD);}void modbus_send_bytes(u8 *bytes,u16 len){ UART_SEND_BYTES(bytes,len);}

void modbus_recv_byte(u8 byte){ if(is_modbus_recv_complete) return; if(modbus_recv_len

{ modbus_recv_timeout--; if(modbus_recv_timeout==0)

{ is_modbus_recv_complete = 1; } }}

u8 modbus_send_packet(u8 *packet)

{ u16 len; u16 crc; u8 func_code = packet[1]; while(modbus_send_interval); if(func_code==MODBUS_FUNC_CODE_10) { ((MODBUS_10_PACKET*)packet)->byte_num = ((MODBUS_10_PACKET*)packet)->word_num*2; len = 9+((MODBUS_10_PACKET*)packet)->byte_num; }

else if(func_code==MODBUS_FUNC_CODE_0F) { len = ((MODBUS_0F_PACKET*)packet)->bit_num;

((MODBUS_0F_PACKET*)packet)->byte_num = len/8+(len%8?1:0);

len = 9+((MODBUS_0F_PACKET*)packet)->byte_num; }else { len = sizeof(MODBUS_PACKET); } crc = crc16(packet,len-2);

packet[len-2] = (u8)(crc>>8); packet[len-1] = (u8)crc; modbus_send_bytes(packet,len); modbus_send_interval = MODBUS_SEND_INTERVAL; return 0;//成功}extern void modbus_msg_handler(u8 *msg,u16 msg_len);void modbus_handler(){ u16 crc; if(!is_modbus_recv_complete) return; //校驗(yàn)crc值

crc = ((u16)modbus_recv_buff[modbus_recv_len-2]<<8)+modbus_recv_buff[modbus_recv_len-1]; if(crc16(modbus_recv_buff,modbus_recv_len-2)==crc) { modbus_msg_handler(modbus_recv_buff,modbus_recv_len); } modbus_recv_len = 0; is_modbus_recv_complete = 0; }u8 modbus_send_fcode(u8 fcode, u16 addr, u16 len){ packet.slave_addr = SLAVE_ADDR; packet.func_code = fcode;//功能碼?

packet.start_addr = addr;//地址 packet.data_len = len;//寫入的值 len = modbus_send_packet((u8*)&packet); return len;}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電源
    +關(guān)注

    關(guān)注

    185

    文章

    18309

    瀏覽量

    255366
  • ModBus協(xié)議
    +關(guān)注

    關(guān)注

    3

    文章

    183

    瀏覽量

    34152
  • 迪文屏
    +關(guān)注

    關(guān)注

    3

    文章

    83

    瀏覽量

    5752
  • 智能屏幕
    +關(guān)注

    關(guān)注

    0

    文章

    72

    瀏覽量

    3619
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    開源獲獎(jiǎng)案例】基于T5L智能屏的音樂播放與歌詞顯示方案

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎(jiǎng)開源案例——基于T5L智能屏的音樂播放與歌詞顯示方案。該方案通過T5L串口與通用開發(fā)板、解碼板進(jìn)行數(shù)據(jù)交互,將解析完成的音頻和歌詞通過串口發(fā)送給
    的頭像 發(fā)表于 05-08 09:52 ?185次閱讀
    【<b class='flag-5'>開源</b><b class='flag-5'>獲獎(jiǎng)</b>案例】基于T5L<b class='flag-5'>智能</b>屏的音樂播放與歌詞顯示方案

    開源獲獎(jiǎng)案例】基于T5L智能屏的零食機(jī)

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎(jiǎng)開源案例——基于T5L智能屏的零食機(jī)。該方案基于T5L芯片,通過PWM接口實(shí)現(xiàn)實(shí)時(shí)調(diào)控爪子抓取力度、速度,并支持后臺(tái)按鍵長(zhǎng)按時(shí)間讀取,各模塊自檢
    的頭像 發(fā)表于 04-30 18:20 ?153次閱讀
    【<b class='flag-5'>開源</b><b class='flag-5'>獲獎(jiǎng)</b>案例】基于T5L<b class='flag-5'>智能</b>屏的零食機(jī)

    DIY開源智能馬桶

    []()【開源福利!電子學(xué)子專屬】某品牌智能馬桶:家庭實(shí)用與二次開發(fā)的絕佳之選 各位電子類專業(yè)的同學(xué)們,想不想擁有一個(gè)既可以用于家庭日常使用,又能作為超棒的二次開發(fā)練習(xí)平臺(tái)的神器?今天給大家?guī)砟?/div>
    發(fā)表于 04-13 21:56

    開源獲獎(jiǎng)案例】基于T5L智能屏的FM收音機(jī)

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎(jiǎng)開源案例——基于T5L智能屏的FM收音機(jī)。該方案基于T5L智能屏,通過串口4與FM收音機(jī)模塊進(jìn)行通訊,實(shí)現(xiàn)自動(dòng)搜索獲取不同頻段電臺(tái)
    的頭像 發(fā)表于 03-28 15:39 ?359次閱讀
    【<b class='flag-5'>開源</b><b class='flag-5'>獲獎(jiǎng)</b>案例】基于T5L<b class='flag-5'>智能</b>屏的FM收音機(jī)

    開源獲獎(jiǎng)案例】基于T5L智能屏的EQ均衡效果器

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎(jiǎng)開源案例——基于T5L智能屏的EQ均衡效果器。工程師采用800×480分辨率屏幕,通過T5L串口4與均衡效果器開發(fā)板通訊,調(diào)節(jié)中心頻率、增益、Q/S值等核心參數(shù),實(shí)現(xiàn)高品質(zhì)的
    的頭像 發(fā)表于 02-14 11:27 ?454次閱讀
    【<b class='flag-5'>開源</b><b class='flag-5'>獲獎(jiǎng)</b>案例】基于T5L<b class='flag-5'>智能</b>屏的EQ均衡效果器

    面向教學(xué)科研的智能車設(shè)計(jì)及實(shí)踐實(shí)驗(yàn)

    在汽車行業(yè)更加注重崗位技能與創(chuàng)新性思維的大背景下,高校教育/科研需要更加注重相關(guān)技能的培養(yǎng)。經(jīng)緯恒潤(rùn)根據(jù)高校及科研機(jī)構(gòu)當(dāng)前缺少實(shí)踐內(nèi)容支撐,技術(shù)與主流技術(shù)不匹配等痛點(diǎn),推出智能車設(shè)計(jì)與實(shí)踐實(shí)驗(yàn)方案。
    的頭像 發(fā)表于 01-15 14:36 ?1194次閱讀
    面向教學(xué)科研的<b class='flag-5'>智能</b>車設(shè)計(jì)及實(shí)踐實(shí)驗(yàn)<b class='flag-5'>室</b>

    黃鶴開源社區(qū)正式發(fā)布

    聯(lián)通多平臺(tái)的開發(fā)者、開源企業(yè)和開源項(xiàng)目加入,匯聚武漢市全網(wǎng)的開源數(shù)據(jù),為政策制定、人才培養(yǎng)、企業(yè)激勵(lì)和項(xiàng)目培養(yǎng)等提供量化、精準(zhǔn)支持,助力打造
    的頭像 發(fā)表于 12-23 11:33 ?647次閱讀

    高校開源開發(fā)者培養(yǎng)分論壇亮點(diǎn)前瞻

    數(shù)字化時(shí)代,開源成為了全球軟件與技術(shù)創(chuàng)新的重要驅(qū)動(dòng)力,從Linux操作系統(tǒng)到Android移動(dòng)平臺(tái),從人工智能框架到云計(jì)算基礎(chǔ)設(shè)施,一個(gè)個(gè)開源項(xiàng)目遍地開花。然而,在開源蓬勃發(fā)展的背后,
    的頭像 發(fā)表于 12-17 14:06 ?492次閱讀

    第二屆“開源鴻蒙班”開班,深開鴻與深信院深化智能物聯(lián)網(wǎng)特色人才培養(yǎng)

    ,資源共享,人才共育”為理念的開源鴻蒙人才培養(yǎng)范式進(jìn)一步深化,數(shù)字化特色人才培養(yǎng)實(shí)踐又邁出了實(shí)質(zhì)性的一步。開班典禮正式啟動(dòng)2023年,深信院聯(lián)合深開鴻率先揭牌成立了職業(yè)
    的頭像 發(fā)表于 11-08 01:07 ?913次閱讀
    第二屆“<b class='flag-5'>開源</b>鴻蒙班”開班,深開鴻與深信院深化<b class='flag-5'>智能</b>物聯(lián)網(wǎng)特色人才<b class='flag-5'>培養(yǎng)</b>

    RISC-V國(guó)際人才培養(yǎng)認(rèn)證中心舉辦“智能工控核心&apos;RISC-V技術(shù)與工業(yè)網(wǎng)關(guān)應(yīng)用前瞻&apos;”沙龍活動(dòng)

    人才培養(yǎng)認(rèn)證中心主辦的“超級(jí)星期六”——躍昉專場(chǎng)沙龍?jiān)赗ISC-V開源創(chuàng)新中心舉行。本次沙龍以“智能工控核心‘RISC-V技術(shù)與工業(yè)網(wǎng)關(guān)應(yīng)用前瞻’”為主題,深圳市艾
    的頭像 發(fā)表于 09-25 08:06 ?630次閱讀
    RISC-V國(guó)際人才<b class='flag-5'>培養(yǎng)</b>認(rèn)證中心舉辦“<b class='flag-5'>智能</b>工控核心&apos;RISC-V技術(shù)與工業(yè)網(wǎng)關(guān)應(yīng)用前瞻&apos;”沙龍活動(dòng)

    開源獲獎(jiǎng)案例】基于T5L智能屏的汽車抬頭顯示器方案

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎(jiǎng)開源案例——基于T5L智能屏的汽車抬頭顯示器方案。該方案采用COF智能屏,通過T5LCAN接口,實(shí)時(shí)獲取汽車OBDII診斷接口的數(shù)
    的頭像 發(fā)表于 09-24 08:03 ?668次閱讀
    【<b class='flag-5'>開源</b><b class='flag-5'>獲獎(jiǎng)</b>案例】基于T5L<b class='flag-5'>智能</b>屏的汽車抬頭顯示器方案

    開源獲獎(jiǎng)案例】基于T5L智能屏的便攜功率計(jì)解決方案

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎(jiǎng)開源案例——基于T5L智能屏的便攜功率計(jì)解決方案。該方案通過智能屏串口進(jìn)行通信,實(shí)時(shí)接收監(jiān)測(cè)到的電流、電壓和功率數(shù)據(jù),并同步顯示在
    的頭像 發(fā)表于 08-01 08:13 ?646次閱讀
    【<b class='flag-5'>開源</b><b class='flag-5'>獲獎(jiǎng)</b>案例】基于T5L<b class='flag-5'>智能</b>屏的便攜功率計(jì)解決方案

    迅龍軟件加入甲辰計(jì)劃“開源實(shí)習(xí)生聯(lián)合招聘培養(yǎng)”項(xiàng)目,共建RISC-V?開源生態(tài)

    近日,迅龍軟件宣布加入甲辰計(jì)劃“開源實(shí)習(xí)生聯(lián)合招聘培養(yǎng)項(xiàng)目”。該項(xiàng)目致力于RISC-V相關(guān)人才的培養(yǎng),同時(shí)推動(dòng)企業(yè)加速RISC-V生態(tài)建設(shè)目標(biāo)。加入該項(xiàng)目后,迅龍軟件將作為用人單位面向開源
    的頭像 發(fā)表于 07-22 16:23 ?727次閱讀
    迅龍軟件加入甲辰計(jì)劃“<b class='flag-5'>開源</b>實(shí)習(xí)生聯(lián)合招聘<b class='flag-5'>培養(yǎng)</b>”項(xiàng)目,共建RISC-V?<b class='flag-5'>開源</b>生態(tài)

    淺談杭州高校大學(xué)智能制造實(shí)驗(yàn)數(shù)字孿生可視化系統(tǒng)平臺(tái)建設(shè)項(xiàng)目

    孿生技術(shù),構(gòu)建一個(gè)集數(shù)據(jù)采集、處理、分析和可視化于一體的智能制造系統(tǒng),為實(shí)驗(yàn)的教學(xué)、科研和人才培養(yǎng)提供有力支持。
    的頭像 發(fā)表于 07-15 16:25 ?597次閱讀

    開源獲獎(jiǎng)案例】基于T5L智能屏的指紋識(shí)別解決方案

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎(jiǎng)開源案例——基于T5L智能屏的指紋識(shí)別解決方案。該方案通過智能屏串口進(jìn)行Modbus通訊,實(shí)現(xiàn)對(duì)指紋識(shí)別模塊的精準(zhǔn)控制,并集成了指
    的頭像 發(fā)表于 07-06 08:13 ?680次閱讀
    【<b class='flag-5'>開源</b><b class='flag-5'>獲獎(jiǎng)</b>案例】基于T5L<b class='flag-5'>智能</b>屏的指紋識(shí)別解決方案
    主站蜘蛛池模板: 日日夜夜天天久久 | 高清不卡免费一区二区三区 | 国产精品久久久久久免费播放 | 天堂资源在线种子资源 | 欧美一级特黄高清免费 | 免费在线观看a视频 | 国产一区美女 | 中文字幕一区二区三区免费看 | 黄色免费片 | 欧美日韩在线成人看片a | 色综合色综合色综合网址 | 天天翘夜夜洗澡天天做 | 国产精品视频久久久久 | 5g成人影院| 免费一级网站 | 亚洲欧美精品成人久久91 | 乱人伦小说短篇 | 国产精品久久久久乳精品爆 | 夜夜摸天天操 | 又粗又长又大又黄的日本视频 | 天天射天天色天天干 | 五月天综合在线 | 国产高清视频免费最新在线 | 在线视频免费视频网站 | 久久综合性 | 久久久午夜 | 宅男噜噜噜66 | 三级毛片免费看 | 2021韩国理论片ok电影天堂 | 91啪免费网站在线观看 | 日本一级高清不卡视频在线 | 天堂资源bt种子在线 | 爱爱456高清国语在线456 | 午夜一级毛片 | 欧美性xxxxxbbbbbb精品 | 三级精品在线观看 | 日本怡红 | 亚洲香蕉久久一区二区三区四区 | 亚洲精品美女久久久久网站 | a色网站| 免费观看黄视频网站 |