Thông báo

Collapse
No announcement yet.

Cần giúp đỡ mạch led ma trận 8*32 lỗi không chạy

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

  • Cần giúp đỡ mạch led ma trận 8*32 lỗi không chạy

    Chào mọi người,
    Em là lính mới, thi xong vừa chuẩn bị vào học, em mới tìm hiểu về điện tử và vxl 89s52 để làm mạch led ma trận 8*32 nhưng em gặp phải một số vấn đề sau:
    Cảng P3 của ic 89s52 em dùng để quét hàng (8 hàng) và xuất mức 0, em dùng 4 ic mở rộng 74hc595 để quét cột (32 cột) xuất mức 1;
    Tại cảng P3 em lắp 8 tran c1815 do sợ thiếu công suất cho bảng led.
    Tuy nhiên nạp code ok, nhưng lại không chạy
    Cảng P3 đáng ra phải xuất mức 0 nhưng em đo thử bằng VOM thì nó lại xuất mức 1, và cứ cố định khoảng 4.5V dù đã thử code tắt luân phiên bóng led trên cảng này mỗi 1s.
    Em cho vào đế nạp test thử, thì các chân của cảng P3 xuất đúng mức 0, và có một bóng led lần lượt tắt từ p3_0 -> p3_7;

    Em nghĩ vấn đề do mạch led của em. Em đã thử thay tụ khác, thay thạch anh khác, tháo bỏ tran, nhưng vẫn không được.
    Đây là sơ đồ nguyên lí trên proteus của em ạ

    Bảng led em hàn 4 bảng nối các hàng với nhau theo đúng sơ đồ này.


    Mạch thật của em trông như thế này ạ.



    Code em dùng code này ạ:


    Code:
    #include<reg52.h> //Thu vien
    //khai bao chan cho 74hc595
    sbit SH74 = P2^0;      //SCK
    sbit ST74 = P2^1;       //STR
    sbit DS74 = P2^2;            //SDA
    
    // delay
    void delay(int t)
    {    int i,j;
        for (i=0;i<t;i++)
            {
                 for (j=0;j<200;j++)
               
            }
    }
    //Khai bao ki tu
    code char row[]= {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}, //quet lan luot 8 hang
                   col[]={
    0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
    0x83,0x7D,0x7D,0x7D,0xFF,0x01,0xFB,0xF7,0xEF,0x01,0xFF,0xFD,0xFD,0x01,0xFD,0xFD,0xFF,0xFD,0xFD,0x01,0xFD,0xFD,0xFF,0xFF,  //CNTT 
     0xEF,0x01,0x6D,0x7D,0x83,0xFF,0x01,0xE7,0xDB,0xBD,0x7F,0xFF,0xFF,0x81,0x7E,0x7E,0x81,0xFF,0xE7,0xEB,0xED,0x00,0xEF
    ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff  };
    
    void switch74(unsigned char x)
    {
        unsigned char temp,i;
        for (i=1;i<=8;i++){
            temp=x&0x80;
            if (temp==0x80)
            DS74=1;
            else DS74=0;
            x=x*2;
            SH74= 0;
            SH74=1;     
        }
    }
    
    void chuchay(char l)
    
    
    {     
        int i,j,k;
             while (l--){
    
              for (i=0;i<85;i++)     //107 cot de in ra
              {
                for (k=1;k<3;k++) //delay de in hang`
                    for (j=0;j<8;j++)    
                    {
                          
                             
                              
                          switch74(col[i+j+24]);         //bang led 4
                           switch74(col[i+j+16]);        //bang led 3
                            switch74(col[i+j+8]);        //bang led 2
                            switch74(col[i+j]);            //bang led 1
    
                          ST74=0;
                          ST74=1;
                          P3=row[j];   //hien thi hang`
                          delay(3);
                          P3=0x00; //tat led
                                                     
    
    
    
                    }
              }
              }
             
    
    
    }
    
    void main()
        {
         
             while (1)
                 {
        
                chuchay(1);
        //    test(2);
                }
    
        }

    Mong mọi người giúp đỡ, em xin cảm ơn ạ.

  • #2
    Cổng P3 nối C1815 thì nếu em muốn ngõ ra C1815 là 0 thì vi xử lý em xuất 1 nhé
    SỰ HỌC LÀ MÃI MÃI......!!!!

    Comment


    • #3
      Nguyên văn bởi tallht Xem bài viết
      Cổng P3 nối C1815 thì nếu em muốn ngõ ra C1815 là 0 thì vi xử lý em xuất 1 nhé
      Em nghĩ do mạch em bị sai chứ em đã thử nhổ hết C1815 thì p3 vẫn là mức 1 thay vì mức 0 như code, và em cho code đếm từ 1-8 cho p3 sáng luân phiên nhưng thử không được

      Comment


      • #4
        mỗi pin ở port P3 có khả năng kéo nổi 8 LED không em?
        SỰ HỌC LÀ MÃI MÃI......!!!!

        Comment


        • #5
          Nguyên văn bởi tallht Xem bài viết
          mỗi pin ở port P3 có khả năng kéo nổi 8 LED không em?
          Em nghĩ là được, anh có chỗ nào thêm bớt giúp em không ạ?

          Comment


          • #6
            nếu em thấy hết transistor ra rồi thì em phải xuất ngõ ra là P3 là 0 và 74hc595 là 1 thì LED mới sáng chứ (nhưng mỗi lần chỉ sáng 1 LED thôi nhé)
            SỰ HỌC LÀ MÃI MÃI......!!!!

            Comment


            • #7
              Nguyên văn bởi tallht Xem bài viết
              nếu em thấy hết transistor ra rồi thì em phải xuất ngõ ra là P3 là 0 và 74hc595 là 1 thì LED mới sáng chứ (nhưng mỗi lần chỉ sáng 1 LED thôi nhé)

              Em làm như thế này,
              em tháo tran ra. Đo bằng VOM, thì thì thấy P3 vẫn xuất mức 1, có vẻ như IC không làm việc (tức là dây đỏ của vom chọt vào P3 thì lên 4.5 V)
              Nhưng em lắp IC vào đế nạp rồi đo các chân thì thấy đúng như code, tức là P3 đúng là mức 0 và nó cũng tắt mở đúng theo nhịp mà em chạy code test
              Vậy em nghĩ là do mạch của em có vấn đề, mà em không biết nó sai ở đâu nữa.
              Em hàn xong 4 bảng led muốn rã tay luôn xong lại làm đi làm lại cái mạch mà mãi cũng không xong
              Em định làm lại phần IC 89s52 riêng ra 1 bảng, các ic mở rộng ra một bảng khác để thử lần lượt.
              Anh xem giúp em sơ đô mạch và code như vậy, mô phỏng ok nhưng khi chạy có vấn đề gì không ạ?

              Comment


              • #8
                Đây là mạch in em đính kèm bên dưới, em đã cho hiện tên các linh kiện lên ạ.
                Attached Files

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X