NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3038 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 4 از 4

موضوع: کمک بسیار فوری

  1. #1
    تازه وارد
    تاریخ عضویت
    Dec 2015
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض کمک بسیار فوری

    سلام خدمت همه ی دوستان عزیز
    یک پروژه ای استادم بهم داده که به این صورت می باشد:

    برنامه ای بنویسید که سه میکرو سوییچ هرکدام یکی از ستون های یک کیپد 3*4 را کنترل کنند.و با زدن هر شماره ی کیپد عدد متناظر با آن در LCD نمایش داده شود.

    من خودم برنامه رو تا یه جاهایی پیش بردم با سوییچ ها که اصلا مشکلی نداشتم و تونستم با هرکدومشون هر ستون کیپد رو که دلم خواست راه اندازی کنم.
    اما در مورد اعداد نمایش داده شده در LCD:
    وقتی عدد 1 رو میزنم رو یک وامیسته و پس از 500 میلی ثانیه 1 رو پاک میکنه و مجدد دوباره یک رو مینویسه و پاک میکنه و همین چرخه تکرار میشه.
    اگر پس از 1 عدد 4 رو بزنم پس از 1 عدد 4 نمایش داده میشه و این چرخه تکرار میشود.
    اگر پس از 1 عدد 4 و سپس عدد7 رو بزنم پس از 1 عدد 4 نمایش داده میشه و سپس عدد 7 و این چرخه تکرار میشود.
    برای ستون های دیگر هم به همین صورت میباشد.
    کلا اینجوری فکر میکنم که میکرو فکر میکنه که پورت متناظر با عدد 1 هنوز هم زده شده و هربار 1 رو نشون میده در lcd.

    این برنامه ی من در کدویژن میباشد:



    /************************************************** *****
    This program was created by the
    CodeWizardAVR V3.12 Advanced
    Automatic Program Generator
    © Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
    Object moved

    Project :
    Version :
    Date : 12/24/2015
    Author :
    Company :
    Comments:


    Chip type : ATmega32
    Program type : Application
    AVR Core Clock frequency: 4.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 512
    ************************************************** *****/

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

    // Alphanumeric LCD functions
    #include <alcd.h>

    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

    // Port B initialization
    // Function: Bit7=In Bit6=Out Bit5=Out Bit4=Out Bit3=In Bit2=In Bit1=In Bit0=In
    DDRB=(0<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
    // State: Bit7=T Bit6=0 Bit5=0 Bit4=0 Bit3=T Bit2=T Bit1=T Bit0=T
    PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

    // Port C initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

    // Port D initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Disconnected
    // OC1B output: Disconnected
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
    TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
    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: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    ASSR=0<<AS2;
    TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
    TCNT2=0x00;
    OCR2=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
    MCUCSR=(0<<ISC2);

    // USART initialization
    // USART disabled
    UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

    // Analog Comparator initialization
    // Analog Comparator: Off
    // The Analog Comparator's positive input is
    // connected to the AIN0 pin
    // The Analog Comparator's negative input is
    // connected to the AIN1 pin
    ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
    SFIOR=(0<<ACME);

    // ADC initialization
    // ADC disabled
    ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

    // SPI initialization
    // SPI disabled
    SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

    // TWI initialization
    // TWI disabled
    TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

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

    while (1)
    {
    // Place your code here
    PORTB.4=0;
    PORTB.5=0;
    PORTB.6=0;

    if(PINA.0==1&&PINA.1==1&&PINA.2==0)
    {PORTB.6=1;
    delay_ms(500);}

    if(PINA.0==1&&PINA.1==0&&PINA.2==1)
    {PORTB.5=1;
    delay_ms(500);}

    if(PINA.0==0&&PINA.1==1&&PINA.2==1)
    {PORTB.4=1;
    delay_ms(500);}

    if(PINB.4==1&&PINB.3==1)
    {lcd_clear();
    lcd_puts("1");
    delay_ms(500);

    if(PINB.4==1&&PINB.2==1)
    {lcd_clear();
    lcd_puts("4");
    delay_ms(500);

    if(PINB.4==1&&PINB.1==1)
    {lcd_clear();
    lcd_puts("7");
    delay_ms(500);

    if(PINB.4==1&&PINB.0==1)
    {lcd_clear();
    lcd_puts("*");
    delay_ms(500);
    }}}}

    if(PINB.5==1&&PINB.3==1)
    {lcd_clear();
    lcd_puts("2");
    delay_ms(500);}

    if(PINB.5==1&&PINB.2==1)
    {lcd_clear();
    lcd_puts("5");
    delay_ms(500);}

    if(PINB.5==1&&PINB.1==1)
    {lcd_clear();
    lcd_puts("8");
    delay_ms(500);}

    if(PINB.5==1&&PINB.0==1)
    {lcd_clear();
    lcd_puts("0");
    delay_ms(500);}

    if(PINB.6==1&&PINB.3==1)
    {lcd_clear();
    lcd_puts("3");
    delay_ms(500);}

    if(PINB.6==1&&PINB.2==1)
    {lcd_clear();
    lcd_puts("6");
    delay_ms(500);}

    if(PINB.6==1&&PINB.1==1)
    {lcd_clear();
    lcd_puts("9");
    delay_ms(500);}

    if(PINB.6==1&&PINB.0==1)
    {lcd_clear();
    lcd_puts("#");
    delay_ms(500);}
    }
    }


    پورت های B4 B5 B6 میکرو مربوط به ستون های میکرو میباشد و خروجی هستند.
    پورت های B0 B1 B2 B3 میکرو مربوط به سطرهای میکرو میباشند و ورودی میباشند.

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

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    تازه وارد
    تاریخ عضویت
    Dec 2015
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    کسی نبود جواب مارو بده؟

  4. #3
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    سلام دوست عزیز
    شما خودتون مهندسین
    یه کمک بهت می کنم برو توی گوگل سرچ کن
    راه اندازی کی پد با میکرو
    کدهاشو نگاه کن بعد کد خودتو بنویس
    به همین راحتی
    شرکت Time Owner

  5. #4
    کاربر فعال mohammadne آواتار ها
    تاریخ عضویت
    Dec 2013
    نام
    محمد پورخلیلی
    نوشته ها
    276
    تشکر
    43
    تشکر شده 214 بار در 132 پست

    پیش فرض

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

موضوعات مشابه

  1. [سوال] مشکل مسیر یابی خودکار
    توسط onliner در انجمن آموزش نرم افزارهای برق و الکترونیک
    پاسخ: 5
    آخرين نوشته: 05-03-2015, 22:33
  2. دایره مشکی در ربات مسیر یاب
    توسط mona_rere در انجمن مفاهیم اولیه در رباتیک
    پاسخ: 15
    آخرين نوشته: 14-12-2013, 00:14
  3. مسیر یاب
    توسط saate777 در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 01-07-2013, 23:15
  4. شارژر کامل باطری های اسیدی
    توسط agape در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 12-10-2012, 16:34
  5. ربات مسیریاب
    توسط shayanmelody در انجمن مفاهیم اولیه در رباتیک
    پاسخ: 10
    آخرين نوشته: 04-08-2011, 22:19

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •