inicializace displeje LCD
Zdeněk lada
zdenek023ster na gmail.com
Čtvrtek Květen 27 17:58:03 CEST 2010
Dobrý den,
Takže děkuji všem za rady, zvláště uživateli s přezdívkou petop. Nyní již
oba řádky fungují v obou konfiguracích pokaždé.
Nižší kontrast byl kvůli napájení, při připojení programátoru bylo pouze
4,588V, při napájení z adaptéru(na desce je stabilizátor 5V) 4,883V.
Při inicializaci podle katalogového listu
http://www.allshore.com/pdf/Samsung_KS0066_(s6a0069).pdf (str. 28)
mi oba řádky dnes naopak fungovali při napájení z adaptéru. Po přidání dvou
inicializací na 8-bitovou komunikaci jedou oba řádky spolehlivě. Přidávám
současný kód.
děkuji a s přátelským pozdravem,
Zdeněk
Pro funkci main
#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>
#include "bitove_operace.h"
#include "dlouhe_zpozdeni.h"
#include "LCD_ATmega-S6A0069.h"
int main(void)
{
DDRB=0xff;
DDRE=0xff;
DDRC=0xff;
DDRA=0xff;
PORTB=0x00;
PORTE=0x00;
PORTC=0x00;
PORTA=0x00;
dlouhe_zpozdeni(200);
Inicializace_LCD(1);
Posli_retezec("krasna 1",1,0);
Posli_retezec("krasna 2",2,0);
nastaveni_cestiny();
Posli_retezec("Krásná čeština",1,0);
}
a pro knihovnu LCD inicializaci
void Inicializace_LCD(unsigned char podsviceni)
{
unsigned char zaloha_DDR,zaloha_PORT;
if (podsviceni)
sbi(PORTA,7);
else
cbi(PORTA,7);
zaloha_DDR=DDR_LCD; // zálohování obsahu registru DDR
zaloha_PORT=PORT_LCD; // zálohování obsahu registru PORT
outp(0x00, PORT_LCD); // výstup do log "0"
outp(0xff, DDR_LCD); // konfigurace portu jako výstupního
dlouhe_zpozdeni(100); // cekame 100ms na nabeh napajeciho
napeti
sbi(DDR_LCD,RS_PIN);
cbi(PORT_LCD,RS_PIN);
sbi(DDR_LCD,RW_PIN);
cbi(PORT_LCD,RW_PIN);
_delay_ms(1);
// rezim 8 bitu
Posli_nibble(0x03);
_delay_ms(1);
dlouhe_zpozdeni(200);
// rezim 8 bitu
Posli_nibble(0x03);
_delay_ms(1);
dlouhe_zpozdeni(200);
// rezim 4 bitu
Posli_nibble(0x02);
_delay_ms(1);
Posli_prikaz(0x28); // dva řádky
_delay_ms(2);
Posli_prikaz(0x01); //smaž displej
_delay_ms(2);
Posli_prikaz(0x0c); //zapni displej
_delay_ms(2);
Posli_prikaz(0x06); //režim inkrementace
_delay_ms(2);
DDR_LCD=zaloha_DDR; // obnovení
obsahu registru DDR
PORT_LCD=zaloha_PORT; // obnovení
obsahu registru PORT
}
2010/5/26 petop <petop na stonline.sk>
> Zdravím, priatelia.
> Stretol som sa s tím.
> Skúste tento postup:
> rcall wait200
> rcall LCD_init
> rcall wait200
> rcall prenos_lcd_1 ...až teraz zadávate data na LCD...
> Je potrebné urobiť poriadne čakanie na BUSY signál, nepomáha nechať po
> commande len napr. 15ms.
> A taktiež mám vyhodené 3x inicializovanie 8 bit komunikácie a nasledne
> prepnutie na 4 bit.
> asi takto:
> LCD_init: rcall wait15
> cbi LCDport_b,lcdrs ;daj RS do 0
> ldi temp,kom_8b
> rcall zapis_nBF ;zapis instrukciu be cakania na BF
> rcall wait15
> ldi temp,kom_4b
> rcall zapis_BF
> rcall busy
>
> ;nastavenie rezimu modulu 2riadky, znak 5 x 7
> ldi temp,(kom_4b | rez_2r | fon_5x7) ; | je za OR
> rcall zapis_4BF
> rcall busy
> ...atd.
>
> Ak budete mať zaujem pošlem trošku viac kódu...
>
> Petop
>
>
> Zdeněk lada wrote:
>
> Zdravím konferenci,
>
> dnes jsem několik hodin zápasil s displejem z GME 1602B V2.0. odkaz viz
> zde:
>
> http://www.gme.cz/cz/mc1602e-syl-h-p513-109.html,
>
> ale zadní strana vypadá jinak, fotka je poněkud neaktuální. Problém je v
> tom že pokud naprogramuji ATmega128 s připojeným programátorem, fungují oba
> řádky displeje.
> V okamžiku kdy odpojím programátor a vypnu a zapnu napájení se rozsvítí jen
> jeden řádek, navíc s větším kontrastem než v případě kdy fungují oba řádky.
> V některých případech se mi zobrazili jakési nesmysli, jako znaky & a
> podobně.
>
> S displejem komunikuji pomocí 4 vodičů.
>
> Setkal se tím někdo a nevíte kde by mohla být chyba? V inicializaci
> displeje, nebo v pomalém nabíhání napájecího napětí, po případně úplně někde
> jinde? Zkoušel jsem dát prodlevy v sekvenci 5x delší, ale nepomohlo mi to...
>
> s pozdravem,
>
> Zdeněk
>
>
> ------------------------------
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20100527/1d74eff0/attachment.htm>
More information about the Hw-list
mailing list