Bird Postat Octombrie 20, 2007 Partajează Postat Octombrie 20, 2007 Va salut ! Va rog , daca stiti , dati-mi niste idei cum fac sa defilez un text pe o singura linie a unui LCD cu 16 caractere . Si.... poate ma luminati si pe mine cum lucreaza comanda : LCDOUT portx.y,STR ArrayVar{\n} ? Nu am reusit sa o fac sa-mi afiseze ceva , nici cum . Cu multumiri ! Link spre comentariu
Vizitator Postat Octombrie 20, 2007 Partajează Postat Octombrie 20, 2007 poti s ail legi pe prtul lpt al calculatorului1e mai usor si cu ajutorul uni program (lcdhype spr ex)poti sa faci sa iti afiseze Link spre comentariu
Bird Postat Octombrie 20, 2007 Autor Partajează Postat Octombrie 20, 2007 poti s ail legi pe prtul lpt al calculatorului1e mai usor si cu ajutorul uni program (lcdhype spr ex)poti sa faci sa iti afiseze Ideea e urmatoare : vreau sa scriu cateva texte la adrese diferite intr-o memorie , sa le citesc din memorie si sa le " defilez " pe display la diferite conditii . Asta cu ajutorul unui program scris intr-un PIC . Link spre comentariu
Abram Burel Postat Octombrie 21, 2007 Partajează Postat Octombrie 21, 2007 Fiind un display de tip caracter, defilarea se va face caracter cu caracter (nu coloana cu coloana, cum se intampla la cele matriceale). Ideea e cam asa: - mesajul respectiv se inscrie intr-un buffer circular, adica unul care este citit de la cap la coada, iar cand ajunge la coada o ia de la cap - afisarea o faci incepand de la o pozitie indicata de un pointer care se... misca la fiecare pas - la display trimiti doar un sir de lungimea afisajului Sa incerc o reprezentare "grafica": QWERTYUIOP - bufferul---- - lungimea afisajului^ - pointer la pasul 1QWER - stringul afisat la pasul 1QWERTYUIOP - bufferul ^ - pointer la pasul 1WERT - stringul afisat la pasul 2QWERTYUIOP - bufferul ^ - pointer la pasul 1ERTY - stringul afisat la pasul 3 - si tot asa, evident la sfarsit se... intoarceImplementarea depinde de limbaj. Intr-unul de nivel inalt ai putea sa te folosesti de functii referitoare la stringuri pentru a compune stringul de afisat, avand ca parametrii un contor care merge de la 1 la lungimea stringului si o variabila pentru lungimea afisajului. Cam asta ar fi... ideea. Restul e... putina munca Link spre comentariu
Bird Postat Octombrie 21, 2007 Autor Partajează Postat Octombrie 21, 2007 [quote=............................... Implementarea depinde de limbaj. ......... Restul e... putina munca Link spre comentariu
Bird Postat Octombrie 21, 2007 Autor Partajează Postat Octombrie 21, 2007 Am reusit deplasarea caracterelor din sir , dar ...spre dreapta !! Acum , programul arata asa : i var word c var byte sir var word[31] x var byte sir = c loop: pause 500 ' Wait for LCD to startup lcdout $fe, 1 'sterge ecran for i = 0 to 30 lookup i,["incercari diverse de afisare !"],c 'citeste sirul lcdout $FE,$80+i,c 'afiseaza c (numai 16 caractere cat e linia ) pause 200 next i deplasare: pause 500 lcdout $fe , sir 'afisare sir , 16 caractere pause 500 lcdout $fe, $14 'deplasare la dreapta a cursorului , si afisare a intregului sir pause 300 goto deplasare Incercand sa folosesc comanda "$FE , $10 " care e deplasare la stanga a cursorului , textul se deplaseaza tot la dreapta ?! Poate mai aveti idei . Multumesc ! Link spre comentariu
Bamse Postat Octombrie 22, 2007 Partajează Postat Octombrie 22, 2007 :smt006 ' DECLARATIIDevice = 16F877aXTAL = 8 ' Tip LCDDeclare LCD_DTPORT PORTDdeclare lcd_rwpin portd.1Declare LCD_RSPIN PORTD.2Declare LCD_ENPIN PORTD.3Declare LCD_INTERFACE 4Declare LCD_LINES 1Declare LCD_TYPE 0'main programdim bucla as bytedim y as bytedim caracter as bytestart:for bucla = 16 to 0 step -1print at 1,bucla,text1delayms 100next buclaclsgoto starttext1: cdata "Sincronizare ",0'program scris in ProtonBasicmerge la simulare cu Proteus ISIS :yawinkle: Link spre comentariu
Bird Postat Octombrie 23, 2007 Autor Partajează Postat Octombrie 23, 2007 Ai incercat si cu un text mai lung ? Pentru un text de "16" am facut acelas lucru si eu , si stiu ca merge , dar daca e mai lung , si mai e citit si litera cu litera dintr-o memorie ?!?! Eu nu am reusit . Ce am constatat e ca textul se deplaseaza la dreapta cu sau fara comanda de mutare a cursorului . Link spre comentariu
Bamse Postat Octombrie 23, 2007 Partajează Postat Octombrie 23, 2007 ... nu am incercat Ai dreptate nu se afiseaza text mai lung vor trebui literele sa iasa prin stinga ecranului ! O sa sap mai adinc "" sa vad daca reusesc :yawinkle: Link spre comentariu
Abram Burel Postat Octombrie 23, 2007 Partajează Postat Octombrie 23, 2007 Nu ma pricep la Basic-urile astea de PIC (adica mi-e cam lene sa ma uit ce functii de prelucrare de stringuri au), dar uite cum ar arata codul intr-ub VB for Applications aproximativ - a este stringul trimis la display, iar afiseaza este functia/rutina corespunzatoare: i=1s="String to display longer than d"d=16while true if length(s)<= d then a=s else if length(s)-i+1>=d then a=mid(s,i,d) else a=right(s,length(s)-i+1) & left(s, d-(length(s)-i+1)) endif endif afiseaza(a) i=i+1 if i>length(s) then i=1wendNu ami stiu daca e := sau = si nici daca e len sau length, ca sa nu mai spun ca nu mi-e clar daca am calculat bine argumentele lui right si left, dar sper sa fie util. S-ar putea sa fie nevoie cazuri suplimentare pentru a nu lasa argumentele de pozitionare ale lui left si right sa ia valoarea 0. Daca se schimba incrementarea lui i in decrementare si left cu right (cu ajustarea argumentelor), ar trebui ca textul sa defileze invers. Link spre comentariu
Bird Postat Octombrie 26, 2007 Autor Partajează Postat Octombrie 26, 2007 > Nu ma pricep la Basic-urile astea de PIC Dupa cum am spus mai sus , nici eu nu ma pricep sa convertesc in PicBasicPro comenzile date de tine . Daca tot vrei sa ma ajuti , cand ai timp , foloseste-ti priceperea si fa-o . Cu multumiri ! Link spre comentariu
Abram Burel Postat Octombrie 26, 2007 Partajează Postat Octombrie 26, 2007 Bine ca nu ma bati :DIn opinia mea, a da ajutor cuiva care vrea sa invete programare nu inseamna sa-i dai codul, deci... succes! Link spre comentariu
Bird Postat Octombrie 26, 2007 Autor Partajează Postat Octombrie 26, 2007 In opinia mea, a da ajutor cuiva care vrea sa invete programare nu inseamna sa-i dai codul, deci... succes! Sunt de acord cu ceea ce spui . Dar de la a imi da sfaturi " in chineza "(cand eu am spus din start ca abea ma descurc cu PicBasicul ) si pana la codul dea gata ....e cale lunga . De fapt ,pe de o parte nu stiu de ce / pentru cine ,ai postat liniile acelea de cod , pe de alta parte ma gandesc ca nu-i rau ca le ai postat , or fi destui pe care s-ar putea sa-i ajute . Dar nu pe mine . Totusi iti multumesc pentru efort . Te rog sa ma scuzi . Link spre comentariu
Bird Postat Octombrie 26, 2007 Autor Partajează Postat Octombrie 26, 2007 In opinia mea, a da ajutor cuiva care vrea sa invete programare nu inseamna sa-i dai codul, deci... succes! .....cand am spus " sa o faci " ma referam la a cauta echivalentele comenzilor . Link spre comentariu
Bamse Postat Noiembrie 14, 2007 Partajează Postat Noiembrie 14, 2007 .. :smt006 Sal !!!dupa ceva intirziere.... 'afisare text curgatordevice = 16f877axtal 8'LCDdeclare lcd_interface 4declare lcd_lines 1declare lcd_enpin portb.3declare lcd_rspin portb.1declare lcd_rwpin portb.2'VARIABILEdim char as bytedim loop as bytedim n as byte'main programstart:data "Hello World "for loop = 16 to 0 step -1print at 1,loop,"Hello World "delayms 50next loopclsfor n = 0 to 16for loop = n to 10restore loopread charprint charnext loopdelayms 50clsnext ngoto start... codul este pentru 16F877A daca ai folosi un 18F... ai putea lucra mai usor cu stringuri ... daca reusesti sa faci programul mai "LOGIC" anunta !!! :smt006 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