mấy anh kiểm tra cho e mạch vs code này vs

phamngocson

Thành Viên PIF
Em chào mấy a
Mạch e làm tạo hiệu ứng nhiều led dùng msp430g2553
Nhưng khi e nạp code vào thì led trên kit nhấp nháy liên tục.
còn bên mạch e làm thì 4 led nó sáng nhưng nhấp nháy nhanh ko theo hiệu ứng code
Mấy a kiểm tra giúp e xem code này đúng chưa ạ.Mấy chân CL,ST,DT,CK em kết nối vs các chân P2.0 P1.2 P1.1 P1.0
đây là file mạch nguyên lý của e. EM nghĩ chỉ có sài phần code
https://drive.google.com/open?id=1dwHJxa-UtbeLVinrt5LD6sel_SYBrOVU
còn đây mạch lúc e test
https://drive.google.com/open?id=1zVdg8LPoCqXtjZ-bRfefMRZRNMljSv5d
Mấy anh kt sớm giúp e vs
Code:
#include "msp430.h"
unsigned char i,j,k;
//---------Hieu ung 1-----------//
void quetled1()
{
  for(i=0;i<32;i++)
  {
    P1OUT = BIT1;
    __delay_cycles(50000);
    P1OUT = 0x07;
    __delay_cycles(50000);
  }
}
//---------Hieu ung 2-----------//
void quetled2()
{
    for( i=0;i<1;i++)
    {
      for(j=0;j<4;j++)
      {
        P1OUT = 0x02;
        __delay_cycles(50000);
        P1OUT = 0x07;
        __delay_cycles(50000);
      }
      for(k=0;k<32;k++)
      {
        P1OUT = 0x00;
        __delay_cycles(50000);
        P1OUT = 0x05;
        __delay_cycles(50000);
      }
    }
}
//---------Hieu ung 3 -----------//
void quetled3()
{
  for(i=0;i<10;i++)
  {
    P1OUT = BIT1;
    __delay_cycles(50000);
    P1OUT = 0x07;
    __delay_cycles(50000);

    for(j=0;j<8;j++)
    {
    P1OUT = 0x00;
    __delay_cycles(50000);
    P1OUT = 0x05;
    __delay_cycles(50000);
    }
}}
//---------Hieu ung 4 -----------//
void quetled4()
{
    for( i=0;i<8;i++)
    {
      for(j=0;j<4;j++)
      {
        P1OUT = 0x02;
        __delay_cycles(50000);
        P1OUT = 0x07;
        __delay_cycles(50000);
      }
      for(k=0;k<2;k++)
      {
        P1OUT = 0x00;
        __delay_cycles(50000);
        P1OUT = 0x05;
        __delay_cycles(50000);
}}}
//---------Hieu ung 5 -----------//
void quetled5 ()
{
      for(i=0;i<32;i++)
      {
      P1OUT=0x02;
      __delay_cycles(50000);
      P1OUT=0x07;
      __delay_cycles(50000);
      P1OUT=0x00;
      __delay_cycles(50000);
      P1OUT=0x05;
      __delay_cycles(50000);
      }
}

//---------Hieu ung 6 -----------//
void quetled6()
{
    for( i=0;i<15;i++)
    {
      for(j=0;j<3;j++)
      {
        P1OUT = 0x02;
        __delay_cycles(50000);
        P1OUT = 0x07;
        __delay_cycles(50000);
      }
       for( k=0;k<4;k++)
       {
        P1OUT = 0x00;
        __delay_cycles(50000);
        P1OUT = 0x05;
        __delay_cycles(50000);}
        }
}
//---------Hieu ung 7 -----------//
void quetled7()
{
  for(i=0;i<4;i++)
  {
   __delay_cycles(10000);
   for(j=0;j<32;j++)
   {
     P1OUT=0X02;
     __delay_cycles(10000);
     P1OUT=0x03;
   }
   __delay_cycles(5000);
   P1OUT=0x07;
   __delay_cycles(5000);
   for(k=0;k<32;k++)
   {
     P1OUT=0X00;
     __delay_cycles(5000);
     P1OUT=0x01;
   }
     __delay_cycles(5000);
     P1OUT=0x07;
}}

//--------- Ham main -----------//

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR = 0xff;
  P2DIR = 0xff;
while(1)
{
  P2OUT=0xff;
    quetled1();
    quetled2();
    quetled3();
    quetled4();
    quetled5();
    quetled6();
    quetled1();
    quetled7();
} }
 
Last edited:

Vũ Huy Hợp

Thành Viên PIF
Hi em, anh thấy trong phần cứng em có sài 74HC245 anh không biết em sài con ý ở đây mục đích gì nhưng anh thấy trong sơ đồ schme của em thứ tự chân con ý có vẻ không đúng. Theo anh thì em nên sài BJT hoặc IC đệm dòng để cho led sáng đều đẹp.

Còn phần code thì anh nhìn ko hiểu lắm em nên define mấy cái chân Data, Clock, Latch cho người đọc dễ hiểu nhé. Mà trong phần code phần dịch bit của 74HC595 em code chưa đúng lắm em có thể coi lại lý thuyết ở đây nha: http://www.payitforward.edu.vn/wordpress/tutorials/dien-tu-co-ban-cho-sv-nam-nhat/bai-4/
 

phamngocson

Thành Viên PIF

  • code này khi build bị lỗi a,a xem giúp e vs
    Code:
    #include "MSP430G2553.h"
    
    #define clk      BIT0
    #define data     BIT1
    #define latch1   BIT2
    #define clear    BIT3
    void clock(){
       P1OUT |= clk;
       P1OUT &= ~clk;
    }
    void latch(){
      P1OUT &= ~latch1;
      P1OUT |= latch1 ;
    }
    void het(){
      for (int i=0;i<24;i++){
        P1OUT &=~ data ;
          clock();
          latch();
        __delay_cycles(100000);
      }
    }
    void sang_tat_xen_ke(int n){ // dua vao 1010.....
      for (int i=0;i<n;i++){
        P1OUT |= data ;
          clock();
        P1OUT &=~ data ;
         clock();  }
        latch();
      __delay_cycles(500000);
       for (int i=0;i<n;i++){ // dua vao 0101....
        P1OUT &=~ data ;
          clock();
        P1OUT |= data ;
         clock();  }
        latch();
    __delay_cycles(500000);
    }
    void h(int solan){
      for (int i=0;i<solan;i++){
        sang_tat_xen_ke(24);
        }
    }
    void sang_het(int n){// sang het 24 led
      for (int i=0;i<n;i++){
        P1OUT |= data;
        clock();
       
        latch();}
      __delay_cycles(500000);
    }
    void tat_het(int n){// tat het 24 led
      for (int i=0;i<n;i++){
        P1OUT &=~ data;
        clock();
        latch();}
      __delay_cycles(500000);
    }
    void t(int solan){
      for (int i=0;i<solan;i++){
        sang_het(24);
        tat_het(24);
      }
    }
    void nua_tim(int n){
      for (int i=0;i<n;i++){
        P1OUT |= data;
        clock();}
        latch();
      __delay_cycles(500000);
      for (int i=0;i<n;i++){
        P1OUT &=~ data;
        clock();}
        latch();
      __delay_cycles(500000);
    }
    void k(int solan){
      for (int i=0;i<solan;i++){
        nua_tim (6);
      }
    }
    void mot_tu(int n){ // 6 led chay
      for (int i=0;i<n;i++){
        P1OUT |= data;
        clock();
        clock();}
        latch();
      __delay_cycles(500000);
      for (int i=0;i<n;i++){
        P1OUT &=~ data;
        clock();
        clock();}
        latch();
      __delay_cycles(500000);
    }
    void p(int solan){
      for (int i=0;i<solan;i++){
        nua_tim (12);
      }
    }
    void main( void )
    {
      // Stop watchdog timer to prevent time out reset
      WDTCTL = WDTPW + WDTHOLD;
      P1DIR= 0xff;
      while(1){
         P1OUT |= clear;
         t(2);
         h(3);
         het();
         k(2);
         het();
         p(3);
         het();
         
      }
    }
  • con 74hc245 là để đệm dòng đó a.
  • em cứ vẽ theo bên proteus nhưng sao mấy cái chân e cắm vào msp430g2553 ko đúng a.
  • con ic e sửa lại chân rồi a xem giúp e vs
  • https://drive.google.com/open?id=1h4DMOyfm5Fl5oke2vw9wErm7ThiJAji0
  • mà sao e up ảnh lên nó báo lỗi a nhỉ
  • e có thắc mắc khi mình vẽ mạch in thì ở lớp bot các chân nối đúng vs nhau nhưng khi cắm linh kiện thì nó bị ngược chân,làm sao để khác phục nó a
 
Last edited:

Vũ Huy Hợp

Thành Viên PIF
Em thử nạp code vào rồi chạy mô phỏng thử trên protues xem nó có chạy không? Mà em có học trên cs1 không? Bữa nào rảnh qua phòng 304B1 anh check mạch cho cũng được :))
 

phamngocson

Thành Viên PIF
A ơi,chiều thứ 6 a rảnh ko,e lên cs1 nhờ a giúp e vs,em đang cần gấp cho thứ 2.Mà làm sao để liên lạc dc với a nhỉ
 
Top