Thông báo

Collapse
No announcement yet.

Ai sửa giùm cái quét led 7 đoạn này cái!!!!

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

  • Ai sửa giùm cái quét led 7 đoạn này cái!!!!

    Em lập trình cái quét led 4 led 7 đoạn nhưng mà nó hiển thị không đúng!!! Ai cho biết nguyên nhân và cách khắc phục được không!! File proteus và code ở link đính kèm phía dưới.

    --->>>> mach test hien thi diem.rar

    HÌNH:
    Click image for larger version

Name:	12345.png
Views:	1
Size:	40.7 KB
ID:	1415147
    Em để là 1234, nhưng nó hiển thị sai 1432, không biết sai chổ nào, giúp em với!!!

  • #2
    Nguyên văn bởi cimtaded Xem bài viết
    Em lập trình cái quét led 4 led 7 đoạn nhưng mà nó hiển thị không đúng!!! Ai cho biết nguyên nhân và cách khắc phục được không!! File proteus và code ở link đính kèm phía dưới.

    --->>>> mach test hien thi diem.rar

    HÌNH:
    [ATTACH=CONFIG]55724[/ATTACH]
    Em để là 1234, nhưng nó hiển thị sai 1432, không biết sai chổ nào, giúp em với!!!
    sai cái cơ bản ,nếu bạn chọn led anot chung thì mã quét phải là 08,04,02,01 chứ không phải fe,fd....

    Comment


    • #3
      CODE ĐÂY AI SỬA GIÙM VỚI:

      #include<stdio.h>
      #include<math.h>
      #include <REGX51.H>
      sbit N1 = P3^0;
      sbit N2 = P3^1;
      unsigned char M[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
      unsigned char donvi,chuc,tram,nghin;
      long int diem,j;
      //HAM DEM TANG 1
      void docphim1(void)
      {
      int i;
      if(N1==0)
      {
      while(N1==0);
      diem+=20;
      for(i=0;i<=100;i++){};

      }
      }
      void docphim2(void)
      {
      int i;
      if(N2==0)
      {
      while(N1==0);
      diem-=20;
      for(i=0;i<=100;i++){};
      }
      }
      //HAM DELAY
      void delay(unsigned int t)
      {
      unsigned int i;
      for(i=0;i<=t;i++);
      }
      //HAM HIEN THI
      void hienthi(void)
      {
      nghin=diem/1000;
      tram= (diem%1000)/100;
      chuc= ((diem%1000)%100)/10;
      donvi= ((diem%1000)%100)%10;
      for(j=0;j<100;j++)
      {
      P1=0xF7;
      P2=M[donvi];
      delay(100);
      P1=0xFB;
      P2=M[chuc];
      delay(100);
      P1=0xFD;
      P2=M[tram];
      delay(100);
      P1=0xFE;
      P2=M[nghin];
      delay(100);
      P1=0xFF;
      }
      }
      //HAM NGAT NGOAI 1 va 0
      void ngatngoai_0(void) interrupt 0
      {
      diem+=10;
      }
      void ngatngoai_1(void) interrupt 2
      {
      diem-=10;
      }
      //HAM CHINH
      void main(void)
      {
      IE=0x85;
      IP =0;
      IT1=1;IT0=1;
      diem=1234;
      P1=0xFF;
      while(1)
      {
      docphim1();
      docphim2();
      hienthi();
      }

      }

      Comment


      • #4
        Sai chổ trăm và chục
        Nguyên văn bởi cimtaded Xem bài viết
        CODE ĐÂY AI SỬA GIÙM VỚI:

        #include<stdio.h>
        #include<math.h>
        #include <REGX51.H>
        sbit N1 = P3^0;
        sbit N2 = P3^1;
        unsigned char M[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
        unsigned char donvi,chuc,tram,nghin;
        long int diem,j;
        //HAM DEM TANG 1
        void docphim1(void)
        {
        int i;
        if(N1==0)
        {
        while(N1==0);
        diem+=20;
        for(i=0;i<=100;i++){};

        }
        }
        void docphim2(void)
        {
        int i;
        if(N2==0)
        {
        while(N1==0);
        diem-=20;
        for(i=0;i<=100;i++){};
        }
        }
        //HAM DELAY
        void delay(unsigned int t)
        {
        unsigned int i;
        for(i=0;i<=t;i++);
        }
        //HAM HIEN THI
        void hienthi(void)
        {
        nghin=diem/1000;
        tram= (diem%1000)/100;
        chuc= ((diem%1000)%100)/10;
        donvi= ((diem%1000)%100)%10;
        for(j=0;j<100;j++)
        {
        P1=0xF7;
        P2=M[donvi];
        delay(100);
        P1=0xFB;
        P2=M[chuc];
        delay(100);
        P1=0xFD;
        P2=M[tram];
        delay(100);
        P1=0xFE;
        P2=M[nghin];
        delay(100);
        P1=0xFF;
        }
        }
        //HAM NGAT NGOAI 1 va 0
        void ngatngoai_0(void) interrupt 0
        {
        diem+=10;
        }
        void ngatngoai_1(void) interrupt 2
        {
        diem-=10;
        }
        //HAM CHINH
        void main(void)
        {
        IE=0x85;
        IP =0;
        IT1=1;IT0=1;
        diem=1234;
        P1=0xFF;
        while(1)
        {
        docphim1();
        docphim2();
        hienthi();
        }

        }

        Comment


        • #5
          Nguyên văn bởi cimtaded Xem bài viết
          CODE ĐÂY AI SỬA GIÙM VỚI:


          P1=0xF7;
          P2=M[donvi];
          delay(100);
          P1=0xFB;
          P2=M[chuc];
          delay(100);
          P1=0xFD;
          P2=M[tram];
          delay(100);
          P1=0xFE;
          P2=M[nghin];
          delay(100);
          P1=0xFF;
          }
          }

          }
          đã chỉ thế rồi mà không sữa được ta..


          #include<stdio.h>
          #include<math.h>
          #include <REGX51.H>
          sbit N1 = P3^0;
          sbit N2 = P3^1;
          unsigned char M[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
          unsigned char donvi,chuc,tram,nghin;
          long int diem,j;
          //HAM DEM TANG 1
          void docphim1(void)
          {
          int i;
          if(N1==0)
          {
          while(N1==0);
          diem+=20;
          for(i=0;i<=100;i++){};

          }
          }
          void docphim2(void)
          {
          int i;
          if(N2==0)
          {
          while(N1==0);
          diem-=20;
          for(i=0;i<=100;i++){};
          }
          }
          //HAM DELAY
          void delay(unsigned int t)
          {
          unsigned int i;
          for(i=0;i<=t;i++);
          }
          //HAM HIEN THI
          void hienthi(void)
          {
          nghin=diem/1000;
          tram= (diem%1000)/100;
          chuc= ((diem%1000)%100)/10;
          donvi= ((diem%1000)%100)%10;
          for(j=0;j<100;j++)
          {
          P1=0xF7;
          P2=M[donvi];
          delay(100);
          P1=8 ; //0xFB;
          P2=M[chuc];
          delay(100);
          P1=4; //0xFD;
          P2=M[tram];
          delay(100);
          P1=2;//0xFE;
          P2=M[nghin];
          delay(100);
          P1=1;//0xFF;
          }
          }
          //HAM NGAT NGOAI 1 va 0
          void ngatngoai_0(void) interrupt 0
          {
          diem+=10;
          }
          void ngatngoai_1(void) interrupt 2
          {
          diem-=10;
          }
          //HAM CHINH
          void main(void)
          {
          IE=0x85;
          IP =0;
          IT1=1;IT0=1;
          diem=1234;
          P1=0xFF;
          while(1)
          {
          docphim1();
          docphim2();
          hienthi();
          }

          }

          Comment


          • #6
            cho hỏi là khi quét 4 led 7 đoạn ghép nối như hình thì nên quét bằng lập trình (như trên) hay quét bằng ic số vậy.
            Nên dùng cái nào thì ổn định hơn

            Comment


            • #7
              Cho hỏi 3 khối như trong hình, tụ điện với điện trở mắc như vậy có tác dụng gì?

              Click image for larger version

Name:	Untitled.png
Views:	1
Size:	70.9 KB
ID:	1370834

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X