Thông báo

Collapse
No announcement yet.

Điều khiển LED RGB với ATmega8

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

  • Điều khiển LED RGB với ATmega8

    chào các bạn mình là thành viên mói có gì mong các bạn chỉ dẫn
    mình đang định điều khiển LED RGB qua 74hc595 rồi qua trở -> LED RGB
    sử dụng chức năng PWM nhưng mình chưa biết gì về chức năng này có ai làm hoặc mô phỏng cái này rồi thì up lên tham khỏa
    đây là code và schematic mả mình mô phỏng trên protues
    Attached Files

  • #2
    dùng 595 thì ko dùng được pwm nhé bạn
    Nguyễn Huy Biên - 01649 802 694
    gmail :

    Comment


    • #3
      bạn ơi mình không hiểu sao 595 thì không xuất đc nhưng k hiểu sao mình lại thấy trên youtube có người làm đc???

      Nguồn: ShiftPWM: the easiest software PWM library for Arduino | ElcoJacobs.com

      Comment


      • #4
        Vẫn đẩy xung PWM qua chân 595 đc bạn nhé!

        Comment


        • #5
          Nguyên văn bởi cogaihalan Xem bài viết
          bạn ơi mình không hiểu sao 595 thì không xuất đc nhưng k hiểu sao mình lại thấy trên youtube có người làm đc???

          Nguồn: ShiftPWM: the easiest software PWM library for Arduino | ElcoJacobs.com
          mình chưa thử xuất PWM qua 595 nhưng bạn thử cho xung PWM vào chân SHCP xem. dùng cách này chắc là điều khiển được.
          Never forget who you are!

          Comment


          • #6
            mình dang tìm hiểu về nó nè nhưng
            nếu có đàn anh đi trước nào làm cái này rồi thì góp ý cho em với
            Last edited by cogaihalan; 06-09-2012, 00:33.

            Comment


            • #7
              hiện giờ mình đang rất bí hiện có ai đã xuất PWM ra 595 rồi chỉ mình với help me!!!

              Comment


              • #8
                Bạn đẩy dữ liệu liên tục qua 595 là thành PWM mà, còn xung PWM ở các chân 595 như thế nào phụ thuộc dữ liệu bạn đẩy ra...
                |

                Comment


                • #9
                  bạn có thể nói rõ hơn đc không ý mình k phải là xuất ra 595 mà xuất như thế nào? bạn có thể cho mình 1 đoạn code nhỏ cho nó ra từng màu ế

                  Comment


                  • #10
                    bạn có thể nói rõ hơn đc không ý mình k phải là xuất ra 595 mà xuất như thế nào? bạn có thể cho mình 1 đoạn code nhỏ cho nó ra từng màu ấy nếu bạn đã làm r thì chia sẽ anh em tý đi

                    Comment


                    • #11
                      cần code mà làm gì. HIểu vấn đề là đc. Pwm chẳng qua là tỉ số mở trên 1 giá trị thời gian nào đó. Ví dụ bạn muốn chân Q0 của 595 có duty 50% thì chỉ việc đẩy 1 cách tuần tự 0 và 1 ra chân đó( tạm coi f=const). Giờ muốn duty là 30 % thì hãy để giá trị 1 ở chân Q0 đó ít hơn thời gian có giá trị 0. Còn làm sao để có 0 và 1 ở Q0 chắc ko cần bàn thêm vì bạn đã biết nó rồi.


                      Add: 97 Quán Nam - Lê Chân - Hải Phòng.
                      Tel: 031 518648 Phone: 0904 283 505

                      Comment


                      • #12
                        tập là PWM qua 1 chân vđk đi..rồi 595 sau..

                        Comment


                        • #13
                          hi muốn đưa dữ liệu ra 595 bạn phải tìm hiểu 595 lam viec thế nào đã chứ hihi

                          Comment


                          • #14
                            chào anh tân mấy hôm nay em bận quá bây giờ mới ra tiệm net đc anh hướng dẫn cho em nha em PWM qua 2 chân OCR1
                            code em có trong file em gửi có gì anh giúp em nha!!!
                            #include <mega8.h>
                            #include <delay.h>


                            #define clk PORTC.0 /*PORTC.5*/
                            #define data_in PORTC.1 /*PORTC.7*/
                            #define latch PORTC.2 /*PORTC.6*/
                            #define un unsigned
                            flash un char mang1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


                            // Timer 1 overflow interrupt service routine
                            /*interrupt [TIM1_OVF] void timer1_ovf_isr(void)
                            {


                            }

                            // Timer 1 output compare A interrupt service routine
                            interrupt [TIM1_COMPA] void timer1_compa_isr(void)
                            {
                            PORTD.1=~PORTD.1;

                            }

                            // Timer 1 output compare B interrupt service routine
                            interrupt [TIM1_COMPB] void timer1_compb_isr(void)
                            {
                            PORTD.2=~PORTD.2;

                            }
                            */
                            void led()
                            {
                            un char i=0;
                            for(i=0;i<255;++i)
                            {
                            if(i>=150) {PORTD.0=~PORTD.0;delay_ms(100);} //r
                            if(i>=200) {PORTD.1=~PORTD.1;delay_ms(100);} //g
                            if(i>=100) {PORTD.2=~PORTD.2;delay_ms(100);} //b
                            }
                            delay_ms(100);
                            }

                            void SIPO(un char byte_0,un char byte_1,un char byte_2,un char byte_3,un char byte_4,un char byte_5)
                            {
                            un char i,k;
                            k=byte_5;for(i=0;i<8;i++){data_in=k&0x80;clk=0;clk =1;k<<=1;}
                            k=byte_4;for(i=0;i<8;i++){data_in=k&0x80;clk=0;clk =1;k<<=1;}
                            k=byte_3;for(i=0;i<8;i++){data_in=k&0x80;clk=0;clk =1;k<<=1;}
                            k=byte_2;for(i=0;i<8;i++){data_in=k&0x80;clk=0;clk =1;k<<=1;}
                            k=byte_1;for(i=0;i<8;i++){data_in=k&0x80;clk=0;clk =1;k<<=1;}
                            k=byte_0;for(i=0;i<8;i++){data_in=k&0x80;clk=0;clk =1;k<<=1;}
                            latch = 0;latch = 1;
                            }
                            dich_led()
                            {
                            un char i=0;
                            for(i=0;i<8;i++)
                            {
                            SIPO(mang1[i],0,0,0,0,0);
                            delay_ms(100);
                            }
                            for(i=0;i<8;i++)
                            {
                            SIPO(0,mang1[i],0,0,0,0);
                            delay_ms(100);
                            }
                            for(i=0;i<8;i++)
                            {
                            SIPO(0,0,mang1[i],0,0,0);
                            delay_ms(100);
                            }
                            for(i=0;i<8;i++)
                            {
                            SIPO(0,0,0,mang1[i],0,0);
                            delay_ms(100);
                            }
                            for(i=0;i<8;i++)
                            {
                            SIPO(0,0,0,0,mang1[i],0);
                            delay_ms(100);
                            }
                            for(i=0;i<8;i++)
                            {
                            SIPO(0,0,0,0,0,mang1[i]);
                            delay_ms(100);
                            }
                            }
                            void main(void)
                            {

                            // Timer/Counter 1 initialization
                            // Clock source: System Clock
                            // Clock value: 15.625 kHz
                            // Mode: Ph. correct PWM top=00FFh
                            // OC1A output: Inverted
                            // OC1B output: Inverted
                            // Noise Canceler: Off
                            // Input Capture on Falling Edge
                            // Timer 1 Overflow Interrupt: On
                            // Input Capture Interrupt: Off
                            // Compare A Match Interrupt: On
                            // Compare B Match Interrupt: On
                            TCCR1A=0xF1;
                            TCCR1B=0x04;
                            TCNT1H=0x00;
                            TCNT1L=0x00;
                            ICR1=0x00;
                            OCR1AH=0x00;
                            OCR1AL=0x00;
                            OCR1BH=0x00;
                            OCR1BL=0x00;

                            PORTB=0x00;
                            DDRB=0x06;

                            PORTC=0xff;
                            DDRC=0xff;

                            PORTD=0xff;
                            DDRD=0xff;
                            // Timer(s)/Counter(s) Interrupt(s) initialization
                            //TIMSK=0x1C;
                            // Analog Comparator initialization
                            // Analog Comparator: Off
                            // Analog Comparator Input Capture by Timer/Counter 1: Off
                            ACSR=0x80;
                            SFIOR=0x00;
                            #asm("sei")
                            while (1)
                            {
                            OCR1AL++;
                            if(OCR1AL==100)PORTD.0=~PORTD.0;
                            delay_us(700);
                            if(OCR1AL==150)PORTD.1=~PORTD.1;
                            delay_us(700);
                            if(OCR1AL==200)PORTD.2=~PORTD.2;
                            delay_us(700);
                            if(OCR1AL==250)PORTD.3=~PORTD.3;
                            delay_us(700);

                            OCR1BL--;
                            if(OCR1BL==100)PORTD.4=~PORTD.4;
                            delay_us(700);
                            if(OCR1BL==150)PORTD.5=~PORTD.5;
                            delay_us(700);
                            if(OCR1BL==200)PORTD.6=~PORTD.6;
                            delay_us(700);
                            if(OCR1BL==250)PORTD.7=~PORTD.7;
                            };
                            }
                            Attached Files

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X