[Отворен извор] Мерен инструмент со повеќе количини на цемент

——Од форумот за програмери на DWIN

Наградуваното куќиште со отворен код препорачано од форумот DWIN може да се користи во градежната индустрија за откривање на содржината на цементните компоненти - цементен мерен инструмент со повеќе количини базиран на паметен екран T5L.Инженерите го користат паметниот екран T5L за да го контролираат електронскиот модул за откривање тежина, модулот за мерење температура, модулот за греење, сензорот за влага и модулот за мешање за да ја реализираат функцијата за откривање на содржината на цврст раствор и течен цемент и да поддржат прикажување на стапката во реално време. подесување на температурата, запис во историјата, поставување параметар на фаза и други функции.

1. Структура на програмата

acdsb (1)

2. UI Материјал приказ

acdsb (2)
acdsb (4)
acdsb (3)
acdsb (5)

3.Пример за развој на UI

acdsb (6)

4.C51 дизајн на софтвер

Програмата за команда за иницијализација за инженерот да комуницира со контролната табла користејќи ја сериската порта 2 T5L е како што следува:

void app_init()

{

е_тестирање = 0;

test_run_time = 0;

е_сек = 0;

период1 = 0;

е_период1 = 0;

uart2_init (115200);

send_bytes ("AT+INIT=0\r\n",големина ("AT+INIT=0\r\n")-1);

sys_delay_ms (2500);

sys_pic (1);

send_bytes ("AT+START\r\n", sizeof("AT+START\r\n")-1);

}

Главната програма на интелигентниот екран T5L во интеракција со контролната табла за реализација на функцијата за откривање на составот на цемент е како што следува:

void btn_click_handler()

{

#define BTN_VAL_ADDR 0x1000

u16 btn_val;

ако (е_тестирање&&е_сек)

{

е_сек = 0;

test_run_time ++;

btn_val = sprintf(commbuff,"%02u:%02u",(u16)(test_run_time/60),(u16)(test_run_time%60));

commbuff[btn_val+1] = 0;

sys_write_vp(TEST_TIME_VP,commbuff,5);

if (uart2rxsta&UART2_PACKET_OK)

{

if(uart2buf[0]==0x01&&uart2buf[1]==0x02)

{

init_weight = *(float*)(uart2buf+2);

init_weight *= (*(float*)flashdat);

sys_write_vp(0x1178, (u8*)&init_weight, 2);

}друго ако(uart2buf[0]==0x02&&uart2buf[1]==0x05)

{

init_ml = *(float*)(uart2buf+2);

init_ml /= (*(float*)flashdat+20);

sys_write_vp(0x1180, (u8*)&init_ml, 2);

}друго ако(uart2buf[0]==0x03&&uart2buf[1]==0x07)

{

speed_val = *(float*)(uart2buf+2);

disp_val += (брзина_val*2,45f);

sys_write_vp(0x1180, (u8*)&disp_val, 2);

}друго ако(uart2buf[0]==0x04)

{

вкупно_број = uart2buf[1]*256+uart2buf[2];

}друго ако(uart2buf[0]==0x05)

{

is_en_tmp = uart2buf[2];

}

uart2rxsta = 0;

}

}

ако (е_период1)

{

е_период1 = 0;

t_sample ();

if (is_testing&&is_en_tmp)

sys_write_vp(0x1170,(u8*)&tmp,2);

}

if(is_btn_scan==0)

враќање;

е_btn_скенирање = 0;

sys_read_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);

ако (btn_val==0)

враќање;

if(btn_val<=0x10)

start_win_btn_click_handler(btn_val);

 

btn_val = 0;

sys_write_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);

}

 

Погледнете го изворниот код за повеќе.


Време на објавување: Декември-02-2023 година