[Відкритий вихідний код] Багатоцільовий вимірювальний прилад цементу

——З форуму розробників DWIN

Відзначений нагородами корпус із відкритим вихідним кодом, рекомендований форумом DWIN, може бути використаний у будівельній галузі для визначення вмісту компонентів цементу - цементний вимірювальний прилад на основі інтелектуального екрана T5L.Інженери використовують інтелектуальний екран T5L для керування електронним модулем визначення ваги, модулем вимірювання температури, модулем нагрівання, датчиком вологи та модулем змішування, щоб реалізувати функцію виявлення вмісту твердого розчину та рідкого цементного компонента, а також підтримувати відображення швидкості в реальному часі, налаштування температури, запис історії, налаштування параметрів стадії та інші функції.

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

acdsb (1)

2. Відображення матеріалу інтерфейсу користувача

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

3.Приклад розробки інтерфейсу користувача

acdsb (6)

4.C51 проектування програмного забезпечення

Програма команд ініціалізації для зв’язку інженера з платою керування за допомогою послідовного порту 2 T5L така:

void app_init()

{

is_testing = 0;

test_run_time = 0;

is_sec = 0;

період1 = 0;

is_period1 = 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, яка взаємодіє з платою керування для реалізації функції визначення складу цементу, така:

void btn_click_handler()

{

#define BTN_VAL_ADDR 0x1000

u16 btn_val;

if(is_testing&&is_sec)

{

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

якщо (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;

}

}

if(is_period1)

{

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

}

 

Щоб дізнатися більше, зверніться до вихідного коду.


Час публікації: 02 грудня 2023 р