NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3902 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 4 از 4

موضوع: کیبرد ماتریس(keyboard)

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    22
    تشکر
    1
    تشکر شده 9 بار در 5 پست

    پیش فرض کیبرد ماتریس(keyboard)

    سلام
    من کل سایت را زیرو روکردم یک کتابخانه به درد بخور برای keyboard پیدا نکردم و همشون مشکل داشتن
    برای sam7x256 کسی کتابخانه کیبرد نداره؟
    لطفا راهنمایی فرمایید

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر فعال abbasalifix آواتار ها
    تاریخ عضویت
    Apr 2011
    نام
    عباسعلی محمدنیا
    نوشته ها
    187
    تشکر
    266
    تشکر شده 139 بار در 80 پست

    پیش فرض

    کیبرد یا کی پد؟

  4. #3
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    22
    تشکر
    1
    تشکر شده 9 بار در 5 پست

    پیش فرض

    کیپد
    کیپد ماتریسی

  5. #4
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام


    کد:
    #define col0 PA0
    #define col1 PA1
    #define col2 PA2
    #define row0 PA3
    #define row1 PA4
    #define row2 PA5
    
    // Keypad layout:
    char const KEYS[3][3] = {{'1','2','3'},
                             {'4','5','6'},
                             {'7','8','9'}};
    
    #define KBD_DEBOUNCE_FACTOR  22    // Set this number to apx n/333 where
    
    
    void kbd_init() {
    PORTA_INPUT = row0 |row1 |row2 ;
    PORTA_OUTPUT=col0 |col1 |col2 ;
              
    }
    
    
    short int ALL_ROWS (void)
    {
       if (input (row0) & input (row1) & input (row2) )
          return (0);
       else
          return (1);
    }
    
    
    
    char kbd_getc( ) {
       static byte kbd_call_count;
       static short int kbd_down;
       static char last_key;
       static byte col;
    
       byte kchar;
       byte row;
    
       kchar='\0';
       if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) {
           switch (col) {
             case 0   : 
    RST_PORTA=col0;
                   SET_PORTA=col1;
                SET_PORTA=col2;
                        break;
             case 1   : 
    RST_PORTA=col1;
                   SET_PORTA=col0;
                SET_PORTA=col2;
                        break;
             case 2   : 
    RST_PORTA=col2;
                   SET_PORTA=col1;
                SET_PORTA=col0;
                        break;
           }
    
           if(kbd_down) {
             if(!ALL_ROWS()) {
               kbd_down=false;
               kchar=last_key;
               last_key='\0';
             }
           } else {
              if(ALL_ROWS()) {
                 if(!input (row0))
                   row=0;
                 else if(!input (row1))
                   row=1;
                 else if(!input (row2))
                   row=2;
                
                 last_key =KEYS[row][col];
                 kbd_down = true;
              } else {
                 ++col;
                 if(col==3)
                   col=0;
              }
           }
          kbd_call_count=0;
       }
      return(kchar);
    }
    برای کار با این کتابخونه به کتابخونه ی PIO.H نیاز دارید که میتونید اون رو در مجله ی PMM شماره ی 2 مشاهدش کنید .
    کد های بالا رو در یک فایل متنی کپی کنید و نام فایل رو به KBD.c تغییر بدید .
    با دستور #include "KBD.c" میتونید از این کتابخونه در برنامتون استفاده کنید .
    برای استفاده از کتابخونه باید دستور kbd_init() یک بار در برنامه اجرا بشه .
    با فشردن و رها شدن کلید مقدار متناظر کلید که یک کارکتر است در تابع kbd_getc() برگشت داده میشه .
    این کتاب خونه برای کامپایلر CCS هست که همین الان برای ARM تغییرش دادم . این کتابخونه رو من تست نکردم ، اما شما تست کنید و اگه مشکلی بود مطرح کنید تا اصلاح بشه .

موضوعات مشابه

  1. دات ماتریس آماده 7*5
    توسط raoofmtj در انجمن AVR
    پاسخ: 0
    آخرين نوشته: 26-01-2014, 15:50
  2. در مورد تابلو با دات ماتریس
    توسط رسول21 در انجمن AVR
    پاسخ: 2
    آخرين نوشته: 09-06-2013, 12:37
  3. اثر مغناطیس
    توسط nima_elc در انجمن AVR
    پاسخ: 23
    آخرين نوشته: 05-05-2012, 02:08
  4. USB keyboard
    توسط mohammadjp در انجمن AVR
    پاسخ: 10
    آخرين نوشته: 20-01-2012, 22:42
  5. مدار کنترل دما و رطوبت وایرلیس
    توسط car20 در انجمن میکروکنترلرهای 8و16 بیتی
    پاسخ: 11
    آخرين نوشته: 05-01-2012, 11:25

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •