--Từ Diễn đàn nhà phát triển DWIN
Trường hợp nguồn mở từng đoạt giải thưởng được diễn đàn DWIN khuyến nghị có thể được sử dụng trong ngành xây dựng để phát hiện hàm lượng thành phần xi măng - một công cụ đo nhiều lượng xi măng dựa trên màn hình thông minh T5L. Các kỹ sư sử dụng màn hình thông minh T5L để điều khiển mô-đun phát hiện trọng lượng điện tử, mô-đun đo nhiệt độ, mô-đun gia nhiệt, cảm biến độ ẩm và mô-đun trộn để nhận ra chức năng phát hiện hàm lượng thành phần dung dịch rắn và xi măng lỏng, đồng thời hỗ trợ hiển thị tốc độ theo thời gian thực, cài đặt nhiệt độ, ghi lại lịch sử, cài đặt tham số Giai đoạn và các chức năng khác.
1. Cấu trúc chương trình
![acdsb (1)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb534d9587236.jpg)
Hiển thị vật liệu 2.UI
![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. Ví dụ về phát triển UI
![acdsb (6)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bbc7a0f429134.jpg)
4.C51 thiết kế phần mềm
Chương trình lệnh khởi tạo để kỹ sư giao tiếp với bảng điều khiển bằng cổng nối tiếp T5L 2 như sau:
làm trống ứng dụng_init()
{
is_testing = 0;
test_run_time = 0;
is_sec = 0;
kỳ 1 = 0;
là_thời gian1 = 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);
}
Chương trình chính của màn hình thông minh T5L tương tác với bảng điều khiển để thực hiện chức năng phát hiện thành phần xi măng như sau:
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);
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);
}nếu không thì if(uart2buf[0]==0x02&&uart2buf[1]==0x05)
{
init_ml = *(float*)(uart2buf+2);
init_ml /= (*(float*)flashdat+20);
sys_write_vp(0x1180, (u8*)&init_ml, 2);
}nếu không thì 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);
}nếu không thì(uart2buf[0]==0x04)
{
tổng_num = uart2buf[1]*256+uart2buf[2];
}nếu không thì(uart2buf[0]==0x05)
{
is_en_tmp = uart2buf[2];
}
uart2rxsta = 0;
}
}
nếu(is_ Period1)
{
là_thời gian1 = 0;
t_sample();
if(is_testing&&is_en_tmp)
sys_write_vp(0x1170,(u8*)&tmp,2);
}
if(is_btn_scan==0)
trở lại;
is_btn_scan = 0;
sys_read_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);
nếu(btn_val==0)
trở lại;
nếu(btn_val
start_win_btn_click_handler(btn_val);
btn_val = 0;
sys_write_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);
}
Tham khảo mã nguồn để biết thêm.
Thời gian đăng: Dec-02-2023