[Адкрыты зыходны код] Шматфункцыянальная вагавая прылада

——З форуму распрацоўшчыкаў DWIN

У гэтым выпуску мы прапагандуем ўзнагароды з адкрытым зыходным кодам форуму распрацоўшчыкаў DWIN - шматфункцыянальны вагаў. Інжынер выкарыстоўвае 4-цалевы смарт-экран COF, і праз узаемадзеянне дадзеных паміж ядром АС T5L і модулем HX711 і наборам датчыкаў ціску 5 кг карыстальнікі могуць лёгка рэалізаваць функцыі дысплея падліку, такія як вага, цана за адзінку, агульная цана, тара і г.д. ., а таксама функцыі падліку, адсочвання крывых змены вагі і карэкцыі дакладнасці вагаў і г.д., так што можна лёгка пераключацца паміж рознымі сцэнарыямі прымянення, каб атрымліваць асалоду ад зручнага і эфектыўнага ўзважвання.

1. Распрацоўка карыстацкага інтэрфейсу

f26af533d43728cd210e0f7af5e7acc

2.C51 Дызайн

Частка эталоннага кода для вагароў для рэалізацыі функцыі цэнаўтварэння выглядае наступным чынам:

// Старонка цэнаўтварэння====================

#define VALUATION_UNIT_PRICE_ADDR 0x1010

#define VALUATION_GRAM_ADDR 0x1000

#define VALUATION_TOTAL_PRICES_ADDR 0x1020

uint32_t valuation_decorticate = 0; // Кошт тары

uint32_t valuation_unit_price = 0; //Цана за адзінку

// Абнаўленне цаны за адзінку

несапраўдны page_valuation_unit_price_refresh()

{

uint8_t test_display[10] = {0};

if(valuation_unit_price

{

тэставы_дысплей[0] = цана_адзінкі ацэнкі / 100 % 10 + 0x30;

test_display[1] = '.';

тэставы_дысплей[2] = цана_адзінкі ацэнкі / 10 % 10 + 0x30;

тэставы_дысплей[3] = цана_адзінкі ацэнкі / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, тэставы_дысплей, 4);

}

інакш, калі (кошт_адзінкі ацэнкі

{

тэставы_дысплей[0] = цана_адзінкі ацэнкі / 1000 % 10 + 0x30;

тэставы_дысплей[1] = цана_адзінкі ацэнкі / 100 % 10 + 0x30;

test_display[2] = '.';

тэставы_дысплей[3] = цана_адзінкі ацэнкі / 10 % 10 + 0x30;

тэставы_дысплей[4] = цана_адзінкі ацэнкі / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, тэставы_дысплей, 4);

}

інакш, калі (кошт_адзінкі_ацэнкі

{

тэставы_дысплей[0] = цана_адзінкі ацэнкі / 10000 % 10 + 0x30;

тэставы_дысплей[1] = цана_адзінкі ацэнкі / 1000 % 10 + 0x30;

тэставы_дысплей[2] = цана_адзінкі ацэнкі / 100 % 10 + 0x30;

test_display[3] = '.';

тэставы_дысплей[4] = цана_адзінкі ацэнкі / 10 % 10 + 0x30;

тэставы_дысплей[5] = цана_адзінкі ацэнкі / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, тэставы_дысплей, 4);

}

інакш, калі (кошт_адзінкі ацэнкі

{

тэставы_дысплей[0] = цана_адзінкі ацэнкі / 100000 % 10 + 0x30;

тэставы_дысплей[1] = цана_адзінкі ацэнкі / 10000 % 10 + 0x30;

тэставы_дысплей[2] = цана_адзінкі ацэнкі / 1000 % 10 + 0x30;

тэставы_дысплей[3] = цана_адзінкі ацэнкі / 100 % 10 + 0x30;

test_display[4] = '.';

тэставы_дысплей[5] = цана_адзінкі ацэнкі / 10 % 10 + 0x30;

тэставы_дысплей[6] = цана_адзінкі ацэнкі / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, тэставы_дысплей, 4);

}

}

 

// Абнаўленне вагі

несапраўдны page_valuation_weight_refresh()

{

uint8_t test_display[10] = {0x30};

uint32_t gram_display = 0;

if(gram_value >= value_decorticate)

{

gram_display = gram_value - valuation_decorticate;

if(gram_display

{

тэст_дысплей[0] = грам_дысплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, тэставы_дысплей, 3);

}

інакш, калі (gram_display

{

тэст_дысплей[0] = грам_дысплей / 10 % 10 + 0x30;

тэст_дысплей[1] = грам_дысплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, тэставы_дысплей, 3);

}

інакш, калі (gram_display

{

тэставы_дысплей[0] = грам_дысплей / 100 % 10 + 0x30;

тэставы_дысплей[1] = грам_дысплей / 10 % 10 + 0x30;

тэст_дысплей[2] = грам_дысплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, тэставы_дысплей, 3);

}

інакш, калі (gram_display

{

тэставы_дысплей[0] = грам_дысплей / 1000 % 10 + 0x30;

тэставы_дысплей[1] = грам_дысплей / 100 % 10 + 0x30;

тэставы_дысплей[2] = грам_дысплей / 10 % 10 + 0x30;

тэст_дысплей[3] = грам_дысплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, тэставы_дысплей, 3);

}

інакш, калі (gram_display

{

тэставы_дысплей[0] = грам_дысплей / 10000 % 10 + 0x30;

тэставы_дысплей[1] = грам_дысплей / 1000 % 10 + 0x30;

тэставы_дысплей[2] = грам_дысплей / 100 % 10 + 0x30;

тэставы_дысплей[3] = грам_дысплей / 10 % 10 + 0x30;

тэст_дысплей[4] = грам_дысплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, тэставы_дысплей, 3);

}

}

яшчэ

{

dgus_show_text_value_set(VALUATION_GRAM_ADDR, тэставы_дысплей, 3);

}

}

 

// Абнаўленне агульнай цаны

несапраўдны page_valuation_price_refresh()

{

uint32_t price_value = 0;

uint8_t test_display[10] = {0x30, '.', 0x30, 0x30};

if(gram_value >= value_decorticate)

{

price_value = (gram_value - valuation_decorticate) * valuation_unit_price * 2 / 1000;

калі (значэнне_цаны

{

test_display[0] = price_value / 100 % 10 + 0x30;

test_display[1] = '.';

test_display[2] = price_value / 10 % 10 + 0x30;

test_display[3] = price_value / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

інакш, калі (значэнне_цаны

{

test_display[0] = price_value / 1000 % 10 + 0x30;

test_display[1] = price_value / 100 % 10 + 0x30;

test_display[2] = '.';

test_display[3] = price_value / 10 % 10 + 0x30;

test_display[4] = price_value / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

інакш, калі (значэнне_цаны

{

test_display[0] = price_value / 10000 % 10 + 0x30;

test_display[1] = price_value / 1000 % 10 + 0x30;

test_display[2] = price_value / 100 % 10 + 0x30;

test_display[3] = '.';

test_display[4] = price_value / 10 % 10 + 0x30;

test_display[5] = price_value / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

інакш, калі (значэнне_цаны

{

test_display[0] = price_value / 100000 % 10 + 0x30;

test_display[1] = price_value / 10000 % 10 + 0x30;

test_display[2] = price_value / 1000 % 10 + 0x30;

test_display[3] = price_value / 100 % 10 + 0x30;

test_display[4] = '.';

test_display[5] = price_value / 10 % 10 + 0x30;

test_display[6] = price_value / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

яшчэ

{

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

несапраўдны page_valuation_decorticate()

{

valuation_decorticate = gram_value;

page_valuation_weight_refresh();

}

несапраўдная ацэнка_старонкі_1()

{

калі (кошт_адзінкі ацэнкі

{

valuation_unit_price = valuation_unit_price * 10 + 1;

page_valuation_unit_price_refresh();

}

}

несапраўдная старонка_ацэнка_2()

{

калі (кошт_адзінкі ацэнкі

{

цана_адзінкі_ацэнкі = цана_адзінкі_ацэнкі * 10 + 2;

page_valuation_unit_price_refresh();

}

}

несапраўдная старонка_ацэнка_3()

{

калі (кошт_адзінкі ацэнкі

{

цана_адзінкі_ацэнкі = цана_адзінкі_ацэнкі * 10 + 3;

page_valuation_unit_price_refresh();

}

}

несапраўдная старонка_ацэнка_4()

{

калі (кошт_адзінкі ацэнкі

{

цана_адзінкі_ацэнкі = цана_адзінкі ацэнкі * 10 + 4;

page_valuation_unit_price_refresh();

}

}

несапраўдная старонка_ацэнка_5()

{

калі (кошт_адзінкі ацэнкі

{

цана_адзінкі_ацэнкі = цана_адзінкі_ацэнкі * 10 + 5;

page_valuation_unit_price_refresh();

}

}

несапраўдная старонка_ацэнка_6()

{

калі (кошт_адзінкі ацэнкі

{

цана_адзінкі_ацэнкі = цана_адзінкі_ацэнкі * 10 + 6;

page_valuation_unit_price_refresh();

}

}

несапраўдная старонка_ацэнка_7()

{

калі (кошт_адзінкі ацэнкі

{

цана_адзінкі_ацэнкі = цана_адзінкі_ацэнкі * 10 + 7;

page_valuation_unit_price_refresh();

}

}

несапраўдная старонка_ацэнка_8()

{

калі (кошт_адзінкі ацэнкі

{

цана_адзінкі_ацэнкі = цана_адзінкі_ацэнкі * 10 + 8;

page_valuation_unit_price_refresh();

}

}

несапраўдная старонка_ацэнка_9()

{

калі (кошт_адзінкі ацэнкі

{

цана_адзінкі ацэнкі = цана_адзінкі ацэнкі * 10 + 9;

page_valuation_unit_price_refresh();

}

}

несапраўдная старонка_ацэнка_0()

{

калі (кошт_адзінкі ацэнкі

{

valuation_unit_price = valuation_unit_price * 10 + 0;

page_valuation_unit_price_refresh();

}

}

несапраўдны page_valuation_back()

{

valuation_unit_price = valuation_unit_price / 10;

page_valuation_unit_price_refresh();

}

несапраўдны page_valuation_clear()

{

кошт_адзінкі ацэнкі = 0;

page_valuation_unit_price_refresh();

}


Час публікацыі: 28 красавіка 2024 г