Thông báo

Collapse
No announcement yet.

Đếm số.help me

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

  • Đếm số.help me

    em dùng C lập trình cho 2 led 7 thanh đếm từ 00 đến 59 mà sao không đc.giúp e sửa code với.hic
    Code:
    
    #include <regx51.h>
    #define bat	0
    #define tat 1
    char mt[10]={0XC0,0xF9,0xA4,0XB0,0x99,0X92,0x82,0xF8,0x80,0x90};
    
    void delay(char t)
    { int i;
    for(i=0;i<=t;i++);
     }
     void dongho()
     {	int i,j,
     while(P3_0==0)
     {	
    	 for (i=0;i<6;i++)
     {for(j=0;j<=9;j++) 
     P0=mt[i];
     P2=mt[j];  
     delay(300);}
     
     }}
     void main()
     {	 P0=0xC0;P2=0xC0;
    dongho();
    }
    Giúp em với nhé

  • #2
    bạn tham khảo code đếm 00 -99 này nha , dùng phương pháp quét.

    #include<reg52.h>
    #include<stdio.h>
    //================
    sbit Led1 = P3^0;
    sbit Led2 = P3^1;
    //=================
    unsigned char M[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6 f};
    int a,b,c,d,k;

    //=================
    void delay(unsigned int t)
    {
    unsigned int i;
    for(i=0;i<=t;i++);
    }
    void send1(unsigned char x)
    {
    P2|=x;
    Led1=0;
    Led2=1;
    }
    void send2(unsigned char x)
    {
    P2|=x;
    Led1=1;
    Led2=0;
    }
    void hienthi()
    {
    for(k=0;k<=99;k++)
    {
    a=k/10;
    b=k%10;
    for(c=0;c<=10;c++)
    {
    send1(M[a]);
    delay(4000);
    P2=0x00;
    send2(M[b]);
    delay(4000);
    P2=0x00;
    }
    }
    }
    //=================
    void main()
    {
    P2=P3=0x00;
    while(1)
    {
    hienthi();
    }
    }
    //=================End=================

    Comment


    • #3
      Nguyên văn bởi codientu668 Xem bài viết
      em dùng C lập trình cho 2 led 7 thanh đếm từ 00 đến 59 mà sao không đc.giúp e sửa code với.hic
      Code:
      
      #include <regx51.h>
      #define bat    0
      #define tat 1
      char mt[10]={0XC0,0xF9,0xA4,0XB0,0x99,0X92,0x82,0xF8,0x80,0x90};
      
      void delay(char t)
      { int i;
      for(i=0;i<=t;i++);
       }
       void dongho()
       {    int i,j,
       while(P3_0==0)
       {    
           for (i=0;i<6;i++)
       {for(j=0;j<=9;j++) 
       P0=mt[i];
       P2=mt[j];  
       delay(300);}
       
       }}
       void main()
       {     P0=0xC0;P2=0xC0;
      dongho();
      }
      Giúp em với nhé
      code của em trong hàm dongho() dòng lệnh for(j=0;j<=9;j++) thiếu {}
      hàm delay(char t) //thay char t =unsigned int t để hàm delay trễ lâu hơn.
      Code:
                   #include <regx51.h>
      #define bat    0
      #define tat 1
      char mt[10]={0XC0,0xF9,0xA4,0XB0,0x99,0X92,0x82,0xF8,0x80,0x90};
      
      void delay(unsigned int t)
      { unsigned int bien;
        
       for(bien=0;bien<=t;bien++)
        {
        }
      }
       void dongho()
       {    int i,j,tam;
       while(P3_0==0)
        {    
           for (i=0;i<6;i++)
         {
        for(j=0;j<=9;j++)
           { 
       P0=mt[i];
       P2=mt[j]; 
        delay(50000);
           
           }
         }
       
        }
       }
       void main()
       {
            P0=0xC0;P2=0xC0;
           
      while(1)
      {
       dongho();
      }     
      
      }
      Attached Files
      |

      Comment


      • #4
        Nguyên văn bởi codientu668 Xem bài viết
        em dùng C lập trình cho 2 led 7 thanh đếm từ 00 đến 59 mà sao không đc.giúp e sửa code với.hic
        Code:
        
        #include <regx51.h>
        #define bat	0
        #define tat 1
        char mt[10]={0XC0,0xF9,0xA4,0XB0,0x99,0X92,0x82,0xF8,0x80,0x90};
        
        void delay(char t)
        { int i;
        for(i=0;i<=t;i++);
         }
         void dongho()
         {	int i,j,
         while(P3_0==0)
         {	
        	 for (i=0;i<6;i++)
         {for(j=0;j<=9;j++) 
         P0=mt[i];
         P2=mt[j];  
         delay(300);}
         
         }}
         void main()
         {	 P0=0xC0;P2=0xC0;
        dongho();
        }
        Giúp em với nhé
        Hi codientu668,

        Tôi gợi ý cho bạn một cách làm khác nhé. Bạn hãy tổ chức chương trình của mình thành một số chương trình con sau:

        - Chương trình quét led: Chương trình này xử lý mỗi nhiệm vụ là hiển thị biến đếm ra LED 7 thanh. Bao gồm các task: tách chữ số hàng chục, hàng đơn vị của biến đếm và đẩy ra LED. (Không thực hiện việc đếm ở chương trình này)
        - Để thực hiện việc đếm bạn đặt một timer cứ 300ms (hoặc bao nhiêu tùy bạn) ngắt tràn một lần. Mỗi lần ngắt tràn bạn tăng giá trị của biến đếm lên 1. Trong chương trình phục vụ ngắt này bạn cũng có thể đặt các điều kiện để giới hạn biến đếm trong dải 00 - 59.

        Cấu trúc chương trình như sau:
        ...
        void main(void)
        {
        Init();//Khoi tao moi thu can thiet
        while(1)
        {
        quetled();
        }
        //--------------------chuong trinh phuc vu ngat
        void Timer0_int(void) interrupt TF0_VECTOR
        {
        //tang bien dem
        //Dat dieu kien gioi han
        }

        Bạn thử xem sao nhé.

        Best Regards,
        Kiếm tiền ONLINE nhàn như ăn cháo -

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X