یه سوالی درباره بسکام داشتم:چطوری میشه در بسکام یه برنامه نوشت با استفاده از میکرو mega32 که 4 تا عدد سه رقمی را از صفحه کلید دریافت کنه و میانگین اونها را روی lcd نشون بده.
اطلاعیه
Collapse
No announcement yet.
سوال درباره بسکام
Collapse
X
-
پاسخ : سوال درباره بسکام
این برنامه یک مثاله که یک عدد سه رقمی از صفحه کلید رو میگیره و رو lcd نمایش میده
کد:$regfile = "m32def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Pb.0 , Db5 = Pb.1 , Db6 = Pb.2 , Db7 = _ Pb.3 , E = Pb.5 , Rs = Pb.4 Config Kbd = Portd , Debounce = 50 , Delay = 100 dim a as byte dim b as word dim i as byte Display On : Cls For I = 1 To 3 Main: A = Getkbd() If A > 15 Then Goto Main B = B * 10 B = B + A Next Cls : Lcd "B =" ; B Do : Loop End
من نمىآتوانم فرضیه «بىآاخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآدانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
آلبرت اینشتین
منبع: http://fa.wikiquote.org
-
پاسخ : سوال درباره بسکام
نوشته اصلی توسط velakatسلام
این برنامه با بسکام نوشته شده ؟!!!!من نمىآتوانم فرضیه «بىآاخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآدانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
آلبرت اینشتین
منبع: http://fa.wikiquote.org
دیدگاه
-
پاسخ : سوال درباره بسکام
من اینطوری نوشتم ولی ارور میده.نمیدونم مشکل از کجاست
$regfile = "m32def.dat"مشکل از کجاست ؟
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7 , E = Pinb.3 , Rs = Pinb.2
Config Lcd = 16 * 2
Config Kbd = Portc , Debounce = 50 , Delay = 100
Dim A(3) As Byte
Dim I As Byte
Dim V(4) As Integer
Dim J As Byte
Dim Ave As Integer
J = 0
Do
J = J + 1
For I = 1 To 3
A(i) = Getkbd()
Next
V(j) = A(1) * 100 + A(2) * 10 + A(3)
Loop Until J = 4
Ave =(v(1) + V(2) + V(3) + V(4) ) / 4
Lcd "ave=" ; Ave
End
دیدگاه
-
پاسخ : سوال درباره بسکام
این قسمت کلا اشتباه هست چون با این روش نمیشه 3 رقم رو گرفت
کد:For I = 1 To 3 A(i) = Getkbd() Next
ضمنا برای انجام محاسبات سعی کنید هر عمل رو بصورت جداگانه انجام بدین یعنی مثلا اگر می خواید 2 را به توان 3 برسونید و تقسیم بر 5 کنید اینطوری عمل کنید :
a=2^3
a=a/5من نمىآتوانم فرضیه «بىآاخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآدانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
آلبرت اینشتین
منبع: http://fa.wikiquote.org
دیدگاه
-
پاسخ : سوال درباره بسکام
نوشته اصلی توسط silicon0این قسمت کلا اشتباه هست چون با این روش نمیشه 3 رقم رو گرفت
کد:For I = 1 To 3 A(i) = Getkbd() Next
ضمنا برای انجام محاسبات سعی کنید هر عمل رو بصورت جداگانه انجام بدین یعنی مثلا اگر می خواید 2 را به توان 3 برسونید و تقسیم بر 5 کنید اینطوری عمل کنید :
a=2^3
a=a/5
نفهمیدم چرا این کارو کردین : B = B * 10 چون تا این قسمت برنامه b اصلا مقداری نداره که ضرب در 10 بشه
یه مشکل دیگه هم اینه که نفهمیدم چطور عدد 3 رقمی را ساختین باید رقم اول در 100 ضرب بشه و رقم دوم در 10 و در نهایت با رقم سوم جمع بشه مثل این : V(j) = A(1) * 100 + A(2) * 10 + A(3)
ولی تو این برنامه این کارو نکردین چطوری با B = B * 10 و B = B + A عدد 3 رقمی را ساختین ؟
دیدگاه
-
پاسخ : سوال درباره بسکام
نوشته اصلی توسط m.riahiمن متوجه نشدم برنامه ای که نوشتین چطوریه
نفهمیدم چرا این کارو کردین : B = B * 10 چون تا این قسمت برنامه b اصلا مقداری نداره که ضرب در 10 بشه
یه مشکل دیگه هم اینه که نفهمیدم چطور عدد 3 رقمی را ساختین باید رقم اول در 100 ضرب بشه و رقم دوم در 10 و در نهایت با رقم سوم جمع بشه مثل این : V(j) = A(1) * 100 + A(2) * 10 + A(3)
ولی تو این برنامه این کارو نکردین چطوری با B = B * 10 و B = B + A عدد 3 رقمی را ساختین ؟
حالا رابطه زیر را 3 بار با a های مختلف تکرار کن
b=b*10
b=b+a
نتیجه یک عدد 3 رقمی هست که مورد نظر ماست دلیلش هم اینه که شما کافیه
هر رقمی که میگیری اونو در 10 ضرب کنی و به اضافه رقم بعدی کنی اینطوری هر عددی رو میتونی از ورودی بگیری ( خودتون عدد بدین و تست کنین)
و اینکه برای اولین عدد b برابر a میشه چون باید همین طور بشه وگرنه محاسبه اشتباه در میاد به همین دلیل b=b*10 رو اول قرار میدیممن نمىآتوانم فرضیه «بىآاخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآدانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
آلبرت اینشتین
منبع: http://fa.wikiquote.org
دیدگاه
-
پاسخ : سوال درباره بسکام
نوشته اصلی توسط silicon0شما فرض کن دو تا متغیر داری a و b
حالا رابطه زیر را 3 بار با a های مختلف تکرار کن
b=b*10
b=b+a
نتیجه یک عدد 3 رقمی هست که مورد نظر ماست دلیلش هم اینه که شما کافیه
هر رقمی که میگیری اونو در 10 ضرب کنی و به اضافه رقم بعدی کنی اینطوری هر عددی رو میتونی از ورودی بگیری ( خودتون عدد بدین و تست کنین)
و اینکه برای اولین عدد b برابر a میشه چون باید همین طور بشه وگرنه محاسبه اشتباه در میاد به همین دلیل b=b*10 رو اول قرار میدیم
حالا برای 4 تا این طوری نوشتم . درست نوشتم ؟
$regfile = "m32def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7 , E = Pinb.3 , Rs = Pinb.2
Config Lcd = 16 * 2
Config Kbd = Portc , Debounce = 50 , Delay = 100
Dim A As Byte , B As Integer , I As Byte , V(4) As Integer , J As Byte , Ave As Single , Sum(3) As Integer
J = 0
Do
J = J + 1
For I = 1 To 3
Main:
A = Getkbd()
If A > 15 Then Goto Main
B = B * 10
B = B + A
Next
V(j) = B
Loop Until J = 4
Sum(1) = V(1) + V(2)
Sum(2) = V(3) + V(4)
Sum(3) = Sum(1) + Sum(2)
Ave = Sum(3) / 4
Lcd "ave=" ; Ave
End
دیدگاه
دیدگاه