نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ

نمایش عدد در lcd با صفحه کلید

به نام خدا : نمایش عدد در lcd با صفحه کلید (کیپد) : انشاالله الان یه پروژه avr ساده رو میخوام بزارم که از صفحه کلید عدد و + و – و × و ÷ میگیره و در lcd نمایش میده.این برنامه مقدمه ای هستش برای نوشتن برنامه ماشین حساب.هدف از این برنامه آشنایی با کد ها هستش تا تو برنامه ماشین حساب گیج نشید(البته اون هم چیزی نداره ولی ممکنه تازه کارا رو یکم اذیت کنه.)

توضیح مدار :

۱) برای تر نمیز شدن مدار در پروتئوس اتصالات بین آی سی و صفحه کلید رو به صورت بیسیم و با استافاده از INPUT  و  OUTPUT   تعریف کردم که تو آی سی ۴ تای اولی OUTPUT    هستند یعنی اطلاعات میفرستن یعنی پایه های صفحه کلید رو صفر و یک میکنن  و تو صفحه کلید هم ۴ تا ی اول به صورت INPUT   هستن ،  یعنی اطلاعات میگیرن و ۴ تا پایه بعد آی سی و صفحه کلید هم….  برای این که به برنامه بگیم که این پایه آی سی  به فلان پایه  صفحه کلید متصل هست باید پایه هایی که قراره به هم وصل باشن روشون دوبار کلیک کنیم و نام هایی یکسان بدهمیم.
لذا پایه هایی که نامشان مثل ها هست یعنی به هم وصل اند.
۲) اگه دقت کنید میبینید که تو صفحه کلید  نصف پایه هاش ورودی هستن و و نصف دیگه خروجی ، البته اگه کد ها رو نگاه کنید متوجه میشید ولی میگم الان : تو تابع key اگه نگاه کنید میبینید که اومده از بین پورت های PD0 تا PD3   همه رو صفر کرده الا یکی ؛ مثلا PD0 رو یک کرده و ۳ تای دیگه رو صفر(یعنی الان اگه رو دکمه های ۷ یا ۸ یا ۹ یا ضربدر صفحه کلید ، کلیک شود ما میفهمیم) ، حالا اگه ما روی هر کدام از دکمه های گفته شده کیک کنیم ، آن پایه مقدار ۱ رو به آی سی میفرسته ، مثلا اگه ما روی  دکمه ۸ در صفحه کلید کلیک کنیم ، پایه شماره ۶ صفحه کلید مقدار ۱ رو به آی سی ارسال میکنه.   امید وارم که متوجه شده باشید.

نمایش عدد در lcd با صفحه کلید

 

توضیح کد های برنامه : 

این برنامه دوتابع دارد ، یکی main که تو همه برنامه ها هستش و یکی key  که با استفاده از این تابع میفهمیم که روی چه چیزی در صفحه کلید کلیک شده ،
روی عدد ۲ کلیک شده یا روی عدد ۰ یا روی ضرب در یا روی ….
بعد که ما فهمیدیم روی چه چیزی کلیک شده ، تو تابع main  میگیم که اونو نمایش بده.

 

در کل نمایش عدد در lcd چیز خاصی نداره ولی اگه جاییش رو نفهمیدید ، درخدمتیم.

دانلود : شبیه سازی و کد های پروژه

 

عملی بستن مدار

توجه : برا عملی بستن مدار برا کیپد یادتون نره مقاومت پول آپ قرار بدید!؛ میتونید این مطلب ( آموزش جامع کار با کیپد ) رو بخونید.

4.3MB نمایش عدد در lcd با صفحه کلید
0%
00:00  /  00:41
تعداد مطالب : 357 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
بقیه جلسات : ???
این مطلب هیچ طبقه بندی یی ندارد!
ارسال دیدگاه

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) پسورد فایل های سایت : www.dmf313.ir

3) نظرات حاوی کد برنامه نویسی تایید نمیشوند ( قالب سایت بهم میریزه )

  1. مهمان

    حامد کاظمی

    با سلام .
    بنده در حال کار روی پروژه کارشناسی هستم که کنترلر pid هستش … پروژم تقریبا کامل شده فقط یک قسمت هست که با پیکربندی یک LCD کاراکتری و کی پد قرار هست که مقادیر یک کی پد ۴*۳ تلفنی رو روی LCD نمایش بدهم … ولی به مشکلی برخوردم که چند هفتس رو مخمه و تا حالا کسی نتونسته جوابی براش پیدا کنه !!!… موضوع از این قراره که من ردیف ها ی کیپد رو 0و1 میکنم و چک میکنم که کدام ستون ( که ورودی هست) صفر میشه … حالا میتونم فایلهای پروژه رو هم براتون ارسال کنم …. ولی گیر من سر اطلاعات یکی از ستون هاست که ستون ۱ باشه ،یعنی اعداد 1,4,7و کاراکتر* که به شکل عجیب و غریبی وارد میکرو نمیشن!!!! … من با وقفه خارجی اسکن کیپد رو انجام میدهم … همه ی اعداد و کاراکتر # به سیستم وارد و نمایش داده میشن و پردازش های بعدی هم انجام میشه … اما به هیچ وجه مقادیر 1,4,7,* رو قبول نمیکنه!!! … چنتا کار که به ذهنم میرسید انجام دادم …. مثلا ستون ها رو عوض کردم برای مثال ستون 3 رو با ۱ عوض کردم که در این حالت با فشردن مثلا 3 باید 1 وارد بشه ولی بازهم نشد ولی وقتی 1 رو میزدم قشنگ 3 رو نشون میده رو lcd و طبق اون پردازش انجام میده ، فهمیدم از کیپد نیست … بعد رفتم تو برنامه (زبان c ) شروع کردم به عوض کردن اون پایه ای که قرار بود این اعداد 1,4,7,* رو اسکن کنه و عوضش کردم … گفتم شاید مشکل از پین باشه … ولی بازهم نشد یعنی این اعداد وارد میکرو نمیشن اصلا … فهمیدم مشکل از پینهای میکرو هم نیست ….ولتاژ پایه ها رو هم بررسی کردم موقع فشار دادن این دکمه های ۱،۴،۷،* همون ولتاژ ۰.۵۶ ولتی(بخاطر گیت and دیودی ) روی پایه وقفه خارجی (لبه پایین رو falling ) هست که موقع فشار دادن بقیه دکمه ها هست !!!!… این پروژه مثل هلو توی Proteus داره جواب میده و هیچ مشکلی هم نیست ولی توی پیاده سازی واقعیش این مشکلی که گفتم داره !!!!… در ضمن debounce کلید ها رو هم کامل رعایت کردم … چون از پورت c استفاده کردم برای اسکن کیپد حواسم هست که باید jtag رو غیر فعال کنم (در این حد حالیمه !!! ) … همچنین تو مدار یک led گذاشتم که هر مقداری که با کیپد وارد میکرو میشه led رو یک ثانیه روشن کنه … دقیقا وقتی ۱،۴،۷،* رو میزنم led توی پروتئوس روشن میشه توی واقعی خاموش میمونه ولی وقتی هر دکمه دیگه ای رو میزنم روشن میشه !!!! روی دوتا میکرو مشابه هم انجام دادم که فرقی نکرد و هنوز مشکل پا برجا بود !!!!! … حالا که زحمت کشیدید و روده درازی های بنده رو خوندید لطفا اگر راه دیگه ای هست که بررسی نکرده باشم ، برام در پاسخ ذکر بفرمایید . اگر راهنمایی کنید که این مشکل حل بشه ( اگر تونستید عیبشو پیدا کنید ) از نظر من سطح علمیتون و تجربتون یه سرگردن از همه ی مدعی های میکرو کار های avr بالا تره …
    اعیاد شعبانیه و سال نو هم پیشاپیش مبارک .

  2. مهمان

    Erfan

    سلام وقتتون بخیر من میخام یه حرف را روی ال سی دی کاراکتری توسط چهار کلید به سمت چپ،راست،پالا،پایین حرکت بدم.میشه کمکم کنید ممنون

  3. مهمان

    محمد

    سلام وقت بخیر اگه لطف کنید برنامه با استفاده از یک LCD و چهار کلید معادل BCD معادل عددی کلید ها را به شکل باینری دسیمال و هگزادسی مال روی LCD نمایش دهید

  4. مهمان

    یوسفی

    سلام وقتتون بخیر..پروژه ماشین حساب ساده با atmega16دارم…ولی ال سی دیم روشن نمیشه…هنوز هم میکرو رو پروگرام نکردم…..برای فقط روشن شدا ال سی دی غیر از پایه های d4 d5 d6 d7 وrs e rw که به میکرو وصل میشن چه پایه های دیگه ای رو باید زمین کنم یا پاور بدم؟…ممنون میشم راهنماییم کنید

    • مهمان

      ممد

      داداش این چرا 32 تا عدد مثلا 9 نشون میده من بخوام یه دونه عدد نشون بده چی کار کنم

  5. مهمان

    noshin

    سلام وقت تون بخیر
    ممنون از مطالب مفید تون
    من فایل کدها و مدار شبیه سازی شده رو دانلوذ کردم اما متاسفانه باز نمیشه
    و اینکه من مدار رو در پروتئوس شبیه سازی کردم ولی وقتی اجرا میکنم ارور میده
    باید قبل اجرا کار خاصی انجام بدم؟
    ممنون میشم راهنماییم کنید چون اصلا کار با کد ویژن رو بلد نیستم cry cry

    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام
      بعد دانلود و خارج کردن پروژه از حالت فشرده – اسم پوشه رو انگلیسی کنید.

  6. مهمان

    عطی

    سلام میخواستم بدونم میشه برای مقاومت های pull up فقط از یه button استفاده کرد؟؟همه رو به همون اتصال داد؟؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      متوجه منظورتون نشدم.

      • مهمان

        عطی

        سلام الان من مدارو به صورت زیر بستم درست بسته شده؟؟ به طور خودکار رو lcd عدد 7 نشون میده sad
        http://uupload.ir/files/pmwy_img-20180511-wa0011.jpg
        http://uupload.ir/files/9p26_img-20180511-wa0010.jpg

        • نویسنده این مطلب

          مهدی دمیرچیلو

          سلام
          برا بحث نور نمایشگر : باید از پتاسیوتر در راه اندازی lcd استفاده کنی و مقدار پتاسیومترو درست تنظیم کنی تا درست شه.
          برا بحث نمایش 7777 : باید برا کیپد از مقاومت پول آپ/دان (بستگی به نحوه کد نویسی داره) استفاده کنی و مقادرش هم مثلا بین 4.7کیلو تا 10 کیلو باشه.

      • مهمان

        عطی

        مقاومت پول آپ هم گذاشته بودم اگه به شکل دقت میکردید.فقط مطمئن نیستم درست وصل کرده باشم:
        http://uupload.ir/files/4ar3_img-20180511-wa0012.jpg

  7. مهمان

    A.A.A

    برای ساخت یه قفل رمز دار الکترونیکی

  8. مهمان

    A.A.A

    استفاده از کیپد بدون برنامه نویسی امکان داره؟؟؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      استفاده از کیپد بدون برنامه نویسی زیاد : بله
      اما بدون هیچ برنامه نویسی : خب معلومه نه.
      از کتابخونه استفاده کنی کد نویسیت کمتر میشه.

  9. مهمان

    Hadis

    سلام
    ببخشید آیا می‌شه به جای استفاده از ۸پین میکرو برای ۱۶کلید(صفحه کلید ماتریسی) از ۲پین استفاده کرد؟

  10. مهمان

    4444

    سلام
    عذر میخوام
    میشه لطفاً راهنمایی کنید
    در کدویژن وقتی میخوام برنامه رو کامپایل کنم به تابع void keypad خطا میگیره
    میگه ‘;’ expected !!!! خب این خط از برنامه که نیازی به ‘;’ نداره ….
    لطفاً بگین اشکال از کجامیتونه باشه wink sad

  11. مهمان

    a

    سلام میگم من این برنامه رو خودم نوشیتم بدون lcd اسکن میکنه ولی وقتی یه دکمه میزنی دیگه اسکن نمیکنه میشه بگین مشکل چیه
    بعد چرا داخل پروتیوس از واچ داگ استفاده کردین
    #include ;
    #include ;
    int key();
    char y=0;
    void main(void)
    {
    DDRB=0x0F;
    while(1)
    {
    y=key();
    if(y==0){delay_ms(250);}
    if(y==1){delay_ms(250);}
    if(y==2){delay_ms(250);}
    if(y==3){delay_ms(250);}
    if(y==4){delay_ms(250);}
    if(y==5){delay_ms(250);}
    if(y==6){delay_ms(250);}
    if(y==7){delay_ms(250);}
    if(y==8){delay_ms(250);}
    if(y==9){delay_ms(250);}
    if(y==10){delay_ms(250);}
    if(y==11){delay_ms(250);}
    if(y==12){delay_ms(250);}
    if(y==13){delay_ms(250);}
    if(y==14){delay_ms(250);}
    if(y==15){delay_ms(250);}
    };
    };
    int key(void)
    {
    while(1)
    {
    PORTB.0=1;
    PORTB.1=0;
    PORTB.2=0;
    PORTB.3=0;
    if(PINB.4==1){return 0;delay_ms(50);}
    if(PINB.5==1){return 1;delay_ms(50);}
    if(PINB.6==1){return 2;delay_ms(50);}
    if(PINB.7==1){return 3;delay_ms(50);}
    PORTB.0=0;
    PORTB.1=1;
    PORTB.2=0;
    PORTB.3=0;
    if(PINB.4==1){return 4;}
    if(PINB.5==1){return 5;}
    if(PINB.6==1){return 6;}
    if(PINB.7==1){return 7;}
    PORTB.0=0;
    PORTB.1=0;
    PORTB.2=1;
    PORTB.3=0;
    if(PINB.4==1){return 8;}
    if(PINB.5==1) {return 9;}
    if(PINB.6==1){return 10;}
    if(PINB.7==1){return 11;}
    PORTB.0=0;
    PORTB.1=0;
    PORTB.2=0;
    PORTB.3=1;
    if(PINB.4==1){return 12;}
    if(PINB.5==1){return 13;}
    if(PINB.6==1){return 14;}
    if(PINB.7==1){return 15;}
    };
    };

  12. مهمان

    arezoo

    سلام جناب مهندس
    ببخشید این ماشین حساب عدداعشاری رو به عنوان ورودی نمیگیره ؟؟؟؟؟؟؟؟؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام-نه خودت باید اضافش کنی.

  13. مهمان

    فاطمه

    سلام ممنون از سایت بسیار خوبتون من یه خواهش ضروری دارم
    یه پروژه ماشین حساب دادم بیرون برام درست کنن پروژه رو بهم تحویل داد اما بر نامه نویسیش رو لازم دارم خیلی برا استادم فایل برنامه مهمه ون اقا هم جوابمو نمبده
    یه ماشین حساب که ۴ عمل اصلی رو انجام بده و به اضافه سینوس و کسینوس و برای سینوس کسینوس نمودار هم بتونه رسم کنه
    اگه همچین برنامه ای رو به ایمیلم بفرستید یه دنیا ممنون میم fateme.behnam.1374@gmail.com

  14. مهمان

    علیرضا اهنی

    سلام.
    من اینو با۷Sدرست کردم ولی فقط بعد اینکه عددو زدم دیگه میکرو صفحه کلید رو اسکن نمی کنه چیکار کنم؟
    کدها
    http://paste.debian.net/977752/
    مقاومت هم گذاشتم تاثیری نداشت.

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      خب کدت چند تا مشکل داره
      ۱) وقتی به برنامه به کد return میرسه – بقیه کدها رو اجرا نمیکنه و از اون تابع خارج میشه – لذا اون دیلای ها رو تو تابع main و بعد از
      y = key();
      بزاری به نظرم بهتره.
      ۲) دیلای ۵۰ میلی خیلی کمه – شما ۴۰۰ تا بزار
      ۳) مقاومت پول دان هم باید گزاشته باشی برا پایه های PIND.4 تا PIND.7 – حتما باید بزاره – مطلبشو خوندی دیگه؟ مقاومت ۴٫۷ تا ۱۰ کیلو داری بزار.

      • مهمان

        علیرضا اهنی

        سلام.
        کد خودت هم مشکل داره که!
        وقتی هیچی نمی زنم می نویسه۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷۷

        • نویسنده این مطلب

          مهدی دمرچیلو

          سلام مجدد – این برا نبودن مقاومت پول آپ/دان هستش

  15. مهمان

    سید علی حسینی

    سلام . من با شماتیکی که خودم تو پروتئوس کشیدم و کدی که خودم نوشتم ، برنامه رو اجرا کردم . اما وقتی مثلا عدد ۷ رو میزنم دیگه چراغ قرمز ۴ تا پین اول حرکت نمی کنه و خودش بدون اینکه من چیزی دست بزنم عدد ۷ رو اضافه میکنه . اما با شماتیک که شما واسه دانلود گذاشتین که عین شماتیکی بود که من کشیدم برنامه رو هم روی کد خودم هم روی کدی که تو فایل دانلودی بود اجرا کردم این مشکل رو نداشت . چرا تو پروتئوس عین شماتیکی که شما کشیدین میکشم اما مشکل بالا پیش میاد .؟
    درضمن ممنون بابت آموزش

  16. مهمان

    وحید سلیمی

    سلام جناب دمیرچی.به ما بگو برنامه نویسی پروزه کاریم کجا ببرم.بلد نیستم چکار کنم

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام.یعنی یه جارو معرفی کنم تا برات انجام بدن؟

  17. مهمان

    محمد

    با سلام خدمت شما می خواستم بپرسم که چگونه میشه با فشار دادن کلید ستاره در کی پد عدد ها روی ال سی دی نوشته شود یا همون که دارای اینتر باشه

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      متوجه نشدم.

  18. مهمان

    JuniorEngineer

    سلام
    من میخاستم با زدن کلید c ال سی دی پاک شده مکان نما به مختصات (۰,۰) بره اما نتونستم پیداش کنم میتونید راهنماییم کنید
    تشکر

  19. مهمان

    محمد

    سلام اقا اگه همه رو خروجی تعریف کنیم بعد چهار پورت اول رو سطر بزاریم بقیه رو ستون بعدشم مثه بالا بنویسیم ؟مشکلش چیه؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      همه خروجی برا کیپد نمیشه – اون وقت چطور میخوای بخونی.

  20. مهمان

    امیر

    سلام مهندس.ممنون بابت آموزش خوبتون.من این رو مدار رو میخوام pcb رو تو آلتیوم بکشم اما صحه کلیدی که میاره کلا دوتا سیم داره که بصورت باس هستش.چیکار کنم که هر هشتا سیم صفحه کلیدم نمایش داده بشه تا بتونم به میکرو وصلش کنم؟ یا اگه راه دیگه ای هست که یصورت باس بتونم به میکرو وصلش کنم بگین.ممنون

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      باس یعنی چی؟

      • مهمان

        امیر

        منظورم سیم کشی بصورت bus .شما نمیخوای مدارت شلوغ بشه بجای اینکه مثلا 10 تا سیم بکشی از چی استفاده میکنی؟! الان من تو آلتیوم صفحه کلید انتخاب میکنم به ائنصورت میاد فقط دوتا سیم هستش.من میخوام پی سی بی رو در بیارم چیکارش کنم.

        • نویسنده این مطلب

          مهدی دمرچیلو

          آها – خب تو آلتیوم من نت میزارم ولی این که قطعه انتخابیت 2 تا پایه داره خب یعنی قطعه رو اشتباه انتخاب کردی.
          کیپد رو بزار رو برد برد ببین چند تا خونه اشغال میکنه – یه هدر به همون اندازه قرار بده تو آلتیوم و …

  21. مهمان

    farah

    سلام من میخوا م بر روی عدد گرفته شده از کیپد محاسبه انجام بدم..ولی نمیشه

  22. مهمان

    رضا

    سلام.دوست عزیز میشه شمارتون رو برام ایمیل کنید.چندتا سوال در مورد یه پروژه ازت داشتم

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      سوالای الکترونیکی در سایت مطرح شوند – برا بحث انجام پروژه تماس گرفته شود(پروژه دانشجویی انجام نمیشه) و جزئیات پروزه ایمیل بشه.
      mahdedamarchi@gmail.com

  23. مهمان

    امین

    درود. آقا مخم دود بلند شد از بس فکر کردم!اعداد رو وارد میکنم و نمایش هم میده ولی عدد قبلیش چرا پاک میشه؟من ک کلیر نزاشتم!!!!!!!

    • نویسنده این مطلب

      مهدی دمرچیلو

      کدت رو به صورت TXT برام آپلود کن تو پیکو فایل و لینکش رو برام بفرست

  24. مهمان

    امین

    سلام. من برنامه اسکن کیبورد نوشتم مثل چیزیه ک شما نوشتی!فقط هر سری ک اسکن و نمایش میده عدد قبلی پاک میشه!بنظرت چکار میشه کرد؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      احتمالا از تابع lcd_clear استفاده کردی و یا از تابع lcd_gotoxy و مقدار ثابتی بهش دادی و مقدارش رو تنظیم نمیکنی.

  25. مهمان

    امیر

    سلام مهندس. آقا من میخوام تو این برنامه اینتراپت هم تعریف کنم. دوتا intrupt
    زمانی که اینتراپت صفر فشار دادم یک رقم به عدد نمایش داده شده روی ال سی دی اضافه بشه و زمانی که اینتراپت یک رو فشار دادم یک رقم از عدد نمایش داده شده روی ال سی دی کم بشه. من از برد آموزشی استفاده کردم و اینکه میگم اینتراپت رو فشار میدم به همین خاطره.برای اینتراپت صفر یک دو کلید در نظر گرفته شده. ممنون از سایت خوبتون خسته نباشین

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام آموزش وقفه تو سایت هستش…

  26. مهمان

    sara

    سلام آقای مهندس ، ممنون بابت مطالب مفیدی که به اشتراک میزارید ، آقای مهندس تو ادامه این پروژه میشه کمک کنید که ۱-من بتونم یک ماشین حساب با قابلیت جمع و تفریق برنامه اش رو بنویسم ؟ (البته با تعداد ارقام متغیر)
    ۲-و درنهایت ماشین حساب رو که ساختیم بتونه محاسبات و نتیجه محاسبات قبل رو در خودش ذخیره کنه تا در صورت نیاز بهمون نمایش بده ؟
    راستی آقای مهندس اگر در ارتباط با نوشتن همین برنامه ها در نرم افزار Atmel Stdio هم اگر اطلاعاتی دارید ممنون میشم راهنمایی کنید .
    بازم ممنونم

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      تو نت فک کنم یه پروژه ای دیدم برا ماشین حساب اونو میتونید دانلود کنید و کد هاش رو تحلیل
      شما کد رو بنویسید اگه مشکلی، سوالی چیزی بود در خدمتیم.
      با اتمل کار نکردم/
      و این که اگه برا پروژتون از تابع تابع کردن پروژه استفاده کنید برا سادگی کار و عیب یابی آسون تر
      تابعی برا دریافت عدد
      تابعی برا ضرب، تقسیم و…
      تابعی برا نمایش

  27. مهمان

    morbal

    خیلی ممنون تونستم ازش ایده بگیرم با یذره ساده سازی یدونه کیپد ۴*۳ رو راه اندازی کنم متاسفانه استاد مفت خور یه متن اشتباه رو کپی پیست کرده بود آورده بود سر کلاس هر چی امتحان میکردیم جواب نمیداد T_T

  28. مهمان

    sajad

    مرسی از مطالب خوبتون امیدوارم همینطور ادامه بدید
    یه سوالی که داشتم این قسمت اخر کدتون که پایین اوردمش دقیقا چیکار میکنه وبه چه منظوریه اصن برگشت به ۱۶ به بالا که نداریم؟
    PORTD.0 = 1 ;
    PORTD.1 = 0 ;
    PORTD.2 = 0 ;
    if(PIND.5 == 1){return 16 ;}
    if(PIND.6 == 1){return 17;}
    if(PIND.7 == 1){return 18 ;}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 1 ;
    PORTD.2 = 0 ;
    if(PIND.5 == 1){return 19 ;}
    if(PIND.6 == 1){return 20 ;}
    if(PIND.7 == 1){return 21 ;}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 0 ;
    PORTD.2 = 1 ;
    if(PIND.5 == 1){return 22 ;}
    if(PIND.6 == 1){return 23 ;}
    if(PIND.7 == 1){return 24 ;}

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      بدون استفاده
      حواسم نبود حذفش کنم

  29. مهمان

    فرشید

    سلام smile
    مثل همیشه آموزش هاتون عالیه.
    حق نگهدارتون..

  30. مهمان

    وحید

    سلام خسته نباشی.
    من یک سوال داشتم .در مورد کی پد.
    میخوام برنامه هفتگی اجرا کنه. مثلا مثبت شنبه در نظر بگیر.
    اگر کلید شنبه به اضافه ۰ فشار بدم تو ال سی دی شنبه نمایش داده میشود.
    و اگر کلید شنبه به اضافه ۱ فشار بدم تو ال سی دی یکشنبه نمایش داده میشود.
    منظورم این هست smile
    http://s6.uplod.ir/i/00653/iba3o3v2zxst.jpg

    • نویسنده این مطلب

      مهدی دمرچیلو

      من جواب نظرت رو دادم ولی مثل این که ندیدی
      پس همه ی دکمه ها توی یه کیپد هستن
      والا با تایمر میشه انجام داد بدون تایمر هم میشه(با تایمر بهتره)
      به نظرم ۲ تا تابع بررسی دکمه فشرده شده تعریف کن
      یکی برا اعداد و یکی برا روز های هفته
      ۴ تا پایه وودی و ۴ تا خروجی(برا دادن کیپد باید یکی از پورت ها رو این طوری مقدار بدی)
      دفعه اول تابع “بررسی دکمه فشرده شده برا روز ها” رو فرابخون و داخل یه وایل بزار(تا زمانی که این تابع فشرده شدن روزها همین مقدار رو میده، یعنی طرف دستش روی دکمه هستش)
      و بعد بیا تابع برا اعداد رو فرا بخون و تو یه switch بررسی کن اگه ۰ فشرده شده بود (و تابع روز ها هم شنبه فشرده شده بود) اون وقت بیا و شنبه رو نشون بده و در غیر این صورت کاری نکن

  31. مهمان

    وحید

    سلام خسته نباشی.
    من یک سوال داشتم .در مورد کی پد.
    میخوام برنامه هفتگی اجرا کنه. مثلا مثبت شنبه در نظر بگیر.
    اگر کلید شنبه به اضافه ۰ فشار بدم تو ال سی دی شنبه نمایش داده میشود.
    و اگر کلید شنبه به اضافه ۱ فشار بدم تو ال سی دی یکشنبه نمایش داده میشود.

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      یعنی ۷ تا کلید برا روز های هفته و ۱۰ تا کلید برا اعداد ۰ تا ۹
      میشه مثل ctrl+c مثلا….
      برای این کار
      اول باس بگی که کل این کلید ها(۷+۱۰=۱۷) تو به کیپد هستش
      یا اعداد کیپد هستن و روز ها کلید(و اگه کلید هستش چه جوری کلیدی هستش…فشاری یا ثابت)
      اینا رو بگو تا بهت بگم
      چون در هر حالت داستان فرق داره

  32. مهمان

    امیر

    بابا همش 256 خط پروژمه بعدشم در مورد پروژه ی شما هم همین مشکل صدق میکنه smile

  33. مهمان

    امیر

    یا لااقل بگو مشکل برنامه ی من چیه که ال سی دی رو پاک نمیکنه؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      شونصد خطه پروژت …. من الان ایام امحاناتم هستش pardon

  34. مهمان

    امیر

    خب بیا یکاری کن فیلم تستشم واسه من بگیر نشونم بده که من بدونم مشکل از منه

    • نویسنده این مطلب

      مهدی دمرچیلو

      rofl
      اصلا شرمنده…حالا که فکر میکنم میبینیم مشکل از منه…
      شما به بزرگی خودتون ببخشید

  35. مهمان

    امیر

    اقا چرا تو برنامه ی خودت اعداد از lcd پاک نمیشن؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      تست کردم مشکلی نیست…

  36. مهمان

    امیر

    برادر من مگه شما نمیگی برنامه ای که در مورد کی پد نوشتی درسته و کار میکنه؟

  37. نویسنده این مطلب

    مهدی دمرچیلو

    قسمت کد های کیپد….فهمیدن این که کدوم دکمه فشرده شده ….رو مثل مطلب زیر بنویس >>>>
    https://dmf313.ir/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%DA%A9%DB%8C%D9%BE%D8%AF-%D8%A8%D8%A7-%D9%85%DB%8C%DA%A9%D8%B1%D9%88%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1-avr/

  38. مهمان

    امیر

    داداش پروژت یه مشکل کوچولو داره اونم اینه که lcd کلیر نمیشه و بجاش حالا بستگی داره به کی پد یه عدد دیگه تایپ میشه

  39. مهمان

    امیر

    اقا من تو برنامم یه جاییش گیر افتادم که بجای حذف عدد تایپ میکنه هفت میتونین کمکم کنید؟
    که فایل برنامه نویسمو بذارم؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      بفرست…
      زیپش کن
      شب (اگه مشکلی پیش نیاد) نگاش میکنم

  40. مهمان

    امیر

    ممنون از لطف بسیارتون
    سپاس گذارم
    قدردانی میکنم
    لطف عالی مستدام

  41. مهمان

    امیر

    همون پروژه که بالا فرستادی رو میگی؟
    حالا نمیشه یه نگاهی به پروژه منم بندازی؟خواهش میکنممممم cry

    • نویسنده این مطلب

      مهدی دمرچیلو

      بله….
      نوچ…

  42. نویسنده این مطلب

    مهدی دمرچیلو

    یه پروژه سالم برات فرستادم که…اونو نگاه کن و مشکلت رو حل کن….
    اون پروژه هه مشکلی نداره…تستش کردم good

  43. مهمان

    امیر

    اینا رو بلدم داداش منظورم اینا چرا هی چشمک میزنه منم اون مدار ماشین حساب مهندسیم تو پروتئوس جواب میداد ولی وقتی رو برد بستمش خودش مقدار دهی میکرد فکرکنم بخاطر همین چشمک زدنای خود به خود درسته؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      نه په ربطی داره….مگه خودت برنامه کیپد تا حالا ننوشتی؟؟؟
      یا کپی کردی؟؟؟
      شاید تو عمل مقاومت پول آپ(دان) نزاشتی….

  44. مهمان

    امیر

    چشم امیدم که همیشه به خدا بوده هست ولی دیگه از خودم نا امید شدم،داداش یه کاریم واسه من بکن که بد جوری گیر افتادم!!! راستی چرا پایه ها چشمک میزنن (ابی و قرمز میشن) علتش چیه؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      پایه آبی=۰ولت
      پایه قرمز=۵ولت
      پایه خاکستری=نامعلوم
      ===============
      توضیح برا شب یا فردا تو مطلب مربوطه اش sorry

  45. مهمان

    امیر

    داداش من هنوزم مشکلم حل نشده
    پیغام خطا میده که فایل txt قابل اپلود نیست میشه ادرس میلتونو بدین تا واستون میل کنم؟
    فقط قربونت من چشم امیدم به تو به استادم میل دادم که اصلا جوابمو نداد نامرد sad cry

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      یه جای ثایت تو سایت نظرت رو بزار
      زیپش میتونستی بکنی—الان دیگه نفرست
      این فایل رو ببین
      https://dmf313.ir/wp-content/uploads/LCD-KEY-PAD-BUTTONwww.dmf313.ir_.rar
      پسوردش هم آدرس سایته…..با حرف کوچیک…www.dmf313.ir
      مطلبش رو هم امشب یا فردا یا پسفردا میزارم تو سایت+توضیحات کوچولو موچولو good
      در ضمن چش امیدت به خدا و تلاش خودت باشه فقط و نه …

  46. مهمان

    امیر

    مشکلشم اینه که تو ساختش خودش خود به خود عدد میزنه

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      به زودی(تو چند روز آینده) یه مطلب در این باره تو سایت میزارم که دیگه این مشکلات رو نداره (و مقاومت پول دان یا آپ هم لازم نیست برا کیپد بزاریم….کد نویسیش هم فک کنم آسون تر باشه)
      (اگه یادم رفت…..خبرم کن…تو همین جا)

  47. مهمان

    امیر

    بچه ها کی میدونه این برنامه مشکلش کجاست؟
    #include
    #include
    #include
    #include
    #include
    #asm
    .equ __lcd_port=0x18
    #endasm
    //#############################################
    int key(void);
    float _Main(void);
    void Mohandes(void);
    void Mohasebe(void);
    void Alamat(int,int);
    float Emoji(int);
    //#############################################
    float a = 0 , b = 0 , c = 0 , q , t;
    int i ;
    char y=0 , lcd[25] , z ;
    //#############################################
    void main(void){
    lcd_init(16);
    lcd_clear();
    lcd_gotoxy(2,0);
    lcd_putsf(“JABER NOBAKHT”);
    lcd_gotoxy(3,1);
    lcd_putsf(“UNI *PAYAM*”);
    delay_ms(1000);
    lcd_clear();
    lcd_gotoxy(1,0);
    lcd_putsf(“SH DANESHJUYI”);
    lcd_gotoxy(3,1);
    lcd_putsf(“9254011017”);
    delay_ms(1000);
    lcd_clear();
    lcd_gotoxy(1,0);
    lcd_putsf(“OSTADE RAHNAMA”);
    lcd_gotoxy(1,1);
    lcd_putsf(“OSTAD HASHEMI”);
    delay_ms(1000);
    lcd_clear();
    DDRB=0x0F;
    DDRA=0x07;
    DDRD=0x0F;
    lcd_init(16);
    while (1){
    _Main();
    }
    }
    //#############################################################
    float _Main(void){
    int Loop = 1 ;
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if( y 9 && y < 16 ){
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    z = y ;
    Alamat(y,1);
    while(Loop){
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if( y 15 ){
    lcd_clear();
    a= 0 ; b = 0 ; c = 0;
    Alamat(y , 2);
    z = y ;
    Loop = 1 ;
    while(Loop){
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if(y < 10){
    a = (a*10) + y ;
    itoa(y , lcd);
    lcd_puts(lcd);
    delay_ms(50);
    }else if ( y == 14){
    lcd_putchar('=');
    Mohandes();
    }
    Loop = 1 ;
    }
    }
    return 0;
    }
    //##########################################################
    void Mohasebe(void){
    if(z == 10)c = a / b ;
    if(z == 11)c = a * b ;
    if(z == 12)c = a – b ;
    if(z == 13)c = a + b ;
    ftoa(c , 3 , lcd);
    lcd_puts(lcd);
    delay_ms(100);
    }
    //#########################################################
    float Emoji(int rr){
    q=1;
    for(i=0;i<rr;i++)q = q * 2.71728 ;
    return q;
    }
    //#########################################################
    void Mohandes(void){
    t = (3.1415926535897932384626433832795/180)*a ;
    if(z == 16)c = sin(t) ;
    if(z == 17)c = cos(t) ;
    if(z == 18)c = tan(t) ;
    if(z == 19)c = 1/tan(t) ;
    if(z == 20)c = sinh(t) ;
    if(z == 21)c = cosh(t) ;
    if(z == 22)c = log(a) ;
    if(z == 23)c = sqrt(a) ;
    if(z == 24)c = Emoji(a) ;
    ftoa(c , 3 , lcd);
    lcd_puts(lcd);
    delay_ms(100);
    }
    //#########################################################
    void Alamat(int Moji,int Halat){
    if(Halat == 1){
    if(Moji == 10)lcd_putchar('/') ;
    if(Moji == 11)lcd_putchar('*') ;
    if(Moji == 12)lcd_putchar('-') ;
    if(Moji == 13)lcd_putchar('+') ;
    delay_ms(100);
    }
    if(Halat == 2){
    if(Moji == 16)lcd_putsf("Sin ") ;
    if(Moji == 17)lcd_putsf("Cos ") ;
    if(Moji == 18)lcd_putsf("Tan ") ;
    if(Moji == 19)lcd_putsf("Cot ") ;
    if(Moji == 20)lcd_putsf("sinh") ;
    if(Moji == 21)lcd_putsf("cosh") ;
    if(Moji == 22)lcd_putsf("log ") ;
    if(Moji == 23)lcd_putsf("Sqrt ") ;
    if(Moji == 24)lcd_putsf("exp ") ;
    delay_ms(100);
    }
    }
    //#########################################################
    int key(void){
    char KEY = 1 ;
    while(KEY){
    PORTD.0 = 1 ;
    PORTD.1 = 0 ;
    PORTD.2 = 0 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 7 ; KEY = 0;delay_ms(50);}
    if(PIND.5 == 1){return 8 ; KEY = 0;delay_ms(50);}
    if(PIND.6 == 1){return 9 ; KEY = 0;delay_ms(50);}
    if(PIND.7 == 1){return 10; KEY = 0;delay_ms(50);}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 1 ;
    PORTD.2 = 0 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 4 ; KEY = 0;}
    if(PIND.5 == 1){return 5 ; KEY = 0;}
    if(PIND.6 == 1){return 6 ; KEY = 0;}
    if(PIND.7 == 1){return 11; KEY = 0;}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 0 ;
    PORTD.2 = 1 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 1 ; KEY = 0;}
    if(PIND.5 == 1){return 2 ; KEY = 0;}
    if(PIND.6 == 1){return 3 ; KEY = 0;}
    if(PIND.7 == 1){return 12; KEY = 0;}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 0 ;
    PORTD.2 = 0 ;
    PORTD.3 = 1 ;
    if(PIND.4 == 1){return 15; KEY = 0;}
    if(PIND.5 == 1){return 0 ; KEY = 0;}
    if(PIND.6 == 1){return 14; KEY = 0;}
    if(PIND.7 == 1){return 13; KEY = 0;}
    //=============================================================================
    PORTC.0 = 1 ;
    PORTC.1 = 0 ;
    PORTC.2 = 0 ;
    if(PINC.5 == 1){return 16 ; KEY=0;}
    if(PINC.6 == 1){return 17; KEY=0;}
    if(PINC.7 == 1){return 18 ; KEY=0;}
    //=====================================================
    PORTC.0 = 0 ;
    PORTC.1 = 1 ;
    PORTC.2 = 0 ;
    if(PINC.5 == 1){return 19 ; KEY=0;}
    if(PINC.6 == 1){return 20 ; KEY=0;}
    if(PINC.7 == 1){return 21 ; KEY=0;}
    //=====================================================
    PORTC.0 = 0 ;
    PORTC.1 = 0 ;
    PORTC.2 = 1 ;
    if(PINC.5 == 1){return 22 ; KEY=0;}
    if(PINC.6 == 1){return 23 ; KEY=0;}
    if(PINC.7 == 1){return 24 ; KEY=0;}
    KEY = 1 ;
    }
    }
    //############################################################

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      اگه مشکلتون تا الان حل نشده لطفا کد رو به صورت txt بزارید تو سایت تا ببینم….

  48. نویسنده سایت

    حمید زارع

    سلام به همه دوستان.
    یه نکته توی این برنامه رعایت نشده ،واسه همینه که خیلیا جواب نمیگیرند.
    و اون نکته اینه که بعد از تابع return هر چی بنویسی اجرا نمیشه. بیاید سناریوی زیر رو دنبال کنیم:
    کاربر کلید 8 رو فشار میده، تابع key اجرا میشه و توی خط 58 ، مقدار 8 رو return میکنه. بقیه کد (تایع تاخیر 50 میلی ثانیه)اجرا نمیشه!
    همچنین توی خطهای بعدی خبری از تابع تاخیر نیست.
    اگر میکرو توی فرکانس های بالا کار کنه ،بدون اینکه کاربر کلیدی فشار بده چون مقدار ورودی یک هست! دوباره به این تابع میرسیم و باز عدد 7,8,9 رو return میکنه…
    راه حل:
    1- تابع تاخیر قبل از return قرار گیرد
    2- پورت متناظر با یک نیز برابر صفر شود.
    به عنوان نمونه در خطهای 65 تا 67 باید با کد زیر جایگزین شود.
    if(PIND.4 == 1){PORTD.1 = 0;delay_ms(50); return 4;)
    if(PIND.5 == 1){PORTD.1 = 0;delay_ms(50); return 5;)
    if(PIND.6 == 1){PORTD.1 = 0;delay_ms(50); return 6;)

  49. مهمان

    پوریا

    عجییییییبه
    این کدو تست کردم
    در حال حاضر هر دو کد کپی همن اما این کد که واسه پسوورده عدد 6 رو هم نشوون میده ولی اون نشوون نمیده !!!
    کدااا دقیقا عین همن هیچ فرقی ندارن
    داخل کدویژن تنظیمات خاصی انجام ندادید که باعث تفاوت این دو کد شه ؟؟؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      یعنی ۲-۳-۵-۶ رو نشون میده؟ bomb
      رو بقیه کلیک میکنی اصلا نشون نمیده؟؟؟
      یه کاری کن ….فرکانس میکرو رو موقع پروگرام کردن بزار رو ۸ میگ(از طریق فیوز بیت ها و نه کدویزارد)

  50. نویسنده این مطلب

  51. مهمان

    پوریا

    راستی کیپد من مقاومت پول دانش بر روی ستون هستش و من طبق کد شما ستون 1 ، 2 و 3 رو به PC6 , PC.5 و PC.7 وصل کردم درسته؟؟ نیاز نیست به PC.1 , PC.0 و PC.3 وصل کنم؟
    منظورم اینه مشکل بخاطر این نیست که شاید جای سطر و ستون اشتباهه ؟؟؟؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      والا چی بگم…..
      مدارش اگه پیشم بود بهتر میتونستم کمکت کنم….

  52. مهمان

    پوریا

    بله
    قرار دادم
    خیلی عجیبه رو همه پورتای میکرو تست کردم فقط اعداد 2 ،3 و 5 رو نمایش میده از بقیه اعداد خبری نیست

  53. مهمان

    پوریا

    سلام دوست عزیز
    بنده همین پروژه رو به صورت عملی بستم البته روی پورت C یه اتفاق عجیب میوفته !!!
    فقط عدد 2 ،3 و 5 نمایش داده میشه . هرچیم چک میکنم تمام قسمت سخت افزاری و تمام برنامه بی مشکله میتونی راهنماییم کنی
    در ضمن کیپدم 3*4 هستش به همین منظور PINC.4رو در برنامه غیر فعال کردم
    ممنون

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      مقاومت پول دان(آپ) رو قرار دادی؟؟؟

  54. مهمان

    amirhasa

    سلام
    دوستان من تا به حال مدار نبستم و تازه کارم میخوام واسه پروژه همین مدارو درست کنم ولی نمیدونم از کجا باید شروع کنم میشه راهنماییم کنید
    ممنون

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      کتاب آموزش avr نویسنده = جابر الوندی رو بخر و بخون

  55. مهمان

    حسن

    برنامه عملی کار نمیکنه

    • نویسنده این مطلب

      مهدی دمرچیلو

      متوجه منظورت نشدم sorry ….لینک دانلود پروژه که سالمه-فیلم پروژه هم که پخش میشه…….

  56. مهمان

    حسن

    نظر ندی یه وقت…گناه میشه
    ممنون داد

  57. نویسنده این مطلب

    مهدی دمرچیلو

    سالمه که…. unknw

  58. مهمان

    میلاد

    سلام
    ف کنم بازم برنامت مورد داره عزیزم boredom

  59. مهمان

    میلاد

    سلام
    خسته نباشی
    PINC ک ب جایی وصل نیس
    کاربردش چیه؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      مثل این که کد ها رو اشتاهی قرار دادم… sorry
      پروژه تصحیح شد….

      • مهمان

        ali

        سلام ببخشید میخواستم بپرسم که چطور میشه با برنامه پروتیوس کار کرد

        • نویسنده این مطلب

          مهدی دمرچیلو

          سلام
          آموزشش تو اینترنت هستش
          اگه نبود بگو تا بزارم