PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کمک در نوشتن یک برنامه



amidboys
25-01-2009, 21:22
سلام باتشکر از جواب سریع شما به درخواستها ما

در استفاده از key pad اگه بخام بگم اگه وقتی 1 رو با مربع زدم یک دستوری انجام بده و اگر 1 رو با ستاره زدم یک کاره دیگه انجام بده باید چکار کنم؟

البته اصل موضوع اینه که می خوام ببینم چجوری میشه یک شرطی فقط با زدن دو تا کلید یا حتی بیشتر انجام بشه (توی کی پد) لطفا به زبان C

اصل پروژه اینه:
وقتی در 1 تا 9 رو با مربع زدم موتور پله ای به ازای 1 تا 9 دور بچرخه و تو ال سی دی بنویسه راست:1 تا 9همین کار رو با زدن ستاره به چپ دنبال کنه

از همکاری صمیمانه شما متشکرم

kavir
26-01-2009, 09:27
سلام
لطفا شما شروع کنید و هر کجای برنامه اشکال داشتید ما کمک می کنیم
اگه سعی کنید خودتون بنویسید برای خودتون بهتره و ما فقط در رفع اشکال کمک می کنیم نه در نوشتن کل پروژه aa)

amidboys
26-01-2009, 12:29
سلام
منظور من این بود که در همین قسمت یعنی

در استفاده از key pad اگه بخام بگم اگه وقتی 1 رو با مربع زدم یک دستوری انجام بده و اگر 1 رو با ستاره زدم یک کاره دیگه انجام بده باید چکار کنم؟

البته اصل موضوع اینه که می خوام ببینم چجوری میشه یک شرطی فقط با زدن دو تا کلید یا حتی بیشتر انجام بشه (توی کی پد) لطفا به زبان C

چکار باید بکنم قسمتهای دیگر رو تقریبا درست کردم کل پروژه رو فقط برای اطلاع شما از نحوه عملکرد گفتم

لطفا به من کمک کنید

متشکرم

kavir
26-01-2009, 12:49
سلام
این برنامه رو قبلا نوشته بودم برای نشان دادن اعداد به صورت فارسی روی یک ماتریس 8*8
دانلود (You can see links before reply .zip)
در داخل خود برنامه
switch(old
این متغییر old حاوی عددی که توسط شما فشار داده شده در روی کیبرد هست و برای پاسخ شما
اینکه شما باید چک کنید محتوای old اگه یک بود در یک متغییر ذخیره کنید (فقط به عنوان اینکه یک فشار داده شده)و کلید بعدی که فشار داده شد اونم چک کنید اگر * یا # بود در یک تابع هر کاری خواستید انجام بدید در غیر اینصورت محتوای متغییر قبلی هم که old رو دخیره کرده بود پاک کنید
نکته اینکه برای * و یا # می تونید اعداد 14 و 15 و.. در نظر بگیرید که دقیق توی پروژه یادم نیست چی بود و با فایل پروتئوس براتون فرستادم و این برنامه کیبرد استاندارد هست و از تاخیر برای رها شدن کلید استفاده نشده و یک روش بهتره و مطمئن تر که در خود سورس بررسی کنید
موفق باشید

codev
26-01-2009, 15:22
سلام
برای این کار ، در ابتدا بیاید ییه تابعی بنویسید که عدد فشرده شده روی صفحه کلید رو بخونه . برای مثال تابع زیر :
unsigned char scan_keypad (void)
این تابع باید مشخصات زیر رو داشته باشه :
1-اعداد خوانده شد از 0 تا 15 برای یک کی پد 4*4 رو برکردونه .
2-در صورت فشرده نشدن هیچ دکمه ای یک عدد ، برای مثال 255 یا هر عدد دیگری که در محدوده ی صفحه کلیدت نباشه رو برگردونه.

بعد از نوشتن این تابع اون رو در یک حلقه قرار می دهیم و منتظر میشیم که یک دکمه ای فشار داده بشه ، بعد از اینکه یک عدد فشار داده شد و یا اجرای برنامه از داخل حلقه خارج شد شما می تونید پردازش لازم روی اعدادتون انجام بدید .
در این موردی که شما می خواین ، به نظر من اول یک بار عدد رو از تابع بگیرید و توی یک متغیر ذخیره کنید و بعد باز هم یک عدد دیگه از این تابع بگیرید و توسط یک switch case مواردی که خودتون می خواین اتفاق بیفته رو شرط بندی کنید.
این سورس که زیر هست شامل تابع بالا است و شما برنامتون و در تابع main بنویسید.
گفتم شاید با codevision کار نکنید برنامه رو توی یک فایل متنی ذخیره کردم .
You can see links before reply
در مورد این تابع هم بگم که تابع اسکن صفحه کلید scan_keypad() نام داره و در صورت فشرده نشدن هیچ دکمه ای مقدار 255 رو بر می گردونه.
نحوه ی اتصال صفحه کلید به میکرو هم به صورت زیر هست .

You can see links before reply (You can see links before reply)
در ضمن توی تابع هم یک آرایه ی دو بعدی هست که می تونی با صفحه کلیدت تطابق بدی(خوب به این ارایه و نحوه ی قرار گرفتن صفحه کلید عکس بالا نگاه کن) . اگه توجه کنی آرایه ی اول مربوط به سطر و ستون اول و آرایه ی چهارم مربوط به سطر اول و ستون چهارم است . همچنین آرایه ی پنجم مربوط به سطر دوم و ستون اول و الی اخر تا اینکه به ارایه ی آخر برسیم این ارایه هم مربوط به سطر و ستون اخر است.
بعد از این تابع یه تاخیر 50 میلی ثانیه ای هم بذار.
با تشکر.