——S DWIN Developer Foruma
U ovom izdanju promoviramo nagrađivani open-source slučaj DWIN Developer Foruma - Multi-function Weigher. Inženjer usvaja 4-inčni COF pametni zaslon, a kroz podatkovnu interakciju između T5L OS jezgre i HX711 modula i senzora tlaka od 5 kg, korisnici mogu lako realizirati funkcije prikaza brojanja kao što su težina, jedinična cijena, ukupna cijena, tara itd. ., kao i funkcije brojanja, praćenja krivulja promjene težine i ispravljanja točnosti vage, itd., tako da je lako prebacivati između različitih scenarija primjene kako biste uživali u praktičnom i učinkovitom iskustvu vaganja.
1. Razvoj korisničkog sučelja
![f26af533d43728cd210e0f7af5e7acc](https://ecdn6.globalso.com/upload/p/1355/source/2024-06/665f077223d2b27894.png)
2.C51 Dizajn
Dio referentnog koda za vagu za implementaciju funkcije određivanja cijene je sljedeći:
// Stranica s cijenama====================
#define VALUATION_UNIT_PRICE_ADDR 0x1010
#define VALUATION_GRAM_ADDR 0x1000
#define VALUATION_TOTAL_PRICES_ADDR 0x1020
uint32_t valuation_decorticate = 0; // Cijena Tara Težina
uint32_t valuation_unit_price = 0; //Jedinična cijena
// Osvježi jediničnu cijenu
void page_valuation_unit_price_refresh()
{
uint8_t test_display[10] = {0};
if(valuation_unit_price
{
test_display[0] = procjena_jedinice_cijene / 100 % 10 + 0x30;
test_display[1] = '.';
test_display[2] = procjena_jedinice_cijene / 10 % 10 + 0x30;
test_display[3] = vrijednost_jedinice_cijene / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
else if(valuation_unit_price
{
test_display[0] = procjena_jedinice_cijene / 1000 % 10 + 0x30;
test_display[1] = procjena_jedinice_cijene / 100 % 10 + 0x30;
test_display[2] = '.';
test_display[3] = procjena_jedinice_cijene / 10 % 10 + 0x30;
test_display[4] = vrijednost_jedinice_cijene / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
else if(valuation_unit_price
{
test_display[0] = procjena_jedinice_cijene / 10000 % 10 + 0x30;
test_display[1] = procjena_jedinice_cijene / 1000 % 10 + 0x30;
test_display[2] = procjena_jedinice_cijene / 100 % 10 + 0x30;
test_display[3] = '.';
test_display[4] = procjena_jedinice_cijene / 10 % 10 + 0x30;
test_display[5] = procjena_jedinice_cijene / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
else if(valuation_unit_price
{
test_display[0] = procjena_jedinice_cijene / 100000 % 10 + 0x30;
test_display[1] = procjena_jedinice_cijene / 10000 % 10 + 0x30;
test_display[2] = procjena_jedinice_cijene / 1000 % 10 + 0x30;
test_display[3] = procjena_jedinice_cijene / 100 % 10 + 0x30;
test_display[4] = '.';
test_display[5] = procjena_jedinice_cijene / 10 % 10 + 0x30;
test_display[6] = procjena_jedinice_cijene / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
}
// Osvježi težinu
void page_valuation_weight_refresh()
{
uint8_t test_display[10] = {0x30};
uint32_t gram_display = 0;
if(vrijednost_grama >= procjena_decorticate)
{
gram_prikaz = gram_vrijednost - vrednovanje_decorticate;
if(gram_display
{
test_prikaz[0] = gram_prikaz / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
else if(gram_display
{
test_prikaz[0] = gram_prikaz / 10 % 10 + 0x30;
test_prikaz[1] = gram_prikaz / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
else if(gram_display
{
test_prikaz[0] = gram_prikaz / 100 % 10 + 0x30;
test_prikaz[1] = gram_prikaz / 10 % 10 + 0x30;
test_prikaz[2] = gram_prikaz / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
else if(gram_display
{
test_prikaz[0] = gram_prikaz / 1000 % 10 + 0x30;
test_prikaz[1] = gram_prikaz / 100 % 10 + 0x30;
test_prikaz[2] = gram_prikaz / 10 % 10 + 0x30;
test_prikaz[3] = gram_prikaz / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
else if(gram_display
{
test_prikaz[0] = gram_prikaz / 10000 % 10 + 0x30;
test_prikaz[1] = gram_prikaz / 1000 % 10 + 0x30;
test_prikaz[2] = gram_prikaz / 100 % 10 + 0x30;
test_prikaz[3] = gram_prikaz / 10 % 10 + 0x30;
test_prikaz[4] = gram_prikaz / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
}
drugo
{
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
}
// Osvježavanje ukupne cijene
void page_valuation_price_refresh()
{
uint32_t cijena_vrijednost = 0;
uint8_t test_display[10] = {0x30, '.', 0x30, 0x30};
if(vrijednost_grama >= procjena_decorticate)
{
cijena_vrijednost = (vrijednost_grama - procjena_decorticate) * procjena_jedinične_cijene * 2 / 1000;
if(price_value
{
test_display[0] = cijena_vrijednost / 100 % 10 + 0x30;
test_display[1] = '.';
test_display[2] = cijena_vrijednost / 10 % 10 + 0x30;
test_display[3] = cijena_vrijednost / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
else if(price_value
{
test_display[0] = cijena_vrijednost / 1000 % 10 + 0x30;
test_display[1] = cijena_vrijednost / 100 % 10 + 0x30;
test_display[2] = '.';
test_display[3] = cijena_vrijednost / 10 % 10 + 0x30;
test_display[4] = cijena_vrijednost / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
else if(price_value
{
test_display[0] = cijena_vrijednost / 10000 % 10 + 0x30;
test_display[1] = cijena_vrijednost / 1000 % 10 + 0x30;
test_display[2] = cijena_vrijednost / 100 % 10 + 0x30;
test_display[3] = '.';
test_display[4] = cijena_vrijednost / 10 % 10 + 0x30;
test_display[5] = cijena_vrijednost / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
else if(price_value
{
test_display[0] = cijena_vrijednost / 100000 % 10 + 0x30;
test_display[1] = cijena_vrijednost / 10000 % 10 + 0x30;
test_display[2] = cijena_vrijednost / 1000 % 10 + 0x30;
test_display[3] = cijena_vrijednost / 100 % 10 + 0x30;
test_display[4] = '.';
test_display[5] = cijena_vrijednost / 10 % 10 + 0x30;
test_display[6] = cijena_vrijednost / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
}
drugo
{
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
}
void page_valuation_decorticate()
{
vrednovanje_decorticate = gram_vrijednost;
težina_vrijednosti_stranice_osvježi();
}
nevažeća vrijednost_stranice_1()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 1;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_2()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 2;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_3()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 3;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_4()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 4;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_5()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 5;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_6()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 6;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_7()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 7;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_8()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 8;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_9()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 9;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_0()
{
if(valuation_unit_price
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja * 10 + 0;
cijena_jedinice_vrijednje_stranice_refresh();
}
}
void page_valuation_back()
{
jedinična_cijena_vrednovanja = jedinična_cijena_vrednovanja / 10;
cijena_jedinice_vrijednje_stranice_refresh();
}
void page_valuation_clear()
{
jedinična_cijena_vrijednosti = 0;
cijena_jedinice_vrijednje_stranice_refresh();
}
Vrijeme objave: 28. travnja 2024