فى مشكله بسيطه واقفه معايا وهيا انو عملت دايره قياس الفولت
بللغه البيزك او باسكوم avr
المشكلة انو الدايرة شغاله كويس على بروتس ما فيهاش اي مشاكل
لاكن لما وصلت الدايره عملى المشكله
انو شاشاه 7 سيجمنت ما بتظهرش ارقام بتظهر علامات عشوائيه مش زي ما طالع معايا في بروتوس
المشكله التانيه انو قرايه الفولت الانلوج بيهيس يعني بيديني ارقام مختلفه وانا ما غيرتش فى المقاومه
في ملحوظه بس
انا فى مقومات مش معايا قيمتها صريحه فا بضطر انو اعمل مقومتين توازاى او توالى عشان اوصل للمقاومه المطلوبه
مثلا المقاومه 5 كيلو اوم انا عامل مقومتان توازي عشان اوصل لل5 كيلو
المشكله فين مش عارف ??
كود:
'$programmer = 23
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 60
$swstack = 60
$framesize = 60
$baud = 115200
'------------------------------------
'------------------------------------
'Config Pind.2 = Output
'Config Pind.3 = Output
'Config Pind.4 = Output
'Config Pind.5 = Output
'Config Pind.6 = Output
'Config Pind.7 = Output
'//7SEGMENT PIN OUT // A B C D E F G
Config Pinb.5 = Output
Config Pinb.4 = Output
Config Pinb.3 = Output
Config Pinb.2 = Output
Config Pind.7 = Output
Config Pind.6 = Output
Config Pind.5 = Output
'//CONTROLED 1 2 3
Config Pind.4 = Output
Config Pind.3 = Output
Config Pind.2 = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Config Single = Scientific , Digits = 1
'------------------------------------
'------------------------------------
Dim F As Byte
Dim X As Byte
Dim S As Single
Dim Temp As Byte
Dim 7seg As Byte
Dim C As Byte
Dim G As Byte
Dim K As Byte
Dim Ldr As Word
Dim Ldr_v As Single
Dim E As Byte
Const V_ref = 5
Const Factor = 21.8
'-------------------------------------
'-------------------------------------
Do
Gosub Read_adc
'-----------------
Gosub Calc_lux
'-----------------
Temp = S * 10
If Temp <= 99 Then
K = Temp / 10
E = Temp Mod 10
C = Lookup(k , D7seg )
F = Lookup(e , D7seg )
For X = 0 To 40
Portd.3 = 0 : Portd.2 = 0
Portb.5 = C.0
Portb.4 = C.1
Portb.3 = C.2
Portb.2 = C.3
Portd.7 = C.4
Portd.6 = C.5
Portd.5 = C.6
Portd.3 = 1
Waitms 5
Portd.3 = 0 : Portd.2 = 0
Portb.5 = F.0
Portb.4 = F.1
Portb.3 = F.2
Portb.2 = F.3
Portd.7 = F.4
Portd.6 = F.5
Portd.5 = F.6
Portd.2 = 1
Waitms 5
Next X
Else
If Temp > 99 And Temp < 199 Then
K = Temp Mod 100
If K >= 0 And K <= 9 Then
C = Lookup(1 , D7seg )
F = Lookup(0 , D7seg )
G = Lookup(k , D7seg )
Else
Temp = Temp Mod 100
K = Temp / 10
E = Temp Mod 10
C = Lookup(1 , D7seg )
F = Lookup(k , D7seg )
G = Lookup(e , D7seg )
End If
Else
K = Temp Mod 200
If K >= 0 And K <= 9 Then
C = Lookup(2 , D7seg )
F = Lookup(0 , D7seg )
G = Lookup(k , D7seg )
Else
Temp = Temp Mod 100
K = Temp / 10
E = Temp Mod 10
C = Lookup(2 , D7seg )
F = Lookup(k , D7seg )
G = Lookup(e , D7seg )
End If
End If
For X = 0 To 10
Portd.4 = 0 : Portd.3 = 0 : Portd.2 = 0
Portb.5 = C.0
Portb.4 = C.1
Portb.3 = C.2
Portb.2 = C.3
Portd.7 = C.4
Portd.6 = C.5
Portd.5 = C.6
Portd.4 = 1
Waitms 5
Portd.4 = 0 : Portd.3 = 0 : Portd.2 = 0
Portb.5 = F.0
Portb.4 = F.1
Portb.3 = F.2
Portb.2 = F.3
Portd.7 = F.4
Portd.6 = F.5
Portd.5 = F.6
Portd.3 = 1
Waitms 5
Portd.4 = 0 : Portd.3 = 0 : Portd.2 = 0
Portb.5 = G.0
Portb.4 = G.1
Portb.3 = G.2
Portb.2 = G.3
Portd.7 = G.4
Portd.6 = G.5
Portd.5 = G.6
Portd.2 = 1
Waitms 5
Next X
End If
Loop
End
'---------------------
Read_adc:
Ldr = Getadc(1)
Return
'---------------------
Calc_lux:
Ldr_v = Ldr * V_ref
Ldr_v = Ldr_v / 1024
S = Ldr_v * Factor
S = S / V_ref
Return
D7seg:
Data &B0000001 , &B1001111 , &B0010010 , &B0000110 , &B1001100 , &B0100100 , &B0100000 , &B0001111 , &B00000000 , &B0000100
دا مللفات الدايره كامله
http://www.kuwaiti.co/g025afqbc98v