izmenjeno 1 put, poslednji put PedjaZ 16.08.2012. u 23:30
Izmene poruke
- PedjaZ16.08.2012. u 23:30zapis iz teksta poruke
Najzad krenuo nesto sa uC i umesto da pocnem sa LED blink ja zadao sebi tezi zadatak :)
Trazio neke primere za multiplexovanje ali nesto nisam pronasao.
Smislio nesto pa mi sada treba vasa pomoc jer PROTEUS izbacuje cudne vrednosti.
Iz seme se vidi da imam 4 analogna ulaza i svaki od njih ide na 7seg LED D.
Da bi ustedeo na pinovima i pojednostavio, dodao sam 4017.
Sve OK radi bez ADC u PROTEUSU - nasumice prikazivanje brojeva,
ali ADC ne pokazuje kako ja hocu.
ADC ide od 0-1023 (ovo je vise pitanje)
Referentni napon je 2.56V (i ovo)
1023*10/40 =255 i to je najveca vrednost koju trebam da vidim na prvih 3 displeja
ali ja dobijam drugacije.
Mucim se vec neko vreme ali ne ide.
Moze pomoc?
Drugo pitanje.
Sta u programu da ubacim kako bi mogao neke vrednosti u proteusu da prikazujem - nesto kao debug prozor?
Hvala
Trazio neke primere za multiplexovanje ali nesto nisam pronasao.
Smislio nesto pa mi sada treba vasa pomoc jer PROTEUS izbacuje cudne vrednosti.
Iz seme se vidi da imam 4 analogna ulaza i svaki od njih ide na 7seg LED D.
Da bi ustedeo na pinovima i pojednostavio, dodao sam 4017.
Sve OK radi bez ADC u PROTEUSU - nasumice prikazivanje brojeva,
ali ADC ne pokazuje kako ja hocu.
ADC ide od 0-1023 (ovo je vise pitanje)
Referentni napon je 2.56V (i ovo)
1023*10/40 =255 i to je najveca vrednost koju trebam da vidim na prvih 3 displeja
ali ja dobijam drugacije.
Mucim se vec neko vreme ali ne ide.
Moze pomoc?
Drugo pitanje.
Sta u programu da ubacim kako bi mogao neke vrednosti u proteusu da prikazujem - nesto kao debug prozor?
Hvala
Code:
' radjeno za:
'F:\Podaci sa C\Elektronika\Proteus\_Moje\ATMEGA8 i 10 LED 7 seg\02.DSN
$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 128 ' default use 32 for the hardware stack
$swstack = 25 'default use 10 for the SW stack
$framesize = 100 'default use 40 for the frame space
Dim Znam(5) As Byte , Ii As Byte , Pom As Byte , P3 As Byte
Dim Number(11) As Byte
Dim Br(10) As Byte
Dim I As Byte
Dim Oi As Byte
Dim O As Byte
Dim W As Word
Dim Cu As Integer
Dim Ww As String * 3
Dim S0 As String * 3
Dim S1 As String * 1
Dim S2 As String * 1
Dim S3 As String * 1
Dim V1 As Byte
Dim V2 As Byte
Dim V3 As Byte
W = 230
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
Config Timer0 = Timer , Prescale = 8 '64
Config Portb = Output 'set port B as output
Config Portd = Output
Portb = &B00000000
Portd = &B11111111
'kada brojevi idu od port0 ka port7
Number(1) = &B11111001 '1
Number(2) = &B10100100 '2
Number(3) = &B10110000 '3
Number(4) = &B10011001 '4
Number(5) = &B10010010 '5
Number(6) = &B10000010 '6
Number(7) = &B11111000 '7
Number(8) = &B10000000 '8
Number(9) = &B10010000 '9
Number(10) = &B01000000 'ovo je nula
Number(11) = &B11111111 'prazno
On Timer0 Prikaz
Enable Interrupts
Enable Timer0
Counter0 = 60536
Start Timer0
'(
For I = 1 To 10
Br(i) = Number(i)
Next
Br(10) = Number(4)
Br(2) = Number(2)
Br(3) = Number(6)
')
'prouci naredbu STR2DIGITS
Do
' Oi = Br(10)
' Br(10) = Br(1) : Br(1) = Br(2) : Br(2) = Br(3) : Br(3) = Br(4) : Br(4) = Br(5)
' Br(5) = Br(6) : Br(6) = Br(7) : Br(7) = Br(8) : Br(8) = Br(9) : Br(9) = Oi
Oi = 0
For I = 0 To 3
W = Getadc(i)
' W = 105
W = W * 10
Cu = W / 40 '/40
'1023= 25V =2.56V 1023/399=2,56 - prikazuje 2 broja + jednu decimalu
Ww = Str(cu)
' S0 = Format(ww , "000")
' S1 = Mid(s0 , 1 , 1)
' S2 = Mid(s0 , 2 , 1)
' S3 = Mid(s0 , 3 , 1)
' Print "ww=" ; Ww ; " s0=" ; S0 ; " s1=" ; S1 ; " s2=" ; S2 ; " s3=" ; S3
If I = 0 Or I = 2 Then
S0 = Format(ww , "000")
S1 = Mid(s0 , 1 , 1)
S2 = Mid(s0 , 2 , 1)
S3 = Mid(s0 , 3 , 1)
V1 = Val(s1)
V2 = Val(s2)
V3 = Val(s3)
If V1 = 0 Then V1 = 11
If V2 = 0 Then V2 = 10
If V3 = 0 Then V3 = 10
Oi = Oi + 1
Br(oi) = Number(v1)
Oi = Oi + 1
Br(oi) = Number(v2)
Oi = Oi + 1
Br(oi) = Number(v3)
' Print "ww=" ; Ww ; " s0=" ; S0 ; " s1=" ; S1 ; " s2=" ; S2 ; " s3=" ; S3
' Print "ww=" ; Ww ; " s0=" ; S0 ; " v1=" ; V1 ; " v2=" ; V2 ; " v3=" ; V3
' Print "i=" ; I ; " cu=" ; Cu ; " s0=" ; S0
' Print Br(1)
' Print Br(2)
' Print Br(3)
Else
S0 = Format(ww , "00")
S1 = Mid(s0 , 1 , 1)
S2 = Mid(s0 , 2 , 1)
V1 = Val(s1)
V2 = Val(s2)
If V1 = 0 Then V1 = 11
If V2 = 0 Then V2 = 10
Oi = Oi + 1
Br(oi) = Number(v1)
Oi = Oi + 1
Br(oi) = Number(v2)
End If
Next I
Loop
'...
Prikaz:
For Ii = 1 To 10
Portd = Br(ii)
Portb = &B00000000
Waitms 2
Portb = &B00000001
Next Ii
Portd = Br(1)
Counter0 = 65536
Start Timer0
Return
' radjeno za:
'F:\Podaci sa C\Elektronika\Proteus\_Moje\ATMEGA8 i 10 LED 7 seg\02.DSN
$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 128 ' default use 32 for the hardware stack
$swstack = 25 'default use 10 for the SW stack
$framesize = 100 'default use 40 for the frame space
Dim Znam(5) As Byte , Ii As Byte , Pom As Byte , P3 As Byte
Dim Number(11) As Byte
Dim Br(10) As Byte
Dim I As Byte
Dim Oi As Byte
Dim O As Byte
Dim W As Word
Dim Cu As Integer
Dim Ww As String * 3
Dim S0 As String * 3
Dim S1 As String * 1
Dim S2 As String * 1
Dim S3 As String * 1
Dim V1 As Byte
Dim V2 As Byte
Dim V3 As Byte
W = 230
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
Config Timer0 = Timer , Prescale = 8 '64
Config Portb = Output 'set port B as output
Config Portd = Output
Portb = &B00000000
Portd = &B11111111
'kada brojevi idu od port0 ka port7
Number(1) = &B11111001 '1
Number(2) = &B10100100 '2
Number(3) = &B10110000 '3
Number(4) = &B10011001 '4
Number(5) = &B10010010 '5
Number(6) = &B10000010 '6
Number(7) = &B11111000 '7
Number(8) = &B10000000 '8
Number(9) = &B10010000 '9
Number(10) = &B01000000 'ovo je nula
Number(11) = &B11111111 'prazno
On Timer0 Prikaz
Enable Interrupts
Enable Timer0
Counter0 = 60536
Start Timer0
'(
For I = 1 To 10
Br(i) = Number(i)
Next
Br(10) = Number(4)
Br(2) = Number(2)
Br(3) = Number(6)
')
'prouci naredbu STR2DIGITS
Do
' Oi = Br(10)
' Br(10) = Br(1) : Br(1) = Br(2) : Br(2) = Br(3) : Br(3) = Br(4) : Br(4) = Br(5)
' Br(5) = Br(6) : Br(6) = Br(7) : Br(7) = Br(8) : Br(8) = Br(9) : Br(9) = Oi
Oi = 0
For I = 0 To 3
W = Getadc(i)
' W = 105
W = W * 10
Cu = W / 40 '/40
'1023= 25V =2.56V 1023/399=2,56 - prikazuje 2 broja + jednu decimalu
Ww = Str(cu)
' S0 = Format(ww , "000")
' S1 = Mid(s0 , 1 , 1)
' S2 = Mid(s0 , 2 , 1)
' S3 = Mid(s0 , 3 , 1)
' Print "ww=" ; Ww ; " s0=" ; S0 ; " s1=" ; S1 ; " s2=" ; S2 ; " s3=" ; S3
If I = 0 Or I = 2 Then
S0 = Format(ww , "000")
S1 = Mid(s0 , 1 , 1)
S2 = Mid(s0 , 2 , 1)
S3 = Mid(s0 , 3 , 1)
V1 = Val(s1)
V2 = Val(s2)
V3 = Val(s3)
If V1 = 0 Then V1 = 11
If V2 = 0 Then V2 = 10
If V3 = 0 Then V3 = 10
Oi = Oi + 1
Br(oi) = Number(v1)
Oi = Oi + 1
Br(oi) = Number(v2)
Oi = Oi + 1
Br(oi) = Number(v3)
' Print "ww=" ; Ww ; " s0=" ; S0 ; " s1=" ; S1 ; " s2=" ; S2 ; " s3=" ; S3
' Print "ww=" ; Ww ; " s0=" ; S0 ; " v1=" ; V1 ; " v2=" ; V2 ; " v3=" ; V3
' Print "i=" ; I ; " cu=" ; Cu ; " s0=" ; S0
' Print Br(1)
' Print Br(2)
' Print Br(3)
Else
S0 = Format(ww , "00")
S1 = Mid(s0 , 1 , 1)
S2 = Mid(s0 , 2 , 1)
V1 = Val(s1)
V2 = Val(s2)
If V1 = 0 Then V1 = 11
If V2 = 0 Then V2 = 10
Oi = Oi + 1
Br(oi) = Number(v1)
Oi = Oi + 1
Br(oi) = Number(v2)
End If
Next I
Loop
'...
Prikaz:
For Ii = 1 To 10
Portd = Br(ii)
Portb = &B00000000
Waitms 2
Portb = &B00000001
Next Ii
Portd = Br(1)
Counter0 = 65536
Start Timer0
Return