display ovladaný atmelem

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
distrikt
Příspěvky: 72
Registrován: 04 říj 2008, 02:00
Kontaktovat uživatele:

display ovladaný atmelem

#1 Příspěvek od distrikt »

zdravim šecky elektroniky mam menší problem nedavno sem si koupil alfanumerický display MC0802A-SYL/H s tim že ho budu ovladat přes atmega8 ale jaksik display vubec nereaguje nevim asi to nějak špatně ovladám prosimvás kdyby někdo měl nějaky navod jak se displaye ovladají byl bych mu vděčný 8-)

Uživatelský avatar
Bernard
Příspěvky: 3614
Registrován: 27 kvě 2005, 02:00

#2 Příspěvek od Bernard »

Po připojení na zdroj se musí displej nejdřív inicializovat několika instrukcemi, které mají předepsané časování. Viz katalogový list řídícího obvodu S6A0069.

Uživatelský avatar
echinus
Příspěvky: 80
Registrován: 17 úno 2008, 01:00
Kontaktovat uživatele:

#3 Příspěvek od echinus »

Předpokládám, že pro komunikaci použivaš 8-mi bitovou sběrnici.(jestlni ne tak je to krapet slozitejsi). v podstate jde jen o to ze na displej musiš poslat dva byty ktere nastavi spravnou fci a mezi nimi dodržet minimalni dobu potřebnou k zapisu slova do řadiče v LCD cca.40us, nebo pockat na nastaveni kontrolniho bitu(konce zapisu) v LCD,a pak displej vymazat, a je vše připraveno k použiti. v mem případě vypadala inicializace kdysi asi takhle:
(jsou to pochopitelne jen vzpsane funkce, nikoli cely program)

void lcd_init(void)
{
//nastaveni osmibitove komunikace,4 radky,font 5x7
lcd_comm(0b00111011);

lcd_comm(0b00001111);
}

void lcd_clr(void)
{
CLR_BIT(COMM_PORT,RS);
write_delay();
DATA_PORT=1;
SET_BIT(COMM_PORT,ENABLE);
clr_delay();
CLR_BIT(COMM_PORT,ENABLE);
write_delay();
}

void lcd_comm(unsigned char byte)
{
CLR_BIT(COMM_PORT,RS);
write_delay();
DATA_PORT=byte;
SET_BIT(COMM_PORT,ENABLE);
write_delay();
CLR_BIT(COMM_PORT,ENABLE);
write_delay();
}

?!snad je to i z verze funkcniho programu uz je to doba co sem to psal
Žádné množství pokusů nikdy nemůže dokázat, že jsem měl pravdu. Jeden pokus však kdykoliv může dokázat, že jsem se mýlil.........(Albert Einstein).

Uživatelský avatar
Kado
Příspěvky: 44
Registrován: 27 říj 2007, 02:00
Bydliště: PB, SVK

#4 Příspěvek od Kado »

Pri vacsine takychto LCD plati, ze po pripojeni napajania treba pockat cca 20-40ms a az potom komunikovat s radicom LCD. V datashite LCD urcite takato informacia figuruje...

Uživatelský avatar
Pepa87
Příspěvky: 144
Registrován: 29 lis 2006, 01:00
Kontaktovat uživatele:

#5 Příspěvek od Pepa87 »

Tady je například datasheet
http://pdf1.alldatasheet.com/datasheet- ... 44780.html
tohle asi bude ta prodleva po zapnutí

Kód: Vybrat vše

The busy state lasts for 10 ms after VCC rises to 4.5 V.
asi nejdůležitější je že po resetu se nastaví mimo jiné tohle

Kód: Vybrat vše

N = 0; 1-line display
D = 0; Display off
takže displej zůstane zhasnutý

Uživatelský avatar
distrikt
Příspěvky: 72
Registrován: 04 říj 2008, 02:00
Kontaktovat uživatele:

#6 Příspěvek od distrikt »

zapoměl sem dodat že na procesory používám assembler jelikož jeho logika je pro mě jednodušší díky za ty datasheety snad něco vykutim jinak použivam k tomu 8mi bitové porty...

Uživatelský avatar
echinus
Příspěvky: 80
Registrován: 17 úno 2008, 01:00
Kontaktovat uživatele:

#7 Příspěvek od echinus »

Můj člověk, assembler je good. Nicméně nejde o programovací jazyk, nýbrž o sled zadaných instrukcí. Z meho programu v C(viz výše) mužeš vzít ony dvě hodnoty a poslat je na displej

0b00111011 ;nestaví sběrnici a par dalších fcí
;počkej 40us
0b00001111 ;zapne displej, upraví zobrzení kursoru atd..
;dalších 40us


0b00000001 ;vzmaže znaky na displeji
;počkej 1,6ms a už mužes posilat data
Žádné množství pokusů nikdy nemůže dokázat, že jsem měl pravdu. Jeden pokus však kdykoliv může dokázat, že jsem se mýlil.........(Albert Einstein).

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#8 Příspěvek od Atlan »

a nezbudnite potom na adresy pre kurzor aby to pisalo...... pre prvy riadok a prvy znak 80h a pre druhy riadok a druhy znak 0ch pre 16znakovy dvoj riadkovy displej vid datashit.... pre ten tvoj

Uživatelský avatar
nekmil
Příspěvky: 780
Registrován: 06 bře 2005, 01:00
Bydliště: Havířov

#9 Příspěvek od nekmil »

Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6

Config Lcd = 16 * 2

Lcd "Nejaky TExt"

Když si představím co bych všechno musel napsat v assembleru abych dosáhl toho co udělají tyto 3 příkazy, tak mě jímá hrůza. :)

S pozdravem "bojovník proti assembleru"

Zirafka
Příspěvky: 819
Registrován: 20 srp 2006, 02:00

#10 Příspěvek od Zirafka »

nekmil píše:Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6

Config Lcd = 16 * 2

Lcd "Nejaky TExt"
Že by další dušička píšící v Bascomu? :D

Jinak jak už zaznělo, LCD potřebuje na začátku provést inicializaci a ta není okamžitě, je potřeba počkat než se příkaz provede. A také po rozjezdu vnitřního procesoru (řadiče) se musí počkat na ustálení jeho oscilátoru a tak podobně.

Jen tak na okraj, máš připojené napájení? A nastavený kontrast? Pokud se zapne jen napájení, tak se na displeji zobrazí v horním řádku kostičky. To není podceňování, tuhle jsem hledala důvod podivného poblikávání LCD a on to nakonec byl upadlý drátek od napájení...

Uživatelský avatar
distrikt
Příspěvky: 72
Registrován: 04 říj 2008, 02:00
Kontaktovat uživatele:

#11 Příspěvek od distrikt »

ano ano je to tady prostě assembler je nejlepši není nejpřehlednějši ale je nejjednodušší na pochopení a není třeba se nic složitého učit (lenost vladne světu) tak díky kluci nějak už to zmaknu snad....

Uživatelský avatar
caven
Příspěvky: 417
Registrován: 15 srp 2006, 02:00

#12 Příspěvek od caven »

nj tak to jsem se o sobě dozvěděl hezký věci ;);) taky jsem přes ten assembler ;)

Uživatelský avatar
distrikt
Příspěvky: 72
Registrován: 04 říj 2008, 02:00
Kontaktovat uživatele:

#13 Příspěvek od distrikt »

jj tak na moje hejbatka mi stači jenom par blbin navic v AVR studiu sou ty registy krasně vypsané

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“