CNCnet: 30. 10. 2020  | Hlavní stránka | Seznam rubrik | Download | Weblinks | RSS | Public key |  

Návštěvnost
počítadlo.abz.cz

Elektronika

* Ovládání inteligentního LCD přes RS232

Vydáno dne 22. 04. 2006 (7908 přečtení)

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:

serLCD_sch

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.

serLCD_dps

serLCD_osaz

Celý projekt si můžete stáhnout zde (download 69kB) nebo v download sekci.


[Akt. známka: 0 / Počet hlasů: 0] 1 2 3 4 5
Celý článek | Autor: administrator | Vytisknout článek

Novinky
06.06.2008: Meteostanice:
V sekci download je zveřejněna zatím veškerá dokumentace k meteostanici. Více informací viz. www.jakjevenku.info

29.04.2008: Nová linka
Server byl přepojen na novou 50Mbps linku a během dneška můžou být problémy s dostupností kvůli změně DNS záznamů.


Tento web site byl vytvořen prostřednictvím phpRS - redakčního systému napsaného v PHP jazyce.