Thông báo

Collapse
No announcement yet.

lLed matrix và AVR

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • lLed matrix và AVR

    Các bạn xem giúp mình sao cái phần dịch led của mình chỉ dịch trái được chữ đầu tiên còn mấy chữ sau thì nó ko dịch được.thank
    Code:
    #include <mega16.h>
    #include <spi.h>
    #include<delay.h>
    #define LATCH PORTB.3
    
    unsigned char   machu[8][4]={
                            {0  ,0,  0,0}, 
                            {113,199,62,249},
                            {138,40,160,33},
    			{10 ,40,160,33},
    			{18 ,40,188,33},
    			{34 ,40,139,33},
    			{66 ,40,139,33},
    			{4 ,199,60,33}                       
                            };
    
    unsigned char r=0;
    void latch_data(void )
    {
    LATCH=1;
    LATCH=0;
    }
    
    unsigned char bit7(unsigned char byte)
    {
            unsigned char byte1;
            byte1=byte;
            byte1&=0x80;
            
            return byte1;
    }
    void chay_trai()
    {
        unsigned char i,j,temp;
        
        for(i=0;i<8;i++)
        {
            temp = machu[i][0];
            for(j=0;j<3;j++)
    		{ 
    		machu[i][j]<<= 1;
    		machu[i][j]|= bit7(machu[i][j+1]); 
            }
            machu[i][3] <<= 1;
            machu[i][3]|= bit7(temp) ;
        }
    }
    
    void main(void)
    {
    unsigned char i;
    
    PORTA=0x00;
    DDRA=0x00;
    PORTB=0x00;
    DDRB=0xFF;
    PORTC=0x00;
    DDRC=0xff;
    PORTD=0x00;
    DDRD=0xFF;
    
    
    TCCR1A=0x00;
    TCCR1B=0x02;
    TCNT1H=0xFF;
    TCNT1L=0x82;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    
    
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x04;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // SPI initialization
    // SPI Type: Master
    // SPI Clock Rate: 4000.000 kHz
    // SPI Clock Phase: Cycle Start
    // SPI Clock Polarity: High
    // SPI Data Order: MSB First
    SPCR=0x5C;
    SPSR=0x00;
    
    // Global enable interrupts
    //#asm("sei")
    
    while (1)
          { 
          chay_trai();     
         for(i=1;i<=200;i++)
         {
                      for(r=0;r<8;r++)
                      {
                     spi(machu[r][0]);
                      latch_data();
                     PORTC=r+8; 
                     delay_ms(1); 
                    } 
          }
          }
    }

  • #2
    Nguyên văn bởi fet01 Xem bài viết
    Các bạn xem giúp mình sao cái phần dịch led của mình chỉ dịch trái được chữ đầu tiên còn mấy chữ sau thì nó ko dịch được.thank
    Code:
    #include <mega16.h>
    #include <spi.h>
    #include<delay.h>
    #define LATCH PORTB.3
    
    unsigned char   machu[8][4]={
                            {0  ,0,  0,0}, 
                            {113,199,62,249},
                            {138,40,160,33},
    			{10 ,40,160,33},
    			{18 ,40,188,33},
    			{34 ,40,139,33},
    			{66 ,40,139,33},
    			{4 ,199,60,33}                       
                            };
    
    unsigned char r=0;
    void latch_data(void )
    {
    LATCH=1;
    LATCH=0;
    }
    
    unsigned char bit7(unsigned char byte)
    {
            unsigned char byte1;
            byte1=byte;
            byte1&=0x80;
            
            return byte1;
    }
    void chay_trai()
    {
        unsigned char i,j,temp;
        
        for(i=0;i<8;i++)
        {
            temp = machu[i][0];
            for(j=0;j<3;j++)
    		{ 
    		machu[i][j]<<= 1;
    		machu[i][j]|= bit7(machu[i][j+1]); 
            }
            machu[i][3] <<= 1;
            machu[i][3]|= bit7(temp) ;
        }
    }
    
    void main(void)
    {
    unsigned char i;
    
    PORTA=0x00;
    DDRA=0x00;
    PORTB=0x00;
    DDRB=0xFF;
    PORTC=0x00;
    DDRC=0xff;
    PORTD=0x00;
    DDRD=0xFF;
    
    
    TCCR1A=0x00;
    TCCR1B=0x02;
    TCNT1H=0xFF;
    TCNT1L=0x82;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    
    
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x04;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // SPI initialization
    // SPI Type: Master
    // SPI Clock Rate: 4000.000 kHz
    // SPI Clock Phase: Cycle Start
    // SPI Clock Polarity: High
    // SPI Data Order: MSB First
    SPCR=0x5C;
    SPSR=0x00;
    
    // Global enable interrupts
    //#asm("sei")
    
    while (1)
          { 
          chay_trai();     
         for(i=1;i<=200;i++)
         {
                      for(r=0;r<8;r++)
                      {
                     spi(machu[r][0]);
                      latch_data();
                     PORTC=r+8; 
                     delay_ms(1); 
                    } 
          }
          }
    }
    cậu phải post sơ đồ của cậu lên thì mọi người con biết đường mà sữa chứ cậu!

    Comment

    Về tác giả

    Collapse

    fet01 Tìm hiểu thêm về fet01

    Bài viết mới nhất

    Collapse

    Đang tải...
    X