Sari la conținut
ELFORUM - Forumul electronistilor

Probleme cu LCD Nokia 3310 conectat la PIC


Zerro

Postări Recomandate

  • Răspunsuri 79
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Zerro

    21

  • nassus

    15

  • sofian

    11

  • Abram Burel

    6

Top autori în acest subiect

Imagini postate

Pai ma umplusem de nervi si alta solutie nu aveam .. pe deasupra mi-a picat si telefonul asta in mana si l-am desfacut sa pot sa verific LCD-ul ... insa telefonul e inca ok si nu pot sa folosesc din el bucata unde e fixat lcd-ul ... ca acum nu mai am decat d-alea la care se pune elastomer ... tre sa fac o improvizatie sa pot folosi lcd-ul de tipul asta ... am si lcd si elastomer ... tre sa fac niste placute cu tot cu led-uri de iluminare a lcd-ului .... cred ca ceea ce a facut @sofian e ceva homemade ... poate posteaza el pcb-ul de la placuta asta ....Multumesc tuturor pentru solutii si idei ... o sa revin cu noutati la momentul in care o sa-l fac sa mearga .... :smt001

Link spre comentariu

Cauti pe net o aplicatie care se numeste FastLCD ; in prealabil convertesti imaginea ta intr-una black/white dupa care o incarci in programul asta si o salvezi sub forma de fonturi sau array ... acum nu-ti ramane decat sa incarci respectivele chestii pe display .... vezi sa ai imaginea de dimensiunea LCD-ului (in pixeli vorbind)Spor la treaba!!! E un pic mai complicat si migalos insa merge treaba.

Link spre comentariu
  • 2 săptămâni mai târziu...

super beton programul (FastLCD).. oricum m-am lovit acum alta problema.. vreau sa afisez caractere de 15x24 pixeli si nu reusesc pt ca imi afiseaza 15x8 si nu imi dau seama cum sa fac sa treaca pe liniile urmatoare si sa printeze ce o mai ramas din caracter..

Link spre comentariu

un exemplu de cod ar fi binevenit..

In arhiva zip atasata mai sus exista fisierul nokia3310.c iar in acest fisier avem:

const char table[480] = {0x00,0x00,0x00,0x00,0x00,	// 20 space		ASCII table for NOKIA LCD: 96 rows * 5 bytes= 480 bytes0x00,0x00,0x5f,0x00,0x00,	// 21 !			Note that this is the same set of codes for character you0x00,0x07,0x00,0x07,0x00,	// 22 "			would find on a HD44780 based character LCD. :)0x14,0x7f,0x14,0x7f,0x14,	// 23 #			Also, given the size of the LCD (84 pixels by 48 pixels),0x24,0x2a,0x7f,0x2a,0x12,	// 24 $			the maximum number of characters per row is only 14. ...
Se observa ca in aceasta tabela avem caracterele ASCII tiparibile (0x20 - 0x7E). "Desenul" fiecarui caracter este realizat din 5 octeti dar fiind vorba de un display grafic se pot defini si alte "fonturi".

 

De exemplu, la codul 0x21 (semnul exclamarii) daca scriem in binar acei 5 octeti din tabela (0x00, 0x00, 0x5F, 0x00, 0x00) se obtine:

 

00000000 00000000010111110000000000000000
care este exact caracterul '!'.

Este la fel pentru toate celelalte caractere ASCII.

 

La un display alfanumeric nu se poate face treaba asta decat pentru un numar foarte mic de caractere (doar 8 caractere? - cu care se pot face bargraph-uri sau altceva), intr-o memorie speciala a LCD-ului.

 

Deci acest program tot asa face, isi defineste caracterele.

Display-uri grafice mai complexe pot avea caractere gata definite, chiar seturi (fonturi) mai multe decat unul.

Link spre comentariu

eu am reusit sa fac fonturile care trebuie dar problema e cum le afisez.. codul pe care il folosesc e cel postat undeva mai sus intr-un zip.. iar acolo functia de afisare a unui caracter arata cam asa : void putchar(char character){ int tablept, count, char_column;// if ((character<0x20)||(character>0x7f)) {return;} // Exit function if character is not found. tablept = ((5*character) - 160); // Point to the columns of the character in the table. for (count=5;count>0;count--) // Draw the columns to print the character. { char_column = table[tablept]; writedata(char_column); tablept++; } writedata(0x00); // 1 pixel spacing per character.}problema e linia asta: tablept = ((5*character) - 160); care imi da batai de cap .. eu am un tablou cu 10 caractere doar.... de 15*24 pixeli si am modificat linia aia cam asa : tablept = ((15*character) - 10); dar nu merge.. apoi am modificat-o asa: tablept = ((1*character) - 10); si imi afiseaza niste chestii care nu arata a caractere .. am modificat si bucla for cu count = 45; .. oricum HELP

Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări