Strona 1 z 1

Bargraph na wyświetlaczu HD44780

: poniedziałek 10 kwie 2023, 22:08
autor: Antystatyczny
Witam wszystkich serdecznie.

Ostatnio pracowałem hobbystycznie nad sterownikiem pasków ledowych RGB i przy okazji opracowałem wyświetlanie bargraphów na wyświetlaczach HD44780. No i właśnie tym chcę się z Wami podzielić ( za darmo :P ). Pewnie można będzie to i owo poprawić, ale to już pozostawiam dociekliwym. Poniżej prezentuję ciało funkcji:

Kod: Zaznacz cały

void HD44780_bargraph(int8_t x, int8_t y, uint8_t length, uint16_t value, uint16_t max)
{
   uint32_t strips = length * 5;
   uint32_t valPerStrip = max * 100UL / strips;
   uint32_t barLength = value * 100UL / valPerStrip;
   
   HD44780_goto(x, y);
   HD44780_putc('[');               //left margin
   do
   {
      if (barLength > 4)
      {
         HD44780_putc(5);
         barLength -= 5;
      }
      else
      {
         HD44780_putc(barLength);
         barLength -= barLength;
      }
   } while (--length);

   HD44780_putc(']');               //right margin
}





Ok, a więc x i y to współrzędne początkowe bargraphu. Length to długość bargraphu. Do długości należy doliczyć prawy znak ograniczający bargraph.
Następny parametr to value, czy wartość, którą chcemy wyświetlić. Ostatni parametr (max) określa, jaka wartość value będzie uznawana jako maksymalna.

Miłego korzystania z tego kawałka kodu.

Re: Bargraph na wyświetlaczu HD44780

: poniedziałek 10 kwie 2023, 22:24
autor: Antystatyczny
Zapomniałem dodać, że do poprawnej pracy tej funkcji należy wrzucić do pamięci wyświetlacza kilka znaków:

Kod: Zaznacz cały

static const uint8_t b[6][8] PROGMEM = {   {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0}, {16, 16, 16, 16, 16, 16, 16, 0},
                                 {24, 24, 24, 24, 24, 24, 24, 0}, {28, 28, 28, 28, 28, 28, 28, 0},
                                 {30, 30, 30, 30, 30, 30, 30, 0}, {31, 31, 31, 31, 31, 31, 31, 0}   };
      


oraz

Kod: Zaznacz cały

for (uint8_t i = 0; i < 6; i++)
   {
      HD44780_defchar_P(i, b[i]);
   }

Re: Bargraph na wyświetlaczu HD44780

: wtorek 11 kwie 2023, 13:55
autor: j23
Nie ma to jak miodna grafika w rozdzielczości 2x16 ...
-DZIĘKUJĘ Kolego Anty, bo ja na pewno skorzystam :) :like:

Re: Bargraph na wyświetlaczu HD44780

: wtorek 11 kwie 2023, 17:43
autor: ZbeeGin
Nie takie rzeczy się robiło w assemblerze MCS51. :)
Spróbuj jeszcze sobie zrobić dynamiczne wyświetlanie całego banku CGRAM w różnych miejscach wraz podmianą jego zawartości. Wtedy to nawet grafikę 80x14 można wyświetlać na całym ekranie.

Re: Bargraph na wyświetlaczu HD44780

: środa 12 kwie 2023, 20:57
autor: Antystatyczny
ZbeeGin pisze:Spróbuj jeszcze sobie zrobić dynamiczne wyświetlanie całego banku CGRAM w różnych miejscach wraz podmianą jego zawartości


Może w niedalekiej przyszłości spróbuję. Póki co kończę projekty, na które nie miałem czasu przez ostatnich dziesięć lat. W każdym razie poszukam w sieci filmików, które pokazują, jaki to daje efekt wizualny i może to mnie zachęci :)