[Адкрыты зыходны код] Прыбор для вымярэння колькасці цэменту

——З форуму распрацоўшчыкаў DWIN

Узнагароджаны корпус з адкрытым зыходным кодам, рэкамендаваны форумам DWIN, можа быць выкарыстаны ў будаўнічай індустрыі для вызначэння ўтрымання кампанентаў цэменту - прыбор для вымярэння колькасці цэменту на аснове разумнага экрана T5L.Інжынеры выкарыстоўваюць смарт-экран T5L для кіравання электронным модулем вызначэння вагі, модулем вымярэння тэмпературы, модулем нагрэву, датчыкам вільготнасці і модулем змешвання, каб рэалізаваць функцыю выяўлення ўтрымання цвёрдага раствора і вадкага кампанента цэменту, а таксама падтрымліваць адлюстраванне хуткасці ў рэжыме рэальнага часу, налада тэмпературы, запіс гісторыі, налада параметраў стадыі і іншыя функцыі.

1. Структура праграмы

acdsb (1)

2.UI матэрыял дысплей

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

3. Прыклад распрацоўкі інтэрфейсу

acdsb (6)

4.C51 дызайн праграмнага забеспячэння

Праграма ініцыялізацыі каманды для сувязі інжынера з платай кіравання праз паслядоўны порт 2 T5L выглядае наступным чынам:

несапраўдны app_init()

{

is_testing = 0;

час_выканання_тэсту = 0;

is_sec = 0;

перыяд1 = 0;

ёсць_перыяд1 = 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);

}

Асноўная праграма інтэлектуальнага экрана T5L, які ўзаемадзейнічае з пультам кіравання для рэалізацыі функцыі выяўлення складу цэменту, выглядае наступным чынам:

несапраўдны btn_click_handler()

{

#define BTN_VAL_ADDR 0x1000

u16 btn_val;

if(is_testing&&is_sec)

{

is_sec = 0;

час_выканання_тэсту++;

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

калі (uart2rxsta&UART2_PACKET_OK)

{

калі (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 += (speed_val*2.45f);

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

}інакш, калі (uart2buf[0]==0x04)

{

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

}

калі (is_btn_scan==0)

вяртанне;

is_btn_scan = 0;

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

калі (btn_val==0)

вяртанне;

калі (btn_val<=0x10)

start_win_btn_click_handler(btn_val);

 

btn_val = 0;

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

}

 

Каб даведацца больш, звярніцеся да зыходнага кода.


Час публікацыі: 2 снежня 2023 г