اطلاعیه

Collapse
No announcement yet.

مشکل با 7seg

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

    مشکل با 7seg

    با سلام
    یک برنامه دارم که برای برای راه اندازی 7seg هست که اعداد 0 تا 9 را می شمارد!! میخوام زمانیکه به عدد 9 رسید : عدد 9 ثابت بماند و بعداش یک led روشن شود!!!! مثلا portc.0=1 بشه!! لطفا بگید به چه صورت باید کد تغییر پیدا کنه!؟؟

    کد:
    #include <mega16.h>
    #include <delay.h>
    
    // Declare your global variables here
    unsigned char seg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    int i;
    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=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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTC=0x00;
    DDRC=0xFF;
    
    // 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=0xFF
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // 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=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: Timer2 Stopped
    // Mode: Normal top=0xFF
    // 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;
    
    // USART initialization
    // USART disabled
    UCSRB=0x00;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // ADC initialization
    // ADC disabled
    ADCSRA=0x00;
    
    // SPI initialization
    // SPI disabled
    SPCR=0x00;
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    while (1)
       {
        for(i=0;i<10;i++)
        {
          PORTC=seg[i];
          delay_ms(500);
        }
        
    
       }
    }

    سپاس

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

    نوشته اصلی توسط ircaspianhero
    با سلام
    یک برنامه دارم که برای برای راه اندازی 7seg هست که اعداد 0 تا 9 را می شمارد!! میخوام زمانیکه به عدد 9 رسید : عدد 9 ثابت بماند و بعداش یک led روشن شود!!!! مثلا portc.0=1 بشه!! لطفا بگید به چه صورت باید کد تغییر پیدا کنه!؟؟

    کد:
    #include <mega16.h>
    #include <delay.h>
    
    // Declare your global variables here
    unsigned char seg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    int i;
    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=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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTC=0x00;
    DDRC=0xFF;
    
    // 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=0xFF
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // 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=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: Timer2 Stopped
    // Mode: Normal top=0xFF
    // 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;
    
    // USART initialization
    // USART disabled
    UCSRB=0x00;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // ADC initialization
    // ADC disabled
    ADCSRA=0x00;
    
    // SPI initialization
    // SPI disabled
    SPCR=0x00;
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    while (1)
       {
        for(i=0;i<10;i++)
        {
          PORTC=seg[i];
          delay_ms(500);
        }
        
    
       }
    }

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

    دیدگاه


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

      Jtag رو غیر فعال کردی؟؟
      سلام جیگر: jtag !!! چی هست!! نمیدانم! برای فیوز بیت هست؟؟ راست اش من طبق یک اموزش دارم جلو میرم!!! زیاد توی جزییات وارد نشدم!!! میخوام توی پرتئوس شبیه سازی کنم!

      سپاس

      دیدگاه


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

        نوشته اصلی توسط ircaspianhero
        سلام جیگر: jtag !!! چی هست!! نمیدانم! برای فیوز بیت هست؟؟ راست اش من طبق یک اموزش دارم جلو میرم!!! زیاد توی جزییات وارد نشدم!!! میخوام توی پرتئوس شبیه سازی کنم!

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

        دیدگاه


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

          ممنون دوست عزیز:

          فیوز بیت JTAGEN را برابر 1 قرار بده که JTAG غیر فعال بشه
          این عمل باعث چی میشه؟؟؟ شمارنده یا 7seg سر شماره 9 می ایستد؟؟؟
          برای روشن کردن led چه دستور باید نوشته شود؟؟
          ================================================== ===========
          تنظمات اش از کجا هست؟؟؟


          سپاس

          دیدگاه


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

            نوشته اصلی توسط ircaspianhero
            ممنون دوست عزیز:
            این عمل باعث چی میشه؟؟؟ شمارنده یا 7seg سر شماره 9 می ایستد؟؟؟
            برای روشن کردن led چه دستور باید نوشته شود؟؟
            ================================================== ===========
            تنظمات اش از کجا هست؟؟؟


            سپاس
            1000 تا سوال رو با هم مخلوطش میکنی ... :cry2:
            برای LED روشن کردن باید ابتدا پایه مربوط رو خروجی کنید و به آن مقدار بدهید ...
            یک کردن فیوزبیت JTAGEN باعث غیر فعال شدن Jtagمیشه ...
            این عمل باعث میشه تا JTAG غیر فعال بشه چون به صورت پیشفرض کارخانه ای فیوز بیت JTAGEN صفر هست و قسمتی از پورت سی غیر فعال است ...
            با اون پروگرامری که داری کار میکنی باید فیوزبیتش رو تنظیم کنی ...
            بعد فیوز بیت رو پروگرام کنی ...
            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
            معرفی نرم افزار Codewizard PWM
            با من بیشتر آشنا شوید

            دیدگاه


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

              دوست عزیز: من کجا هزار تا سوال را مخلوط کردم :surprised:
              الان مشکل روشن شدن led سر 9 ثانیه را حل کردم! فقط الان مانده چطور جلوی تکرار اعداد را بگیرم!! یعنی روی عدد 9 رسید سر جای اش ثابت بمونه و هنگ کنه!!! :angry:
              این برای شما که استاد هستید در این زمینه: باید مثل اب خوردن باشه!!! :mrgreen:
              من نمیدانم شما چرا رفتید سراغ فیوز بیت و پراگرمر و... یک بار سئوال من با دقت بخوانید متوجه می شید!! من توی پرتئوس فعلا کار می کنم
              سپاس

              دیدگاه


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

                نوشته اصلی توسط ircaspianhero
                دوست عزیز: من کجا هزار تا سوال را مخلوط کردم :surprised:
                الان مشکل روشن شدن led سر 9 ثانیه را حل کردم! فقط الان مانده چطور جلوی تکرار اعداد را بگیرم!! یعنی روی عدد 9 رسید سر جای اش ثابت بمونه و هنگ کنه!!! :angry:
                این برای شما که استاد هستید در این زمینه: باید مثل اب خوردن باشه!!! :mrgreen:
                من نمیدانم شما چرا رفتید سراغ فیوز بیت و پراگرمر و... یک بار سئوال من با دقت بخوانید متوجه می شید!! من توی پرتئوس فعلا کار می کنم
                سپاس
                خب اگه میخوای گیر کنه اون While(1) رو بردار دیگه.یک بار تا 9 میشمره و LED روشن میشه تموم میشه میره.

                دیدگاه


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

                  مرسی دوست عزیز: به این راهنمایی: خلاصه و مفید !!!
                  سپاس

                  دیدگاه


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

                    سلام
                    به نظر بنده کافیه در ادامه برنامه ات دستور روشن کردن LED رو بنویسی و کل برنامه ات رو توی تابع اصلی و قبل از while بزاری.
                    یا اینکه شرط while رو عوض کنی که برنامه فقط یه بار اجرا بشه. :nice:
                    (=*_^=)

                    دیدگاه

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