Rabulea Sergiu Postat Februarie 7, 2010 Partajează Postat Februarie 7, 2010 Problema pe care am constatat-o si eu la Proteus esta ca in cazul folosirii afisoarelor cu 7 segmente in mod multiplexat acesta vrea sa faca simularea cat mai precisa si incetineste timpul simularii. Daca va uitati in partea de jos a feresterei unde scrie ANIMATING si timpul o sa vedeti ca acesta se scurge mai incet. La 4 afisoare pe care le-am simulat a "lungit" timpul ca sa zic asa de vreo 10 ori. Ce lmai bine in cazul asta este sa faci montajul practic si sa vezi ccum se comporta. Link spre comentariu
nickrvl Postat Februarie 7, 2010 Partajează Postat Februarie 7, 2010 Problema pe care am constatat-o si eu la Proteus esta ca in cazul folosirii afisoarelor cu 7 segmente in mod multiplexat acesta vrea sa faca simularea cat mai precisa si incetineste timpul simularii. Daca va uitati in partea de jos a feresterei unde scrie ANIMATING si timpul o sa vedeti ca acesta se scurge mai incet. La 4 afisoare pe care le-am simulat a "lungit" timpul ca sa zic asa de vreo 10 ori. Ce lmai bine in cazul asta este sa faci montajul practic si sa vezi ccum se comporta.Intradevar are o problema cu incetinirea, insa in exemplul dat mai sus o sa vedeti ca totul decurge cursiv, fara intreruperi, de unde concluzia ca ii place numai anumite softuri? Link spre comentariu
Cilibiu Postat Februarie 7, 2010 Autor Partajează Postat Februarie 7, 2010 Ajuta daca vrei, daca nu lasal pe altul si tineti reprosurile pentru tine Ok !Nu se vede bine in poza cum e conectat , zi-mi la ce port ai cele 7 segmente , la ce port ai cei 6 digiti si la ce port ai butoanele te rog si-ti arat cum se face .Digitii sunt cu anod comun sau catod comun ?Ii comanzi cu tranzistoare sau direct ?Ca sa stiu cum scriu codul in Bascom .PORTB sunt SEGMENTELEPORTD sunt DIGITIPORTC sunt BUTOANELEDisplayul este cu anod comun!Acum incerc sa dezvolt si eu ce mia dat NICKRVL!Mult respect pentru toti care ma ajuta!Multa stima si respect pentru NICKRVL (mersi mutl de e-mailuri!) Link spre comentariu
Cilibiu Postat Februarie 7, 2010 Autor Partajează Postat Februarie 7, 2010 Sa rezolvat toata treaba, pentru un inceptar ca mine este o mare realizare, ce mia dat NICKVRL in 3 posturi mai sus, lam luat , lam studiat, am vazut cum se face multiplixarea, si miam bagat nasul in el, timp de 2 ore lam butonat si am facut si pentru al 4 bit, am cuplat si mai multe butoane, numi vine sa cred ce simplu e si ce greu credeam eu ca e, miam rezolvat proiectul meu , merge , am invatat biti care trebuie sai modific pentru afisarea cifrelor sau a literelor, am invatat cum sa mai pun inca un digit 2-3-4 sau cati am nevoie, am invatat cum sa comand acele afisari cu butoane!ASta doar cu ajutorul vostru si in special al lui NICKVRL care este un om de nota 10 pentru mine!Va multumesc tuturor o sa revin cu montajul gata facut si cu fisierele pentru bascom si proteus! Mult respect pentru voi! Link spre comentariu
nickrvl Postat Februarie 7, 2010 Partajează Postat Februarie 7, 2010 am facut si pentru al 4 bit, am cuplat si mai multe butoane, numi vine sa cred ce simplu e si ce greu credeam eu ca e, miam rezolvat proiectul meu , merge , am invatat biti care trebuie sai modific pentru afisarea cifrelor sau a literelor, am invatat cum sa mai pun inca un digit 2-3-4 sau cati am nevoie, am invatat cum sa comand acele afisari cu butoane!Nu sint sigur daca Mc-ul suporta direct cei 4 digiti, am facut o data un montaj cu Attiny si 4 digiti dar pinii comuni ai acestora erau comandati prin tranzistori, nu i-am comandat direct. Acum nu stiu ce sa zic, parca ti-asi recomanda sa faci la fel. Link spre comentariu
Cilibiu Postat Februarie 7, 2010 Autor Partajează Postat Februarie 7, 2010 Eventul o sa ii fac comanda digitilor prin tranzistoare, dar in proteus nu am pus tranzistoare! Mai ales ca trebuie tranzistoare "rapide"!Scuze in loc de digiti am spus biti! La fel si cu numele tau am inversat 2 litere! Link spre comentariu
JQ Postat Februarie 7, 2010 Partajează Postat Februarie 7, 2010 Niste (NPN) BC 547 sunt foarte bune, sau orice alt tranzistor accesibil. Evident daca e nevoie de PNP sunt bc557. Fara tranzistori o sa ai luminozitate scazuta pe anumite afisoare, adica e total neprofesional. Link spre comentariu
Cilibiu Postat Februarie 7, 2010 Autor Partajează Postat Februarie 7, 2010 Mersi de sfat, chiar ca am o droaie de bc547 si de 557! Link spre comentariu
nickrvl Postat Februarie 7, 2010 Partajează Postat Februarie 7, 2010 Mersi de sfat, chiar ca am o droaie de bc547 si de 557! Gata mi-am amintit, are dreptate JQ, de acea am pus comanda prin tranzistori, luminozitatea digitilor nu era uniforma.Merg folositi si BC 337 Link spre comentariu
Cilibiu Postat Februarie 7, 2010 Autor Partajează Postat Februarie 7, 2010 Bc337 si Bc327 am mai multe,dar stiu ca sa sunt in special pentru audio, dar ai dreptate ca folosesc la un spectrum care tot aceasi multiplixare are!Mult respect! Link spre comentariu
Cilibiu Postat Februarie 8, 2010 Autor Partajează Postat Februarie 8, 2010 Cand mai aveam putin am dat de un "perete". Miam definit aceste caractere ! '****************** Aici sint definite caracterele ******** Dim L(10) As Byte L(1) = &B0111000 'L L(2) = &B1110111 'A L(3) = &B1011110 'd L(4) = &B1111100 'b L(5) = &B1101101 'S L(6) = &B1010000 'r L(7) = &B1111001 'E L(8) = &B1111000 't L(9) = &B0000000 ' ' L(10) = &B0111111 'O Iar eu vreau sa mai adaug cateva litere si cifre! Dar nu stiu cum sa fac ca aici sunt numa de la L(1) pana la L(10) daca continui cu 11-12... etc nu merge , defapt nu stiu sa configurez pentru a citi mai departe! Tot codul este mai jos! Am configurat doar 2 butoane deoarece nu am toate litere necesare pentru cele 9 butoane, folosesc display cu 6 digiti! Sunt toti configurati, iar butoanele stiu sa le configurez, dar mam blocat la aceste caractere! Codul! $regfile = "m8def.dat" $crystal = 4000000 Config Portd = Output Config Portb.0 = Output Config Portb.1 = Output Config Portb.2 = Output Config Portb.3 = Output Config Portb.4 = Output Config Portb.5 = Output Config Portb.7 = Input Config Portb.6 = Input Config Portc = Input '****************** Aici sint definite caracterele ******** Dim L(10) As Byte L(1) = &B0111000 'L L(2) = &B1110111 'A L(3) = &B1011110 'd L(4) = &B1111100 'b L(5) = &B1101101 'S L(6) = &B1010000 'r L(7) = &B1111001 'E L(8) = &B1111000 't L(9) = &B0000000 ' ' L(10) = &B0111111 'O '************************************************************* Dim Timecount As Word : Timecount = 0 Dim I As Byte Dim Ad As Long Dim S(6) As String * 1 Dim Sa As String * 5 Dim Sl(6) As Byte Do '****************** aici schimbi ce vrei sa afiseze ************ If Pinb.7 = 1 Then 'daca buton apasat Ad = 425599 'atunci Ad = 102, adica va afisa LOA 'Ad = 000 deci va afisa 000 Else Ad = 999999 End If If Pinb.6 = 1 Then Ad = 444499 End If '**************************************************************** '******** aici va lua valoarea lui Ad si va imparti-o in trei corespunzator ' numarului de digiti Sa = Str(ad) Sa = Format(sa , "0000") S(1) = Mid(sa , 4 , 1) S(4) = Mid(sa , 1 , 1) S(3) = Mid(sa , 2 , 1) S(2) = Mid(sa , 3 , 1) S(5) = Mid(sa , 6 , 1) S(6) = Mid(sa , 5 , 1) I = Val(s(1)) If I = 0 Then Sl(1) = L(10) Else Sl(1) = L(i) End If I = Val(s(2)) If I = 0 Then Sl(2) = L(10) Else Sl(2) = L(i) End If I = Val(s(3)) If I = 0 Then Sl(3) = L(10) Else Sl(3) = L(i) End If I = Val(s(4)) If I = 0 Then Sl(4) = L(10) Else Sl(4) = L(i) End If I = Val(s(5)) If I = 0 Then Sl(5) = L(10) Else Sl(5) = L(i) End If I = Val(s(6)) If I = 0 Then Sl(6) = L(10) Else Sl(6) = L(i) End If '************************************************ '***** aici se face afisarea propriuzis Incr Timecount 'aici se face o temporizare si If Timecount = 15 Then 'numai daca Timecount = 15 se va face afisarea Timecount = 0 Portb.0 = 0 Portd = Sl(2) Waitms 5 Portb.0 = 1 Portb.1 = 0 Portd = Sl(3) Waitms 5 Portb.0 = 1 Portb.1 = 1 Portb.2 = 0 Portd = Sl(4) Waitms 5 Portb.0 = 1 Portb.1 = 1 Portb.2 = 1 Portb.3 = 0 Portd = Sl(1) Waitms 5 Portb.0 = 1 Portb.1 = 1 Portb.2 = 1 Portb.3 = 1 Portb.4 = 0 Portd = Sl(5) Waitms 5 Portb.0 = 1 Portb.1 = 1 Portb.2 = 1 Portb.3 = 1 Portb.4 = 1 Portb.5 = 0 Portd = Sl(6) Waitms 5 Portb.5 = 1 End If '********************************************* Loop End '------------------------------------------------- -------------------------------- Un pic de ajutor va rog! Link spre comentariu
nickrvl Postat Februarie 8, 2010 Partajează Postat Februarie 8, 2010 Unde ai definite caracterele:Dim L(10) As Byteai incercat sa maresti L(10)? sau sa definesti alt tip decit Byte?altfel trebuie sa faci alta variabila de exemplu La(10) Link spre comentariu
Cilibiu Postat Februarie 8, 2010 Autor Partajează Postat Februarie 8, 2010 Da am observat ca si tu ai folosit in alt exemplu cu Le, dar nu stiu cum sa le fac jos la afisarea propriuzisa!Modifica doar un caracter in codul atasat de mine ca sa imi dau seama, adik dupa L(10) sa pui cum ai zis tu inca un caracter , nu conteaza ccum aranjezi biti ca aia ii fac eu, dar sa pui sub el cum ai zis tu cu La si ce modifici in afisarea propriuzisa ca sa imir ecunoasca mai departe!P.S am uitat sa te intreb ca ce fac acolo unde scriu numerele respective de recunoaste caracterele, adik cum am eu 235999 la AD=235999, aici cum fac ? ca nu pot pune 12 din cauza ca imi ia functiile de 1 si 2! Link spre comentariu
nickrvl Postat Februarie 8, 2010 Partajează Postat Februarie 8, 2010 Am modificat la repezeala dar tot softul meu:$regfile = "m8def.dat"$crystal = 4000000Config Portd = OutputConfig Portb.0 = OutputConfig Portb.1 = OutputConfig Portb.2 = OutputConfig Portb.3 = OutputConfig Portb.7 = Input'****************** Aici sint definite caracterele ********Dim L(20) As ByteL(1) = &B0111000 'LL(2) = &B1110111 'AL(3) = &B1001111 '3L(4) = &B1100110 '4L(5) = &B1101101 '5L(6) = &B1111101 '6L(7) = &B0000111 '7L(8) = &B1111111 '8L(9) = &B1101111 '9L(10) = &B0111111 'OL(11) = &B0111001 'C'*************************************************************Dim Timecount As Word : Timecount = 0Dim I As ByteDim Ad As LongDim S(4) As String * 1Dim Sa As String * 5Dim Sl(4) As ByteDim I1 As ByteDim I2 As ByteDim I3 As ByteDo'****************** aici schimbi ce vrei sa afiseze ************If Pinb.7 = 1 Then 'daca buton apasat I1 = 1 I2 = 2 I3 = 11 'atunci Ad = 102, adica va afisa LOA Else 'altfel, adica daca butonul nu e apasat I1 = 0 I2 = 0 I3 = 0 'Ad = 000 deci va afisa 000End If'****************************************************************'******** aici va lua valoarea lui Ad si va imparti-o in trei corespunzator' numarului de digitiIf I1 = 0 ThenSl(2) = L(10)ElseSl(2) = L(i1)End IfIf I2 = 0 ThenSl(3) = L(10)ElseSl(3) = L(i2)End IfIf I3 = 0 ThenSl(4) = L(10)ElseSl(4) = L(i3)End If'************************************************'***** aici se face afisarea propriuzisIncr Timecount 'aici se face o temporizare siIf Timecount = 15 Then 'numai daca Timecount = 15 se va face afisareaTimecount = 0Portb.0 = 0Portd = Sl(2)Waitms 5Portb.0 = 1Portb.1 = 0Portd = Sl(3)Waitms 5Portb.0 = 1Portb.1 = 1Portb.2 = 0Portd = Sl(4)Waitms 5Portb.2 = 1End If'*********************************************LoopEnd'----------------------------------------- Link spre comentariu
Cilibiu Postat Februarie 8, 2010 Autor Partajează Postat Februarie 8, 2010 Mersi mutl , ce simplu era dar nu stiam, acum pot face pe si 30 de digiti si o garmada de cifre si litere care se pot citi de pe acest 7-segment display!Mersi mult, acum pot continua, o sa revin cu finitul! 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