[קוד פתוח] מלט מכשיר מדידה רב-כמות

——מפורום המפתחים של DWIN

מארז הקוד הפתוח עטור הפרסים המומלץ על ידי פורום DWIN יכול לשמש בתעשיית הבנייה לאיתור תכולת רכיבי מלט - מכשיר מדידה רב כמויות צמנט המבוסס על מסך חכם T5L.מהנדסים משתמשים במסך החכם T5L כדי לשלוט במודול זיהוי המשקל האלקטרוני, מודול מדידת הטמפרטורה, מודול החימום, חיישן הלחות ומודול הערבוב כדי לממש את פונקציית הזיהוי של תמיסה מוצקה ותכולת רכיבי מלט נוזלי, ולתמוך בתצוגה בזמן אמת של קצב, הגדרת טמפרטורה, שיא היסטוריה, הגדרת פרמטר שלב ופונקציות אחרות.

1. מבנה התוכנית

acdsb (1)

2. תצוגת חומר משתמש

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

דוגמה לפיתוח UI

acdsb (6)

4.C51 עיצוב תוכנה

תוכנית פקודת האתחול עבור המהנדס לתקשורת עם לוח הבקרה באמצעות יציאה טורית 2 T5L היא כדלקמן:

void app_init()

{

is_testing = 0;

test_run_time = 0;

is_sec = 0;

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

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

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

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

}else if(uart2buf[0]==0x04)

{

total_num = uart2buf[1]*256+uart2buf[2];

}else if(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);

}

if(is_btn_scan==0)

לַחֲזוֹר;

is_btn_scan = 0;

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

if(btn_val==0)

לַחֲזוֹר;

if(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