[Mã nguồn mở] Dụng cụ đo lường nhiều lượng xi măng

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

Hiển thị vật liệu 2.UI

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

3. Ví dụ về phát triển UI

acdsb (6)

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<=0x10)

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