اطلاعیه

Collapse
No announcement yet.

استفاده از Push Button

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

    استفاده از Push Button

    من دیگه واقعا گیج شدم :angry:
    یه برنامه با استفاده از دستور if نوشتم که مثلا وقتی PORTA.3 یک بشه(با استفاده از Push button) یک عدد که با استفاده از تابع rand() درست میشه رو تقسیم کنه داخل 4 متغیر در غیر اینصورت 4 متغیر مقداری ثابت داشته باشه.(البته این برنامه رو میخوام قدم قدم بزرگترش کنم) اما هر کار میکنم چه تو عملی و چه تو پروتئوس جواب نمیده.
    خواهش میکنم کمکم کنید :sad:
    کد:
    while (1)
       {
       // Place your code here
       i=rand()%(Max_P-Min_P+1)+Min_P;
       if(PORTA.3==0)
       {
       c0=i/3;
       c1=i*2/9;
       c2=i/9;
       c3=i/3;
       lcd_gotoxy(0,0);
       sprintf(z0,"A:%4.1f",c0);
       lcd_puts(z0);
       lcd_gotoxy(9,0);
       sprintf(z1,"B:%4.1f",c1);
       lcd_puts(z1);
       lcd_gotoxy(9,1);
       sprintf(z2,"C:%4.1f",c2);
       lcd_puts(z2);
       lcd_gotoxy(0,1);
       sprintf(z3,"D:%4.1f",c3);
       lcd_puts(z3);
       delay_ms(500);
       }
       else
       {
       c0=0.5;
       c1=0.3;
       c2=0.6;
       c3=0.7;
       lcd_gotoxy(0,0);
       sprintf(z0,"A:%4.1f",c0);
       lcd_puts(z0);
       lcd_gotoxy(9,0);
       sprintf(z1,"B:%4.1f",c1);
       lcd_puts(z1);
       lcd_gotoxy(9,1);
       sprintf(z2,"C:%4.1f",c2);
       lcd_puts(z2);
       lcd_gotoxy(0,1);
       sprintf(z3,"D:%4.1f",c3);
       lcd_puts(z3);
       delay_ms(500);
       }
       }

    #2
    پاسخ : استفاده از Push Button

    برنامه ات رو کامل + شماتیک مدارت بذار تا بشه سریعتر کمک کرد.
    ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

    امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

    دیدگاه


      #3
      پاسخ : استفاده از Push Button

      نوشته اصلی توسط AliRezaDAVE
      برنامه ات رو کامل + شماتیک مدارت بذار تا بشه سریعتر کمک کرد.
      سلام
      تو مرحله اولیه برنامه و مخصوصا مدارم زیاد پیچیده نیست
      کد:
      /*****************************************************
      This program was produced by the
      CodeWizardAVR V1.24.6 Professional
      Automatic Program Generator
      © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
      http://www.hpinfotech.com
      e-mail:office@hpinfotech.com
      
      Project : 
      Version : 
      Date  : 08/17/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>
      
      // Alphanumeric LCD Module functions
      #asm
        .equ __lcd_port=0x12 ;PORTD
      #endasm
      #include <lcd.h>
      #include <stdlib.h>
      #include <stdio.h>
      #include <delay.h>
      #define Max_P 1100
      #define Min_P 300
      // Declare your global variables here
      int i;
      float c0,c1,c2,c3;
      char z0[30],z1[30],z2[30],z3[30];
      void main(void)
      {
      // 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=0x0f;
      
      // 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)
         {
         // Place your code here
         i=rand()%(Max_P-Min_P+1)+Min_P;
         if(PORTA.3==0)
         {
         c0=i/3;
         c1=i*2/9;
         c2=i/9;
         c3=i/3;
         lcd_gotoxy(0,0);
         sprintf(z0,"A:%4.1f",c0);
         lcd_puts(z0);
         lcd_gotoxy(9,0);
         sprintf(z1,"B:%4.1f",c1);
         lcd_puts(z1);
         lcd_gotoxy(9,1);
         sprintf(z2,"C:%4.1f",c2);
         lcd_puts(z2);
         lcd_gotoxy(0,1);
         sprintf(z3,"D:%4.1f",c3);
         lcd_puts(z3);
         delay_ms(500);
         }
         else
         {
         c0=0.5;
         c1=0.3;
         c2=0.6;
         c3=0.7;
         lcd_gotoxy(0,0);
         sprintf(z0,"A:%4.1f",c0);
         lcd_puts(z0);
         lcd_gotoxy(9,0);
         sprintf(z1,"B:%4.1f",c1);
         lcd_puts(z1);
         lcd_gotoxy(9,1);
         sprintf(z2,"C:%4.1f",c2);
         lcd_puts(z2);
         lcd_gotoxy(0,1);
         sprintf(z3,"D:%4.1f",c3);
         lcd_puts(z3);
         delay_ms(500);
         }
         }
      }
      والا عکس هم برای شماتیک مدارم بلد نیستم بزارم.چیز پیچیدهآ‌ای نیست.یه Push Button هست که به Vcc و PORTA.3 وصل شده و همین طور LCD که به پورت D وصل هست

      دیدگاه


        #4
        پاسخ : استفاده از Push Button

        این قسمت برنامه :
        کد:
        if(PORTA.3==0)
        PORTA.3 رو تبدیل به PINA.3 کن و در تنظیمات PORTA مقدار DDRA رو برابر صفر قرار بده تا پورت A بشه ورودی. در برنامه شما خروجی تعریفش کردید.
        از همه مهمتر اینه که شما برید در تب progect گزینه Configure بعدش در تب C Compiler ، قسمت sprint featutes اون رو روی float تنظیم کنید و دوباره برنامه رو کامپایل کنید.
        درست میشه
        ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

        امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

        دیدگاه

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