[µProjekt] Panel wyświetlacza LED i klawiatury na układzie TM1637

Projekty użytkowników forum zarówno sprzętowe, jak i związane z programowaniem w dowolnym języku.
Awatar użytkownika
ZbeeGin
User
User
Posty: 310
Rejestracja: sobota 08 lip 2017, 17:16
Lokalizacja: GOP
Kontaktowanie:

[µProjekt] Panel wyświetlacza LED i klawiatury na układzie TM1637

Postautor: ZbeeGin » wtorek 25 cze 2019, 09:57

Po dłuższej przerwie kolejny µProjekt. Tym razem jest to panel z 6 wyświetlaczami LED i kompletem przycisków. I to w dwóch wersjach: pierwotną o małym rozmiarze i tzw. "Sen Antego" :) Wszystko obsługiwane przez azjatycki wynalazek TM1637. Uwaga! Ciężko dostępny u krajowych dystrybutorów. Jest to domyślna aplikacja tego układu:
led_key_panel_tm1637.png

Kompletny projekt (z programu KiCad 5.1) dla obu wersji:
led_key_panel_tm1637.zip


ps. W serwisach aukcyjnych można kupić różnej maści płytki również z tym kontrolerem.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1109
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: [µProjekt] Panel wyświetlacza LED i klawiatury na układzie TM1637

Postautor: Antystatyczny » sobota 29 cze 2019, 13:19

Pozwoliłem sobie skrobnąć kawałek kodu w języku C, bo lubię mieć własne rozwiązania dla takich drobiazgów jak TM1637. Ot, kawałek initu, ustawianie wartości poszczególnych cyfr, jasności wyświetlacza oraz odczyt stanu przycisków, który wypełnię kodem, gdy przyjdzie "Sen Antego".

Obsługa wygląda tak:

Kod: Zaznacz cały

#include <avr/io.h>
#include <util/delay.h>
#include "TM1637/TM1637.h"

int main(void)
{
   uint16_t cnt = 0;

   TM_init();

   while(1)
   {
      TM_SetDigit(0, cnt / 1000 );
      TM_SetDigit(1, cnt / 100 % 10 );
      TM_SetDigit(2, cnt / 10 % 10 );
      TM_SetDigit(3, cnt % 10 );

      TM_SetDuty(1);

      if(++cnt > 9999)
      {
         cnt = 0;
      }
      _delay_ms(100);
   }
}


Powyższe dzielenia i modulo to standardowa metoda rozdziału liczby na pojedyncze cyfry. Każdy, kto choć raz robił zegarek, zna tę metodę ;)

W dokumentacji układu jest informacja, by nie przekraczać 250kHz na pinie CLK. W przypadku mojego softu wartość ta utrzymuje się w okolicy 170kHz:
TM1637 clock frequency.png


Oprogramowanie oczywiście można uprościć/skomplikować. Każdemu wedle potrzeb, jak zwykł mawiać nasz forumowy człowiek d/s filozofii :) W obecnej formie zajmuje około 360B pamięci flash, ale jeszcze nieco spuchnie po uzupełnieniu funkcji odczytującej stan przycisków.
Soft dopasowany jest do platformy AVR, ale warstwę sprzętową wydzieliłem do pliku TM1637_LL.h, by można było sterować układem przy pomocy dowolnej innej platformy sprzętowej. Poniżej umieszczam spakowane pliki projektu (tym razem bez plików specyficznych dla eclipse - tylko źródła i nagłówki):

TM1637.7z
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.


Wróć do „DIY”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości