——З форуму розробників DWIN
Відзначений нагородами корпус із відкритим вихідним кодом, рекомендований форумом DWIN, може бути використаний у будівельній галузі для визначення вмісту компонентів цементу - цементний вимірювальний прилад на основі інтелектуального екрана T5L. Інженери використовують інтелектуальний екран T5L для керування електронним модулем визначення ваги, модулем вимірювання температури, модулем нагрівання, датчиком вологи та модулем змішування, щоб реалізувати функцію виявлення вмісту твердого розчину та рідкого цементного компонента, а також підтримувати відображення швидкості в реальному часі, налаштування температури, запис історії, налаштування параметрів стадії та інші функції.
1. Структура програми
![acdsb (1)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb534d9587236.jpg)
2. Відображення матеріалу інтерфейсу користувача
![acdsb (2)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb6b626488123.jpg)
![acdsb (4)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb84270f77694.jpg)
![acdsb (3)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb975b6581165.jpg)
![acdsb (5)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bbaf20a513069.jpg)
3.Приклад розробки інтерфейсу користувача
![acdsb (6)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bbc7a0f429134.jpg)
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);
}else if(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
start_win_btn_click_handler(btn_val);
btn_val = 0;
sys_write_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);
}
Щоб дізнатися більше, зверніться до вихідного коду.
Час публікації: 02 грудня 2023 р