INCEPATOR21 Postat Decembrie 10, 2010 Partajează Postat Decembrie 10, 2010 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 spre comentariu
Vizitator Postat Decembrie 10, 2010 Partajează Postat Decembrie 10, 2010 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 , &H0EMai 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 spre comentariu
nico_2010 Postat Decembrie 13, 2010 Partajează Postat Decembrie 13, 2010 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 spre comentariu
Cilibiu Postat Decembrie 19, 2010 Partajează Postat Decembrie 19, 2010 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 spre comentariu
nico_2010 Postat Decembrie 19, 2010 Partajează Postat Decembrie 19, 2010 Salut Cilibiu!Poate ne explici si noua, profanilor, cum functioneaza programul imaginat de tine?Ai lucrat in complementul lui 2 pentru afisarea codului aferent segmentelor ce reprezinta cifrele? Link spre comentariu
Cilibiu Postat Decembrie 19, 2010 Partajează Postat Decembrie 19, 2010 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 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