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í 

atm12864d
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
nevim



Založen: Nov 15, 2009
Příspěvky: 19

PříspěvekZaslal: po listopad 16 2009, 10:26    Předmět: Citovat

Tak problem vyresen!!
kod je spravny, ale ja jak jsem si s tim hral a mel jsem 3 verze, tak header byl stale puvodni. pred chvilkou sem si toho vsilm, prepsal na 3 a jede to!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: po listopad 16 2009, 11:00    Předmět: Citovat

Klasická chyba mezi židlí a klávesnicí Wink Ale hlavně, že to funguje.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
apam



Založen: Mar 17, 2007
Příspěvky: 111

PříspěvekZaslal: ne prosinec 06 2009, 18:29    Předmět: Citovat

mam taky to lcd a pokousim se ho rozjet v bascomu, zapnout ho dovedu ale zobrazit pixel a smazat ho tam kde chci se mi nedari...
co musim udelat kdyz chci zapsat treba pixel na souradnice (x , y) (10 , 20)
vyvod rst je trvale na +5v nejde pouzit knihovna z bascomu glcdks108.lib pac se dataport sklada ze dvou portu a navic nefacha na 16mhz s megou32.
dik za radu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: ne prosinec 06 2009, 21:40    Předmět: Citovat

Displej je rozdělený na dvě poloviny, jsou v něm dva řadiče, jeden pro pravou půlku jeden pro levou. Při zápisu (čtení) dat a instrukcí je tedy potřeba rozhodnout, pro který řadič jsou a do toho řadiče je zapsat (přečíst). Jsou to tedy jakoby dva samostatné displeje 64x64bodů vedle sebe. Svisle jsou organizované jako 8 stránek (0 až 7) pod sebou, každá stránka je 8 řádek (64 řádek celkem). Vodorovně mají 64 sloupců (0 až 63). Číslo stránky se nastavuje instrukcí Set Page (X Address) binárně 10111PPPb, číslo sloupce instrukcí Set Address (Y Address) binárně 01YYYYYYb. Data se zapisují/čtou vždy po 8-bitech, které reprezentují 8 bodů pod sebou v nastavené stránce a aktuálním sloupci. Bod na pozici 20 vodorovně a 10 svisle (počítáno od nuly) tedy odpovídá sloupci 20, stránce 1, bitu 2. Po zapsání/přečtení dat se automaticky inkrementuje číslo sloupce. Před zápisem příkazů a čtením/zápisem dat je potřeba otestovat čtením statusu (Status Read), zda je displej schopný příkaz/data přijmout, případně počkat.
Displej má ještě jeden registr, Display Start Line, který říká, která řádka (0-63) je zobrazená jako první shora. Dá se tak posouvat obsah displeje nahoru nebo dolu bez nutnosti přesouvat všechna data v paměti displeje. Pokud je číslo počáteční řádky nenulové, je nutno tento posun připočítat při výše uvedeném výpočtu svislé pozice bodu na displeji.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
apam



Založen: Mar 17, 2007
Příspěvky: 111

PříspěvekZaslal: ne prosinec 06 2009, 22:21    Předmět: Citovat

aha no uz tomu rozumim, vlastne je to uplne jednoduche. diky moc za drahocenou radu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
apam



Založen: Mar 17, 2007
Příspěvky: 111

PříspěvekZaslal: út prosinec 08 2009, 12:47    Předmět: Citovat

tak jsem zde něco vytvořil, problém je že když chci zapsat pixel na souřadnici 0,0 zapíše se až na 1,0 a 63,0 se zapíše jako 0,0 to samé i na druhé polovině lcd neví někdo čím to může být asi to bude nějak souviset s automatickou inkrementací v ose x nebo tak něco...asi.
kód:
'*******************************************************************************
'* Ovladani lcd s ks0108 + atmega32 16MHz **************************************
'* apam@seznam.cz **************************************************************
'*******************************************************************************
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 128
$swstack = 128
$framesize = 128
'$sim
'*******************************************************************************
'* LCD Konfigurace pinu ks108 **************************************************
'*******************************************************************************
Config Portc = Output
Config Portd.1 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Porta.3 = Output
Config Portd.6 = Output

Dataport Alias Portc
Rs Alias Portd.1
Rw Alias Portd.2
E Alias Portd.3
Cs2 Alias Porta.3
Cs1 Alias Portd.6

'*******************************************************************************
'* Deklarace F-ce LCD **********************************************************
'*******************************************************************************
Declare Sub Ks_init()
Declare Sub Ks_cls(byval Cx As Byte)
Declare Sub Ks_pset(byval Lx As Byte , Byval Ly As Byte , Byval Lz As Byte)

'*******************************************************************************
'* Promenne ********************************************************************
'*******************************************************************************
Dim Horizontala As Byte                                     'posuv lcd
Dim A As Byte

'*******************************************************************************
'* Jina nastaveni **************************************************************
'*******************************************************************************
Horizontala = 192                                           ' 192 =0 pro posouvani obsahu lcd

'*******************************************************************************
'* Vlastni program *************************************************************
'*******************************************************************************

Call Ks_init()
Call Ks_cls(0)

Do
   Call Ks_cls(0)
   Wait 1

   For A = 0 To 127                                         'nakresli horizontalni caru 0-127
      Call Ks_pset(a , 10 , 1)
      Waitms 10
   Next

   For A = 0 To 127                                         'smaze horizontalni caru 0-127
      Call Ks_pset(a , 10 , 0)
      Waitms 10
   Next

   Call Ks_pset(0 , 0 , 1)                                  'zapisuje pixelz podle souradnic
   Call Ks_pset(0 , 63 , 1)
   Call Ks_pset(63 , 0 , 1)
   Call Ks_pset(63 , 63 , 1)
   Call Ks_pset(64 , 0 , 1)
   Call Ks_pset(64 , 63 , 1)
   Call Ks_pset(127 , 0 , 1)
   Call Ks_pset(127 , 63 , 1)
   Wait 3
Loop

End                                                         'end program
'*******************************************************************************

'*******************************************************************************
'* LCD INIT fce KS_INIT ********************************************************
'*******************************************************************************
Sub Ks_init()

Reset Rs
Reset Rw

Set Cs1
Set Cs2

Waitus 42
Dataport = &HC0                                             ' start line
Gosub Ecko

Waitus 42
Dataport = &H40                                             ' adresa
Gosub Ecko

Waitus 42
Dataport = &HB8                                             ' stranka
Gosub Ecko

Waitus 42
Dataport = &H3F                                             ' zapnuti lcd
Gosub Ecko

Reset Cs1
Reset Cs2

End Sub

'*******************************************************************************
'* Clear LCD fce KS_cls(x), x=1=invert *****************************************
'*******************************************************************************
Sub Ks_cls(cx As Byte)
Local Ccx As Byte , Ccy As Byte

Ccy = 0

Set Cs1
Set Cs2
Reset Rw
Reset Rs

Dataport = Horizontala                                      'start line
Gosub Ecko
Dataport = 64                                               'adresa
Gosub Ecko
Dataport = 184                                              'stranka
Gosub Ecko

If Cx = 0 Then
   For Ccy = 0 To 7
      Dataport = Ccy + 184
      Gosub Ecko
      Set Rs
      For Ccx = 0 To 63
         Dataport = 0
         Gosub Ecko
      Next
      Reset Rs
   Next
Else
   For Ccy = 0 To 7
      Dataport = Ccy + 184
      Gosub Ecko
      Set Rs
      For Ccx = 0 To 63
         Dataport = 255
         Gosub Ecko
      Next
      Reset Rs
   Next
End If
Reset Rs
Reset Cs1
Reset Cs2
End Sub

'*******************************************************************************
'* PIXEL SET fce KS_PSET *******************************************************
'*******************************************************************************
Sub Ks_pset(lx As Byte , Ly As Byte , Lz As Byte)
Local Ylcd As Byte , Lcdram As Byte , Stranka As Byte

If Lx > 127 Then Lx = 127
If Ly > 63 Then Ly = 63

Stranka = Ly / 8
Ylcd = Ly Mod 8

If Lx < 64 Then
   Set Cs1
   Reset Cs2

   Reset Rs
   Reset Rw

   Dataport = 64 + Lx
   Gosub Ecko
   Dataport = 184 + Stranka
   Gosub Ecko
   Dataport = 0

   Set Rs
   Set Rw

   Lcdram = Dataport
   Gosub Ecko

   Reset Rs
   Reset Rw

   If Lz = 0 Then
      Reset Lcdram . Ylcd
   Else
      Set Lcdram . Ylcd
   End If

   Set Rs

   Dataport = Lcdram
   Gosub Ecko

Else

   Reset Cs1
   Set Cs2

   Reset Rs
   Reset Rw

   Dataport = Lx
   Gosub Ecko
   Dataport = 184 + Stranka
   Gosub Ecko
   Dataport = 0

   Set Rs
   Set Rw

   Lcdram = Dataport
   Gosub Ecko

   Reset Rs
   Reset Rw

   If Lz = 0 Then
      Reset Lcdram . Ylcd
   Else
      Set Lcdram . Ylcd
   End If

   Set Rs

   Dataport = Lcdram
   Gosub Ecko

End If

Reset Rs
Reset Cs1
Reset Cs2

End Sub


Ecko:
Waitus 1
Set E
Waitus 3
Reset E
Waitus 3
Return
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: út prosinec 08 2009, 13:01    Předmět: Citovat

Nikde nevidím, že bys testoval Busy flag. Ten posun je způsoben tím, že před zápisem čteš, i čtení posouvá adresu sloupce. Navíc při čtení je potřeba číst dvakrát (viz datašít).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
apam



Založen: Mar 17, 2007
Příspěvky: 111

PříspěvekZaslal: út prosinec 08 2009, 13:14    Předmět: Citovat

a kdy se musi testovat busy flag? pred kazdym zapisem?, s tim posuvem mas pravdu uz jsem to opravil.zitra na to mrknu.
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 -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
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.20 sekund