Potřeboval jsem nějak vizualizovat vystupy z ruzných programu běžících na mém domacím serveru a jelikož k němu nemám připojen monitor bylo nutné data zobrazovat na nějkém externím displeji. Nejprve jsem si řekl, že nejjednodušší bude to někde najít na internetu a neztrácet s tím čas. Nakonec to jako obvykle dopadlo tak, že po nechodícím zapojení z internetu a dvou dnech laborovaní proč, jsem si sedl a za odpoledne napsal svojí vlastni verzi.
První čím začnu je popis schématu:
Je použit PIC16F627 běžící na 4MHz, na který je napojen prímo klasický LCD s řadičem. LCD muže být od 1x8 az po 4x20 znaku (vyzkoušené to mám jen s 2x16). Dále je k MCU připojen jednoduchý převodník urovní RS232 s tranzistorem ochraněným na vstupu dvěma diodami. K PC se tedy zobrazovač připojí na RS232 na vyvod GND a Tx. Rychlost je obligatních 9600,8,N,1.
Co se tyka ovládání tak jsou použity textové příkazy, které umožňují ovladat zobrazení na displeji i ručně z libovolneho terminálu.
Zatím jsou implementovány tři typy příkazu:
2RSxx....x; = vypis znaky x na radek R a od sloupce S
3xx....x; = vypis znaky x od aktualni pozice kurzoru
1C; = vykonej prikaz urceny parametrem C seznam zde:
- '1'=LCD_FIRST_ROW
- '2'LCD_SECOND_ROW
- '3'=LCD_THIRD_ROW
- '4'=LCD_FOURTH_ROW
- '5'=LCD_CLEAR
- '6'=LCD_RETURN_HOME
- '7'=LCD_CURSOR_OFF
- '8'=LCD_UNDERLINE_ON
- '9'=LCD_BLINK_CURSOR_ON
- '10'=LCD_MOVE_CURSOR_LEFT
- '11'=LCD_MOVE_CURSOR_RIGHT
- '12'=LCD_TURN_ON
- '13'=LCD_TURN_OFF
- '14'=LCD_SHIFT_LEFT
- '15'=LCD_SHIFT_RIGHT
Každý příkaz je ukončen znakem ; a zpracován okamžitě po prenosu tohoto
znaku. Pokud nevíte co máte v bufferu je lepší poslat dva znaky ; za sebou.
S tim souvisí jedna nepěkná věc, na kterou jsem přišel až když jsem psal
obsluhu displeje do programu k meteostanici. Když pošlu totiž příkazy do
displeje hned po sobe tak o ten druhý příkaz prijdu, protože v tu
chvíli zpracovávám 24 bajtovy buffer (4 parametry a 20znaku) a nemůžu
číst UART. Řešením je davat mezi jednotlivé příkazy pauzu cca 50ms, které stačí na to, aby byl MCU připraven.
Chci ještě implementovat příkaz pro ovládání pípáku a zhasinání
podsvětlení displeje (to ale znamena zmenu HW) a hlavně jako první řídící znak adresu displeje tak, aby šlo více displeju ovládat po jedné lince.
Celý projekt si můžete stáhnout zde (download 69kB)
nebo v download sekci.