——DWIN Geliştirici Forumundan
Bu sayımızda, DWIN Geliştirici Forumu - Çok Fonksiyonlu Tartının ödüllü açık kaynak örneğini tanıtıyoruz. Mühendis, 4 inçlik bir COF akıllı ekranı benimser ve T5L OS çekirdeği ile HX711 modülü ve 5 kg'lık basınç sensörü seti arasındaki veri etkileşimi sayesinde kullanıcılar, ağırlık, birim fiyat, toplam fiyat, dara vb. gibi sayım ekranı işlevlerini kolayca gerçekleştirebilir. sayma, ağırlık değişim eğrilerini takip etme ve tartım doğruluğunu düzeltme vb. fonksiyonların yanı sıra rahat ve verimli bir tartım deneyiminin keyfini çıkarmak için farklı uygulama senaryoları arasında geçiş yapmak kolaydır.
1. Kullanıcı Arayüzü Geliştirme
![f26af533d43728cd210e0f7af5e7acc](https://ecdn6.globalso.com/upload/p/1355/source/2024-06/665f077223d2b27894.png)
2.C51 Tasarımı
Tartının fiyatlandırma fonksiyonunu uygulamasına yönelik referans kodunun bir kısmı aşağıdaki gibidir:
// Fiyatlandırma Sayfası===================
#define VALUATION_UNIT_PRICE_ADDR 0x1010
#define VALUATION_GRAM_ADDR 0x1000
#define VALUATION_TOTAL_PRICES_ADDR 0x1020
uint32_t valuation_decorticate = 0; // Dara Ağırlığını Fiyatlandırma
uint32_t valuation_unit_price = 0; //Birim fiyat
// Birim Fiyat Yenileme
void page_valuation_unit_price_refresh()
{
uint8_t test_display[10] = {0};
if(değerleme_birimi_fiyatı
{
test_display[0] = değerleme_birimi_fiyatı / 100 % 10 + 0x30;
test_display[1] = '.';
test_display[2] = değerleme_birimi_fiyatı / 10 % 10 + 0x30;
test_display[3] = değerleme_birimi_fiyatı / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
else if(valuation_unit_price
{
test_display[0] = değerleme_birimi_fiyatı / 1000 % 10 + 0x30;
test_display[1] = değerleme_birimi_fiyatı / 100 % 10 + 0x30;
test_display[2] = '.';
test_display[3] = değerleme_birimi_fiyatı / 10 % 10 + 0x30;
test_display[4] = değerleme_birimi_fiyatı / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
else if(valuation_unit_price
{
test_display[0] = değerleme_birimi_fiyatı / 10000 % 10 + 0x30;
test_display[1] = değerleme_birimi_fiyatı / 1000 % 10 + 0x30;
test_display[2] = değerleme_birimi_fiyatı / 100 % 10 + 0x30;
test_display[3] = '.';
test_display[4] = değerleme_birimi_fiyatı / 10 % 10 + 0x30;
test_display[5] = değerleme_birimi_fiyatı / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
else if(valuation_unit_price
{
test_display[0] = valuation_unit_price / 100000 % 10 + 0x30;
test_display[1] = değerleme_birimi_fiyatı / 10000 % 10 + 0x30;
test_display[2] = değerleme_birimi_fiyatı / 1000 % 10 + 0x30;
test_display[3] = değerleme_birimi_fiyatı / 100 % 10 + 0x30;
test_display[4] = '.';
test_display[5] = değerleme_birimi_fiyatı / 10 % 10 + 0x30;
test_display[6] = değerleme_birimi_fiyatı / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
}
// Ağırlık Yenileme
void page_valuation_weight_refresh()
{
uint8_t test_display[10] = {0x30};
uint32_t gram_display = 0;
if(gram_value >= 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, test_display, 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, test_display, 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, test_display, 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, test_display, 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, test_display, 3);
}
}
başka
{
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
}
// Toplam Fiyat Yenileme
void page_valuation_price_refresh()
{
uint32_t fiyat_değeri = 0;
uint8_t test_display[10] = {0x30, '.', 0x30, 0x30};
if(gram_value >= valuation_decorticate)
{
fiyat_değeri = (gram_değeri - değerleme_dekortikasyon) * değerleme_birimi_fiyatı * 2 / 1000;
if(fiyat_değeri
{
test_display[0] = fiyat_değeri / 100 % 10 + 0x30;
test_display[1] = '.';
test_display[2] = fiyat_değeri / 10 % 10 + 0x30;
test_display[3] = fiyat_değeri / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
else if(fiyat_değeri
{
test_display[0] = fiyat_değeri / 1000 % 10 + 0x30;
test_display[1] = fiyat_değeri / 100 % 10 + 0x30;
test_display[2] = '.';
test_display[3] = fiyat_değeri / 10 % 10 + 0x30;
test_display[4] = fiyat_değeri / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
else if(fiyat_değeri
{
test_display[0] = fiyat_değeri / 10000 % 10 + 0x30;
test_display[1] = fiyat_değeri / 1000 % 10 + 0x30;
test_display[2] = fiyat_değeri / 100 % 10 + 0x30;
test_display[3] = '.';
test_display[4] = fiyat_değeri / 10 % 10 + 0x30;
test_display[5] = fiyat_değeri / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
else if(fiyat_değeri
{
test_display[0] = fiyat_değeri / 100000 % 10 + 0x30;
test_display[1] = fiyat_değeri / 10000 % 10 + 0x30;
test_display[2] = fiyat_değeri / 1000 % 10 + 0x30;
test_display[3] = fiyat_değeri / 100 % 10 + 0x30;
test_display[4] = '.';
test_display[5] = fiyat_değeri / 10 % 10 + 0x30;
test_display[6] = fiyat_değeri / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
}
başka
{
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
}
geçersiz page_valuation_decorticate()
{
valuation_decorticate = gram_value;
page_valuation_weight_refresh();
}
geçersiz page_valuation_1()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 1;
page_valuation_unit_price_refresh();
}
}
geçersiz page_valuation_2()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 2;
page_valuation_unit_price_refresh();
}
}
geçersiz sayfa_valuation_3()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 3;
page_valuation_unit_price_refresh();
}
}
geçersiz page_valuation_4()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 4;
page_valuation_unit_price_refresh();
}
}
geçersiz page_valuation_5()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 5;
page_valuation_unit_price_refresh();
}
}
geçersiz sayfa_valuation_6()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 6;
page_valuation_unit_price_refresh();
}
}
geçersiz sayfa_valuation_7()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 7;
page_valuation_unit_price_refresh();
}
}
geçersiz page_valuation_8()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 8;
page_valuation_unit_price_refresh();
}
}
geçersiz sayfa_valuation_9()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 9;
page_valuation_unit_price_refresh();
}
}
geçersiz page_valuation_0()
{
if(valuation_unit_price
{
değerleme_birimi_fiyatı = değerleme_birimi_fiyatı * 10 + 0;
page_valuation_unit_price_refresh();
}
}
geçersiz page_valuation_back()
{
valuation_unit_price = valuation_unit_price / 10;
page_valuation_unit_price_refresh();
}
geçersiz sayfa_valuation_clear()
{
değerleme_birimi_fiyatı = 0;
page_valuation_unit_price_refresh();
}
Gönderim zamanı: Nis-28-2024