Grafické displeje poskytují jedinečné možnosti zobrazení textů a zejména obrázků. Výborné zobrazovací možnosti grafických displejů jsou ovšem vykoupeny složitostí vytváření kódu obrazců a paměťovými nároky pro jejich uložení. Zobrazovací plocha grafických displejů je tvořena oblastí bodů (pixelů), které jsou adresovány prostřednictvím řadičů displejů. Vysoké množství adresovaných bodů klade na řídící mikroprocesor vysoké paměťové nároky např. při rozměru obrázku 128 x 64 je zapotřebí 1024 Byte programové paměti. Pro obrázky s pravidelném tvarem nebo s převahou prázdných ploch je možné zavést kompresi, která výrazně snižuje paměťové nároky u řídícího mikroprocesoru.
Objednat DisplayKit v HW Shopu => 1.800 Kč bez DPH
Transformaci obrázků do kódu mikroprocesoru lze usnadnit použitím aplikace pro automatickou konverzi a kompresi obrázků z formátu *.BMP do programového kódu, jakou je například námi již dříve popisovaný Image Converter.
Obr. 1 – Schéma průběhu komprese obrázků
Aplikace Image Convertor umožňuje překlad obrázků o formátu 1x1 až 320x240 pixelů do třech kompresních typů None, Zero a Full a do čtyřech programovacích jazyků ASM, Pascal, Basic a C).Výsledný kód je ukládán ve formátu přímo použitelném pro zvolený řadič displeje KS107, ST7920, T6963C.
Formát uložení kódu je závislý zejména na způsobu adresace zobrazovacích bodů z jednoho Byte. Adresaci bodů je možné snadno rozdělit na svislou a vodorovnou. Svislá adresace bodů je charakteristická pro řadič SAMSUNG KS107, který je nejčastěji vyráběn v rozměrech 128x64 (EL12864 nebo PG 2864).
Displej 128x64 je rozdělen na dvě poloviny z nichž každá je řízena jedním z řadiče KS107. Vznikají tím dvě samostatné oblasti vybírané signály CS0 a CS1. Každá z těchto oblastí je dále rozdělena na 8 stránek po 64 bytech viz obr.2.
Vodorovná adresace bodů je charakteristická pro řadič TOSHIBA T6963C, který je nejčastěji vyráběn v rozměrech od 128 x 64 bodů do 240 x 128 bodů.
Obr. 3 – Mapování paměti displeje EL128128 s řadičem T6963C
Vysvětlení konverze
Pro vysvětlení činnosti konverze použijeme jednoduchý obrázek tvořený ze čtyř černých a bílých čtverců. Každý čtverec má rozměr 8x8 pixelů. Tento obrázek je možné konvertovat do třech kompresních typů (None, Zero a Full).Ve všech typech konverzí znamenají v konvertovaném kódu první tři Byte výšku (řádky), šířku (pixely) a typ komprese (None = 0x00, Zero = 0x01 a Full = 0x02).
Obrázek je konvertován po jednotlivých řádcích o výšce 8x pixelů.
None (0x00)
Konvertovaná data plně odpovídají obrázku (beze změn). Tento typ konverze je výhodný pro nepravidelné obrázky.Zero (0x01)
Data jsou uložena v jednoduchém typu komprese. Při výskytu Byte s hodnotou nula vždy další Byte za touto nulou znamená počet výskytů těchto nul. Konverze je výhodná pro obrázky s převahou bílých (prázdných) ploch.Full (0x02)
V tomto typu konverze za každým Byte následuje informace o počtu výskytů tohoto Byte. Konverze je vhodná pro pravidelné obrázky.Příklad převodu obrázku
Konveze None0x02,0x10,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF Konveze Zero0x02,0x10,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x10, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF Konveze Full0x02,0x10,0x02,0xFF,0x08,0x00,0x10,0xFF,0x08 |
Obr. 3 - Příkladný obrázek ke konverze 16 x 16 pixelů |
Postup konverze a zobrazení
- Otevřete obrázek (*.BMP).
- Nastavte mez pro černou a bílou (pouze pro barevné obrázky).
- Zvolte kompresní typ a programovací jazyk.
- Proveďte konverzi stiskem tlačítka Convert.
- Zkopírujte vytvořenou tabulku do vašeho programového kódu mikroprocesoru.
- Zavolejte rutinu DISP_ICON s odkazem na tabulku a pozici zobrazení obrázku.
Příklad implementace v jazyce C
#include#include #include "ks107.h" // Knihovní podpora #include "Image.h" // Knihovna s obsahem konvertovaného obrázku void main(void) { PAUSE(5); DISP_INIT(); // Inicializace displeje for(;;) { DISP_ICON(Head,0,0); // 1. Zobrazení obrázku (obrázek, pozice řádek,sloupec) PAUSE(20); DISP_TEXT("Hello",5,0,56,45); // 2. Zobrazení textu //(text,délka,výška,pozice řádek,sloupec)
PAUSE(20); DISP_TEXT("Hello",5,1,48,35); // 3. Zobrazení textu (text,délka,výška, //pozice řádek,sloupec)
PAUSE(20); } }
1. Zobrazení obrázku |
2. Zobrazení obrázku |
3. Zobrazení obrázku |
Ladící přípravek DisplayKit
Stručná charakteristika
V praxi před samotným projektováním vlastního
výrobku je vhodné ověřit samostatnou činnost jednotlivých komponentů. Pro rychlé
ověření správnosti programového vybavení slouží ladící
přípravek DisplayKit. Přípravek umožuje řízení veškerých
typů displejů napájených 5V i 3,3V, nastavení kontrastu, spínání
podsvětlení a rychlé programování mikroprocesoru přímo v zapojení.
Programování umožňuje Bootloader integrováný v mikroprocesoru spolu s aplikací
FLIP, kterou je možné zdarma stáhnout ze stránek www.atmel.com. Uvedení procesoru do stavu programování je
uzemnění signálu PSEN jumper propojkou (Program) nebo automaticky stavem bitu BLJB
a s následným stiskem tlačítka Reset. Připojení přípravku DisplayKit k
PC se provádí sériovým prodlužovacím kabelem nebo prostřednictvím
převodníku USB-RS232.
- Napájecí napětí : 5,5 až 30V, (nom. 12V)
- Pracovní napětí : 3,3V/5V (Jumper propojka)
- V/V rozhraní : P0.0-P0.7, P2.0-P2.7 (Pull up 10k)
- Spínání podsvětlení : P1.0 - tranzistor (Imax=1A)
- Nastavení kontrastu : POT A, POT B, POT X, (Rpot = 10k)
- Signalizační LED (červená, zelená) : P3.6 (zelená), P3.7 (červená)
- Programování : RS232 (Jumper propojka a reset)
Objednat DisplayKit v HW Shopu => 1.800 Kč bez DPH
Aplikace Flip
Programování mikroprocesorů přímo v zapojení je velmi výhodné z několika důvodů: není nutné vyjímat mikroprocesor ze zapojení a zejména není zapotřebí drahých programátorů.
Aplikace Flip umožňuje mnoho nastavení, které je vhodné předem zapsat do tzv. konfiguračního souboru *.cfg. V případě použití konfiguračního souboru je po jeho otevření otestováno spojení s mikroprocesorem a zobrazeny identifikační údaje. Následovně pouhým stiskem tlačítka RUN dojde k naprogramování mikroprocesoru. Po naprogramování je spuštěn program červeným tlačítkem Start Application nebo Resetem. Nesmí být uzemněn signál PSEN a nesmí být aktivován bit BLJB jinak bude mikroprocesor uveden znovu do stavu programování.
Příklad konfiguračního souboru
selectDevice T89C51CC01 // Typ obvodu set port COM1 // Zvolený port set baud 38400 // Přenosová rychlost programování (v proc. Autobaude) initProtocol RS232Standard connectRS232 Standard parseHexFile "C:/Dokumenty/DisplayKit/Main.hex" // Cesta k souboru setupBlankCheckDevice set gui(blankCheckMin) 0000 set gui(blankCheckMax) 7FFF setupFullEraseDevice // Mazání obvodu setupProgramDevice // Programování obvodu setupVerifyDevice // Verifikace obvodu setupBljbFuse 1 // Automatický skok do programovacího modu po resetu setupX2Fuse 1 // Přepínání dělícího poměru krystalu setupSecurityLevel 0 // Úroveň zabezpečení 0,1,2
Připojení displejů k přípravku DisplayKit
Schémata připojení displejů s řadiči KS107, ST7920 a T6963C odpovídá HW konfiguraci podporovaného software dodaného v jazyce C.
Více informací o DisplayKitu naleznete v uživatelském manuálu. Přístě se na práci s DisplayKitem podíváme blíže
david.romanek@ imfsoft.com
DOWNLOAD & Odkazy
- Článek o Image Converteru na HW serveru - Image Converter - práce s grafickými LCD displeji hrou
- Image Converter 2.0 - ImgConvV2.0.zip - V programu je omezeno načítání obrázků –
uživatel má možnost načíst jen dva vlastní na zkoušku.
- Objednat DisplayKit v HW Shopu => 1.800 Kč bez DPH