Jump to content
ELFORUM - Forumul electronistilor

COD BASCOM PT AFISARE PE DISPLAY CU 7 SEGMENTE


Recommended Posts

Buna seara tuturor! Stiu ca s-a mai discutat despre acest subiect si chiar am vizionat cred ca toate discutiile de pe acest forum si nu numai. dar poate sunt la inceput si nu inteleg eu.... vreau sa afisez pe un singur digit de 7 segmente( cifre de la 0 la 9 cu un atmega 8 sau 8835 in bascom. am intalnit cateva exemple dar nu sunt corecte dupa ce le-am compilat in bascom. am mai vazut coduri in bascom pt 3 sau 4 digiti dar erau cu driver pt display si eu nu am asa cv . am citit si raspunsurile lui Danzup dar tot nu m am lamurit. multumesc daca mai are cineva rabdareuitati ce am gasit si nu merge: $regfile = "m8def.dat"$crystal = 1000000Config Porta = OutputPorta = 255Dim I As ByteDim X(16) As ByteRestore Value_tableFor I = 1 To 16Read X(i)NextDoFor I = 1 To 16Porta = X(i)Waitms 250NextLoopEndValue_table:Data &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78Data &H00 , &H10 , &H08 , &H03 , &H46 , &H21 , &H06] , &H0E

Link to comment
  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

Ai zis ca folosesti ATmega8. Am cateva intrebari:

1. Ce schema ai folosit pentru legarea afisajului la microcontroller? (pune schema)

2. Programul e gresit, de unde l-ai luat?

 

Asa cum e nu are cum sa mearga. Daca ne uitam in datasheet-ul pentru ATmega 8 (la pinout) se vede ca nu are PORTA. Incearca cu PORTD de exemplu si macar compilarea merge.

Mai ai si o paranteza dreapta inchisa inainte de ultima virgula, paranteza care nu stiu ce cauta acolo, am scos-o.

 

$regfile = "m8def.dat"$crystal = 1000000Config Portd = OutputPortd = 255Dim I As ByteDim X(16) As ByteRestore Value_tableFor I = 1 To 16   Read X(i)NextDo   For I = 1 To 16      Portd = X(i)      Waitms 250   NextLoopEndValue_table:Data &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78Data &H00 , &H10 , &H08 , &H03 , &H46 , &H21 , &H06 , &H0E
Mai departe nu am ce sa mai verific. Ca sa putem continua pune o poza cu schema montajului. Programul depinde si de cum legi afisorul la uC (microcontroller).
Link to comment

Salut!

Hai sa clarificam ceva!

Primo: numai "inghitind" pe nemestecate o aplicatie pentru un anumit microcontroller nu obtinem decat nervi si ii tocam si pe ai altora!

Secundo: Orice program am incerca sa facem, trebuie inainte de toate sa avem o schema a aplicatiei pe care dorim sa o realizam (operatia implica studierea foii/foilor de catalog a componentelor pe care le vom folosi si adaptarea aplicatiei la componentele existente in cutia cu "maimute" a fiecaruia dintre noi):

Tertio: Odata ce am indeplinit primele doua puncte trecem la realizarea "virtuala" a aplicatiei si simularea ei in cazul in care software-ul pe care il avem ne permite acest lucru.

Odata obtinute rezultatele scontate trecem la realizarea fizica a aplicatiei care, uneori, ne da batai de cap ca nu functioneaza asa cum a rezultat din simulare (soft-ul folosit nu are inteligenta artificiala si nu poate anticipa singur - fara sprijin extern - operator - influentele dintre unele trasee, a unor componente declasate sau a unor erori de proiectare a cablajului imprimat).

Bun, acum revenim la problema supusa dezbaterii!!

Pentru o buna simulare a afisarii unor cifre pe un afisor cu 7 segmente, programul prezentat de user ar trebui, in realitate, sa se prezinte astfel:

$regfile = "m8def.dat"

 

$crystal = 1000000

 

Config Portd = Output

Portd = 255

 

Dim I As Byte

Dim X(16) As Byte

Restore Value_table

 

For I = 1 To 10

Read X(i)

Next

 

Do

For I = 1 To 10

Portd = X(i)

Waitms 500

 

Next

Loop

 

End

 

Value_table:

Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7C , &H07

Data &H7F , &H67

Textul marcat cu rosu reprezinta modificarile facute pentru a permite ATMega8 sa afiseze corect cele 10 cifre (de la 0 la 9) pe un afisor cu catod comun segmentul a fiind conectat la portul D0, iar segmentul g la portul D6, punctul zecimal nefiind inclus in tabloul de date dar, daca se doreste acest lucru, el va fi conectat la portul D7 si in tabloul de date se va insera &H80.

In fisierul 7seg este prezentata schema de simulare a prgramului de mai sus, iar in fisierul cod_7seg este prezentat modul in care se stabilesc codurile pentru afisarea corecta a cifrelor pe afisorul cu 7 segmente.

Cu stima

Link to comment

Uite ce cauti:...................$regfile = "m8def.dat"$crystal = 8000000Ddrd = &B1111111Do0:Portd = -320Wait 11:Portd = -263Wait 12:Portd = -348Wait 13:Portd = -336Wait 14:Portd = -359Wait 15:Portd = -366Wait 16:Portd = -381Wait 17:Gosub RstPortd = -264Wait 18:Gosub RstPortd = -512Wait 19:Gosub RstPortd = -368Wait 1LoopRst:Portd = 255Return..............Si schema mai jos!Este cel mai simplu proiect!

Link to comment

Unu la mana nu este imaginat de mine, ci este facut de un user de pe acest forum care ma ajutat pe mine sa invat cum sta treaba cu programele in bascom!Doi la mana , lam modificat pentru atmega8, el era facut pentru attiny! modificare minora!Iar cum functioneaza si ce inseaman cifrele explic imediat!$regfile = "m8def.dat"$crystal = 8000000Ddrd = &B1111111 >>> configurarea portului D pentru afisarea pe 7 biti!Do0: >>> cum vedeti si voi -320 este afisare "0" pe digit, -320 sunt biti de pe portul D al CI-ului, -320 defineste porturile cu bitul "0" pe porturile PD0-PD6, adik segmentele digitului>> A,B,C,D,E,F.Portd = -320Wait 1 >>>> asteapta 1 secunda1:>>>> aceasi chestie ca la 0 doar ca afiseaza 1Portd = -263Wait 12:Portd = -348Wait 13:Portd = -336Wait 14:Portd = -359Wait 15:Portd = -366Wait 16:Portd = -381Wait 17:Portd = -264Wait 18:Portd = -512Wait 19:Portd = -368Wait 1LoopIar restul cu GOSUB nu trebuie in acest program, lam copiat fara sa vreau!Acum esti lamurit NICO_2010?Am uitat sa zic ca programul functioneaza, testat de mine!Si sunt multe alte variante de afisaj!Daca vrea sa mai postez o alta varianta care face acelasi lucru, o fac!Este acea care o folosesc eu cel mai des, este mult mai usor de inteles, dar ocupa mai mult programul!

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines