[Código aberto] Instrumento de medição de múltiplas quantidades de cimento

——Do Fórum de Desenvolvedores DWIN

O premiado case de código aberto recomendado pelo fórum DWIN pode ser usado na indústria da construção para detectar o conteúdo de componentes de cimento - um instrumento de medição de múltiplas quantidades de cimento baseado na tela inteligente T5L.Os engenheiros usam a tela inteligente T5L para controlar o módulo eletrônico de detecção de peso, módulo de medição de temperatura, módulo de aquecimento, sensor de umidade e módulo de mistura para realizar a função de detecção de solução sólida e conteúdo de componente de cimento líquido e suportar exibição de taxa em tempo real, configuração de temperatura, registro de histórico, configuração de parâmetros de palco e outras funções.

1. Estrutura do Programa

acdsb (1)

2. Exibição de materiais da interface do usuário

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

3. Exemplo de desenvolvimento de UI

acdsb (6)

4. Projeto de software C51

O programa de comando de inicialização para o engenheiro se comunicar com o cartão de controle utilizando a porta serial 2 do T5L é o seguinte:

void app_init()

{

está_testando = 0;

test_run_time = 0;

is_sec = 0;

período1 = 0;

é_período1 = 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);

}

O programa principal da tela inteligente T5L interagindo com a placa de controle para realizar a função de detecção da composição de cimento é o seguinte:

vazio btn_click_handler()

{

#define BTN_VAL_ADDR 0x1000

u16 btn_val;

if(está_testando&&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)

{

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

peso_inicial *= (*(float*)flashdat);

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

}senão 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 += (velocidade_val*2,45f);

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

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

{

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

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

{

is_en_tmp = uart2buf[2];

}

uart2rxsta = 0;

}

}

se(é_período1)

{

é_período1 = 0;

t_amostra();

if(está_testando&&is_en_tmp)

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

}

se(is_btn_scan==0)

retornar;

is_btn_scan = 0;

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

se(btn_val==0)

retornar;

se(btn_val<=0x10)

start_win_btn_click_handler(btn_val);

 

btn_val = 0;

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

}

 

Consulte o código-fonte para obter mais informações.


Horário da postagem: 02 de dezembro de 2023