Chương trinh c đếm số dung 89c51

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • viem1991
    Thành viên mới
    • Feb 2011
    • 13

    #1

    Chương trinh c đếm số dung 89c51

    em muốn làm thử mạch đếm số dùng 2 led 7 thanh va con 89c51(thử làm mô phỏng trên proteus thôi).em dùng con led 7 thanh thứ nhất để đếm hàng đơn vị,con thứ 2 đếm hàng chục.Hiện giờ em chưa biết phải viết ct như thế nào(làm sao để led 1 đếm đến 9 thì led2 nhảy thêm 1 đv),nếu ai biết thì giúp em với.Ct không cần quá cao siêu vì có thể có nhiều câu lệnh em chưa hoc đến,hãy viết sao cho người mới học lập trình như em biết là được và giải thích tưng câu lệnh trong đó giúp em.thank
  • viem1991
    Thành viên mới
    • Feb 2011
    • 13

    #2
    chắc em hỏi gà quá không ai muốn giúp ak.hi

    Comment

    • capkama
      Thành viên chính thức
      • Apr 2010
      • 38

      #3
      Hình như trong đây có bài này rồi. Bạn lật lại vài trang sẽ thấy đếm số từ 000-999 cũng tương tự

      Comment

      • vietthanh123
        Thành viên tích cực
        • Mar 2011
        • 479

        #4
        Nguyên văn bởi viem1991 Xem bài viết
        chắc em hỏi gà quá không ai muốn giúp ak.hi
        Chắc là ko phải đơn giản mà không ai muốn giúp bạn đâu, mà là bài này đã có rất nhiều trên diễn đàn rồi mà, bạn phải tìm chứ.
        Mình up lại cho bạn này.
        Led 7 thanh.rar
        Đếm hẳn tới 1000 luôn. Bạn ko hiểu dòng nào thì lên hỏi mọi người, chắc sẽ trả lời ngay chứ bảo mọi người giải thích từng dòng lệnh thì.....
        Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
        http://diencongnghiep360.com/
        http://tudienhathe.vn/

        Comment

        • viem1991
          Thành viên mới
          • Feb 2011
          • 13

          #5
          void HIEN_THI(void)
          {
          P0=M[nghin];
          P2=~0x1;
          delay_10ms(1);
          P2=~0;
          P0=0xFF;
          P0=M[tram];
          P2=~0x2;
          delay_10ms(1);
          P2=~0;
          P0=0xFF;
          P0=M[chuc];
          P2=~0x4;
          delay_10ms(1);
          P2=~0;
          P0=0xFF;
          P0=M[donvi];
          P2=~0x8;
          delay_10ms();
          P2=~0;
          P0=0xFF;
          }

          Comment

          • viem1991
            Thành viên mới
            • Feb 2011
            • 13

            #6
            mình khong hiểu đoan này lắm,ai giải thích giúp mình với

            Comment

            • rptdnmqs
              Thành viên tích cực
              • Nov 2008
              • 440

              #7
              Đơn giản hoá.Bạn có 2 biến hàng hơn vị(donvi) và hàng chục(chuc).
              for(chuc=0;chuc<=9;chuc++)
              {
              for(donvi=0;donvi<=9;donvi++){
              //gọi hàm hiển thị
              //delay
              }
              }
              cái này thì chạy tít mÙ nhénvi<=9;donvi++){
              //gọi hàm hiển thị
              //delay
              }
              }
              cái này thì chạy tít mÙ nhé
              , , ,

              Comment

              • capkama
                Thành viên chính thức
                • Apr 2010
                • 38

                #8
                Đây chương trình của bạn đây
                Code:
                #include"reg52.h"
                sbit    Led_dv  =  P3^0;
                sbit    Led_chuc  =  P3^1;
                unsigned char Ma[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
                int a,b,c,d,k;
                void delay(unsigned int ms)  
                {
                unsigned int i,j;    
                for(i=0;i<ms;i++)
                  for(j=0;j<125;j++);   
                }
                void main()
                { int i;
                while(1)
                {
                for(k=0;k<=99;k++)
                {
                
                a=k/10;
                b=k%10;
                for(i=0;i<20;i++)
                {
                {
                Led_dv=1;  //led dv
                P2=Ma[a];
                delay(20);
                Led_dv=0;  
                P2=0xff;//xoa data
                Led_chuc=1;  //led chuc
                P2=Ma[b];
                delay(20);  
                Led_chuc=0;
                P2=0xff; 
                }
                }
                }
                
                }
                }
                với bao nhiêu led thì chỉnh sửa một tý là ok.

                Comment

                • vietthanh123
                  Thành viên tích cực
                  • Mar 2011
                  • 479

                  #9
                  void HIEN_THI(void) // Hàm Quet led.
                  {
                  P0=M[nghin]; // Đầu tiên, cho số hàng nghìn sáng (Đưa catot của led về 0)
                  P2=~0x1; // Đưa Anot của led lên 1 (xem phần cứng có cổng not)
                  delay_10ms(1); // Trễ một khoảng thời gian t để đủ thời gian lưu ảnh trên mắt !
                  P2=~0; // Tắt led hàng nghìn, chuẩn bị hiện thị led hàng trăm(để led ko bị nhấp nháy)
                  P0=0xFF;
                  P0=M[tram]; // Tương tự như với số hàng nghìn (hiện thị số hàng trăm)
                  P2=~0x2;
                  delay_10ms(1);
                  P2=~0;
                  P0=0xFF;
                  P0=M[chuc];
                  P2=~0x4;
                  delay_10ms(1);
                  P2=~0;
                  P0=0xFF;
                  P0=M[donvi];
                  P2=~0x8;
                  delay_10ms();
                  P2=~0;
                  P0=0xFF;
                  }

                  Bài trên mình viết chi tiết các hàm riêng biệt nên hơi dài dòng, tuy nhiên sẽ dễ hiểu hơn.
                  Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
                  http://diencongnghiep360.com/
                  http://tudienhathe.vn/

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...