INCEPATOR21 Postat Martie 10, 2011 Partajează Postat Martie 10, 2011 buna seara , mi am cumparat un lcd 16 x2 compatibil hd447... si am un atm 8535. Am copiat un cod de undeva sa mi afiseze ceva simplu dar doar imi apar "patratelele "de pe prima linie nimic scris. Am configurat in bascom dar si in soft db7- portb7, db6 -portb6, etc asa cum se vede in program si am legat si R/W la masa dar tot nu apare decat 1 linie. are cineva vreo idee? Pe unele site-uri din afara cineva dadea ca solutie configurarea "jtag" ceva de genul care habar nu am ce este $regfile = "m8535.dat"$crystal = 4000000Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2Dim A As ByteConfig Lcd = 16 * 2ClsLcd "Hello world."Wait 1LowerlineWait 1Lcd "Shift this."Wait 1End Link spre comentariu
fubiansky Postat Martie 10, 2011 Partajează Postat Martie 10, 2011 Incearca si cu, codul de mai jos. Mie imi functioneaza perfect $regfile = "m8535.dat"$crystal = 4000000Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2Config Lcd = 16 * 2Cursor OffWaitms 200ClsHome UpperLcd " Hello world. "Wait 1LowerlineLcd " Shift this. "Wait 1End Link spre comentariu
INCEPATOR21 Postat Martie 10, 2011 Partajează Postat Martie 10, 2011 Am incercat dar nu merge :cry: am setat chiar si in bascom pinii dinainte , ce as putea sa fac sa nu mi mai apara doar prima linie?Am toate conexiunile facute , sa incerc r/w la vcc (desi creau sa mi afiseze ceva pe lcd, nu sa scriu)? Link spre comentariu
srdjan Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 faptul ca apare prima linie inseamna ca LCD-ul este alimentat (dooh) si ca s-a reglat contrastul la o valoare buna, dar mai inseamna ca desi e pornit, LCD-ul nu este initializat. Nu stiu cum lucreaza bascom dar stiu ca in C ai de definit si DDR (DATA DIRECTION REGISTER) pentru proturile folosite ca sa stie daca e intrare sau iesire. In cod-ul postat mai sus nu vad o asemenea definitie; face compilatorul automat? mai vad ca ai setat frecventa cristaulului la 4mhz... dar din fusebits sigur ai setat Osci. Int. 4 Mhz? si inca ceva as sugera... sa introduci un delay de la pornirea MCU-ului si pana la initializarea LCD-ului.Pe langa chestiile astea de soft sugerez sa folosesti conzi de 100nF atat la MCU cat si la LCD intre VCC(VDD) si GND(VSS) cat mai aproape de ele. Si o ultima chestie, pe liniile de date si de control sa folosesti PULL-UP RESISTORS (4.7kR - 10kR) Link spre comentariu
yo6pir Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 Esti sigur ca acel afisaj este compatibil HD44780? Ce model este? Da un cod ce scrie pe el, sa vedem. Ori ai conectat firele gresit la el. Link spre comentariu
INCEPATOR21 Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 Am atasat poze cu lcd , cumparat de pe un site din afara. Referitor la initializare nu stiu exact cum treb facut dar in bascom am intrat la options-compiler-lcd si setez pinii lcd la pinii uc ului si tipul lcd ului. iar pt atm am setat si frecventa din fusebiti. Link spre comentariu
nico_2010 Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 Pe langa sfaturile celorlalti as adauga faptul ca, potrivit progarmului postat de tine, uC habar nu are ce trebuie sa faca cu Portul B atata timp cat nu ii spui ca este port de iesire sau de intrare.Introdu: Config PORTB = outputsi, eventual, INITLCDLate edit:Cu asta incepe orice program in BASCOM$regfile = "8535def.dat" ' specify the used micro$crystal = 8000000 ' used crystal frequency'$baud = 19200 ' use baud rate$hwstack = 32 ' default use 32 for the hardware stack$swstack = 8 Link spre comentariu
INCEPATOR21 Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 nu ma pricep deloc la lcd-uri acum invat si voi incerca cum mi ati spus. Problema este ca nimeni nu pune coduri complete doar ce v-am scris ca si cum ar vrea sa incurce ) pun aproape tot inafara de init si de declararea porturilor care era normala pt celelalte softuri dar nu stiam ca si pt lcd. Oricum de ce le posteaza incomplet nu stiu. Nu ma refer la cei de aici ci de pe celelalte forumuri si tot netul(aproape :P) Link spre comentariu
INCEPATOR21 Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 absolut nici un rezultat desi am setat in bascom pinii si am scris si softul:$regfile = "m8535.dat"$crystal = 4000000Config PORTB = outputConfig Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2Config Lcd = 16 * 2 INITLCDCursor OffWaitms 200ClsHome UpperLcd " Hello world. "Wait 1LowerlineLcd " Shift this. "Wait 1End Link spre comentariu
srdjan Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 ar mai fi ceva de adaugat... (btw... nu ai confirmat sugestiile hardware daca le-ai pus in practica) libraria de control a lcd-ului poate are setat default sa lucreze pe 8 biti de date iar tu vad ca lucrezi cu 4 biti de date. cred ca trebuie sa definesti modul de lucru pe 4 biti inainte de initalizarea lcd-ului. mentionez ca nu stiu cum se face cu bascom ca ma uit ca si curca-n beton la codul ala. fa si o schema/poza sa vedem ce e acolo. uite asta am mai gasit pe goagal: Config lcdmode = PORT nu stiu ce face dar la tine lipseste... si cica default e pe 4 biti de date asa cum folosesti si tu, deci nu asta ar fi problema. Link spre comentariu
nico_2010 Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 absolut nici un rezultat desi am setat in bascom pinii si am scris si softul: $regfile = "m8535.dat" $crystal = 4000000 $hwstack = 32 ' default use 32 for the hardware stack $swstack = 8 si astea trebuie introduse in program. Config PORTB = output Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2 Config Lcd = 16 * 2 INITLCD Cursor Off Waitms 200 Do Cls locate 1,1 ; pozitioneaza cursorul pe primul rand prima coloana Lcd " Hello world. " Wait 1 locate 2,1 Lcd " Shift this. " Wait 1 loop End Daca nici asa nu merge, verifica:-existenta unor scurturi intre pinii de date sau intre pinii RS/RW/E -faptul ca pinul R/W(pinul 5) este pus la masa - existenta tensiunii de alimentare pe pinul 2 (Vcc) - faptul ca ce ai in program din pdv al conexiunilor la LCD corespund cu realitatea cruda/practica(intelegi ce vreau sa spun) Link spre comentariu
INCEPATOR21 Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 Am verificat tot. Nu merge de nici o culoare. Bineinteles ca am setat si la options in bascom lcd 16 x 2 si conexiunile pini lcd cu pini atmega (asta o facusem de la inceput). Doar ramane aprins cu 1 linie din patratele . Sa fie ars? Link spre comentariu
srdjan Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 nu e ars. doar ca nu comunici cu el pe limba lui Link spre comentariu
INCEPATOR21 Postat Martie 11, 2011 Partajează Postat Martie 11, 2011 are 16 pini dar pe spate ii are numerotati am atasat si o poza. Ar trebui sa ii leg la portul c ai atmega? sa aibe 8535 pe port b ceva? in datasheet nu zice nimic Link spre comentariu
INCEPATOR21 Postat Martie 12, 2011 Partajează Postat Martie 12, 2011 Dupa 8-10 ore de stat incontinuu pana azi dimineata la 8 am realizat performanta sa mi afiseze mesajul pe lcd. Am schimbat pana si modulul de display cu altul, nici un rezultat. Am schimbat codul in toate variantele posibile, cu options di Bascom-> data mode: pin apoi bus si nr biti pe 4 sau 8 felul lc ului 16 x 2 si 16 x 1a si pana l urma foarte tarziu am reusit schimband atmega 8535 cu altul.Desi programatorul mi l recunoaste si scrie de ce nu a mers? Multumesc tuturor celor care m au ajutat Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum