سلام به همه بربچز
میخام یه مدار قفل رمز با قابلیت عوض کردن پسورد بنویسم . اگه میشه مرحله به مرحله بهم کمک کنید و بهم نخندید چون مبتدی هستم
1-من از کیبرد 4*4 استفاده کردم .میخام از دستور get kbd استفاده کنم .میخام ببینم ایا با یک بار نوشتن این دستور میتونم 4 تا عدد گرفته شده رو توی یه متغیر مثل a ذخیره کنم ؟
2- برا نوشتن این متغیر a در حافظه داخلی میکرو یا مقایسه با حافظه داخلی باید از write eeprom استفاده کنم ؟ اگه بله آدرس دهیش بلد نیستم
3- میخام به مدارم دما هم اضافه کنم.فقط تو کتاب اقای کاهه اون منهای 558 و تقسیم بر 2 رو نفهمیدم واسه چی انجام داده
ممنون میشم مدیر الکترونیک یا الکترونیکی های دیگه کمک کنن
یعنی با این همه مدیر و کاربر فعال کسی نیس جوابمو بده . :(
مشکلی نیست
1. آره ، منظورت اینکه رمز تایپ کنی و داخل a ذخیره بشه بعد با مقدار B(که رمز) چک کنه اگه درست بود که قفل باز میشه اگه نه خطا بده
2.؟
3.خوب این مقدار که از ADC خونده می شه یک عدد که هیچ ربطی به دما نداره وقتی این عدد از ش کم میشه و تقسیم بر 2 میشه حاصل دمای محیطه
شروع کن ما هم کمکت می کنیم
1-خب get kbd یه دونه عدد میگیره . بعد از 4 بار get kbd نوشتن چه جور باید اونو تو مثلا b ذخیره کنم ؟
2- منشورم این بود اون عددی که ذخیره شده رو چه جوری باید بریزم تو حافظه دائمی ؟
3- می دونم حاصلش میشه دمای محیط . میخام ببینم چرا منهای 558 و تقسیم بر 2 ؟
سلام...
شما میای و یه ارایه تعریف میکنی
بعد با دستور while , wend
کد:
for b=1 to 4
a=getkbd()
while a=16
()a=getkbd
wend
code(b)=a
lcd code(b)
waitms 20
while a<>16
a=getkbd()
wend
next b
دلیل تقسیم بر دو کردن
اقای ابکا شما چرا 2 بار دستور while و گرفتن عدد از کیبورد رو بکار بردید ؟
من قبلا if a>15 goto main استفاده میکردم حالا این دستور جدید از شما یاد گرفتم ولی نفهمیدم چرا دوبار . ارایه و for next شو فهمیدم
بعدش هم اقای ابی رام من منظورم کتاب کاهه بود.تو اون کتاب اول sum رو منهای558 کرده و بعد تقسیم بر 2 . چرا ؟
مهندس شما باید از رشته استفاده کنی DIm A as string*4
هر دفعه این کارو باسد انجام بدی تا طول رشته ات به 4 برسه
اینو ببین
[/align][attachment=6202]
(۰۵-اسفند-۱۳۸۹, ۲۲:۳۶:۵۴)elec_2011 نوشته است: [ -> ]اقای ابکا شما چرا 2 بار دستور while و گرفتن عدد از کیبورد رو بکار بردید ؟
من قبلا if a>15 goto main استفاده میکردم حالا این دستور جدید از شما یاد گرفتم ولی نفهمیدم چرا دوبار . ارایه و for next شو فهمیدم
بعدش هم اقای ابی رام من منظورم کتاب کاهه بود.تو اون کتاب اول sum رو منهای558 کرده و بعد تقسیم بر 2 . چرا ؟
سلام..
دلیلش اینه که تا زمانی که کلیدی رو فشار ندادی داخل حلقه اول و تا زمانی که دستت رو از کلید بر نداشتی داخل حلقه دوم بمونه تا هی عدد نندازه..
وقتی دستت رو کلیدی نیست کیپد عدد 16 رو برمیگردونه پس داخل حلقه اول هست و منتظره تا یه کلید رو بزنی و وقتی کلید رو زدی منتظر میمونه تا دستت رو از کلید برداری..
ابی رام جان من قسمت عوض کردن پسورد رو کامل کردم . البته خیلی با عجله . لطفا اشتباهاتم بگیر. قسمت اول عدد میگیره قسمت دوم هم رمز جدید رو تو ای پی رام ذخیره میکنه.درزم من به جای اون قسمت گردش کیبرد if a >16 گذاشتم ایرادی داره ؟
کد:
Dim C As Eram Byte
Dim Code(4) As Byte
For B = 1 To 4
M :
A = Getkbd()
If A > 16 Goto M
End If Code(b) = A
Lcd Code(b)
Next B
If A = C Goto Change
End If Goto M
Change : For B = 1 To 4
S:
A = Getkbd()
If A > 16 Goto S
Code(b) = A
Lcd Code(b)
Next B
A = C
Readeeprom C , 0
Writeeeprom A , 0
خیلی با عجله نوشتی..
بهتون گفتم که با حلقه while ,wend بنویس.. بهتره...
فرض کن کاربر هنوز دست به کلید نبرده چه اتفاقی میافته؟؟؟؟؟
باید یه حلقه بزاری در اول برنامه که صبر کنه تا اولین عدد از کیپد دریافت بشه بعد مننتظر بمونه دستش رو برداره و اونوقت عدد رو تو یه متغییر بریزه و باز منتظر بمونه که کاربر عدد دوم رو وارد کنه...
اوکی حالا بقیش درسته .؟ میخام عدد گرفته شده اگه با مقدار ذخیره شده حافظه ی داخلی برابر بود اونو توی ای پی رام ذخیره کنه
برنامه حالا که نگاش میکنم اصلا نفهمیدم چی نوشتم :(