Sari la conținut
ELFORUM - Forumul electronistilor

Programare ATmega8 pentru 6 digi7-segment siplay!


Cilibiu

Postări Recomandate

  • Răspunsuri 63
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Cilibiu

    33

  • JQ

    13

  • nickrvl

    11

  • danzup

    2

Top autori în acest subiect

Da , o ia de la capat!Am gasit si cum sa fac cu buton!Dar nu gasesc pentru afisarea celor 2 digi atat de repede incat sa creeze impresia ca sunt ambele aprinse in acelasi timp!

Link spre comentariu

In realitate nu am, deoarece eu acum doar invat pe pc si in simulator!Am un proiect gata facut de la un user si acela afiseaza cum trebuie, dar nu are cu waitms ...... are alte comenzi, dar nu stiu care din ele sa le sustrag.Codul mai jos despre acel voltmetru cu atemega8!$regfile = "m8def.dat"$crystal = 4000000'$ baud = 2400Config Timer0 = Timer , Prescale = 8Dim Timecount As Word : Timecount = 0Config Adc = Single , Prescaler = Auto , Reference = InternalEnable InterruptsEnable Ovf0On Ovf0 Overflow_isrTcnt0 = &H19Dim I As ByteConfig Pinc.5 = InputConfig Portd = Output'Portd = 0Config Pinb.0 = Output'Portb.0 = 0Config Pinb.1 = Output'Portb.1 = 0Config Pinb.2 = Output'Portb.2 = 0Config Pinb.3 = Output'Portb.3 = 1Config Pinb.4 = OutputConfig Pinb.5 = Output'ordinul unitatilorDim L(10) As ByteL(1) = &B10000110L(2) = &B11011011L(3) = &B11001111L(4) = &B11100110L(5) = &B11101101L(6) = &B11111101L(7) = &B10000111L(8) = &B11111111L(9) = &B11101111L(10) = &B10111111'ordinul zecilorDim Le(10) As ByteLe(1) = &B00000110Le(2) = &B01011011Le(3) = &B01001111Le(4) = &B01100110Le(5) = &B01101101Le(6) = &B01111101Le(7) = &B00000111Le(8) = &B01111111Le(9) = &B01101111Le(10) = &B00111111Dim Channel As ByteDim W As LongDim Ss As ByteDim Ad As LongDim S(4) As String * 1Dim Sa As String * 5Dim Sl(4) As Byte 'Show variablesDo'------------------------------------ Battery voltage detectionW = 0Ss = 1Ad = 0For Ss = 1 To 20Start AdcChannel = 5W = Getadc(channel)Stop AdcAd = Ad + WNext SsAd = Ad / 20Ad = Ad * 2560If W < 1 ThenAd = Ad / 10023ElseAd = Ad / 1023End IfSa = Str(ad)Sa = Format(sa , "000")S(2) = Mid(sa , 3 , 1)S(3) = Mid(sa , 2 , 1)S(4) = Mid(sa , 1 , 1)I = Val(s(2))If I = 0 ThenSl(2) = L(10)ElseSl(2) = L(i)End IfI = Val(s(3))If I = 0 ThenSl(3) = L(10)ElseSl(3) = L(i)End IfI = Val(s(4))If I = 0 ThenSl(4) = Le(10)ElseSl(4) = Le(i)End IfLoopEndOverflow_isr:Tcnt0 = &H19Incr TimecountIf Timecount = 15 Then '1 m 502 = 1s 4m 2008 = 1sTimecount = 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 IfReturn

Link spre comentariu

Face exact cum ar fi waitms 2, deci tot asa mi se vede, nu se vede cum trebuie, daca bag waitms 100, atunci pe primul digit imi apare "c" iar dupa 100ms se stinge si se aprinde al 2 digit cu cifra "7" pe el si o ia de la capat!Dar fara wait tot asa face!

Link spre comentariu

Face exact cum ar fi waitms 2, deci tot asa mi se vede, nu se vede cum trebuie, daca bag waitms 100, atunci pe primul digit imi apare "c" iar dupa 100ms se stinge si se aprinde al 2 digit cu cifra "7" pe el si o ia de la capat!Dar fara wait tot asa face!

Proteus nu reda intodeauna realitatea, nu ar fi nici o surpriza ca facind montajul sa constati ca de fapt functioneaza corect adica nu o sa se vada nici o intrerupere in afisare.
Link spre comentariu

Ajuta daca vrei, daca nu lasal pe altul si tineti reprosurile pentru tine :da

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 .
Link spre comentariu

Aici am pus un exemplu care se poate modifica si dezvolta, sint fisiere Bascom cu soft si Proteus pentru simulare.Cum am zis e un exemplu adica treaba e pe jumatate facuta mai departe se poate modifica/imbunatati atit softul cit schema.[attachment=0]c.zip[/attachment]

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