اطلاعیه

Collapse
No announcement yet.

مشکل با keypad

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

    مشکل با keypad

    با سلام
    چندتا سوال دارم:

    1.چجوری میشه از طریق keypad،علامتها(مثل/*-+)رو روی lcd نشون داد؟
    2.چجوری میشه یک عدد چند رقمی رو از طریق keypad روی lcd نشون داد؟

    در ضمن خودم یه شبیه سازی توی proteus کردم(با keypad و lcd) که فقط یک عدد رو نشون میده،اگه میشه از روی همین فایل بگید که چجوری اصلاحش کنم تا بتونم کارایی که گفتم رو انجا بده.
    لینک دانلود شبیه سازی keypad و lcd

    با تشکر

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

    سلام دوست عزیز ،
    شماتیک مدارتو دانلود کردم و اجرا کردمش.. ولی گاهی اوقات چیزای ناخواسته میزنه رو LCD !!!
    اگه با بسکام کارکنی خواهی دید که واسه کیپد کتابخونه ای داره که در حد تیم ملیه ..
    حالا اشکالی نداره با C هم فرقی نداره ، فقط یکم زحمت تعریف کردن کیپد رو داره ..
    برای نشون دادن /*-+ باید برنامه ت رو جوری بنویسی که وقتی اون کلیدی رو که دوست داری واسه * باشه رو میزنی میکرو کاراکتر * رو واست نشون بده ...
    به همین سادگی!!
    تشکر یادت نره ..
    تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
    علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

    دیدگاه


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

      سلام
      فکر کنم این فایل به درد شما میخوره
      https://www.dropbox.com/s/20iryye2hw..._3.4_advan.zip

      دیدگاه


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

        نوشته اصلی توسط ehsanbagheri
        سلام
        فکر کنم این فایل به درد شما میخوره
        https://www.dropbox.com/s/20iryye2hw..._3.4_advan.zip
        ممنون ولی فایلتون برای من کار نمیکنه لطفا چک کنید

        دیدگاه


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

          نوشته اصلی توسط sinaitg
          سلام دوست عزیز ،
          شماتیک مدارتو دانلود کردم و اجرا کردمش.. ولی گاهی اوقات چیزای ناخواسته میزنه رو LCD !!!
          کدوم کلیدو که میزنید چیزای ناخواسته میزنه رو LCD ؟
          نوشته اصلی توسط sinaitg
          برای نشون دادن /*-+ باید برنامه ت رو جوری بنویسی که وقتی اون کلیدی رو که دوست داری واسه * باشه رو میزنی میکرو کاراکتر * رو واست نشون بده
          بله،ایده شو میدونم.اگه میشه برنامشو بگید چی میشه؟
          مثلا من خودم اینکارو کردم :;{str_pressed_key={1,2,"=",3
          که str_pressed_key همون متغییری هست که قراره روی lcdنمایش داده بشه(البته قبلش به کد اسکی باید تبدیل کنم)
          ولیcodevision از این خط برنامه errorمیگیره(چه متغیرم رو charتعریف کنم چهunsigned char)

          دیدگاه


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

            نوشته اصلی توسط ehsanbagheri
            سلام
            فکر کنم این فایل به درد شما میخوره
            https://www.dropbox.com/s/20iryye2hw..._3.4_advan.zip
            اگه میشه یکم در مورد برنامتون توضیح بدید.

            با تشکر

            دیدگاه


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

              نوشته اصلی توسط cortex-m3
              اگه میشه یکم در مورد برنامتون توضیح بدید.

              با تشکر
              سلام
              ببخشید من برنامه رو تست نکردم.
              دوباره دانلود کنید https://www.dropbox.com/s/20iryye2hw..._3.4_advan.zip
              شما باید پوشه header رو توی پوشه برنامه خودتون کپی کنید و با این دستور اون رو فراخوانی کنید
              کد:
              #include <header/keypad_advance.h>
              و با این دستور تابع کیپد رو فراخوانی کنید
              کد:
               VAR = keypad(10,3,1,5,1);
              اون عدد ها هم به ترتیب از چپ به راست. wait:مثل تاخیر تو بسکام . تعداد رقم های مورد نیاز. عدد بعد اگر که 0 باشه رقمها نمایش
              داده نمیشن و اگر یک باشه نمایش داده میشند. دو رقم بعد هم موقعیت نمایش رویی lcd رو تعیین میکنند.
              تو این نمونه کد تاخیر 10 میلی ثانیه ، تعداد ارقام 3 رقم، کارکتر ها رو هم نمایش میده و تو موقعیت (5،1)
              ببخشید دیر جواب دادم

              دیدگاه


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

                فایل codevision رو نگاه کردم یه چندتا سوال برم پیش اومد:

                1.چرا <include<mega32.h# نداره؟
                2.آیا برای اینکه یه عدد سه رقمی رو نشون بدید،3 متغیر تعریف کردید؟
                نوشته اصلی توسط ehsanbagheri
                شما باید پوشه header رو توی پوشه برنامه خودتون کپی کنید و با این دستور اون رو فراخوانی کنید
                کد:
                #include <header/keypad_advance.h>
                من اینکارو نکردم ولی برنامه جواب داد،چرا؟ یا اصلا یه سوال دیگه این header رو شما نوشتید یا برای کتابخونه codevisin هست؟
                اگه میشه یکم در مورد این header توضیح بدید؟چرا باید ازش استفاده کنیم؟نمیشه این برنامه رو بدون این header نوشت؟
                3.میدونم توضیح دادید ولی من متوجه نشدم>>>VAR = keypad(10,3,1,5,1); دقیقا چی کار میکنه؟

                با تشکر

                دیدگاه


                  #9
                  پاسخ : مشکل با keypad

                  با سلام
                  برای نمایش یک عدد دو رقمی روی lcdتوسطkeypad از برنامه زیر استفاده کردم ولی جواب نمیده.چرا؟
                  کد:
                  [align=left][align=left]
                  #include <mega32.h>
                  #include <delay.h>
                  #include <stdlib.h>
                  
                  // Alphanumeric LCD Module functions
                  #asm
                    .equ __lcd_port=0x1B ;PORTA
                  #endasm
                  #include <lcd.h>
                  
                  // Declare your global variables here
                  
                  void main(void)
                  { 
                  unsigned char key=0,n=0,key1=0; 
                  char str_key[9];
                  // Declare your local variables here
                  
                  // Input/Output Ports initialization
                  // Port A initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                  PORTA=0x00;
                  DDRA=0x00;
                  
                  // Port B initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                  PORTB=0x00;
                  DDRB=0x00;
                  
                  // Port C initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                  PORTC=0x00;
                  DDRC=0x00;
                  
                  // Port D initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                  PORTD=0x00;
                  DDRD=0x00;
                  
                  // Timer/Counter 0 initialization
                  // Clock source: System Clock
                  // Clock value: Timer 0 Stopped
                  // Mode: Normal top=FFh
                  // OC0 output: Disconnected
                  TCCR0=0x00;
                  TCNT0=0x00;
                  OCR0=0x00;
                  
                  // Timer/Counter 1 initialization
                  // Clock source: System Clock
                  // Clock value: Timer 1 Stopped
                  // Mode: Normal top=FFFFh
                  // OC1A output: Discon.
                  // OC1B output: Discon.
                  // Noise Canceler: Off
                  // Input Capture on Falling Edge
                  // Timer 1 Overflow Interrupt: Off
                  // Input Capture Interrupt: Off
                  // Compare A Match Interrupt: Off
                  // Compare B Match Interrupt: Off
                  TCCR1A=0x00;
                  TCCR1B=0x00;
                  TCNT1H=0x00;
                  TCNT1L=0x00;
                  ICR1H=0x00;
                  ICR1L=0x00;
                  OCR1AH=0x00;
                  OCR1AL=0x00;
                  OCR1BH=0x00;
                  OCR1BL=0x00;
                  
                  // Timer/Counter 2 initialization
                  // Clock source: System Clock
                  // Clock value: Timer 2 Stopped
                  // Mode: Normal top=FFh
                  // OC2 output: Disconnected
                  ASSR=0x00;
                  TCCR2=0x00;
                  TCNT2=0x00;
                  OCR2=0x00;
                  
                  // External Interrupt(s) initialization
                  // INT0: Off
                  // INT1: Off
                  // INT2: Off
                  MCUCR=0x00;
                  MCUCSR=0x00;
                  
                  // Timer(s)/Counter(s) Interrupt(s) initialization
                  TIMSK=0x00;
                  
                  // Analog Comparator initialization
                  // Analog Comparator: Off
                  // Analog Comparator Input Capture by Timer/Counter 1: Off
                  ACSR=0x80;
                  SFIOR=0x00;
                  
                  // LCD module initialization
                  lcd_init(16);
                  
                  while (1)
                     {
                      DDRC=0x0f;
                      PORTC=0xff;
                      while(PORTC==0xff){
                      PORTC=0xff;
                      PORTC.0=0;
                      if(PINC.4==0)key=7;
                      if(PINC.5==0)key=8;
                      if(PINC.6==0)key=9;
                      if(PINC.7==0)key=10;
                      delay_ms(5); 
                      
                      PORTC=0xff;
                      PORTC.1=0;
                      if(PINC.4==0)key=4;
                      if(PINC.5==0)key=5;
                      if(PINC.6==0)key=6;
                      if(PINC.7==0)key=11;
                      delay_ms(5);
                      
                      PORTC=0xff;
                      PORTC.2=0;
                      if(PINC.4==0)key=1;
                      if(PINC.5==0)key=2;
                      if(PINC.6==0)key=3;
                      if(PINC.7==0)key=12;
                      delay_ms(5);
                      
                      PORTC=0xff;
                      PORTC.3=0;
                      if(PINC.4==0)key=13;
                      if(PINC.5==0)key=0;
                      if(PINC.6==0)key=14;
                      if(PINC.7==0)key=15;
                      delay_ms(5); 
                      }
                      n++;
                      
                      if(n==1){
                      key1=key;
                      } 
                      if(n==2){
                      key=(key1*10)+key;
                      } 
                      if(n>2){n=0; }
                      itoa(key,str_key);
                      
                      lcd_gotoxy(0,0);
                      lcd_puts(str_key);
                      delay_ms(5);
                   
                      
                  
                     [/align][/align]};
                  }
                  روش کار هم اینجوریه که اگه بار اول کلید زده شد،علاوه بر ذخیره ی آن،آن عدد رو روی lcd نشون بده و برای با دوم کلید زده شد،عدد اولی رو قبلش ذخیره کرده بودم رو در 10 ضرب کنه و با عدد دومی جمع کنه(که به ما همون عدد 2 رقمی رو بده) واگه کلید برای با سوم زده شد،n(شمارنده ای که تعداد زدن کلید رو بر عهده داره)رو صفر کنه.
                  به نظرتون مشکل کجاست؟
                  (در ضمن فایل proteus همون فایل قبلی هست که لینکشو توی پست قبلی گذاشتم)

                  با تشکر

                  دیدگاه


                    #10
                    پاسخ : مشکل با keypad

                    مشکل حل شد!
                    کد برنامه بهصورت زیر هست:
                    کد:
                    /*****************************************************
                    This program was produced by the
                    CodeWizardAVR V1.25.8 Standard
                    Automatic Program Generator
                    © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
                    http://www.hpinfotech.com
                    
                    Project : 
                    Version : 
                    Date  : 02/04/2014
                    Author : F4CG              
                    Company : F4CG              
                    Comments: 
                    
                    
                    Chip type      : ATmega32
                    Program type    : Application
                    Clock frequency   : 8.000000 MHz
                    Memory model    : Small
                    External SRAM size : 0
                    Data Stack size   : 512
                    *****************************************************/
                    
                    #include <mega32.h>
                    #include <delay.h>
                    #include <stdlib.h>
                    
                    // Alphanumeric LCD Module functions
                    #asm
                      .equ __lcd_port=0x1B ;PORTA
                    #endasm
                    #include <lcd.h>
                    
                    // Declare your global variables here
                    
                    void main(void)
                    { 
                    unsigned char key=0,n=0,key1=0; 
                    char str_key[9];
                    // Declare your local variables here
                    
                    // Input/Output Ports initialization
                    // Port A initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTA=0x00;
                    DDRA=0x00;
                    
                    // Port B initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTB=0x00;
                    DDRB=0x00;
                    
                    // Port C initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTC=0x00;
                    DDRC=0x00;
                    
                    // Port D initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTD=0x00;
                    DDRD=0x00;
                    
                    // Timer/Counter 0 initialization
                    // Clock source: System Clock
                    // Clock value: Timer 0 Stopped
                    // Mode: Normal top=FFh
                    // OC0 output: Disconnected
                    TCCR0=0x00;
                    TCNT0=0x00;
                    OCR0=0x00;
                    
                    // Timer/Counter 1 initialization
                    // Clock source: System Clock
                    // Clock value: Timer 1 Stopped
                    // Mode: Normal top=FFFFh
                    // OC1A output: Discon.
                    // OC1B output: Discon.
                    // Noise Canceler: Off
                    // Input Capture on Falling Edge
                    // Timer 1 Overflow Interrupt: Off
                    // Input Capture Interrupt: Off
                    // Compare A Match Interrupt: Off
                    // Compare B Match Interrupt: Off
                    TCCR1A=0x00;
                    TCCR1B=0x00;
                    TCNT1H=0x00;
                    TCNT1L=0x00;
                    ICR1H=0x00;
                    ICR1L=0x00;
                    OCR1AH=0x00;
                    OCR1AL=0x00;
                    OCR1BH=0x00;
                    OCR1BL=0x00;
                    
                    // Timer/Counter 2 initialization
                    // Clock source: System Clock
                    // Clock value: Timer 2 Stopped
                    // Mode: Normal top=FFh
                    // OC2 output: Disconnected
                    ASSR=0x00;
                    TCCR2=0x00;
                    TCNT2=0x00;
                    OCR2=0x00;
                    
                    // External Interrupt(s) initialization
                    // INT0: Off
                    // INT1: Off
                    // INT2: Off
                    MCUCR=0x00;
                    MCUCSR=0x00;
                    
                    // Timer(s)/Counter(s) Interrupt(s) initialization
                    TIMSK=0x00;
                    
                    // Analog Comparator initialization
                    // Analog Comparator: Off
                    // Analog Comparator Input Capture by Timer/Counter 1: Off
                    ACSR=0x80;
                    SFIOR=0x00;
                    
                    // LCD module initialization
                    lcd_init(16);
                    
                    while (1)
                       {
                        DDRC=0x0f;
                        PORTC=0xff;
                        while(PORTC==0xff){
                        PORTC=0xff;
                        PORTC.0=0;
                        if(PINC.4==0){
                        key=7;
                        goto l1;}
                        if(PINC.5==0){
                        key=8;
                        goto l1;}
                        if(PINC.6==0){
                        key=9;
                        goto l1;}
                        if(PINC.7==0){
                        key=10; 
                        goto l1;}
                        delay_ms(5); 
                        
                        PORTC=0xff;
                        PORTC.1=0;
                        if(PINC.4==0){
                        key=4; 
                        goto l1;}
                        if(PINC.5==0){
                        key=5; 
                        goto l1;}
                        if(PINC.6==0){
                        key=6; 
                        goto l1;}
                        if(PINC.7==0){
                        key=11; 
                        goto l1;}
                        delay_ms(5);
                        
                        PORTC=0xff;
                        PORTC.2=0;
                        if(PINC.4==0){
                        key=1;
                        goto l1;}
                        if(PINC.5==0){
                        key=2; 
                        goto l1;}
                        if(PINC.6==0){
                        key=3; 
                        goto l1;}
                        if(PINC.7==0){
                        key=12; 
                        goto l1;}
                        delay_ms(5);
                        
                        PORTC=0xff;
                        PORTC.3=0;
                        if(PINC.4==0){
                        key=13;
                        goto l1;}
                        if(PINC.5==0){
                        key=0; 
                        goto l1;}
                        if(PINC.6==0){
                        key=14;
                        goto l1;}
                        if(PINC.7==0){
                        key=15; 
                        goto l1;}
                        delay_ms(5);
                        PORTC=0xff; 
                        }
                       l1: n++;
                        
                        if(n==1){
                        key1=key;
                        } 
                        if(n==2){
                        key=(key1*10)+key;
                        } 
                        if(n>2){
                        lcd_clear();
                        key1=key;
                        n=1; }
                        itoa(key,str_key);
                        
                        lcd_gotoxy(0,0);
                        lcd_puts(str_key); 
                        while((PORTC&240)!=0xf0); 
                        delay_ms(500);
                        
                     
                        
                    
                       };
                    }
                    لینک فایل پروتئوسش هم توی اولین پستم هست.
                    فقط یه چیزی که هست من خط آخر برنامه رو که همون delay هست رو همینجوری 500 انتخاب کردم.چه تابعی میشه بجاش گذاشت؟(لطفا بعد از شبیه سازی نتیجه رو اعلام کنید)
                    در ضمن حالا که برنامه جواب میده آیا میشه همینو به صورت یک فایل کتابخونه ای ذخیره کرد ؟ و هر وقت خواستیم فقط اسم اونو بنویسیم؟لطفا روش کار رو کامل بگید
                    با تشکر

                    دیدگاه


                      #11
                      پاسخ : مشکل با keypad

                      سلام دوستان
                      چرا از جدول لوک پ استفاده نمیکنی؟
                      کد:
                      flash char kbd2str[17]={1,2,3,'/',4,5,6,'*',7,8,9,'-','.',0,'e','+'}
                      یه زیربرنامه ای بنویس که فقط بتونی از رو کیپد از 0 تا 15 رو بخونی
                      بعدا موقعی که این زیربرنامه رو فراخوانی میکنی باید اون مقداری که return میکنه رو بزاری تو این آرایه بالا
                      مثال
                      کد:
                      char X;
                      X=kbd2str[key()];
                      اگر عدد زدی عدد تحویلت میده که بین 0 تا 9 هست و وارد X میشه
                      اگر / * - + و Enter و نقطه رو بزنی کارکتر اینها ریخته میشه توی X
                      موفق باشی
                      [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                      معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                      معرفی نرم افزار Codewizard PWM
                      با من بیشتر آشنا شوید

                      دیدگاه


                        #12
                        پاسخ : مشکل با keypad

                        با سلام
                        کد:
                        چرا از جدول لوک پ استفاده نمیکنی؟
                        کد: [انتخاب]
                        flash char kbd2str[17]={1,2,3,'/',4,5,6,'*',7,8,9,'-','.',0,'e','+'}
                        من میخواستم اینکارو بکنم ولی codevision,خطا میگیره.
                        در ضمن لطفا در مورد "نوشتن تابع"،"برگردوندن" و... یکم توضیح بدید.

                        با تشکر

                        دیدگاه


                          #13
                          پاسخ : مشکل با keypad

                          سلام
                          من این فایل از یه سایت گرفتم
                          خیلی حوب کار میکنه تو عمل اصلا نویز روش تاثیر نداره
                          فایل هدر رو تو برنامه خودت اینکلود کن و بعد داخل هدر اون جایی که نوشته
                          #define c1 PINB.4
                          #define c2 PINB.5
                          #define c3 PINB.6
                          #define c4 PINB.7 پایه های میکرو رو تاریف کن و از دستور زیر برای گرفتن عدد استفاده کن
                          (var = keypad(10,3,1,5 به جای var اسم متغییر رو بنویس باید ازنوع اینتیجر تعریف کنی
                          فایل هدر میکرو هم به برنامه اصلی اضافه میشه شما نباید فایل هدر رو تغییر بدی فقط باید پورت رو تغییر بدی
                          این برنامه رو که گذاشتم تو پروتئوس تست کن ببین چطور بود

                          دیدگاه


                            #14
                            پاسخ : مشکل با keypad

                            نوشته اصلی توسط cortex-m3
                            با سلام
                            کد:
                            چرا از جدول لوک پ استفاده نمیکنی؟
                            کد: [انتخاب]
                            flash char kbd2str[17]={1,2,3,'/',4,5,6,'*',7,8,9,'-','.',0,'e','+'}
                            من میخواستم اینکارو بکنم ولی codevision,خطا میگیره.
                            در ضمن لطفا در مورد "نوشتن تابع"،"برگردوندن" و... یکم توضیح بدید.

                            با تشکر
                            ممنون میشم اگه برنامه خودتون رو بزارین
                            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                            معرفی نرم افزار Codewizard PWM
                            با من بیشتر آشنا شوید

                            دیدگاه


                              #15
                              پاسخ : مشکل با keypad

                              سلام
                              اینم برنامه ای که میخواستید
                              کد:
                              /*****************************************************
                              AVR Core Clock frequency: 8.000000 MHz
                              *****************************************************/
                              #include <mega8.h>
                              #include <alcd.h>
                              #include <delay.h>
                              #define buzzer PORTB.3
                              
                              char key(void);
                              void main(void)
                              {
                                char X;
                                DDRD =0x0F;
                                PORTD=0xF0;
                                DDRB.3=1;
                                PORTB.3=0;
                                // Alphanumeric LCD initialization
                                // Connections are specified in the
                                // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
                                // RS - PORTB Bit 0
                                // RD - PORTB Bit 1
                                // EN - PORTB Bit 2
                                // D4 - PORTB Bit 4
                                // D5 - PORTB Bit 5
                                // D6 - PORTB Bit 6
                                // D7 - PORTB Bit 7
                                // Characters/line: 16
                                lcd_init(16);
                                lcd_clear();
                                while (1)
                                {
                                  while(key()=='v');
                                  X=key();
                                  buzzer=1;
                                  lcd_putchar(X);
                                  delay_ms(50);
                                  buzzer=0;
                                  while(key()==X);
                                }
                              }
                              char key (void)
                              {
                                PORTD=0xF0;
                                if(PIND == 0xF0)return 'v';
                                else delay_ms(10);
                                PORTD=0xFE;
                                if(PIND.4==0)return '+';
                                if(PIND.5==0)return '-';
                                if(PIND.6==0)return '*';
                                if(PIND.7==0)return '/';
                                PORTD=0xFD;
                                if(PIND.4==0)return 'e';
                                if(PIND.5==0)return '3';
                                if(PIND.6==0)return '6';
                                if(PIND.7==0)return '9';
                                PORTD=0xFB;
                                if(PIND.4==0)return '0';
                                if(PIND.5==0)return '2';
                                if(PIND.6==0)return '5';
                                if(PIND.7==0)return '8';
                                PORTD=0xF7;
                                if(PIND.4==0)return '.';
                                if(PIND.5==0)return '1';
                                if(PIND.6==0)return '4';
                                if(PIND.7==0)return '7';
                                return 'v';
                              }
                              و اما در مورد اون سوالتون
                              در هر زیر برنامه ای میتواند :
                              1. ورودی داشته باشد و خروجی داشته باشد
                              2. ورودی داشته باشد و خروجی نداشته باشد
                              3. ورودی نداشته باشد و خروجی داشته باشد
                              4. ورودی نداشته باشد و خروجی نداشته باشد
                              بنابراین هر زیر برنامه میتواند با توجه به کاربرد ، یکی از این 4 نوعی که ذکر شد استفاده بکنیم .
                              ================================================== ============
                              مثال
                              1. زیر برنامه ای که صفحه نمایش LCD را پاک میکند، ورودی و خروجی نیاز ندارد .(نوع 4)
                              2. زیر برنامه ای که دو عدد را بگیرد و توان را محاسبه کند نیاز به دو ورودی و خروجی دارد .(نوع 1)
                              3. زیر برنامه ای که پرش به مختصات یک LCD حروفی میکند نیاز به دو ورودی دارد و خروجی ندارد (نوع 2)
                              4. زیر برنامه ای که یک صفحه کلید را اسکن می کند ، ورودی نیاز ندارد ولی خروجی نیاز دارد( نتایج به دست آمده ، را برمی گرداند) (نوع 3)
                              ================================================== ============
                              این که میگوییم عدد رو برگردونیم منظور این هست که وارد زیر برنامه بشویم و صفحه کلید رو بخونیم و خروجی مورد نظرمون رو با استفاده از دستور return برمیگردانیم
                              حال این خروجی خیلی مهمه که بدونیم به چه کارمون میاد
                              بعنوان مثال
                              خروجی این زیر برنامه ای که در برنامه نوشته شده یک متغیر از نوع char میباشد و این خروجی تعیین میکند که عدد زده شده برابر چی هست....
                              البته این مباحثی که گفته شد کامل نیست و یکی از مباحت مهم برنامه نویسی محسوب میشود ...
                              پیشنهاد من اینه که حتما اول کد نویسی خودتون رو قوی کنید و مباحث اولیه برنامه نویسی رو خوب یاد بگیرید سپس میکرو کار کنید.(البته نه به صورت خیلی پیشرفته(در حد معمولی))
                              زمانی که برنامه نویسی را خوب یاد بگیرید با برنامه نویسی خودتون حال خواهید کرد :agree: :applause:
                              این هم فایل
                              سورس کد + شبیه سازی
                              http://s5.picofile.com/file/8113276392/Keypad_LCD.zip.html
                              [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                              معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                              معرفی نرم افزار Codewizard PWM
                              با من بیشتر آشنا شوید

                              دیدگاه

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