اطلاعیه

Collapse
No announcement yet.

مشکل در راه اندازی کی بورد 4*4

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

    مشکل در راه اندازی کی بورد 4*4

    سلام
    ببخشید سوالی داشتم درمورد کیبورد 4*4 .
    آیا پایه های این کیبورد برای AVR باید pull up باشد
    اصلا چه جوری باید به میکرو وصلش کرد.

    #2
    پاسخ : مشکل در راه اندازی کی بورد 4*4

    به نام خدا

    ببین دوست من منم خودم رو کشتم نتونستم یه میپد به میکرو وصل کنم ولی یهو قاطی کردم رفتم یه کیپد گرفتم پایه هاش رو به ترتیب زدم به میکرو
    بعد دیدم وقتی که ازش استفاده میکنم قاطی پاطی میزنه مثلا میزنم 1 میزنه 5 میزنم 2 میزنه 0.
    خلاصه اگه مشکلت اینه از نظر من باید اول ببینی که هر کلیدی چه عددی میده بعدش باید اون عدد رو در یک data و بعد با lookup بخونی مقدار جدید رو

    :eek: :eek: :eek: :eek: :eek:

    خودمم نفهمیدم چی گفتم
    به نام خدا

    دیدم آن چشمه ی هستی که جهانش خوانند

    _-_-_-_-_-_-_-_-
    آنقدر آب کزان دست توان شست نداشت به به به به

    دیدگاه


      #3
      پاسخ : مشکل در راه اندازی کی بورد 4*4

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

      نمی توانید به کودکی بیاموزید که از خود مواظبت کند، مگر آنکه او را آزاد بگذارید تا برای مواظبت از خود بکوشد؛ ممکن است اشتباه کند، ولی دانایی او از میان همین اشتباهات سرچشمه می گیرد.

      دیدگاه


        #4
        پاسخ : مشکل در راه اندازی کی بورد 4*4

        //key pad scan table
        flash unsigned char keytbl[17]={0xee, 0xed, 0xeb, 0xe7, 0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb, 0xb7, 0x7e, 0x7d, 0x7b, 0x77,0XFF};

        unsigned char get_key(void)
        {
        //endless loop to read keyboard
        //while(1)

        DDRA = 0x0f;
        PORTA = 0xf0;
        delay_us(5);
        key = PINA;


        DDRA = 0xf0;
        PORTA = 0x0f;
        delay_us(5);
        key = key | PINA;این تیکه برنامه رو ببین . از پورت a استفاده کردیم. سطرها از a0 تا a3و ستونها از a4 تا a7.یه بار سطرها رو صفر کرده ستونها رو خونده یه با ستونها رو صفر کرده سطرها رو خونده.
        برنامه کامل اینه.

        برنامه اسکن صفحه کلید 4*4 و نمایش روی ال سی دی
        #include <mega16.h>
        #include <delay.h>
        #asm
        .equ __lcd_port=0x12 ;PORTD
        #endasm
        #include <lcd.h>

        #include<stdio.h>
        #define maxkeys 17
        // char i;
        char lcd[20];
        unsigned char key, butnum,key_code,key1,i;

        //key pad scan table
        flash unsigned char keytbl[17]={0xee, 0xed, 0xeb, 0xe7, 0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb, 0xb7, 0x7e, 0x7d, 0x7b, 0x77,0XFF};

        unsigned char get_key(void)
        {
        //DDRB = 0xff;
        //PORTB = 0xff;

        //endless loop to read keyboard
        //while(1)

        DDRA = 0x0f;
        PORTA = 0xf0;
        delay_us(5);
        key = PINA;


        DDRA = 0xf0;
        PORTA = 0x0f;
        delay_us(5);
        key = key | PINA;
        // switch(key_code)
        //{
        //case 238:
        //key=1;
        //break;
        //case 237:
        //key=2;
        //break;
        //case 235:
        //key=3;
        //break;
        //case 222:
        //key=4;
        //break;
        ///case 221:
        //key=5;
        //break;
        //case 219:
        //key=6;
        //break;
        //case 190:
        //key=7;
        //break;
        //case 189:
        //key=8;
        //break;
        //case 187:
        //key=9;
        //break;
        //case 125:
        //key=0;
        //break;
        //case 231:
        //key=11;
        //break;
        //case 215:
        //key=12;
        //break;
        //case 183:
        //key=13;
        //break;
        //case 119:
        //key=14;
        //break;
        //case 123:
        //key=15;
        //break;
        //case 126:
        //key=16;
        //break;
        //}
        //PORTB=~key;
        //return key;


        //}
        if (key != 0xff)
        {
        for (butnum=0; butnum<maxkeys; butnum++)
        {
        if (keytbl[butnum]==key) break;
        }
        //if (butnum==maxkeys) butnum=0;
        //else butnum++; //to make range 1-16
        }
        //else butnum=0;

        PORTB = ~ butnum ;

        return butnum;
        }

        void main(void)
        {
        lcd_init(16);

        i=butnum;

        if(i<=16)
        while(1){ sprintf(lcd,"num=%02d",get_key());
        lcd_puts(lcd);
        delay_ms(10);
        lcd_gotoxy(0,0);}



        }



        این برنامه به دو صورت است.

        دیدگاه


          #5
          پاسخ : مشکل در راه اندازی کی بورد 4*4

          نوشته اصلی توسط ba_maram_shiraz
          به نام خدا

          ببین دوست من منم خودم رو کشتم نتونستم یه میپد به میکرو وصل کنم ولی یهو قاطی کردم رفتم یه کیپد گرفتم پایه هاش رو به ترتیب زدم به میکرو
          بعد دیدم وقتی که ازش استفاده میکنم قاطی پاطی میزنه مثلا میزنم 1 میزنه 5 میزنم 2 میزنه 0.
          خلاصه اگه مشکلت اینه از نظر من باید اول ببینی که هر کلیدی چه عددی میده بعدش باید اون عدد رو در یک data و بعد با lookup بخونی مقدار جدید رو

          :eek: :eek: :eek: :eek: :eek:

          خودمم نفهمیدم چی گفتم
          به نظر من باید تو جدول اخری که برای کی پد تعریف میکنیم باید مقادیر کلید ها رو عوض کنیم
          در حقیقت کلید یک همون 0 هست و کلید 2 همون 1 اگه تو برنامه بنویسیم که اگر کلید 1 رو فشار دادیم به جای مقدار حقیقیش(0) مقدار ما یعنی همون 1 رو قرار بده میتونیم از کیپد استفاده کنیم
          من همین کارو کردم و جواب گرفتم اگه هم مشکلتون حل نشد بگید یک نمونه برنامه بزارم
          r.pسابق

          دیدگاه


            #6
            پاسخ : مشکل در راه اندازی کی بورد 4*4

            به نام خدا oo: oo: oo:


            خب ببین اینو ببین باید اینجوری عمل کنی:

            Do
            A = Getkbd()
            If A < 12 Then
            K = Lookup(a , Keys)
            print k
            End If
            Loop


            Data 1 , 4 , 7 , 0 , 2 , 5 , 8 , 0 , 3 , 6 , 9 , 0


            خدمت شما.

            نوکرتم هستیم.
            چیییییییییییییییییییییییی داداش نوکرتم هستیم :applause:
            به نام خدا

            دیدم آن چشمه ی هستی که جهانش خوانند

            _-_-_-_-_-_-_-_-
            آنقدر آب کزان دست توان شست نداشت به به به به

            دیدگاه

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