——Z DWIN Developer Forum
V tomto vydání přinášíme oceněný open-source případ DWIN Developer Forum - Multifunkční váha. Technik používá 4palcovou inteligentní obrazovku COF a prostřednictvím datové interakce mezi jádrem T5L OS a modulem HX711 a sadou 5kg tlakového senzoru mohou uživatelé snadno realizovat funkce zobrazení počítání, jako je hmotnost, jednotková cena, celková cena, tára atd. ., stejně jako funkce počítání, sledování křivek změny hmotnosti a korekce přesnosti vah atd., takže je snadné přepínat mezi různými aplikačními scénáři a užít si pohodlné a efektivní vážení.
1. Vývoj uživatelského rozhraní
![f26af533d43728cd210e0f7af5e7acc](https://ecdn6.globalso.com/upload/p/1355/source/2024-06/665f077223d2b27894.png)
2.C51 Design
Část referenčního kódu pro váhu k implementaci funkce stanovení ceny je následující:
// Cenová stránka====================
#define VALUATION_UNIT_PRICE_ADDR 0x1010
#define VALUATION_GRAM_ADDR 0x1000
#define VALUATION_TOTAL_PRICES_ADDR 0x1020
uint32_t valuation_decorticate = 0; // Cena Tare Weight
uint32_t valuation_unit_price = 0; //Jednotková cena
// Aktualizace jednotkové ceny
void page_valuation_unit_price_refresh()
{
uint8_t test_display[10] = {0};
if(valuation_unit_price
{
testovací_zobrazení[0] = jednotková_cena_valuace / 100 % 10 + 0x30;
test_display[1] = '.';
testovací_zobrazení[2] = jednotková_cena_valuace / 10 % 10 + 0x30;
testovací_zobrazení[3] = jednotková_cena_valuace / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
else if(valuation_unit_price
{
testovací_zobrazení[0] = jednotková_cena_valuace / 1000 % 10 + 0x30;
testovací_zobrazení[1] = jednotková_cena_valuace / 100 % 10 + 0x30;
test_display[2] = '.';
testovací_zobrazení[3] = jednotková_cena_valuace / 10 % 10 + 0x30;
testovací_zobrazení[4] = jednotková_cena_valuace / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
else if(valuation_unit_price
{
test_display[0] = ocenění_jednotkové_ceny / 10 000 % 10 + 0x30;
testovací_zobrazení[1] = jednotková_cena_valuace / 1000 % 10 + 0x30;
testovací_zobrazení[2] = jednotková_cena_valuace / 100 % 10 + 0x30;
test_display[3] = '.';
testovací_zobrazení[4] = jednotková_cena_valuace / 10 % 10 + 0x30;
testovací_zobrazení[5] = jednotková_cena_valuace / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
else if(valuation_unit_price
{
testovací_zobrazení[0] = jednotková_cena_valuace / 100000 % 10 + 0x30;
testovací_zobrazení[1] = jednotková_cena_valuace / 10 000 % 10 + 0x30;
testovací_zobrazení[2] = jednotková_cena_valuace / 1000 % 10 + 0x30;
testovací_zobrazení[3] = jednotková_cena_valuace / 100 % 10 + 0x30;
test_display[4] = '.';
testovací_zobrazení[5] = jednotková_cena_valuace / 10 % 10 + 0x30;
test_display[6] = ocenění_jednotkové_ceny / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
}
// Obnovení hmotnosti
void page_valuation_weight_refresh()
{
uint8_t test_display[10] = {0x30};
uint32_t gram_display = 0;
if(hodnota_gramu >= valuation_decorticate)
{
gram_display = gram_value - valuation_decorticate;
if(gram_display
{
test_display[0] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, testovací_zobrazení, 3);
}
else if(gram_display
{
test_display[0] = gram_display / 10 % 10 + 0x30;
test_display[1] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, testovací_zobrazení, 3);
}
else if(gram_display
{
test_display[0] = gram_display / 100 % 10 + 0x30;
test_display[1] = gram_display / 10 % 10 + 0x30;
test_display[2] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, testovací_zobrazení, 3);
}
else if(gram_display
{
test_display[0] = gram_display / 1000 % 10 + 0x30;
test_display[1] = gram_display / 100 % 10 + 0x30;
test_display[2] = gram_display / 10 % 10 + 0x30;
test_display[3] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, testovací_zobrazení, 3);
}
else if(gram_display
{
test_display[0] = gram_display / 10000 % 10 + 0x30;
test_display[1] = gram_display / 1000 % 10 + 0x30;
test_display[2] = gram_display / 100 % 10 + 0x30;
test_display[3] = gram_display / 10 % 10 + 0x30;
test_display[4] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, testovací_zobrazení, 3);
}
}
jiný
{
dgus_show_text_value_set(VALUATION_GRAM_ADDR, testovací_zobrazení, 3);
}
}
// Obnovení celkové ceny
void page_valuation_price_refresh()
{
uint32_t cena_hodnota = 0;
uint8_t test_display[10] = {0x30, '.', 0x30, 0x30};
if(hodnota_gramu >= valuation_decorticate)
{
cena_hodnota = (hodnota_gramu - valuační_dekortikát) * jednotková_cena_ocenění * 2 / 1000;
if(hodnota_ceny
{
test_display[0] = cena_hodnota / 100 % 10 + 0x30;
test_display[1] = '.';
test_display[2] = cena_hodnota / 10 % 10 + 0x30;
test_display[3] = cena_hodnota / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
else if(hodnota_ceny
{
test_display[0] = cena_hodnota / 1000 % 10 + 0x30;
test_display[1] = cena_hodnota / 100 % 10 + 0x30;
test_display[2] = '.';
test_display[3] = cena_hodnota / 10 % 10 + 0x30;
test_display[4] = cena_hodnota / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
else if(hodnota_ceny
{
test_display[0] = cena_hodnota / 10000 % 10 + 0x30;
test_display[1] = cena_hodnota / 1000 % 10 + 0x30;
test_display[2] = cena_hodnota / 100 % 10 + 0x30;
test_display[3] = '.';
test_display[4] = cena_hodnota / 10 % 10 + 0x30;
test_display[5] = cena_hodnota / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
else if(hodnota_ceny
{
test_display[0] = cena_hodnota / 100000 % 10 + 0x30;
test_display[1] = cena_hodnota / 10000 % 10 + 0x30;
test_display[2] = cena_hodnota / 1000 % 10 + 0x30;
test_display[3] = cena_hodnota / 100 % 10 + 0x30;
test_display[4] = '.';
test_display[5] = cena_hodnota / 10 % 10 + 0x30;
test_display[6] = cena_hodnota / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
}
jiný
{
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
}
void page_valuation_decorticate()
{
valuation_decorticate = gram_value;
page_valuation_weight_refresh();
}
void page_valuation_1()
{
if(valuation_unit_price
{
jednotková_cena_valuace = jednotková_cena_ocenění * 10 + 1;
page_valuation_unit_price_refresh();
}
}
void page_valuation_2()
{
if(valuation_unit_price
{
jednotková_cena_valuace = jednotková_cena_ocenění * 10 + 2;
page_valuation_unit_price_refresh();
}
}
void page_valuation_3()
{
if(valuation_unit_price
{
jednotková_cena_valuace = jednotková_cena_ocenění * 10 + 3;
page_valuation_unit_price_refresh();
}
}
void page_valuation_4()
{
if(valuation_unit_price
{
jednotková_cena_valuace = jednotková_cena_ocenění * 10 + 4;
page_valuation_unit_price_refresh();
}
}
void page_valuation_5()
{
if(valuation_unit_price
{
jednotková_cena_valuace = jednotková_cena_ocenění * 10 + 5;
page_valuation_unit_price_refresh();
}
}
void page_valuation_6()
{
if(valuation_unit_price
{
jednotková_cena_valuace = jednotková_cena_ocenění * 10 + 6;
page_valuation_unit_price_refresh();
}
}
void page_valuation_7()
{
if(valuation_unit_price
{
jednotková_cena_valuace = jednotková_cena_ocenění * 10 + 7;
page_valuation_unit_price_refresh();
}
}
void page_valuation_8()
{
if(hodnota_jednotková_cena
{
jednotková_cena_valuace = jednotková_cena_ocenění * 10 + 8;
page_valuation_unit_price_refresh();
}
}
void page_valuation_9()
{
if(valuation_unit_price
{
oceňovací_jednotková_cena = oceňovací_jednotková_cena * 10 + 9;
page_valuation_unit_price_refresh();
}
}
void page_valuation_0()
{
if(valuation_unit_price
{
jednotková_cena_valuace = jednotková_cena_ocenění * 10 + 0;
page_valuation_unit_price_refresh();
}
}
void page_valuation_back()
{
jednotková_cena_valuace = jednotková_cena_valuace / 10;
page_valuation_unit_price_refresh();
}
void page_valuation_clear()
{
oceňovací_jednotková_cena = 0;
page_valuation_unit_price_refresh();
}
Čas odeslání: 28. dubna 2024