Sari la conținut
ELFORUM - Forumul electronistilor

LCD cu AT89s52


Vizitator s_marius

Postări Recomandate

Vizitator s_marius

Salut.Am un LCD 16X2 si vreau sa il leg la un at89s52.Am reusit sa il pornesc si sa afisez un string predefinit de mine(bineinteles ca m-am inspirat).Doresc sa imi afiseze un string format din mai multe valori stocate in locatii de memorie(de exemplu data si ora) si nu am nici cea mai mica idee.As fi profund recunoscator daca m-ar ajuta cineva cu o subrutina sau chiar doar cu niste explicatii.

Link spre comentariu
  • Răspunsuri 11
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • aghora17

    4

  • mitescu

    1

In ideea ca scrii in C (altfel e cam greu), poti sa afisezi un string in care ai concatenat anterior cele 2 numere convertite cu o functie gen atoi(), in stringuri.alta sugestie ar fi sa incerci sa folosesti pointeri. am acasa ceva mai concret, asa ca da-mi un raspuns la post si asa o sa imi aduc aminte

Link spre comentariu
Vizitator s_marius

Deci eu lucrez in assembler dar am idee si de ceva C dar pentru uc nu am scris nici un program in C dar toate au un inceput :).Apropo si programarea in assembler este noua dar numai despre assembler am documentatie asa ca doar asta fac, nu ca as avea ceva impotriva C-ului.

Link spre comentariu

atunci, ca sa nu trebuiasca sa iti faci functie de conversie numeric in digit, poti sa incerci sa ai cate o variabila pentru fiecare digit, si sa o incrementezi de la 0 la 9, 0 la 5 pentru minute de exemplu si pur si simplu sa le afisezi unul dupa altul. (ma rog, daca valoarea este 1, trimiti pe ecran '1' si asa mai departe), altfel e mult prea complicat de explicat in scris, cand vorbesc generic despre un mcu cu care n-am lucrat.

Link spre comentariu
Vizitator s_marius

Multumesc pentru idee.Nu trebuie sa am cate o variabila pentru fiecare digit neaparat ... ma gandesc eu acum... ci doar o variabila pentru minute in decimal a carei valoare o impart la 10 catul sunt zecile de minute iar restul sunt unitatile de minute.Eu asa vad lucrurile am mai gasit ceva cu google si cred ca sunt pe drumul cel bun.Multumesc oricum si daca mai am o neclaritate o sa te mai intreb.

Link spre comentariu
Vizitator s_marius

Mi-a mai aparut o pb.Eu am o valoare hexazecimala in locatia de memorie.Imi trebuie o rutina care sa transforme hexazecimalul in codul caracterului corespunzator valorii mele.M-ar ajuta chiar si numai o idee.Multumesc anticipat.

Link spre comentariu

asta nu ar terbui sa fie o problema, din cate stiu 0b00000001 = 0x01 = 1, adica binar, hexa respectiv zecimal, si tine de compilator cum le interpreteaza. in plus valorile pana la 9 sunt echivalente in hexa si in zecimal. daca nu te-a lamurit, fii mai explicit. da un exempluar mai fi o idee, in codul ascii, cifrele sunt in ordine 0 de exemplu corespunde ascii zecimal 48, 1-49, 2-50. ai putea sa faci conversia adunand sau scazand acest 48, in functie de ce vrei sa convertesti in ce. (cifra in ascii, aduni, ascii in digit, scazi)

Link spre comentariu
Vizitator s_marius

Pai de exemplu : minute equ 07ch.........mov a,minutemov b,#10ddiv abin "a" am zecile de minute si in "b" am unitatile minutelorcum fac sa afisez pe lcd valoarea din a adica sa o transform din valoarea hexazecimala in cod ascii?

Link spre comentariu

;atentie afecteaza A,B,R2,R3 si flagurile (C,Z,...)

 

hex_asc: ; convert hex A to ascii in R2(HIGH) and R3(LOW)	Mov B,A	Anl A,#0f0h	Swap A	Mov R2,A	Clr C	Subb A,#10	Jnc hexasc1	Mov A,#30h	SJmp hexasc2hexasc1:	Mov A,#37hhexasc2:	Add A,R2	Mov R2,A	Mov A,B	Anl A,#0fh	Mov R3,A	Clr C	Subb A,#10	Jnc hexasc3	Mov A,#30h	SJmp hexasc4	hexasc3:	Mov A,#37hhexasc4:	Add A,R3	Mov R3,A                Ret
Link spre comentariu
Vizitator s_marius

Multumesc pentru ajutor.Acum dupa ce am transformat hex in ascii cum construiesc stringul ce tre sa il afisez?

ceva de genul

string: db 'ora:',
... si aici ar trebui sa pun ascii

Sau alta idee.

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