[Código aberto] Instrumento de medición de cantidades múltiples de cemento

——Do Foro de desenvolvedores de DWIN

O galardoado caso de código aberto recomendado polo foro DWIN pódese empregar na industria da construción para detectar o contido de compoñentes de cemento: un instrumento de medición de cantidades múltiples de cemento baseado na pantalla intelixente T5L. Os enxeñeiros usan a pantalla intelixente T5L para controlar o módulo de detección de peso electrónico, o módulo de medición de temperatura, o módulo de calefacción, o sensor de humidade e o módulo de mestura para realizar a función de detección do contido de compoñentes de cemento líquido e en solución sólida, e admite a visualización en tempo real da taxa, a configuración da temperatura, o rexistro histórico, a configuración dos parámetros de etapa e outras funcións.

1. Estrutura do programa

acdsb (1)

2. Visualización de materiais da IU

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

3. Exemplo de desenvolvemento de interface de usuario

acdsb (6)

Deseño de software 4.C51

O programa de comandos de inicialización para que o enxeñeiro se comunique coa placa de control usando o porto serie 2 do T5L é o seguinte:

aplicación_inicialización() baleiro

{

está_probando = 0;

tempo_de_execución_de_proba = 0;

é_seg = 0;

período1 = 0;

é_período1 = 0;

uart2_init(115200);

enviar_bytes("AT+INIT=0\r\n", tamaño de("AT+INIT=0\r\n")-1);

sys_delay_ms(2500);

sys_pic(1);

enviar_bytes("AT+START\r\n", tamaño de("AT+START\r\n")-1);

}

O programa principal da pantalla intelixente T5L que interactúa coa placa de control para realizar a función de detección da composición do cemento é o seguinte:

baleiro btn_click_handler()

{

#define BTN_VAL_ADDR 0x1000

u16 botón_val;

se (está_probando&&é_sec)

{

é_seg = 0;

tempo_de_execución_de_proba++;

btn_val = sprintf(commbuff,"%02u:%02u",(u16)(tempo_de_execución_de_proba/60),(u16)(tempo_de_execución_de_proba%60));

commbuff[btn_val+1] = 0;

sys_write_vp(TEST_TIME_VP,commbuff,5);

se (uart2rxsta e UART2_PAQUETE_OK)

{

se (uart2buf[0]==0x01&&uart2buf[1]==0x02)

{

peso_inicial = *(float*)(uart2buf+2);

init_weight *= (*(float*)flashdata);

sys_write_vp(0x1178, (u8*)&peso_inicial, 2);

}senón se(uart2buf[0]==0x02&&uart2buf[1]==0x05)

{

init_ml = *(float*)(uart2buf+2);

init_ml /= (*(float*)flashdat+20);

sys_write_vp(0x1180, (u8*)&init_ml, 2);

}senón se(uart2buf[0]==0x03&&uart2buf[1]==0x07)

{

val_velocidade = *(float*)(uart2buf+2);

disp_val += (val_velocidade*2.45f);

sys_write_vp(0x1180, (u8*)&disp_val, 2);

}senón se(uart2buf[0]==0x04)

{

número_total = uart2buf[1]*256+uart2buf[2];

}senón se(uart2buf[0]==0x05)

{

é_en_tmp = uart2buf[2];

}

uart2rxsta = 0;

}

}

se(é_período1)

{

é_período1 = 0;

t_mostra();

se (está_probando&&está_en_tmp)

sys_write_vp(0x1170,(u8*)&tmp,2);

}

se (é_escaneado_de_botóns==0)

retorno;

é_btn_escaneado = 0;

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

se (valor_boto==0)

retorno;

se (valor_botón

start_win_btn_click_handler(btn_val);

 

btn_val = 0;

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

}

 

Consulta o código fonte para obter máis información.


Data de publicación: 02-12-2023