اطلاعیه

Collapse
No announcement yet.

کیپد!

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

    کیپد!

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

    #2
    پاسخ : کیپد!

    سلام
    کد زیر رو به برنامه اضافه کن و هرجا خواستی فرابخون
    کد:
     unsigned char scan[4]={0XFE,0XFD,0XFB,0XF7};
     
     char arrkey[4][4]={ {'7','8','9','/'}, {'4','5','6','*'}, {'1','2','3','-'}, {'C','0','=','+'}};
        
       char keypad(){
        unsigned char r,c,k;
        DDRC=0X0F;
        keypad_port=0XFF;
        
        while(1){
          for (r=0; r<4; r++){
           c=255;
           keypad_port=scan[r];
           delay_us(10);
           if(c1==0) c=0;
           if(c2==0) c=1;
           if(c3==0) c=2;
           if(c4==0) c=3;
           
           if (c!=255){
            k=arrkey[r][c];
            while(c1==0);
            while(c2==0);
            while(c3==0);
            while(c4==0);
            delay_ms(50);
            return k;
           }
          }
        } 
       }

    دیدگاه


      #3
      پاسخ : کیپد!

      میشه ازت بخوام یکم در مورد برنامه ات توضیح بدی؟ oo:
      من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

      دیدگاه


        #4
        پاسخ : کیپد!

        شما اول میای یه پورتی که کیپد بهش وصل هست 4 پین اول رو به عنوان خروجی و مابقی رو به عنوان ورودی تعریف میکنی
        مثلا پورت c
        DDRC=0X0F
        بعد به ترتیب 4 تا پین اول رو یکی یکی 1 می کنی
        unsigned char scan[4]={0XFE,0XFD,0XFB,0XF7};
        for (r=0; r<4; r++){
        c=255;
        keypad_port=scan[r];
        که این r همون سطر مارو مشخص می کنه
        وقتی کلیدی فشار داده بشه ورودی متناظر با اون 1 میشه که همون ستون ما هست C
        ما ابتدا c رو برابر با 255 قرار دادین که اگه کلیدی زده نشد متوحه بشیم
        اگه متوجه نشدی بگو رو خود برنامه توضیح بدم
        موفق باشی...

        دیدگاه


          #5
          پاسخ : کیپد!

          سلام
          از ای سی mm74c922 استفاده کن

          دیدگاه


            #6
            پاسخ : کیپد!

            همه اینکارا رو انجام دادم یکی یکی سطرها رو صفر وستونها...
            ولی تو پورتیوس ک اجرا میکنم هیج اتفاقی نمی افتاده یا بهتر بگم هیچی رو ال سی دی ثبت نمیشه!!!! :angry: :angry:
            درحالیکه تو کدویژن ک اجرا میکنم هیچ error نمیده..
            مشکلش کجاست؟
            لطفا کمک کنید.. :sad: :sad: :sad: :sad:
            من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

            دیدگاه


              #7
              پاسخ : کیپد!

              لطف کن برنامه ای که نوشتی رو بذار تا بهتر بشه کمک کرد...

              دیدگاه


                #8
                پاسخ : کیپد!

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


                int key_pressed=12;
                char str_key_pressed[];

                void main(void)
                {

                PORTA=0x00;
                DDRA=0x00;

                PORTB=0x00;
                DDRB=0x00;

                PORTC=0x00;
                DDRC=0xFF;

                PORTD=0x00;
                DDRD=0x00;

                TCCR0=0x00;
                TCNT0=0x00;
                OCR0=0x00;

                TCCR1A=0x00;
                TCCR1B=0x00;
                TCNT1H=0x00;
                TCNT1L=0x00;
                ICR1H=0x00;
                ICR1L=0x00;
                OCR1AH=0x00;
                OCR1AL=0x00;
                OCR1BH=0x00;
                OCR1BL=0x00;

                ASSR=0x00;
                TCCR2=0x00;
                TCNT2=0x00;
                OCR2=0x00;

                MCUCR=0x00;
                MCUCSR=0x00;

                TIMSK=0x00;
                UCSRB=0x00;

                ACSR=0x80;
                SFIOR=0x00;

                ADCSRA=0x00;
                SPCR=0x00;
                TWCR=0x00;

                // Alphanumeric LCD initialization
                // Connections are specified in the
                // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
                // RS - PORTA Bit 0
                // RD - PORTA Bit 1
                // EN - PORTA Bit 2
                // D4 - PORTA Bit 4
                // D5 - PORTA Bit 5
                // D6 - PORTA Bit 6
                // D7 - PORTA Bit 7
                // Characters/line: 20
                lcd_init(20);

                while (1)
                {
                PORTC=0XFF;
                PORTC.0=0;
                delay_ms(5);
                if (PORTC.4==0)key_pressed=1;
                if (PORTC.5==0)key_pressed=2;
                if (PORTC.6==0)key_pressed=3;

                PORTC=0XFF;
                PORTC.1=0;
                delay_ms(5);
                if (PORTC.4==0)key_pressed=4;
                if (PORTC.5==0)key_pressed=5;
                if (PORTC.6==0)key_pressed=6;

                PORTC=0XFF;
                PORTC.2=0;
                delay_ms(5);
                if (PORTC.4==0)key_pressed=7;
                if (PORTC.5==0)key_pressed=8;
                if (PORTC.6==0)key_pressed=9;

                PORTC=0XFF;
                PORTC.3=0;
                delay_ms(5);
                if (PORTC.4==0)key_pressed=10;
                if (PORTC.5==0)key_pressed=0;
                if (PORTC.6==0)key_pressed=11;

                lcd_clear();
                lcd_putsf("KEY PRESSED"
                delay_ms(30);

                itoa(key_pressed,str_key_pressed);
                lcd_gotoxy(2,0);
                lcd_puts(str_key_pressed);
                delay_ms(500);

                }
                }
                oo:
                من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                دیدگاه


                  #9
                  پاسخ : کیپد!

                  نوشته اصلی توسط mehrdad_italy
                  سلام
                  کد زیر رو به برنامه اضافه کن و هرجا خواستی فرابخون
                  کد:
                   unsigned char scan[4]={0XFE,0XFD,0XFB,0XF7};
                   
                   char arrkey[4][4]={ {'7','8','9','/'}, {'4','5','6','*'}, {'1','2','3','-'}, {'C','0','=','+'}};
                      
                     char keypad(){
                      unsigned char r,c,k;
                      DDRC=0X0F;
                      keypad_port=0XFF;
                      
                      while(1){
                        for (r=0; r<4; r++){
                         c=255;
                         keypad_port=scan[r];
                         delay_us(10);
                         if(c1==0) c=0;
                         if(c2==0) c=1;
                         if(c3==0) c=2;
                         if(c4==0) c=3;
                         
                         if (c!=255){
                          k=arrkey[r][c];
                          while(c1==0);
                          while(c2==0);
                          while(c3==0);
                          while(c4==0);
                          delay_ms(50);
                          return k;
                         }
                        }
                      } 
                     }
                  سلام دوست عزیز.میشه یکم بیشتر توضیح بدین؟

                  دیدگاه

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