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

[Ovu poruku je menjao PedjaZ dana 16.08.2012. u 23:30 GMT+1]