Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Při zapnutí LCD se zobrazují čverečky

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Poradna
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Guitarister



Založen: Oct 11, 2012
Příspěvky: 11

PříspěvekZaslal: čt duben 04 2013, 12:58    Předmět: Při zapnutí LCD se zobrazují čverečky Citovat

Koupil jsem si tento LCD display LCD WINSTAR WH1602A-TTI-ET# http://www.gme.cz/alfanumericke-maticove-lcd-displeje-s-radicem-monochr/lcd-alfanumericky-displej-winstar-wh1602a-tti-et-p513-220/#popis a po nahrání programu do ATMEGA162 a připojení LCD dipsleje se mi na displeji zobrazí pouze čverečky. Prosím nevíte někdo, co s tím, vůbec si s tím nevím rady. Předem děkuji za odpověď.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
forbidden



Založen: Feb 14, 2005
Příspěvky: 9036
Bydliště: Brno (JN89GF)

PříspěvekZaslal: čt duben 04 2013, 13:13    Předmět: Citovat

Nejspíš chyba v programu, takto se projevuje neinicializovaný LCD. Už to tu bylo několikrát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Guitarister



Založen: Oct 11, 2012
Příspěvky: 11

PříspěvekZaslal: čt duben 04 2013, 13:22    Předmět: Citovat

Je tam totiž asi řadič ST7066 a můj program nejspíše komunikuje pouze s řadičem HD44780. Prosím nevíte co a jak změnit, aby LCD fungovalo??
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Prochy



Založen: Nov 12, 2011
Příspěvky: 287

PříspěvekZaslal: čt duben 04 2013, 13:32    Předmět: Citovat

Pochybuji, že ti někdo poradí, když tu nemáš uvedený program a schéma jak to máš zapojeno.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
forbidden



Založen: Feb 14, 2005
Příspěvky: 9036
Bydliště: Brno (JN89GF)

PříspěvekZaslal: čt duben 04 2013, 13:34    Předmět: Citovat

Snad by to mělo být kompatibilní, ale osobně s tím zkušenosti nemám.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Guitarister



Založen: Oct 11, 2012
Příspěvky: 11

PříspěvekZaslal: čt duben 04 2013, 13:36    Předmět: Citovat

Schéma zapojení LCD je v přiloženém souboru, jinak program je zde :

;do deklarace vložit
;.EQU PLCD=PORTD
;***********************************************************************************************
;do inicializace nutno vložit
;INIT_LCD
;***********************************************************************************************
;do inc souborů nutno vložit
;.INCLUDE "LCD_M08.INC"
;************************************************************************************************
;příklady použití - viz popis maker
;************************************************************************************************

.INCLUDE "$WINAVR\INCFILES\INI.INC"
.INCLUDE "$WINAVR\INCFILES\MCS.INC"

;*******************************************************************************

M_EQU PLCD, PORTA

.SET BIT_BACKL = 6 ;bit na kterém je zapojeno podsvětlení

;***************************************************************************************************
;platí pro všechny jednořádkové a dvouřádkové displeje, pro čtyřřádkové displeje je nastavení a pro
;čtyřřádkový displej 4x20 znaků
;pro 4x16 znaků platí:
;.SET ADR_RAD1 = $0 ;počáteční adresy jednotlivých řádků viz datasheet lcd
;.SET ADR_RAD2 = $40
;.SET ADR_RAD3 = $10
;.SET ADR_RAD4 = $50
;***************************************************************************************************

.SET ADR_RAD1 = $0 ;počáteční adresy jednotlivých řádků viz datasheet lcd
.SET ADR_RAD2 = $40
.SET ADR_RAD3 = $14
.SET ADR_RAD4 = $54

;***************************************************************************************************

.DSEG

PODSV: .BYTE 1
KBL: .BYTE 1

.CSEG

;*******************************************************************************

.MACRO BCKL_ON

PUSH R16
LDI R16, 1
STS PODSV, R16
CBI PLCD, BIT_BACKL
POP R16

.ENDMACRO

;*******************************************************************************

.MACRO BCKL_OFF

PUSH R16
LDI R16, 0
STS PODSV, R16
SBI PLCD, BIT_BACKL
POP R16

.ENDMACRO

;*******************************************************************************
;*******************************************************************************

.MACRO KURZ_ON

PUSH16 R16
LDS R16, KBL
ORI R16, 0B00001110
ANDI R16, 0B00001111
STS KBL, R16
RCALL VYSINST
POP16 R16

.ENDMACRO

;*******************************************************************************

.MACRO KURZ_OFF

PUSH16 R16
LDS R16, KBL
ORI R16, 0B00001100
ANDI R16, 0B00001101
STS KBL, R16
RCALL VYSINST
POP16 R16

.ENDMACRO

;*******************************************************************************
;*******************************************************************************

.MACRO BLIK_ON

PUSH16 R16
LDS R16, KBL
ORI R16, 0B00001101
ANDI R16, 0B00001111
STS KBL, R16
RCALL VYSINST
POP16 R16

.ENDMACRO

;*******************************************************************************

.MACRO BLIK_OFF

PUSH16 R16
LDS R16, KBL
ORI R16, 0B00001100
ANDI R16, 0B00001110
STS KBL, R16
RCALL VYSINST
POP16 R16

.ENDMACRO

;*******************************************************************************

.MACRO VYTSPZN

PUSH24 R16
LDI R18, 0B01000000
LDI ZL, LO(2 * @0) ;do registru Z (16 bitový reg.) začátek tabulky
LDI ZH, HI(2 * @0)
ZAPIS: MOV R16, R18
CALL VYSINST
LPM R16, Z+
CALL VYSDATA
INC R18
CPI R18, 0B10000000
BRNE ZAPIS
POP24 R16

.ENDMACRO

;*******************************************************************************

.MACRO CLRLCD

CALL CLLCD

.ENDMACRO

;*******************************************************************************

.MACRO INIT_LCD

PUSH16 R16
LDI R16, $FF ;do registru R16 data 0Fh
OUT PLCD, R16
LDI R16, $FF ;do registru R16 data 255
OUT DDR(PLCD), R16 ;nastaví celý port D jako výstupní
CALL LCDINI
VYTSPZN TABZN
POP16 R16

.ENDMACRO

;*******************************************************************************

.MACRO LCD1

PUSH16 R16

.IF @10 > 1

LDI R16, @2
CALL @1

.ENDIF

LDI R16, @0
CALL VYSDATA
POP16 R16

.ENDMACRO

;*******************************************************************************

.MACRO LCD_TEX

PUSH16 R16
PUSH16 R30

.IF @10 > 1

LDI R16, @2
CALL @1

.ENDIF

LDI ZL, LO((PC + 12) * 2) ;adresa tabulky v macru
LDI ZH, HI((PC + 11) * 2)
LPM R16, Z+ ;čte data dokud nenarazí na 255
CPI R16, 255
BREQ PC + 4
CALL VYSDATA
RJMP PC - 5

LPM R16, Z+
LSR ZH
ROR ZL
IJMP

.DB @0, 255

POP16 R30
POP16 R16

.ENDMACRO

;*******************************************************************************

.MACRO LCD_PRP

.IF @10 > 1

PUSH16 R16
LDI R16, @2
CALL @1
POP16 R16

.ENDIF

PUSH16 R16

.IF ISREG(@0)

MOV R16, @0
CALL VYSDATA

.ELSE

LDS R16, @0
CALL VYSDATA

.ENDIF

POP16 R16

.ENDMACRO

;*******************************************************************************

.MACRO LCD_PAS

.IF @10 > 1

PUSH16 R16
LDI R16, @2
CALL @1
POP16 R16

.ENDIF

PUSH16 R16

.IF ISREG(@0)

MOV R16, @0
ORI R16, 0B00110000
CALL VYSDATA

.ELSE

LDS R16, @0
ORI R16, 0B00110000
CALL VYSDATA

.ENDIF

POP16 R16

.ENDMACRO

;*******************************************************************************

LCDINI: LDI R16, 0 ;na bit PLCD.7 log 0 - pripojeni napajeni radice
OUT PLCD, R16
DELMS 100
LDI R16, $02 ;nastaveni 4b. prenosu
CALL OUTLCD ;podpr. pro vysl. 4 bitu
DELMS 20
LDI R16, $02 ;nastaveni 4b. prenosu
CALL OUTLCD ;podpr. pro vysl. 4 bitu
DELMS 20
LDI R16, $02 ;nastaveni 4b. prenosu
CALL OUTLCD ;podpr. pro vysl. 4 bitu
DELMS 20
LDI R16, 0B00101000 ;nastaveni 4b. prenos, dvouradkovy disp.
CALL VYSINST ;fontu 5x7
LDI R16, 0B00001100
CALL VYSINST
LDI R16, 0B00000110 ;nastaveni automat. posunu kurzoru
CALL VYSINST
VYTSPZN TABZN
CLRLCD
RET

;*****

CLLCD: LDI R16, 1 ;vynuluje displej
CALL VYSINST
DELMS 5
RET

;*****

VYSINST: LDI R17, 0B00000000 ;nastaví bit5 do log0 - instrukce
RJMP VYSBYT

VYSDATA: LDI R17, 0B00100000 ;nastaví bit5 do log1 - data
VYSBYT: CPI08 PODSV, 0
BRNE SVITI
ORI R17, (1 << BIT_BACKL)
SVITI: PUSH R16 ;zálohuje data
SWAP R16 ;vymění horní a dolní 4 bity
ANDI R16, $0F ;horní čtyři bity do log0, dolní zachová
OR R16, R17 ;domaskuje bit5 - data/instrukce+podsvětlení
CALL OUTLCD ;podprogram vyslání (horní čtyři bity)
POP R16 ;obnoví data
ANDI R16, $0F ;horní čtyři bity do log0, dolní zachová
OR R16, R17 ;domaskuje bit5 - data/instrukce+podsvětlení
CALL OUTLCD ;podprogram vyslání (dolní čtyři bity)
RET

;***************************************************************************************

RAD1: LDI R17, ADR_RAD1 ;0 - počáteční adresa prvního řádku
ADD R16, R17 ;přičte k počáteční adrese požadovanou pozici
ORI R16, 0B10000000 ;bit7 určuje instrukci nastavení pozice
CALL VYSINST ;vyšle instrukci
RET

RAD2: LDI R17, ADR_RAD2
ADD R16, R17
ORI R16, 0B10000000
CALL VYSINST
RET

RAD3: LDI R17, ADR_RAD3
ADD R16, R17
ORI R16, 0B10000000
CALL VYSINST
RET

RAD4: LDI R17, ADR_RAD4
ADD R16, R17
ORI R16, 0B10000000
CALL VYSINST
RET

;**

OUTLCD: OUT PLCD, R16 ;R16 na portd
DELUS 10
SBI PLCD, 4 ;nástupná hrana
DELUS 50
CBI PLCD, 4 ;sestupná
DELUS 10
RET

TABZN:
;č 0

.DB 0B00001010, 0B00000100
.DB 0B00001110, 0B00010000
.DB 0B00010000, 0B00010001
.DB 0B00001110, 0B00000000

;í 1

.DB 0B00000010, 0B00000100
.DB 0B00001100, 0B00000100
.DB 0B00000100, 0B00000100
.DB 0B00001110, 0B00000000

;ý 2

.DB 0B00000010, 0B00000100
.DB 0B00010001, 0B00010001
.DB 0B00001111, 0B00000001
.DB 0B00001110, 0B00000000

;á 3

.DB 0B00000010, 0B00000100
.DB 0B00001110, 0B00000001
.DB 0B00001111, 0B00010001
.DB 0B00001111, 0B00000000

;ž 4

.DB 0B00001010, 0B00000100
.DB 0B00011111, 0B00000010
.DB 0B00000100, 0B00001000
.DB 0B00011111, 0B00000000

;ó 5

.DB 0B00000010, 0B00000100
.DB 0B00001110, 0B00010001
.DB 0B00010001, 0B00010001
.DB 0B00001110, 0B00000000

;6

.DB 0B00000000, 0B00000000
.DB 0B00000000, 0B00000000
.DB 0B00000000, 0B00000100
.DB 0B00001110, 0B00011111

;7

.DB 0B00000100, 0B00001110
.DB 0B00011111, 0B00000000
.DB 0B00000000, 0B00000000
.DB 0B00000000, 0B00000000



LCD_modul.pdf
 Komentář:

Stáhnout
 Soubor:  LCD_modul.pdf
 Velikost:  141.51 kB
 Staženo:  79 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Standa33



Založen: Nov 07, 2009
Příspěvky: 295

PříspěvekZaslal: čt duben 04 2013, 16:05    Předmět: Citovat

Zkus tenhle program(zkusil jsem to jen v simulaci), jestli bude fungovat to LCD. Řadič ST7066 je podle datasheetu kompatibilní s HD44780(jediný rozdíl je, že se dá nastavit režim 1řádek _ 5x11bodů)

Pokut ano, tak bude někde chyba v tvém programu. S asm jsem také začínal, ale programování v C mi přijde snadnější a při přenosu na jiný typ uProcesoru(PIC,ARM) stačí malé úpravy(osobní názor).


Chyba bude zde(při inicializaci musí být odeslána 3x hodnota 03h):

kód:

LCDINI: LDI R16, 0 ;na bit PLCD.7 log 0 - pripojeni napajeni radice
 OUT PLCD, R16
 DELMS 100                                            ;(delay 15ms - 50ms)
 LDI R16, $02 ;nastaveni 4b. prenosu      (8bit přenos - $03)
 CALL OUTLCD 
 DELMS 20                                              ;delay 5ms
 LDI R16, $02 ;nastaveni 4b. prenosu      (8bit přenos - $03)
 CALL OUTLCD
 DELMS 20
 LDI R16, $02 ;nastaveni 4b. prenosu      (8bit přenos - $03)
 CALL OUTLCD
 DELMS 20

 LDI R16, 0B00101000 ;nastaveni 4b. prenos, dvouradkovy disp.

;nstavení 4bit přenos - $02(0b00000010)
 CALL OUTLCD ;podpr. pro vysl. 4 bitu
 DELMS 20

 LDI R16, 0B00001100
 CALL VYSINST
 LDI R16, 0B00000110 ;nastaveni automat. posunu kurzoru
 CALL VYSINST
 VYTSPZN TABZN
 CLRLCD



Test_LCD.zip
 Komentář:

Stáhnout
 Soubor:  Test_LCD.zip
 Velikost:  37.46 kB
 Staženo:  60 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Guitarister



Založen: Oct 11, 2012
Příspěvky: 11

PříspěvekZaslal: čt duben 04 2013, 17:28    Předmět: Citovat

díky moc, zkusím to a dám vědět jak to dopadlo
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pocitujlasku



Založen: Dec 12, 2005
Příspěvky: 2249
Bydliště: SR, Poprad

PříspěvekZaslal: čt duben 04 2013, 17:44    Předmět: Citovat

ako pisali viaceri, neinicializoval sa display. Mal som podobny problem, hned po pripojeni napajania som zacal komunikovat s displayom. A to sa mu nie vzdy pacilo. Na zaciatok programu som dal nejaky delay (v datasheete to bude spomenute) a potom uz fungoval v pohode.

Standa: mne zase viac vyhovuje asembler, vysledny program je ovela mensi a rychlejsi.

_________________
No vidis, a tak si sa bal
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Guitarister



Založen: Oct 11, 2012
Příspěvky: 11

PříspěvekZaslal: čt duben 04 2013, 17:51    Předmět: Citovat

kód:
LCDINI:      LDI   R16, 0         ;na bit PLCD.7 log 0 - pripojeni napajeni radice
      OUT   PLCD, R16
      DELMS   30
      LDI   R16, $03      ;nastaveni 8b. prenosu
      CALL   OUTLCD         ;podpr. pro vysl. 8 bitu
      DELMS   5
      LDI   R16, $03      ;nastaveni 8b. prenosu
      CALL   OUTLCD         ;podpr. pro vysl. 8 bitu
      DELMS   5
      LDI   R16, $03      ;nastaveni 8b. prenosu
      CALL   OUTLCD         ;podpr. pro vysl. 8 bitu
      DELMS   5
      LDI   R16, 0B00101000      ;nastaveni 8b. prenos, dvouradkovy disp.
      CALL   VYSINST         ;fontu 5x7
      LDI   R16, 0B00001100
      CALL   VYSINST
      LDI   R16, 0B00000110      ;nastaveni automat. posunu kurzoru
      CALL   VYSINST
      VYTSPZN   TABZN
      CLRLCD
      RET

;*****


takže pochopil jsem to správně, má to být nějak takhle??
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Standa33



Založen: Nov 07, 2009
Příspěvky: 295

PříspěvekZaslal: čt duben 04 2013, 19:54    Předmět: Citovat

Mělo by to být takhle:

kód:

LCDINI: LDI R16, 0 ;na bit PLCD.7 log 0 - pripojeni napajeni radice
 OUT PLCD, R16
 DELMS 50                                            ;(delay 50ms)
 LDI R16, $03
 CALL OUTLCD 
 DELMS 5                                              ;delay 5ms
 LDI R16, $03
 CALL OUTLCD
 DELUS 100                                           ;delay 100us (>40us)
 LDI R16, $03
 CALL OUTLCD
 DELUS 100                                           ;delay 100us(>40us)
 LDI R16, $02                                        ;přepnutí do 4bit komunikace
 CALL OUTLCD                                       
 DELUS 100                                           ;delay 100us

 LDI R16, 0B00001100
 CALL VYSINST
 LDI R16, 0B00000110                   ;nastaveni automat. posunu kurzoru
 CALL VYSINST
 VYTSPZN TABZN
 CLRLCD
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Honza_dy



Založen: Aug 20, 2004
Příspěvky: 2172
Bydliště: Brno-venkov

PříspěvekZaslal: čt duben 04 2013, 20:14    Předmět: Citovat

Vše podstatné už bylo řečeno takže malý OT.
Na této stránce je simulátor LCD displeje s řadičem HD44780. Mě docela pomohl když jsem se seznamoval s principem komunikace.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Guitarister



Založen: Oct 11, 2012
Příspěvky: 11

PříspěvekZaslal: pá duben 12 2013, 19:00    Předmět: Citovat

Tak jsem to vyzkoušel a furt to dělá to stejné, už fakt nwm co s tím, buďto je chyba v zapojení nebo někde v programu, vůbec netuším co mám dělat, už jsem snad zkusil všechno.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Guitarister



Založen: Oct 11, 2012
Příspěvky: 11

PříspěvekZaslal: so duben 13 2013, 9:22    Předmět: Citovat

Ještě mě napadlo, jestli to nemůže být trimrem na podsvětlení, použil jsem tam 4,7 kΩ.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Standa33



Založen: Nov 07, 2009
Příspěvky: 295

PříspěvekZaslal: so duben 13 2013, 12:35    Předmět: Citovat

Já jsem u LCD použil pro nastavení kontrastu odpor cca 1k - 2k2.

Ješte, jak máš nastavené pojistky na té ATmega?
Nemáš tam zapnuté CLKDIV8?
Už jsem mi stalo, že jsem zapoměl toto nastavení vypnou a pak jsem zjistil, že mi správně nefunguje program.

Zkus tenhle program, jestli to půjde:



Test_LCD_WH1602A.zip
 Komentář:

Stáhnout
 Soubor:  Test_LCD_WH1602A.zip
 Velikost:  62.14 kB
 Staženo:  74 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Poradna Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.21 sekund