Thông báo

Collapse
No announcement yet.

!!! giúp em ( kỹ thuật PWM ) !!!

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

  • #31
    giờ thì chỉ là Project trên máy tính thôi anh à! không có điều kiện làm ...
    Thiết bị truyền dẫn RF , các ứng dụng PLC , ARM , VXL ...

    Comment


    • #32
      các bác ah! cho em hỏi em điều xung để đk 8 led dùng timer0 làm bộ đếm như vậy! em chạy ko thấy độ sáng giảm đáng kể j cả nói chung là chỉ thấy điẻm sang chạy vòng quanh nhưng ko thấy hiện tượng điều xung!
      #include "regx52.h"
      #include "bang_ma.h"

      #define LED3 P3
      unsigned char pwm_buffer[8][8];
      unsigned char pwm0,pwm1,pwm2,pwm3,pwm4,pwm5,pwm6,pwm7;
      unsigned char bien=0;
      //----------------ham delay------------
      void delayms(unsigned int time){
      while(--time){
      unsigned int time1=121;
      while(--time1);
      }
      }
      //--------ham ngat timer0--------------
      void isr_t0() interrupt 1 {
      unsigned char lap=1000;
      EA=0;
      TH0=0;
      LED3=255;
      while(lap--) {
      do {
      if(TH0==pwm0) P3_0=0;
      if(TH0==pwm1) P3_1=0;
      if(TH0==pwm2) P3_2=0;
      if(TH0==pwm3) P3_3=0;
      if(TH0==pwm4) P3_4=0;
      if(TH0==pwm5) P3_5=0;
      if(TH0==pwm6) P3_6=0;
      if(TH0==pwm7) P3_7=0; }
      while (TH0==255);
      }
      bien++;
      if(bien>=8) {bien=0;}
      EA=1;
      }
      //---------load hieu ung pwm -------------
      void load_data(){
      unsigned int i,j;
      for (i=0;i<8;i++){
      for (j=0;j<8;j++){
      pwm_buffer[i][j]= bang_ma[8*i+j];
      }
      }
      }
      void khoitao_timer0();
      //=======chuong trinh chinh================
      void main(void){
      khoitao_timer0();
      load_data();
      P1=0;
      while(1){
      unsigned char j;
      for(j=0;j<8;j++){
      switch (j) {
      case 0: pwm0=pwm_buffer[bien][j]; break;
      case 1: pwm1=pwm_buffer[bien][j]; break;
      case 2: pwm2=pwm_buffer[bien][j]; break;
      case 3: pwm3=pwm_buffer[bien][j]; break;
      case 4: pwm4=pwm_buffer[bien][j]; break;
      case 5: pwm5=pwm_buffer[bien][j]; break;
      case 6: pwm6=pwm_buffer[bien][j]; break;
      case 7: pwm7=pwm_buffer[bien][j]; break;
      }
      }
      }
      }
      //--------------khoi tao timer0----------------
      void khoitao_timer0(){
      TMOD=0x01; //timer0 mode 2 8bit auto reload
      TH0=0;
      TR0=1;
      EA=1;
      ET0=1;
      TF0=0;
      }
      đây là bảng mã PWM 8 led và 8 trạng thái!
      unsigned char code bang_ma[] =
      {
      10,75,200,255,0,0,0,0,
      0,10,75,200,255,0,0,0,
      0,0,10,75,200,255,0,0,
      0,0,0,10,75,200,255,0,
      0,0,0,0,10,75,200,255,
      255,0,0,0,0,10,75,200,
      200,255,0,0,0,0,10,75,
      75,200,255,0,0,0,0,10,
      };
      mong các bác xem và cho em ý kiến để sửa code này chạy cho chuẩn hơn ạ!
      Last edited by mr.ngoc; 08-09-2010, 11:37.

      Comment


      • #33
        các bác cho em ý kiến với! em đã thay đổi giá trị nạp vào timer rồi và trong hàm ngắt em cũng cho lặp lại 1000 lần rồi ma` cũng ko thấy thay đổi j????

        Comment


        • #34
          các bác ơi đâu rồi! em đang bí quá mong các bác mở đường giùm cho em?

          Comment


          • #35
            Bác nào biet chỉ dùm cái kìa các bác ơi.

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X