اطلاعیه

Collapse
No announcement yet.

مشکل با کیپد

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

    مشکل با کیپد

    کاراکتر یک رو چجوری به عدد یک تبدیل میکنن؟ :angry:
    یه سوال دیگه
    من می خواهم کاربر با کیپد عدد وارد کنه تا زمانی که یک کلید غیر عددی مثل مساوی رو فشار بده (تابعش مقدار برگردونه هم عدد هم مساوی
    نوع تابش چی میشه؟
    کسی کدشو تو کدویزن بلده :cry2:
    فوتی فوری

    #2
    پاسخ : مشکل با کیپد

    با دستور
    int atoi (char *str)
    کارشم اینکه یک رشته میکیره و اونو به عدد صحیح تبدیل میکنه

    دیدگاه


      #3
      پاسخ : مشکل با کیپد

      نوشته اصلی توسط ramin20007
      با دستور
      int atoi (char *str)
      کارشم اینکه یک رشته میکیره و اونو به عدد صحیح تبدیل میکنه
      ببخشید دستورش بعد افتاده متوجه نشدم میشه دوباره بگید

      دیدگاه


        #4
        پاسخ : مشکل با کیپد

        num=atoi(mmc);

        دستورشو اگر بخوای استفاده کنی باید مثل بالا بنویسیش
        num یک متغییر int هست
        mmc یک رشته یا str

        دیدگاه


          #5
          پاسخ : مشکل با کیپد

          اگر هر دستوری که اینجا نوشته میشه توی نوت پد کپی کنی درست نمایش داده میشه

          دیدگاه


            #6
            پاسخ : مشکل با کیپد

            بازم برای تکمیل سخن بالا باید بگم
            دستور atoi در کتابخانه ی stdlib هست و برای کار با این تابع باید ابتدا آن اضافه کنی به صورت زیر
            #include<stdlib.h>

            برای قسمت دوم سوال هم از روش فراخونی تابع در تابع را پیشنهاد میکنم


            کد:
            int detect()
            {
            if(keypad_scan != "=" 0)
            ()detect
            
            return(keypad_scan)
            }

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

            دیدگاه


              #7
              پاسخ : مشکل با کیپد

              با اینکه باهاش قهرم ولی چیکار کنیم دیگه [-(
              خودم جواب گرفتم.

              کد:
              #include <stdio.h>
              #include <mega16.h>
              #include <delay.h>
              #include <stdlib.h>
              #include <lcd.h>
              #define maxkeys 16
              #define xtal 8000000
              
              #asm
              .equ __lcd_port=0x1B ;PORTA
              #endasm
                
              
              unsigned char key, butnum, m;  
              char str[10];
              float k;
              //key pad scan table
              flash unsigned char keytbl[16]={0xee, 0xed, 0xeb, 0xe7,0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb, 0xb7, 0x7e,0x7d, 0x7b, 0x77};
               
              
              
              void main(void)
              
              
               { 
                
               PORTD=0x00;
              DDRD=0x20;
              
              // Mode: Fast PWM top=03FFh
              // OC1A output: Non-Inv.
              // OC1B output: Disconnected
              TCCR1A=0x09;
              TCCR1B=0x0A; //10 Bit PWM
              OCR1AH=0x00;
              OCR1AL=0xFF; 
               //Init port B to show keyboard result
                 
              
               //endless loop to read keyboard  
               
               while(1)
                 {  
                 
                 //get lower nibble
                  DDRC = 0x0f;
                  PORTC = 0xf0; 
                  delay_us(5);
                  key = PINC;
                  
                  //get upper nibble                                        
                  DDRC = 0xf0;
                  PORTC = 0x0f; 
                  delay_us(5);
                  key = key | PINC;
                   
                  delay_ms(10);
                  
                  //find matching keycode in keytbl
                  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; 
                 
                 
                  if(butnum==1){
                  m=7; 
                   k=k*10;
                  k=m+k;
                  
                  }
                  else if(butnum==2){
                  m=8;
                   k=k*10;
                  k=m+k;
                  
                  }
                  else if(butnum==3){
                  m=9;
                   k=k*10;
                  k=m+k;
                  
                  }
                  else if(butnum==5){
                  m=4;
                   k=k*10;
                  k=m+k;
                 
                  }
                  else if(butnum==6){
                  m=5;
                   k=k*10;
                  k=m+k;
                 
                  }
                  else if(butnum==7){
                  m=6;
                   k=k*10;
                  k=m+k;
                  
                  }
                  else if(butnum==9){
                  m=1; 
                   k=k*10;
                  k=m+k;
                  
                  }
                  else if(butnum==10){
                  m=2; 
                   k=k*10;
                  k=m+k;
                 
                  }
                  else if(butnum==11){
                  m=3;
                   k=k*10;
                  k=m+k;
                 
                  }
                  else if(butnum==14){
                  m=0; 
                   k=k*10;
                  k=m+k;
                 
                  }
                  else if(butnum==15) 
                  TCCR1A=k;   
                   
                  else if(butnum==13) 
                  k=0;
                  
                 
                   lcd_init(16);
              itoa(k,str);
              lcd_clear();
              lcd_puts(str);
                 }} // end while
              ?Why not

              دیدگاه


                #8
                پاسخ : مشکل با کیپد

                بذار یه چندتا چیز در مورد این برنامه بالایی بگم:
                کیپد به پورت C وصل میشه.
                1=PC0
                2=PC1
                3=PC2
                4=PC3
                PC4=A
                PC5=B
                PC6=C
                PC7=D
                LCD به پورت A وصل میشه.
                PA.0=RS
                PA.1=RW
                PA.2=E
                PA.4=DB4
                PA.5=DB5
                PA.6=DB6
                PA.7=DB7
                همونطور که خواسته بودی با زدن یه دگمه ی غیره عددی (اینجا =) یه کار رو انجام میده.
                ?Why not

                دیدگاه

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