اطلاعیه

Collapse
No announcement yet.

سوال: صفحه کلید 4×4

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

    سوال: صفحه کلید 4×4

    سلام،

    آقا من میخوام یک صفحه کلید 4×4 رو به AtMega32 وصل کنم اما از من اصرار از میکرو انکار.

    و اما میرسیم به توضیحات:

    ببینید دوستان من میخوام یک صفحه کلید 4×4 رو به میکرو وصل کنم،
    تو همین سایت و همینطور تو اینترنت هم زیاد دنبالش گشتم و جواب های متعددی هم گرفتم،

    وقتی پروژه رو مینویسم و تو Proteus امتحان میکنم کاملا درست جواب میده اما همون سورس روی میکرو واقعی جواب نمیده :angry: ،

    و جالبیه قضیه اینه که وقتی بجای پایه های خروجی صفحه کلید (پایه های 0 تا 3 پورت A که برای خروجی صفحه کلید در نظر گرفته شده) VCC مدار رو به ورودی صفحه کلید (پایه های 4 تا 7) وصل میکنم جواب میگیرم :cry:

    کد مربوط به صفحه کلیدی که فعلا استفاده میکنم:
    کد:
    byte KeyC(void)
     {
     byte key=255;
     int flag=1,j;
     
     while(flag)
      { 
      for(j=0;j<=12;j=j+4)
       {
       PORTA=1<<(j/4);
        delay_ms(3);      
           
        if(PINA.4==1){ key=j+0;   while(PINA.4==1);   flag=0;}
        if(PINA.5==1){ key=j+1;   while(PINA.5==1);   flag=0;}
        if(PINA.6==1){ key=j+2;   while(PINA.6==1);   flag=0;}
        if(PINA.7==1){ key=j+3;   while(PINA.7==1);   flag=0;} 
       }      
          
      }
     return key;
     }

    لطفا اگر امکانش هست منو راهنمایی کنید
    -----
    یا حق
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم ولي به همديگه ياد بديم، حالا هر كدوم از ما دو تا چيز ياد داريم

    #2
    پاسخ : سوال: صفحه کلید 4×4

    pull down بزار
    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

    دیدگاه


      #3
      پاسخ : سوال: صفحه کلید 4×4

      باز هم سلام،

      آقا من از Pull Up و Pull Down چیزی نمیدونم و دارم الان در موردش تحیقات میکنم میشه یک راهنمایی کاملتری ارایه بدید؟
      اگر من و شما هر كدوم يك چيز ياد داشته باشيم ولي به همديگه ياد بديم، حالا هر كدوم از ما دو تا چيز ياد داريم

      دیدگاه


        #4
        پاسخ : سوال: صفحه کلید 4×4

        1- ورودی و خروجی رو درست تعریف کردی یا نه؟که اگه vcc رو می دی درست میشه پس احتمالا درسته
        2-pull up واسه اینه که شما میای پایه ورودی میکروت رو با یه مقاومت مثلا 1k به vcc وصل می کنی این عمل یعنی همیشه وردی شما یک در نظر گرفته میشه حالا با یه کلید اگه پایه رو زمین کنی میکرون صفر زمین رو می خونه و مقهمه که وردی تعییر کرده pull down عکس همین ماجراست(از نظر ولتاژ منظورمه)
        از این ساده تر نمی تونستم توضیح بدم :biggrin:
        تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

        دیدگاه


          #5
          پاسخ : سوال: صفحه کلید 4×4

          اگر بخوام با توجه به تعریف شما Pull Down کنم باید گفت که:

          نوشته اصلی توسط sey22
          pull down واسه اینه که شما میای پایه ورودی میکروت رو با یه مقاومت مثلا 1k به gnd وصل می کنی این عمل یعنی همیشه وردی شما صفر در نظر گرفته میشه حالا با یه کلید اگه پایه رو vcc کنی میکرون یک vcc رو می خونه و مقهمه که وردی تعییر کرده
          این درسته؟
          اگر من و شما هر كدوم يك چيز ياد داشته باشيم ولي به همديگه ياد بديم، حالا هر كدوم از ما دو تا چيز ياد داريم

          دیدگاه


            #6
            پاسخ : سوال: صفحه کلید 4×4

            آقا دست همتون درد نکنه مشکلم حل شد (البته با بررسی کردن جواب های شما) :wow:

            این پست رو دارم میدم تا هرکی که در مورد کیپد 4×4 مشکلی داشت دستش یکم جلو بیوفته

            :smile:

            کد:
            byte KeyC(void)
             {
             byte ret=255;
             byte j,tmp;
             for (j=0;j<4;j++)
              {
              switch (j)
               {
               case 0:
                PORTA=0xFF;
                PORTA.0=0;
                break;
               case 1:
                PORTA=0xFF;
                PORTA.1=0;
                break;
               case 2:
                PORTA=0xFF;
                PORTA.2=0;
                break;
               case 3:
                PORTA=0xFF;
                PORTA.3=0;
                break;
               }
              tmp=PdCheck();
              if (tmp!=0)
               {
               ret=tmp+(j*4);
               }
              }
             return ret;
             }
             
            byte PdCheck(void)
             {
             byte ret=0;
             if (PINA.4==0) 
              {
              ret=1;
              while (PINA.4==0)
              {
              }
              }
             if (PINA.5==0)
              {
              ret=2;
              while (PINA.5==0)
              {
              }
              }
             if (PINA.6==0)
              {
              ret=3;
              while (PINA.6==0)
              {
              }
              }
             if (PINA.7==0)
              {
              ret=4;
              while (PINA.7==0)
              {
              }
              }
             
             return ret;
             }

            همگی موفق باشید
            اگر من و شما هر كدوم يك چيز ياد داشته باشيم ولي به همديگه ياد بديم، حالا هر كدوم از ما دو تا چيز ياد داريم

            دیدگاه

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