اطلاعیه

Collapse
No announcement yet.

اتصال 4 کلید به میکرو و LCD

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اتصال 4 کلید به میکرو و LCD

    سلام خدمت اساتید AVR و کدویژن

    من تغریباً تازه کار هستم.

    یه مشکلی دارم که نتونستم هنور حلش کنم.

    من یه LCD 4*20 دارم.
    4 دکمه (up , down , enter , Esc) دارم.

    میخام 4 تا گزینه 1-, 2-, 3-, 4- دارم.
    میخوام یه فلش کنار گزینه ها باشه که پایین بالا بشه و با زدن کلید down اون فلش بیاد پایین. up بره بالا و enter وارد یک منوی دیگه و .... .

    نرم افزار کد ویژن.
    *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

    #2
    پاسخ : اتصال 4 کلید به میکرو و LCD

    نوشته اصلی توسط shoniz نمایش پست ها
    سلام خدمت اساتید AVR و کدویژن

    من تغریباً تازه کار هستم.

    یه مشکلی دارم که نتونستم هنور حلش کنم.

    من یه LCD 4*20 دارم.
    4 دکمه (up , down , enter , Esc) دارم.

    میخام 4 تا گزینه 1-, 2-, 3-, 4- دارم.
    میخوام یه فلش کنار گزینه ها باشه که پایین بالا بشه و با زدن کلید down اون فلش بیاد پایین. up بره بالا و enter وارد یک منوی دیگه و .... .

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

    دیدگاه


      #3
      پاسخ : اتصال 4 کلید به میکرو و LCD

      مشکل توی برنامه نویسیش
      نمیدونم چطور بنویسم و از کجا شروع کنم
      *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

      دیدگاه


        #4
        پاسخ : اتصال 4 کلید به میکرو و LCD

        نوشته اصلی توسط shoniz نمایش پست ها
        مشکل توی برنامه نویسیش
        نمیدونم چطور بنویسم و از کجا شروع کنم
        ببینید بیشتر برنامه نویسی خلاقیته؛ پس باید دنبال راه های خلاقانه باشید. برای نمونه چون ظاهرا اول راه هستید من یه راهنمایی میکنم و شما خودتون باید گسترش اش بدید. نکته ای که هست سعی کنید گام به گام پیش برید و کم کم به پروژه بال و پر بدید. سعی نکنید توی بار اول همه چیز رو پیاده کنید؛ فقط نترسید و شروع کنید.
        ببینید اینجور که فهمیدم روی LCD چهارتا منو دارید و چندتا کلید فیزیکی که این منوها رو کنترل میکنن. شما بیایید یه متغیر درست کنید که 4 تا مقدار بگیره و با کلیدهای بالا و پایین بین این چهار مقدار سوییچ کنه. حالا با توجه به این که متغیر وضعیت چه مقداری داره، LCD یک چیزی باید نشون بده؛ یا به قول شما با یک علامتی چیزی نشون بده الآن روی کدوم منو هستیم. حالا با بقیه کلیدها میشه کارهای دیگه رو انجام داد مثل وارد شدن به منوها و...
        همین که دست به کار بشید احتمالا کلی ایده به ذهنتون میرسه که میتونید پروژه اتون رو باهاش تکمیل کنید. اگر توی موارد خاصی هم سوال داشتید، میتونید اینجا توی انجمن بپرسید. موفق باشید

        دیدگاه


          #5
          پاسخ : اتصال 4 کلید به میکرو و LCD

          نوشته اصلی توسط hossein.m98 نمایش پست ها
          ببینید بیشتر برنامه نویسی خلاقیته؛ پس باید دنبال راه های خلاقانه باشید. برای نمونه چون ظاهرا اول راه هستید من یه راهنمایی میکنم و شما خودتون باید گسترش اش بدید. نکته ای که هست سعی کنید گام به گام پیش برید و کم کم به پروژه بال و پر بدید. سعی نکنید توی بار اول همه چیز رو پیاده کنید؛ فقط نترسید و شروع کنید.
          ببینید اینجور که فهمیدم روی LCD چهارتا منو دارید و چندتا کلید فیزیکی که این منوها رو کنترل میکنن. شما بیایید یه متغیر درست کنید که 4 تا مقدار بگیره و با کلیدهای بالا و پایین بین این چهار مقدار سوییچ کنه. حالا با توجه به این که متغیر وضعیت چه مقداری داره، LCD یک چیزی باید نشون بده؛ یا به قول شما با یک علامتی چیزی نشون بده الآن روی کدوم منو هستیم. حالا با بقیه کلیدها میشه کارهای دیگه رو انجام داد مثل وارد شدن به منوها و...
          همین که دست به کار بشید احتمالا کلی ایده به ذهنتون میرسه که میتونید پروژه اتون رو باهاش تکمیل کنید. اگر توی موارد خاصی هم سوال داشتید، میتونید اینجا توی انجمن بپرسید. موفق باشید
          من اصلا نمیدونم چطور باید نوشت.

          منظورم ساختارش هست.

          با switch و case
          یا
          do
          while
          یا ...

          اگه لطف کنید و با switch case یه نمونه بنویسید و توضیح کوچیک بدید ممنون میشم.
          جدیدترین ویرایش توسط shoniz; ۱۴:۳۵ ۱۳۹۸/۱۰/۲۸.
          *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

          دیدگاه


            #6
            پاسخ : اتصال 4 کلید به میکرو و LCD

            نوشته اصلی توسط shoniz نمایش پست ها
            من اصلا نمیدونم چطور باید نوشت.

            منظورم ساختارش هست.

            با switch و case
            یا
            do
            while
            یا ...

            اگه لطف کنید و با switch case یه نمونه بنویسید و توضیح کوچیک بدید ممنون میشم.
            مشخصه که برنامه توی حلقه بی نهایت باید باشه. برای تصمیم گیری ها هم میشه از switch یا حتی if و else استفاده کرد و به سلیقه خودتون بیشتر بستگی داره. من الآن با موبایل دارم پیام میدم و به کامپیوتر دسترسی ندارم که کد براتون بنویسم ولی واقعا چیز زیاد سختی نیست که نتونید بنویسید!
            بهتره خودتون توی اینترنت در مورد switch و if و else سرچ کنید تا بهتر متوجه بشید.

            دیدگاه


              #7
              پاسخ : اتصال 4 کلید به میکرو و LCD

              این یه کد هست که امروز نوشتم.

              #include <mega32.h>
              #include <delay.h>
              #include <alcd.h>
              #include <stdio.h>


              int a = 0;
              int flag = 0;
              int start = 0;

              void main()
              {
              DDRC.0 = 0; //up key
              PORTC.0 = 1;
              DDRD.7 = 0; //Enter key
              PORTD.7 = 1;
              DDRA.4 = 0; //down key
              PORTA.4 = 1;
              DDRA.3 = 0; //Esc key
              PORTA.3 = 1;

              lcd_init(20);
              do
              {
              lcd_gotoxy(0,0);
              lcd_putsf("Pars Azma Co");
              delay_ms(500);

              lcd_gotoxy(2,1);
              lcd_putsf("Start");

              lcd_gotoxy(2,2);
              lcd_putsf("Setting");

              lcd_gotoxy(2,3);
              lcd_putsf("Timer");



              switch (a)

              case1:
              if((PINC.0==0 ) && (flag==0))
              {
              flag=1; start=!start;
              }
              else if ( PINC.0 == 1) flag=0;if(start)
              {
              lcd_gotoxy(0,1);
              lcd_putsf("> ");
              PORTD.1 = 1;
              delay_ms(50);
              PORTD.1 = 0;
              a--;

              }


              case2:
              if((PINA.4==0 ) && (flag==0))
              {
              flag=1; start=!start;
              }
              else if ( PINA.4 == 1) flag=0;if(start)
              {

              lcd_gotoxy(0,2);
              lcd_putsf("> ");
              PORTD.1 = 1;
              delay_ms(50);
              PORTD.1 = 0;
              a++;

              }
              case3:
              if((PINA.4==0 ) && (flag==0))
              {
              flag=1; start=!start;
              }
              else if ( PINA.4 == 1) flag=0;if(start)
              {

              lcd_gotoxy(0,3);
              lcd_putsf("> ");
              PORTD.1 = 1;
              delay_ms(50);
              PORTD.1 = 0;
              break;
              }
              default1:
              a = 0;
              lcd_gotoxy(0,1);
              lcd_putsf("> ");
              delay_ms(200);
              lcd_clear;

              }

              while(1);

              }
              ببخشید 100% خوب نیست
              اما دوست دارم بار اول یکی بهم بگه که واقعاً وارد باشه و اصولی نوشته شده باشه که همونشکل ادامه بدم و ...
              *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

              دیدگاه


                #8
                پاسخ : اتصال 4 کلید به میکرو و LCD

                نوشته اصلی توسط shoniz نمایش پست ها
                این یه کد هست که امروز نوشتم.



                ببخشید 100% خوب نیست
                اما دوست دارم بار اول یکی بهم بگه که واقعاً وارد باشه و اصولی نوشته شده باشه که همونشکل ادامه بدم و ...
                خوب ظاهرا با ساختارهای شرطی آشنایی دارید. بهتره خودتون یکم فکر کنید و برنامتونو بنویسید؛ این که برای ساده ترین چیزها بخوایید یکی کمکتون کنه در حالی که خودتونم با کمی درگیر شدن میتونید انجامش بدید کمکی به پیشرفتتون نمیکنه!

                دیدگاه


                  #9
                  پاسخ : اتصال 4 کلید به میکرو و LCD

                  نوشته اصلی توسط hossein.m98 نمایش پست ها
                  خوب ظاهرا با ساختارهای شرطی آشنایی دارید. بهتره خودتون یکم فکر کنید و برنامتونو بنویسید؛ این که برای ساده ترین چیزها بخوایید یکی کمکتون کنه در حالی که خودتونم با کمی درگیر شدن میتونید انجامش بدید کمکی به پیشرفتتون نمیکنه!
                  اون قبلی بدرد نمیخورد
                  پاک کردم اینو نوشتم.

                  #include <mega32.h>
                  #include <delay.h>
                  #include <alcd.h>
                  #include <stdio.h>

                  unsigned int a;

                  void main()
                  {
                  DDRD.1 = 1; //BUZZ
                  DDRC.0 = 0; //up key
                  PORTC.0 = 1;
                  DDRD.7 = 0; //Enter key
                  PORTD.7 = 1;
                  DDRA.4 = 0; //down key
                  PORTA.4 = 1;
                  DDRA.3 = 0; //Esc key
                  PORTA.3 = 1;


                  lcd_init(20);
                  lcd_gotoxy(0,0);
                  lcd_putsf("Pars Azma Co");
                  delay_ms(500);

                  lcd_gotoxy(2,1);
                  lcd_putsf("Start");

                  lcd_gotoxy(2,2);
                  lcd_putsf("Setting");

                  lcd_gotoxy(2,3);
                  lcd_putsf("Timer");
                  lcd_gotoxy(0,1);
                  lcd_putsf("> ");



                  while (1)
                  {
                  a = 0;
                  switch (a)
                  {
                  case 0 :
                  if(PINC.0 == 0)
                  {
                  a--;
                  PORTD.1 = 1;
                  delay_ms(10);
                  PORTD.1 = 0;
                  lcd_gotoxy(0,1);
                  lcd_putsf("> ");
                  lcd_gotoxy(0,2);
                  lcd_putsf(" ");
                  lcd_gotoxy(0,3);
                  lcd_putsf(" ");
                  delay_ms(400);
                  }

                  case 1 :
                  if(PINA.4 == 0)
                  {
                  a++;
                  PORTD.1 = 1;
                  delay_ms(10);
                  PORTD.1 = 0;
                  lcd_gotoxy(0,1);
                  lcd_putsf(" ");
                  lcd_gotoxy(0,2);
                  lcd_putsf("> ");
                  lcd_gotoxy(0,3);
                  lcd_putsf(" ");
                  delay_ms(400);
                  }

                  case 2 :
                  if(a == 1)
                  {
                  PORTD.1 = 1;
                  delay_ms(10);
                  PORTD.1 = 0;
                  lcd_gotoxy(0,1);
                  lcd_putsf(" ");
                  lcd_gotoxy(0,2);
                  lcd_putsf(" ");
                  lcd_gotoxy(0,3);
                  lcd_putsf("> ");
                  delay_ms(400);
                  }

                  case 3 :
                  if(a > 1)
                  a = 0;

                  };

                  }
                  }
                  دیگه قاطی کردم
                  متغیر درست جواب نمیده
                  زیر منو نمیدونم چطوره

                  کلیدارو میزنم پایین میره فلش
                  بالا نمیره
                  رو آخری یا میره یا ....

                  جدیدترین ویرایش توسط shoniz; ۱۵:۴۲ ۱۳۹۸/۱۰/۲۹.
                  *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

                  دیدگاه


                    #10
                    پاسخ : اتصال 4 کلید به میکرو و LCD

                    درستش کردم
                    *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

                    دیدگاه

                    لطفا صبر کنید...
                    X