ايران ويج

نسخه‌ی کامل: کمک ( مقدار ماکسیمم و مینیمم سه ورودی )
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام خدمت همگی
من یه برنامه نوشتم که مقدار ماکسیمم و مینیمم سه ورودی رو حساب کنه اما مقدار مینیمم صفر رو نشون میده ولی ماکسیمم رو نشون میده
چه کار کنم که مقدار مینیمم رو صحیح نشون بده
$regfile = "m16def.dat"
$crystal = 8000000
Config Portb = Output
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Config Adc = Single , Prescaler = 8 , Reference = Avcc
Dim D As Word , A As Single ,
Dim M As Word , B As Single ,
Dim N As Word , C As Single ,
Dim F As Single
Dim Ff As Single
Dim I(5) As Word , T As Single , Ie As Word , U As Word
Start Adc
Do
I(1) = Getadc(0)
A = I(1) * 5
A = A / 1023
I(2) = Getadc(1)
B = I(2) * 5
B = B / 1023
I(3) = Getadc(2)
C = I(3) * 5
C = C / 1023
U = Min(i(1))
Ie = Max(i(1))
T = Ie * 5
T = T / 1023
Cls
Locate 1 , 1
Lcd "a=" ; A
Locate 2 , 1
Lcd "b=" ; B
Locate 3 , 5
Lcd "c=" ; C
Home F
Lcd "max=" ; Fusing(t , "#.###&")
'Locate 4 , 9
'Lcd "max=" ; Fusing(t , "#.###&")
'Lcd "min=" ; U
Waitms 500
Loop
End
(۲۶-اردیبهشت-۱۳۸۹, ۱۴:۱۵:۱۲)E.EINITABAR نوشته است: [ -> ]با سلام خدمت همگی
من یه برنامه نوشتم که مقدار ماکسیمم و مینیمم سه ورودی رو حساب کنه اما مقدار مینیمم صفر رو نشون میده ولی ماکسیمم رو نشون میده
چه کار کنم که مقدار مینیمم رو صحیح نشون بده
کد php:
$regfile "m16def.dat"
$crystal 8000000
Config Portb 
Output
Config Lcd 
16 4
Config Lcdpin 
Pin Db4 Portc.4 Db5 Portc.5 Db6 Portc.6 Db7 Portc.7 Portc.3 Rs Portc.2
Config Adc 
Single Prescaler Reference Avcc
Dim D 
As Word As Single ,
Dim M As Word As Single ,
Dim N As Word As Single ,
Dim F As Single
Dim Ff 
As Single
Dim I
(5) As Word As Single Ie As Word As Word
Start Adc
Do
I(1) = Getadc(0)
I(1) * 5
1023
I
(2) = Getadc(1)
I(2) * 5
1023
I
(3) = Getadc(2)
I(3) * 5
1023
Min(i(1))
Ie Max(i(1))
Ie 5
1023
Cls
Locate 1 
1
Lcd 
"a=" A
Locate 2 
1
Lcd 
"b=" B
Locate 3 
5
Lcd 
"c=" C
Home F
Lcd 
"max=" Fusing("#.###&")
'Locate 4 , 9
'
Lcd "max=" Fusing("#.###&")
'Lcd "min=" ; U
Waitms 500
Loop

End 

برنامه ی شما مشکلی نداره. بجای getadc عدد گذاشتم درست کار کرد.
باید اشکال در مدارتون باشه؟!
Prescaler = auto بهتره
دوست عزیز سلام
ممنون که برنامه رو تست کردی شکل مدار رو میذارم خودت تست کن سه ورودی هم سه منبع DC بذار
(۲۶-اردیبهشت-۱۳۸۹, ۱۹:۳۹:۰۷)E.EINITABAR نوشته است: [ -> ]دوست عزیز سلام
ممنون که برنامه رو تست کردی شکل مدار رو میذارم خودت تست کن سه ورودی هم سه منبع DC بذار

مدارتون سالمه
یه چیزی که الان به ذهنم رسید:
چون شما از توابع min , max بسکام استفاده میکنید و از آنجایی که آنها تمام index های آرایه را بررسی می کنند پس باید تعداد آرایه را از 5 به 3 تغییر بدید تا i(4) i(5) رو حساب نکنند.

{در بسکام و کلا بیسیک ، متغیر ها با عدد 0 مقدار دهی اولیه می شوند ولی در زبان های خانواده ی c معمولا مقدار دهی اولیه را باید خودتان انجام دهید}
ممنون دوست عزیز
مشکلم حل شد لطف کردی
من تازه شروع کردم 10% هم به میکرو مسلط نیستم
یه سوال:
میخوام هر 1دقیقه یک بار از یک متغیر(ولتاژ) نمونه بگیرم
و یه شرط تعین کنم که هر زمانی که متغیر صفر شد مقدار یک دقیقه قبل را واسم نمایش بده
و هر یک ساعت یک بار برای اینله حافظه اشغال نشه مقدارهای نمونه گیری شده رو پاک کنه