Thông báo

Collapse
No announcement yet.

hiển thị số lần ấn phím trên 4led 7 thanh(đếm từ 0000 đến 9999)

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

  • hiển thị số lần ấn phím trên 4led 7 thanh(đếm từ 0000 đến 9999)

    Đây là chương trình em viết.dịch ra được file hex nhưng khi mô phỏng thì không chạy !!!!!em mới học vđk nên bác nào biết e sai chỗ nào chỉ em với!file mô phỏng em kèm theo ở dưới.thanks các bác nhiều
    #include <AT89X51.H>

    #include<stdio.h>
    #include<math.h>
    #define led P0
    #define aled1 P1_0
    #define aled2 P1_1
    #define aled3 P1_2
    #define aled4 P1_3
    #define nutnhan P3_2

    unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
    unsigned char donvi,chuc,tram,nghin,num;
    unsigned int dem=0;
    //----------------------------------------------------------------------------------------------
    void delay(unsigned int time)
    {
    unsigned int i,j;
    for(i=1;i<time;i++)
    for(j=0;j<100;j++);
    }
    //----------------------------------------------------------------------------------------------
    void clear_led(void)
    {
    P0=0xff;
    P1=0xff;
    }
    //----------------------------------------------------------------------------------------------
    void hienthi(unsigned int num)
    {
    nghin = num/1000;
    tram = (num%1000)/100;
    chuc = ((num%1000)%100)/10;
    donvi = ((num%1000)%100)%10;

    P1=0xf7;
    P0=M[donvi];
    delay(100);
    clear_led();
    P1=0xfb;
    P0=M[chuc];
    delay(100);
    clear_led();
    P1=0xfd;
    P0=M[tram];
    delay(100);
    clear_led();
    P1=0xfe;
    P0=M[nghin];
    delay(100);
    clear_led();
    }
    //----------------------------------------------------------------------------------------------
    unsigned char phim()
    {
    if(P3_2==0)
    {delay(100);
    while(P3_2==0){;}
    dem++;
    if(dem==10000){dem=0;}
    }
    return dem;
    }
    //----------------------------------------------------------------------------------------------
    void main(void)
    {
    int m;
    while(1)
    {
    m=phim();
    hienthi(m);
    delay(1000);
    }
    }
    Last edited by vuvandai; 11-07-2010, 21:01.
    |

  • #2
    file mô phỏng đây ạ!
    Attached Files
    |

    Comment


    • #3
      7seg led

      Click image for larger version

Name:	led1.jpg
Views:	1
Size:	98.7 KB
ID:	1349705

      Minh khong phai la dan chuyen nghiep nhung co cai nay cho ban tham khao, no tu chay tu 0-9999 bi reset boi mot phim. ban tu viet phan che so 0 phia truoc khi khong co ket qua nhe. Toi thu tren proteus roi.

      #include <at89x52.h>
      unsigned char code maled7[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
      /*
      Cong P0 la cong xuat du lieu ra led 7 seg, P0_0->a.....P0_6->f; P0_7->dp
      */
      #define led1 P2_0 //hang don vi
      #define led2 P2_1 //hang chuc
      #define led3 P2_2 //hang tram
      #define led4 P2_3 //hang nghin
      #define dp P0_7 //hien thi dau cham
      int i,j,k,l,a=0;
      void delay(unsigned int n) //tre hien thi de ma nhin duoc
      {
      long i;
      for(i=0;i<n;i++)
      {;}
      }
      void convert(unsigned int x) //chuyen thap phan sang so hien thi
      {
      i = x%10;
      x = x/10;
      j = x%10;
      x = x/10;
      k = x%10;
      l = x/10;
      }
      void display(unsigned int x, y) //hien thi tung so
      {
      convert(x);
      P0=0xFF; led1=1; led2=0; led3=0; led4=0; P0 = maled7[l]; delay(y); //hang don vi
      P0=0xFF; led2=1; led1=0; led3=0; led4=0; P0 = maled7[k]; delay(y); //hang chuc
      P0=0xFF; led3=1; led1=0; led2=0; led4=0; P0 = maled7[j]; delay(y); //hang tram
      P0=0xFF; led4=1; led1=0; led2=0; led3=0; P0 = maled7[i]; delay(y); //hang nghin
      }
      void main()
      {
      unsigned int w;
      while(1)
      {
      for(w=0; w<9999; w++) //chay mot mach dem 9999 roi chay lai tu dau
      {
      if(P1_0==0) //khi nao cai nay bi nhan thi reset bang 0
      {
      w=0;
      delay(30000);
      }
      else
      {
      display(w,300);
      }
      }
      }
      }
      MUỐN ĐÀO MỘT CÁI LỖ SÂU TRƯỚC TIÊN PHẢI ĐÀO NÓ ĐỦ RỘNG.

      Comment


      • #4
        Nguyên văn bởi vuvandai Xem bài viết
        file mô phỏng đây ạ!
        Mạch của bạn phần cứng lắp như vậy ko ổn lắm. Khi mô phỏng thì ko nên cho cả transistor, cả điện trở (như mắc thật ) vì protues ko hộ trợ tốt cái này lắm. Nếu dùng tran A1015 (loại tran thuận) thì nên thay vào đó là một cổng not là ok. Phần mềm có chút thay đổi .
        Mình đã sửa bạn xem
        http://www.mediafire.com/?5c9r1whbfe6rj11
        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


        • #5
          đó là led 7 đoạn hả bạn kengoaidao

          Comment


          • #6
            Nguyên văn bởi danghongnam Xem bài viết
            đó là led 7 đoạn hả bạn kengoaidao
            nó là led 7 đoạn thật đấy. chỉ là bạn dùng con led nào trong số 4 con led đó thôi. he
            cái đó để dùng cho phương pháp quét led

            Comment


            • #7
              Mình đọc cái Code rồi, mấy cậu xem lại cái protues đi. Cái này cũng dễ thôi mà, thể hiện led 7 đoạn đếm couter cho bài tập mới nhé.

              Comment


              • #8
                Nguyên văn bởi yoozi Xem bài viết
                Mình đọc cái Code rồi, mấy cậu xem lại cái protues đi. Cái này cũng dễ thôi mà, thể hiện led 7 đoạn đếm couter cho bài tập mới nhé.
                ??? Mình ko hiểu lắm.
                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


                • #9
                  sao không có ai viết chương trình dùng mã asm

                  Comment


                  • #10
                    Đó là tùy theo mỗi người. có người thành thạo về ngôn ngữ gì thì dùng ngôn ngữ đấy. C thì dễ hiểu hơn

                    Comment


                    • #11
                      Nguyên văn bởi thanggu90 Xem bài viết
                      sao không có ai viết chương trình dùng mã asm
                      cái này viết bằng ASM đơn giản thôi mà.

                      Comment


                      • #12
                        Mã c thì phát triển ứng dụng nhanh chóng.Những ứng dụng trung bình trở lên làm cho lẹ.Bây giờ bảo bạn hãy nhân 2 số thực 32bit hoặc 64 bit thì sao.Asm hay c đây.Tất nhiên là viết được bằng asm nhưng lâu.Mất thời gian.Lấy luôn chương trình đây làm ví dụ.Phép chia cho 1000 bạn xơi được kô.Mã c thì phát triển ứng dụng nhanh chóng.Những ứng dụng trung bình trở lên làm cho lẹ.Bây giờ bảo bạn hãy nhân 2 số thực 32bit hoặc 64 bit thì sao.Asm hay c đây.Tất nhiên là viết được bằng asm nhưng lâu.Mất thời gian.Lấy luôn chương trình đây làm ví dụ.Phép chia cho 1000 bạn xơi được kô.
                        , , ,

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X