[Odprta koda] Cement Multi-amount Measuring Instrument

——Iz foruma razvijalcev DWIN

Nagrajeni odprtokodni primer, ki ga priporoča forum DWIN, se lahko uporablja v gradbeništvu za zaznavanje vsebnosti cementnih komponent – ​​merilni instrument za več količin cementa, ki temelji na pametnem zaslonu T5L.Inženirji uporabljajo pametni zaslon T5L za nadzor elektronskega modula za zaznavanje teže, modula za merjenje temperature, grelnega modula, senzorja vlage in mešalnega modula, da realizirajo funkcijo zaznavanja vsebnosti trdne raztopine in tekoče cementne komponente ter podpirajo prikaz stopnje v realnem času, nastavitev temperature, zapis zgodovine, nastavitev parametrov stopnje in druge funkcije.

1. Struktura programa

acdsb (1)

2.UI Material Display

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

3. Primer razvoja uporabniškega vmesnika

acdsb (6)

4.C51 načrtovanje programske opreme

Inicializacijski ukazni program za inženirja za komunikacijo z nadzorno ploščo prek serijskih vrat T5L 2 je naslednji:

void app_init()

{

je_testiranje = 0;

test_run_time = 0;

je_sek = 0;

obdobje1 = 0;

je_obdobje1 = 0;

uart2_init(115200);

send_bytes("AT+INIT=0\r\n",sizeof("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);

}

Glavni program inteligentnega zaslona T5L, ki sodeluje z nadzorno ploščo za uresničitev funkcije zaznavanja sestave cementa, je naslednji:

void btn_click_handler()

{

#define BTN_VAL_ADDR 0x1000

u16 btn_val;

če(je_testiranje&&je_sek)

{

je_sek = 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);

če(uart2rxsta&UART2_PACKET_OK)

{

če(uart2buf[0]==0x01&&uart2buf[1]==0x02)

{

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

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

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

}drugače če(uart2buf[0]==0x02&&uart2buf[1]==0x05)

{

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

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

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

}drugače če(uart2buf[0]==0x03&&uart2buf[1]==0x07)

{

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

disp_val += (speed_val*2,45f);

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

}drugače če(uart2buf[0]==0x04)

{

total_num = uart2buf[1]*256+uart2buf[2];

}drugače če(uart2buf[0]==0x05)

{

is_en_tmp = uart2buf[2];

}

uart2rxsta = 0;

}

}

če(je_obdobje1)

{

je_obdobje1 = 0;

t_vzorec();

if(is_testing&&is_en_tmp)

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

}

če(is_btn_scan==0)

vrnitev;

is_btn_scan = 0;

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

če(btn_val==0)

vrnitev;

če(btn_val<=0x10)

start_win_btn_click_handler(btn_val);

 

btn_val = 0;

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

}

 

Za več glejte izvorno kodo.


Čas objave: 2. december 2023