Sari la conținut
ELFORUM - Forumul electronistilor

Frecventmetru cu probleme


Vizitator AmaliaMia

Postări Recomandate

Da, la acest lucru ma refeream. Deocamdata libraria suporta LCD cu maxim 2 linii si 20 coloane. dar cu o modificare simpla in functia LCD_cursor() poate fi facuta sa afiseze si pe 4 linii (trebuie adaugate inca 2 case-uri pentru linia 3 si linia 4.

 

De fapt, in loc de:

void LCD_cursor(unsigned char  x,unsigned char y){ unsigned short loc; switch (x) {      case 1:           loc = 0x80 + (y-1);           break;      case 2:           loc = 0x80 + (y-1) + 64;           break;      default:           loc = 0x80 + (y-1);           break; }  LCD_RS = 0;  LCD_write(loc);  LCD_RS = 1;  millis(2);}

devine asa:

void LCD_cursor(unsigned char  x,unsigned char y){ unsigned short loc; switch (x) {      case 1:           loc = 0x80 + (y-1);           break;      case 2:           loc = 0x80 + (y-1) + 64;           break;      case 3:           loc = 0x80 + (y-1) + 20;           break;      case 4:           loc = 0x80 + (y-1) + 84;           break;      default:           loc = 0x80 + (y-1);           break; }  LCD_RS = 0;  LCD_write(loc);  LCD_RS = 1;  millis(2);}

Si gata. :)

 

LE: Functia accepta parametri incepand cu 1. Adica LCD_cursor (1,1) inseamna ca se seteaza cursorul pe prima linie de sus si primul caracter.

Si inca o chestie, nu m-a interesat modul 8bit si am implementat doar 4bit, cu pinul RW al LCD, default legat la GND.

 

 

LLE: De fapt ca functia sa fie fool-proof complet  trebuie sa fie asa:

// x = no. of the line, starting with 1// y = no. of the column, starting with 1void LCD_cursor(unsigned char  x,unsigned char y){ unsigned short loc; if (y > 20) y -= 20; switch (x) {      case 1:           loc = 0x80 + (y-1);           break;      case 2:           loc = 0x80 + (y-1) + 64;           break;      case 3:           loc = 0x80 + (y-1) + 20;           break;      case 4:           loc = 0x80 + (y-1) + 84;           break;      default:           loc = 0x80 + (y-1);           break; }  LCD_RS = 0;  LCD_write(loc);  LCD_RS = 1;  millis(2);}
Editat de mars01
Link spre comentariu
  • Răspunsuri 15
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Liviu M

    6

  • mars01

    4

  • bolek

    1

  • Dan57

    1

Zile populare

Top autori în acest subiect

Imagini postate

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