úterý 15. března 2016

PICAXE 20M2+ a TM1638 (opraveno)

Zjišťovat dobu osvětlení slunečních panelů se hodí. Alespoň mému kamarádovi, který po mě zařízení k tomu určené chce. Prohrábl jsem šuplík, vytáhl PICAXE 20M2+, magnetickou paměť (24C16A-FRAM DIP8 RAMTRON), co se jen tak neošoupe, a cosi z Číny s displejem, diodami a mikrospínači. A právě takovému zobrazovadlu je věnován tento příspěvek.



O zařízení

Celé zařízení se jmenuje JY-MCU 8X Red Light Digital Tube + 8x Key + 8x Double Color LED modul, vyjde na nějakých 180,- korun českých a pořídíte je na čínském DealExtreme. Typů je více, ale jsou všechny na jedno brdo. Poštovné se neplatí, stejně jako clo, pokud jde tedy o takovouto prkotinu.

JY-LKM1638 v celé své kráse

Co to umí


  • Rozsvítit libovolný dílek na libovolném segmentu
  • Rozsvítit libovolnou LED v jedné ze dvou barev (červená, zelená)
  • Nastavit společný jas pro displej a LED v sedmi úrovních
  • Přečíst kód kombinace stisknutých spínačů
  • Spojit do kaskády až šest těchto zobrazovačů

Připojení a zapojení

Mimo napájení (VCC a GND) je potřeba ještě připojit hodiny (CLK), data (DIO) a strobe (STB). Strobe může mít až šest linek (STB0-5), kterými řídíme další další zobrazovače v kaskádě.

Popis vývodů

Zapojení v celé jeho kráse.
Šváb pod MCU je FRAM a v zapojení nehraje žádnou roli,
jen se mi ho nechtělo vytahovat.

Driver


Takže, jak vidno, hodně muziky za málo peněz, připojeno máme, ale kde je nějaký software? Na netu se sice něco válí, ale jak použití, tak program, se mi moc nezdály. Po týdenních průběžných úpravách nějakého takového kódu jsem nakonec všechno zahodil a napsal to zgruntu znova.

Takže si můžete nyní stáhnout ARCHIV s příslušnými soubory (soubor s driverem, soubor s definicemi proměnných a jedno demo, ve kterém jsou výše uvedené knihovny použity.

Jak to funguje

Samotný zobrazovač potřebuje vždy poslat nějaký příkaz a parametry, podle kterých se nějak chová. To vše je popsáno v dokumentaci. Tohle celé je třeba zabalit do nějakého programového kódu, aby se to lépe používalo.

My si vyhradíme v RAM pár bytů (asi 23) pro tzv. frame buffer, který obsahuje to, co má být zrovna zobrazeno na displeji a taky pár bajtů pro interní použití při přenosu. Pak zavoláme rutinu LMK1638_Show, která to podle toho všechno vykreslí. Pokud potřebujeme znát stav stisknutých tlačítek, zavoláme rutinu LMK1638_GetButtons, která uloží jejich stav do proměnné LMK1638_Buttons.

Dále je tam pár méně významných rutinek, např. LMK1638_IntensityCycle, která cyklicky mění jas zobrazení.

Soubory jsou slušně komentovány a jejich použití není žádná věda.

Video funkce demonstračního programu



Použití

(občas mrkněte do vzorového programu)

  1. Do 8 bytů počínaje adresou LMK1638_DISP_ADR uložíte bitové masky 8 znaků, které chcete zobrazit. Můžete využít definice čísel a znaků uložených v EEPROM (soubor LMK1638_symbols.basinc)
  2. Do 8 bytů počínaje adresou LMK1638_LED_ADR uložíte 8 bytů definující svit každé diody. Můžete využít předdefinované symboly LMK1638_LED_OFF, LMK1638_LED_RED, LMK1638_LED_GREEN
  3. Na adresu LMK1638_ONOFF_ADR vložte byte řídíce vypnutí a zapnutí displeje (čtení klávesnice funguje pořád). Můžete využít předdefinované symboly LMK1638_OFF a LMK1638_ON.
  4. Na adresu LMK1638_INTENSITY_ADR vložte hodnotu 0 až 7 definující intenzitu svitu.
  5. Zavolejte rutinu LMK1638_Show, která to pošle do zobrazovače.
  6. V provozu pak stačí jen měnit obsah LMK1638_DISP_ADR a případně LMK1638_LED_ADR.


Jak se definují znaky

Znak je do zobrazovače posílán jako jeden byte. Máme-li 8 segmentů (číslic) na celém zobrazovači, musíme poslat 8 bytů.

Takže 1 byte = jeden znak. Každá ploška v segmentu odpovídá jednomu bitu v bajtu. Pořadí DP, G, F, ... A dle obrázku:
Chceme-li zobrazit velké E a ještě rozsvítit tečku na první pozici zleva, můžeme to zapsat takto:

POKE LMK1638_DISP_ADR, %11111001

Alternativně můžete také zapsat dekadicky (budeme sčítat čísla 128, 64, 32, 16, 8, 4, 2, 1 pro vysvícené plošky DP, G, F, ... A)

POKE LMK1638_DISP_ADR, 249

nebo hexadecimálně

POKE LMK1638_DISP_ADR, &F9

Kompletní program je pak:

poke LMK1638_ONOFF_ADR, LMK1638_ON 'display on
poke LMK1638_INTENSITY_ADR, 7 'jas

poke LMK1638_DISP_ADR, %11111001

gosub LMK1638_Show


Můžeme také využít vlastnosti příkazu POKE zapsat více bytů najednou a zobrazit třeba pomlčky přes celý display:

poke LMK1638_DISP_ADR, 64,64,64,64, 64,64,64,64 'samé pomlčky

Další informace

Download ARCHIV

Žádné komentáře:

Okomentovat