[Açık Kaynak] Çimento Çoklu Miktar Ölçüm Cihazı

——DWIN Geliştirici Forumundan

DWIN forumu tarafından önerilen ödüllü açık kaynak vaka, inşaat sektöründe T5L akıllı ekrana dayalı bir çimento çoklu miktar ölçüm cihazı olan çimento bileşen içeriğini tespit etmek için kullanılabilir.Mühendisler, katı çözelti ve sıvı çimento bileşen içeriğinin algılama fonksiyonunu gerçekleştirmek ve hızın gerçek zamanlı gösterimini desteklemek için elektronik ağırlık algılama modülünü, sıcaklık ölçüm modülünü, ısıtma modülünü, nem sensörünü ve karıştırma modülünü kontrol etmek için T5L akıllı ekranı kullanır. sıcaklık ayarı, geçmiş kaydı, Aşama parametre ayarı ve diğer işlevler.

1. Program Yapısı

acdsb (1)

2.UI Malzeme Gösterimi

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

3.UI Geliştirme Örneği

acdsb (6)

4.C51 yazılım tasarımı

Mühendisin T5L seri port 2'yi kullanarak kontrol panosu ile iletişim kurması için başlatma komut programı aşağıdaki gibidir:

geçersiz app_init()

{

is_testing = 0;

test_run_time = 0;

is_sec = 0;

dönem1 = 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);

}

Çimento bileşimi algılama işlevini gerçekleştirmek için kontrol panosuyla etkileşime giren T5L akıllı ekranın ana programı aşağıdaki gibidir:

geçersiz 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)

{

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

geri dönmek;

is_btn_scan = 0;

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

if(btn_val==0)

geri dönmek;

if(btn_val<=0x10)

start_win_btn_click_handler(btn_val);

 

btn_val = 0;

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

}

 

Daha fazlası için kaynak koduna bakın.


Gönderim zamanı: Aralık-02-2023