اطلاعیه

Collapse
No announcement yet.

سوال از ماتریس

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

    سوال از ماتریس

    سلام
    فرض کنید یه ماتریس 8 در 8 داریم میخوام اسمم رو کاراکتر به کاراکتر روش نشون بدم با تاخیر 1 ثانیه
    همه چیز آمادست فقط باید تاخیر ایجاد بشه
    کد کاراکتر های اسمم رو تولید کردم:
    کد:
    P={
    0x80 ,0x80 ,0xF0 ,0x88 ,0x88 ,0x88 ,0x88 ,0xF0 
    };
    A={
    0x84 ,0x84 ,0x78 ,0x48 ,0x48 ,0x10 ,0x30 ,0x30 
    };
    R={
    0x84 ,0x88 ,0x90 ,0xF0 ,0x88 ,0x88 ,0x88 ,0xF0 
    };
    V={
    0x10 ,0x38 ,0x28 ,0x2C ,0x6C ,0x44 ,0xC6 ,0xC6 
    };
    A={
    0x84 ,0x84 ,0x78 ,0x48 ,0x48 ,0x10 ,0x30 ,0x30 
    };
    N={
    0x84 ,0x8C ,0x84 ,0x94 ,0xA4 ,0xA4 ,0xC4 ,0x84 
    };
    E={
    0xF8 ,0x80 ,0x80 ,0x80 ,0xF8 ,0x80 ,0x80 ,0xF8 
    };
    فایل کدویژن و پروتئوس رو پلود کردم
    پیشاپیش سپاسگذارم
    http://www.4shared.com/file/zIZKX2cJ/matris.html

    طراحی و برنامه نویسی وب
    Parvanehvatandoost@yahoo.com
    http://www.facebook.com/profile.php?id=100002455154793

    #2
    پاسخ : سوال از ماتریس

    دوست عزیز من که فایل کدویژن ندیدم اما اگه می خواهید یک ثانیه تاخیر ایجاد کنید راه های مختلفی هست . یکیش این که از دستور زیر استفاده کنید :
    البته باید اول برنامه این را بنویسید :
    #include <delay.h>
    بعد هر جا از برنامه که خواستید یک ثانیه وقفه ایجاد کنید این کد را بنویسید :
    delay_ms(1000);
    موفق باشید :nice:
    practice make perfect

    دیدگاه


      #3
      پاسخ : سوال از ماتریس

      فایل کدویژن هست که
      این کد سورس هست اما نمیتونم او تغییراتی که گفتم اعمال کنم
      کد:
      #include <mega32.h>
      #include <delay.h>
      
      unsigned char k;
      unsigned char arr[8]={0x18, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x00};
      //unsigned char arr[8]={0x7E, 0x33, 0x33, 0x3E, 0x33, 0x33, 0x7E, 0x00};
      //unsigned char arr[8]={0x1E, 0x33, 0x60, 0x60, 0x60, 0x33, 0x1E, 0x00};
                           
      void main(void)
      {
      
      PORTA=0xFF;
      DDRA=0xFF;
      
      PORTB=0xFF;
      DDRB=0xFF;
      
      while (1)
          {
              for(k=0;k<=7;k++)
              {
                  PORTA=arr[k];
                  PORTB&=~(1<<k);
                  delay_us(100);
                  PORTB=0xFF;
              }
          } 
      }
      طراحی و برنامه نویسی وب
      Parvanehvatandoost@yahoo.com
      http://www.facebook.com/profile.php?id=100002455154793

      دیدگاه


        #4
        پاسخ : سوال از ماتریس

        با سلام بفرمایید :
        در این برنامه هر یک ثانیه یک بار ماتریس پدیت میشه و حرف بعدی رو نشون میده
        می تونید با کم و زیاد کردن عدد 5000 در دستور سرعت پدیت رو کم و زیاد کنید

        t++;
        if(t==5000)
        t=0,i++,TCCR0=0x00;
        if(i>6)
        i=0;

        \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\این هم برنامه\\\\\\\\\\\\\\\\\\\\
        /************************************************** ***
        This program was produced by the
        CodeWizardAVR V2.05.0 Professional
        Automatic Program Generator
        © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
        http://www.hpinfotech.com

        Project :
        Version :
        Date : 2011/06/06
        Author :
        Company :
        Comments:


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

        #include <mega32.h>
        #include <delay.h>
        int t;
        unsigned char k,i;
        unsigned char arr[7][8]={{ 0xF0 ,0x88,0x88,0x88 ,0x88 ,0xF0 ,0x80 ,0x80 },
        { 0x30,0x30,0x10,0x48,0x48,0x78,0x84,0x84 },
        { 0xF0,0x88,0x88,0x88,0xF0,0x90,0x88,0x84 },
        { 0xC6,0xC6,0x44,0x6C,0x2C,0x28,0x38,0x10 },
        { 0x30,0x30,0x10,0x48,0x48,0x78,0x84,0x84 },
        { 0x84,0xC4 ,0xA4,0xA4 ,0x94,0x84,0x8C,0x84 },
        { 0xF8,0x80,0x80,0xF8,0x80,0x80,0x80,0xF8 },};
        // Timer 0 overflow interrupt service routine
        interrupt [TIM0_OVF] void timer0_ovf_isr(void)
        {
        // Reinitialize Timer 0 value
        TCNT0=0x38;
        // Place your code here
        t++;
        if(t==5000)
        t=0,i++,TCCR0=0x00;
        if(i>6)
        i=0;
        }

        // Declare your global variables here

        void main(void)
        {
        // Declare your local variables here
        i=0;
        // Input/Output Ports initialization
        // Port A initialization
        // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
        // State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
        PORTA=0xFF;
        DDRA=0xFF;

        // Port B initialization
        // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
        // State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
        PORTB=0xFF;
        DDRB=0xFF;

        // 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: 1000.000 kHz
        // Mode: Normal top=0xFF
        // OC0 output: Disconnected
        TCCR0=0x00;
        TCNT0=0x38;
        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=0x01;

        // 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;

        // Global enable interrupts
        #asm("sei&quot

        while (1)
        {
        // Place your code here
        for(k=0;k<=7;k++)
        {
        PORTA=arr[i][k];
        PORTB&=~(1<<k);
        delay_us(100);
        PORTB=0xFF;
        } ;
        TCCR0=0x02;
        }
        }

        \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
        اگه تا حالا با کدویزارد کار نکردید از زیاد بودن کد ها نترسید من کلا 10 خط این برنامه رو نوشتم که در واقع همون کدهای خودتون هست!

        دیدگاه


          #5
          پاسخ : سوال از ماتریس

          متشکرم آقا مجتبی
          به این قسمت گیر میده PORTA=arr[k];
          کد:
          Error: C:\Users\Parvaneh\Desktop\mat ris\matris\matrix.c(139): a value of type 'unsigned char [8]' can't be assigned to an entity of type 'sfrb'
          مشکل چیه؟
          طراحی و برنامه نویسی وب
          Parvanehvatandoost@yahoo.com
          http://www.facebook.com/profile.php?id=100002455154793

          دیدگاه


            #6
            پاسخ : سوال از ماتریس

            ببخشید
            من واقعا نمیدونم چرا اونچیزی که من کپی می کنم پیست نمیشه
            این یه اشتباه لپی بود
            برنامه رو دوباره اصلاح کردم!
            اصلا کل فایلهای برنامه رو از لینک زیر دانلود کنید
            در ضمن اگه می تونید ورژن 2.05 کدویژن دانلود کنید و با اون کامپایل کنید البته اگه به مشکل برخوردید و نتونستید برنامه رو داخل
            کدویژن خودتون باز نویسی کنید.
            یک چیزه دیگه شما توی فایل پرتئوستون فیوزبیتهای میکرو رو تنظیم نکردید من فایل پرتئوس رو هم براتون گزاشتم اگه بلد نیشتید فیوزبیت رو داخل پرتئوس تنظیم کنید فعلا از همون استفاده کنید
            http://www.persiangig.com/pages/down...is-mojtaba.rar
            موفق باشید

            دیدگاه


              #7
              پاسخ : سوال از ماتریس

              نخیر
              مثل اینکه به هیج صراطی مستقیم نیست
              شما بجای همون خطی که گفتید و بنده بلودش کردم خط زیر رو بنویسید


              PORTA=arr[i][k];

              دیدگاه


                #8
                پاسخ : سوال از ماتریس

                نه بخوبی کار میکنه
                فقط همون اولی ایراد داشت
                ممنونم که وقت گذاشتین

                نوشته اصلی توسط mojtaba_led
                ببخشید
                من واقعا نمیدونم چرا اونچیزی که من کپی می کنم پیست نمیشه
                این یه اشتباه لپی بود
                برنامه رو دوباره اصلاح کردم!
                اصلا کل فایلهای برنامه رو از لینک زیر دانلود کنید
                در ضمن اگه می تونید ورژن 2.05 کدویژن دانلود کنید و با اون کامپایل کنید البته اگه به مشکل برخوردید و نتونستید برنامه رو داخل
                کدویژن خودتون باز نویسی کنید.
                یک چیزه دیگه شما توی فایل پرتئوستون فیوزبیتهای میکرو رو تنظیم نکردید من فایل پرتئوس رو هم براتون گزاشتم اگه بلد نیشتید فیوزبیت رو داخل پرتئوس تنظیم کنید فعلا از همون استفاده کنید
                http://www.persiangig.com/pages/down...is-mojtaba.rar
                موفق باشید
                طراحی و برنامه نویسی وب
                Parvanehvatandoost@yahoo.com
                http://www.facebook.com/profile.php?id=100002455154793

                دیدگاه


                  #9
                  پاسخ : سوال از ماتریس

                  کسی میتونه کدهای این برنامه رو توضیح بده؟

                  کد:
                  TCNT0-TCCR0-OCR0-ICR1H-ASSR-MCUCR-TIMSK-UCSRB-ACSR-SFIOR-ADCSRA-SPCR-TWCR-#asm("sei")
                  کد:
                  http://www.persiangig.com/pages/download/?dl=http://engrostami.persiangig.com/matris-mojtaba.rar

                  دیدگاه


                    #10
                    پاسخ : سوال از ماتریس

                    با سلام
                    ببینید این ها :TCNT0-TCCR0-OCR0-ICR1H-ASSR-MCUCR-TIMSK-UCSRB-ACSR-SFIOR-ADCSRA-SPCR-TWCR
                    رجیستر های میکرو هستند و بسته به نیازی که داریم از میکرو به اینها مقدار دهی میکنیم توی خود برنامه نوشته که برای تنظیم چی ازشون استفاده شده

                    و #asm("sei&quot این یکی یک دستور اسمبلی هست برای فعال کردن وقفه های سراسری

                    دیدگاه


                      #11
                      پاسخ : سوال از ماتریس

                      مرسی

                      دیدگاه

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