——DWIN иштеп чыгуучулар форумунан
DWIN форуму тарабынан сунушталган сыйлыкка ээ болгон ачык булактуу кейс курулуш индустриясында цементтин курамын аныктоо үчүн колдонулушу мүмкүн - T5L акылдуу экранынын негизиндеги цементтин көп өлчөмдөгү өлчөөчү аспабы. Инженерлер T5L акылдуу экранын электрондук салмакты аныктоо модулун, температураны өлчөө модулун, жылытуу модулун, нымдуулук сенсорун жана аралаштыргыч модулду башкаруу үчүн колдонушат, бул катуу эритмени жана суюк цемент компонентинин мазмунун аныктоо функциясын ишке ашыруу үчүн жана реалдуу убакыт режиминде ылдамдыктын дисплейин колдошот, температураны жөндөө, тарых жазуусу, этап параметрин орнотуу жана башка функциялар.
1. Программанын түзүмү
![acdsb (1)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb534d9587236.jpg)
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.UI иштеп чыгуу мисалы
![acdsb (6)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bbc7a0f429134.jpg)
4.C51 программалык камсыздоонун дизайны
Инженердин T5L сериялык порт 2 аркылуу башкаруу тактасы менен байланышуусу үчүн инициализациялоо командалык программасы төмөнкүдөй:
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()
{
#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)
{
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;
}
}
эгерде(1_период)
{
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
start_win_btn_click_handler(btn_val);
btn_val = 0;
sys_write_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);
}
Көбүрөөк маалымат алуу үчүн баштапкы кодду караңыз.
Посттун убактысы: 2023-жылдын 2-декабрына чейин