Thông báo

Collapse
No announcement yet.

help pwm cho 8051dùng dk led

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

  • help pwm cho 8051dùng dk led

    các pro cho em hỏi tí.Em muốn diều chế pwm cho 89c51 ma không biết code viết sao? anh nào cho e xin cái code điều chế pwm cho 8051 đi, e dùng để dk độ sáng của led.! thanks code C nha !

  • #2
    Bạn cần 1 timer để làm tốt đc điều này.
    Thuật toán như sau:
    Giả sử timer cứ 1ms thì ngắt xảy ra 1 lần, trong ngắt ta tăng biến i, có 1 biến t nào đó để tham chiếu so sánh với i.
    ta có 1 hàm Pwm nào đó có dính tới cái tham số t ở trên
    - Ta có hàm Pwm(unsigned char p)//Nhớ là p<100 thui nhé.
    {
    t=p;//Copy p
    }
    -Vậy trong ngắt nó là như thế này
    i++;
    if(i<t)
    {
    P1_0=1;//Bat P1_0
    }
    else if(i>=t && i<100)
    {
    P1_0=0;//Tat P1_0
    }
    else
    {
    i=0;
    }
    Tinh thần bất an viết thế ko bit đã chuẩn xác chưa. Các pro chỉ giáo.


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

    Comment


    • #3
      hix.Pro nào chỉ mình code làm thay đổi độ sáng của led đi.như mấy cái quảng cáo người ta hay làm đó .Các led chạy nối đuôi nhau nhưng độ sáng thay đổi ! thanks

      Comment


      • #4
        Thì Pwm như trên là thay đổi đc độ sáng rồi đấy.HIc hic.


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

        Comment


        • #5
          Pro koi giúp mình code này sao mà không chay thế : mình tham khảo trên mạng .Mà pwm mô phỏng có thấy rõ không bạn.

          //############################################
          #include<regx52.h>
          #include<stdio.h>
          #include<intrins.h>
          unsigned int i,j,k;
          //###### ham delay tao thoi gian tre 0.5s ######
          void delay(unsigned int ms)
          {
          unsigned int a;
          unsigned char b;
          for(a=0;a<ms;a++)
          {
          for(b=0;b<125;b++)
          {
          }
          }
          }

          void khoitaotimer0(void)// Ham khoi tao
          {
          EA=0;// Cam ngat toan cuc
          TMOD=0x02;// Timer 0 che do 2 8 bit auto reload
          TH0=0x9B;// Gia tri nap lai 155 doi ra so hex
          TL0=0x9B;// Gia tri khoi tao 155 doi ra so hex
          ET0=1;// Cho phep ngat timer 0
          EA=1;// Cho phep ngat toan cuc
          TR0=1;// Chay timer 0 bat dau dem so chu ki may
          }
          unsigned char dem=0;// Khai bao bien dem de dem tu 1 den 10
          unsigned char phantramxung;// Bien chua phan tram xung(0...10)
          void timer0(void) interrupt 1 //Ngat timer 0
          {
          TR0=0;// Dung chay timer 0
          TF0=0;// Xoa co, o che do co tu duoc xoa,che do khac can toi cu viet vao day
          if(dem<phantramxung)
          {
          P2_0=1;// Neu bien dem < phan tram xung thi dua gia tri 1 rachan, xung 5V
          }
          else P2_0=0;// Neu dem = phan tram xung
          TR0=1;// Cho chay timer
          }
          void main(void)
          {
          while(1)
          {
          phantramxung=9;
          delay(2000);
          phantramxung=4;
          delay(2000);
          }
          }

          Comment


          • #6
            Thực sự khi post code lên thì it ai đọc lắm_Mình cũng vậy_Chỉ cho cái thuật toán là ổn lắm rồi_Phần còn lại bạn phải tự xử chứ. Như mình đã nói ở phần trước đó, bạn hãy viết 1 hàm Pwm nào đó với tham số duty đi kèm, tần số pwm thì đã đc quyết định bởi timer của bạn rồi.


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

            Comment


            • #7
              thank ban nhe. minh hieu dc vấn đề rùi !

              Comment


              • #8
                PS: hoangdai .Pro ơi chi mình viết code cho 16 led đơn sáng dồn đi ( 2port vdk 89c51), Minh thất trên mạng toàn là asm.Minh thì mù tịt về asm.Thanks

                Comment


                • #9
                  những thứ đó có nhiều rồi sao cứ phải cày như vây nhỉ
                  sao ko dùng những thứ có sẵn ỳ
                  thích nghiên cứu à?

                  Comment


                  • #10
                    ý cua bạn là gì minh không hiểu ?
                    "những thứ đó có nhiều rồi sao cứ phải cày như vây nhỉ
                    sao ko dùng những thứ có sẵn ỳ
                    thích nghiên cứu à?"
                    có sắn là ở đâu và ntn ? mình đã nói là mình kiếm dc vài code asm nhưng đọc kg hiểiu vì không biết asm.?

                    Comment


                    • #11
                      Nguyên văn bởi loiquang89 Xem bài viết
                      Pro koi giúp mình code này sao mà không chay thế : mình tham khảo trên mạng .Mà pwm mô phỏng có thấy rõ không bạn.

                      //############################################
                      #include
                      #include
                      #include
                      unsigned int i,j,k;
                      //###### ham delay tao thoi gian tre 0.5s ######
                      void delay(unsigned int ms)
                      {
                      unsigned int a;
                      unsigned char b;
                      for(a=0;a
                      {
                      for(b=0;b<125;b++)
                      {
                      }
                      }
                      }

                      void khoitaotimer0(void)// Ham khoi tao
                      {
                      EA=0;// Cam ngat toan cuc
                      TMOD=0x02;// Timer 0 che do 2 8 bit auto reload
                      TH0=0x9B;// Gia tri nap lai 155 doi ra so hex
                      TL0=0x9B;// Gia tri khoi tao 155 doi ra so hex
                      ET0=1;// Cho phep ngat timer 0
                      EA=1;// Cho phep ngat toan cuc
                      TR0=1;// Chay timer 0 bat dau dem so chu ki may
                      }
                      unsigned char dem=0;// Khai bao bien dem de dem tu 1 den 10
                      unsigned char phantramxung;// Bien chua phan tram xung(0...10)
                      void timer0(void) interrupt 1 //Ngat timer 0
                      {
                      TR0=0;// Dung chay timer 0
                      TF0=0;// Xoa co, o che do co tu duoc xoa,che do khac can toi cu viet vao day
                      if(dem
                      {
                      P2_0=1;// Neu bien dem < phan tram xung thi dua gia tri 1 rachan, xung 5V
                      }
                      else P2_0=0;// Neu dem = phan tram xung
                      TR0=1;// Cho chay timer
                      }
                      void main(void)
                      {
                      while(1)
                      {
                      phantramxung=9;
                      delay(2000);
                      phantramxung=4;
                      delay(2000);
                      }
                      }
                      mình vẫn không hiểu lắm về code này...mô phỏng thì thấy thế này...

                      Click image for larger version

Name:	cocconden_27.JPG
Views:	1
Size:	70.6 KB
ID:	1346594

                      Comment


                      • #12
                        với những bạn không biết nhiều về VDK thì nên dùng phần mềm hỗ trợ.chứ nói thế hay nói nữa cũng không hiểu đâu.
                        học VDK đâu phải một xớm một triều là được
                        Sửa chữa, cung cấp máy cắt dây, máy xung, máy phay CNC....
                        website: suntech-vn.com
                        phone. 0974 354 077
                        Email.

                        Comment


                        • #13
                          Nguyên văn bởi v.sondt Xem bài viết
                          với những bạn không biết nhiều về VDK thì nên dùng phần mềm hỗ trợ.chứ nói thế hay nói nữa cũng không hiểu đâu.
                          học VDK đâu phải một xớm một triều là được
                          học VDK tất nhiên là ko thể hiểu ngay được mà phải có thời gian rồi SẼ HIỄU còn nếu mà lệ thuộc vào phần mềm thì đến chết cũng chả hiểu...

                          Comment


                          • #14
                            mình viết thử vài đoạn code nhưng khi mô phỏng thì thấy nó chop tắt , không nhìn dcc led sáng yếu ? Là do mình sai hay sao ?Pro ban cho mình xin cái code hiệu ứng sao băng dùng 8051 với thanks

                            Comment


                            • #15
                              các bác ơi!em mới học cũng chưa biết phaie bắt đầu tư đâu mong các bác mách jup là muốn học tốt vxl thì bắt đầu ntn a! cảm ơn nhiều!

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X