۲۳-بهمن-۱۳۸۸, ۱۲:۱۴:۵۶
سلام یکی از دوستام یه برنامه به من داده که خطایابی کنم
برنامه ولتاژ و دما رو lcd نشون می ده
محدوده ولتاژ 0 تا 50 که با استفاده از تقسیم مقاومتی 1/10 ولتاژ خروجی اندازه گیری میشه و در نهایت X*10 که میشه ولتاژ اصلیمون میشه
حالا اشکال چیه !!
با مگا32 پرش زیادی داریم تو اندازه گیری دما
اما وقتی از مگا 8 استفاده می کنیم اگه یکی از ورودی های ADC صفرباشه مدار درست کار می کنه اما اگه ولتاژ مثلا بشه 15 ولت دما هم 23 دما شروع می کنه به نوسان گاهی هم با کم زیاد کردن ولتاژ دما هم شروع می کنه به تغییر
یه مورد دیگه هم که هست کارکتری که واسه علامت درجه ساخته شده رو مگا 32 درست نشون می ده اما رو مگاه 8 چینی می نویسه !!!!
تکنیک های نویز گیری ADC انجام دادم فرقی نکرد
این برنامه منتظر راهنماییم!!
برنامه ولتاژ و دما رو lcd نشون می ده
محدوده ولتاژ 0 تا 50 که با استفاده از تقسیم مقاومتی 1/10 ولتاژ خروجی اندازه گیری میشه و در نهایت X*10 که میشه ولتاژ اصلیمون میشه
حالا اشکال چیه !!
با مگا32 پرش زیادی داریم تو اندازه گیری دما
اما وقتی از مگا 8 استفاده می کنیم اگه یکی از ورودی های ADC صفرباشه مدار درست کار می کنه اما اگه ولتاژ مثلا بشه 15 ولت دما هم 23 دما شروع می کنه به نوسان گاهی هم با کم زیاد کردن ولتاژ دما هم شروع می کنه به تغییر
یه مورد دیگه هم که هست کارکتری که واسه علامت درجه ساخته شده رو مگا 32 درست نشون می ده اما رو مگاه 8 چینی می نویسه !!!!
تکنیک های نویز گیری ADC انجام دادم فرقی نکرد
این برنامه منتظر راهنماییم!!
کد php:
$regfile = "m8def.dat"
$crystal = 1000000
Config Lcdpin = Pin , Db7 = Pinb.2 , Db6 = Pinb.3 , Db5 = Pinb.4 , Db4 = Pinb.5 , E = Pinb.1 , Rs = Pinb.0
Config Lcd = 16 * 2 : Cursor Off : Cls
Config Portd = Output
Config Adc = Single , Prescaler = Auto
Start Adc
Deflcdchar 0 , 28 , 20 , 28 , 32 , 7 , 4 , 4 , 7 'c
Deflcdchar 1 , 24 , 28 , 30 , 31 , 3 , 7 , 15 , 31 ' fan left
Deflcdchar 2 , 31 , 30 , 28 , 24 , 31 , 15 , 7 , 3 ' fan right
Dim A As Word , C As Word
Dim B As Single , D As Single
Dim V As String * 10 , T As String * 10
Do
If Pinc.5 = 1 Then : Goto Over
Else
Gosub VLOt
Gosub Temp
Gosub Fan
Gosub Sw
End If
Loop
Vlot:
Locate 1 , 1 : Lcd V ; " V "
A = Getadc(2)
B = A * 4.91
B = B / 1024
V = Fusing(b , "#.##")
Return
Over:
Cls
Locate 1 , 1 : Lcd "!!OVER CURNET!!"
Set Portd.0
Waitms 200
Reset Portd.0
Waitms 200
Return
Temp:
Locate 1 , 12 : Lcd T : Lcd Chr(0) ; " "
C = Getadc(0)
D = C * 491
D = D / 1024
T = Fusing(d , "#.#")
Return
Sw:
If A > 700 Then : Set Portd.1 : End If
If A < 650 Then : Reset Portd.1 : End If
Return
Fan:
If C > 750 Then : Set Portd.2 : Locate 2 , 15 : Lcd ; Chr(1) ; Chr(2) : End If
If C < 650 Then : Reset Portd.2 : Locate 2 , 15 : Lcd " " : End If
Return