Thông báo

Collapse
No announcement yet.

Mạch đếm dùng 8051

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

  • Mạch đếm dùng 8051

    Các bạn xem code và mạch nguyên lý trong file đính kèm, tại sao khi bấm nút tăng mà nó không tăng nhỉ?
    Attached Files

  • #2
    Nguyên văn bởi eclipse_bk47 Xem bài viết
    Các bạn xem code và mạch nguyên lý trong file đính kèm, tại sao khi bấm nút tăng mà nó không tăng nhỉ?
    - Bạn sửa lại data 7 đoạn : mức 0 led sáng.
    - Bạn sửa lại hàm main : để giá trị value = 0 ra ngoài vòng lặp while.
    - Bạn sửa lại hàm hiển thị : xuất data 7 đoạn -> chọn led cần hiển thị -> delay.

    Comment


    • #3
      Nguyên văn bởi tramng Xem bài viết
      - Bạn sửa lại data 7 đoạn : mức 0 led sáng.
      - Bạn sửa lại hàm main : để giá trị value = 0 ra ngoài vòng lặp while.
      - Bạn sửa lại hàm hiển thị : xuất data 7 đoạn -> chọn led cần hiển thị -> delay.
      #include <REGX51.H>
      #include <stdlib.h>
      #include <stdio.h>
      /*********************************define var.port*******************************/
      #define data P2
      sbit tang = P3^2;
      sbit giam = P3^1;
      sbit tram = P0^0;
      sbit chuc = P0^1;
      sbit donvi = P0^2;
      /*******************************sub program***********************/
      unsigned char code seg[]=(0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x8f,0x80,0x9 0);
      unsigned int value;
      void display();
      /************************************************** ***********************/
      /////////////////////////////////////////////////////////////////////////////
      // Main //
      /////////////////////////////////////////////////////////////////////////////
      void Main()
      {
      value = 3;
      while(1)
      {
      display();
      if(tang==0)
      {
      while (tang==0) { display();}
      value++;
      }
      }
      }




      /////////////////////////////////////////////////////////////////////////////
      // delay //
      /////////////////////////////////////////////////////////////////////////////
      void delay(long time)
      {
      long i;
      for(i=0;i<time;i++)
      {
      ;
      }
      }
      /////////////////////////////////////////////////////////////////////////////
      // Display //
      /////////////////////////////////////////////////////////////////////////////
      void display()
      {

      data = seg[value/100];
      tram =1;
      delay(1);
      tram = 0;
      data = seg[value%100/10];
      chuc = 1;
      delay(1);
      chuc = 0;
      data = seg[value%100%10];
      donvi = 1;
      delay(1);
      donvi = 0;
      }
      Mình đã sửa theo ý bạn nhưng vẫn không chạy được, bạn xem sơ đồ nguyên lý mình có gì sai không?

      Comment


      • #4
        Nguyên văn bởi eclipse_bk47 Xem bài viết
        Mình đã sửa theo ý bạn nhưng vẫn không chạy được, bạn xem sơ đồ nguyên lý mình có gì sai không?
        #include <REGX51.H>
        #include <stdlib.h>
        #include <stdio.h>
        /*********************************define var.port*******************************/
        #define data P2
        sbit tang = P3^2;
        sbit giam = P3^1;
        sbit tram = P0^0;
        sbit chuc = P0^1;
        sbit donvi = P0^2;
        /*******************************sub program***********************/
        //unsigned char code seg[]=(0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x8f,0x80,0x9 0);
        const unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
        unsigned char value;
        void display();
        /************************************************** ***********************/
        /////////////////////////////////////////////////////////////////////////////
        // Main //
        /////////////////////////////////////////////////////////////////////////////
        void Main()
        {
        value = 0;
        while(1)
        {
        display();
        if(tang==0)
        {
        while (tang==0)
        {
        display();
        }
        value++;
        }
        }
        }




        /////////////////////////////////////////////////////////////////////////////
        // delay //
        /////////////////////////////////////////////////////////////////////////////
        void delay(long time)
        {
        long i;
        for(i=0;i<time;i++)
        {
        ;
        }
        }
        /////////////////////////////////////////////////////////////////////////////
        // Display //
        /////////////////////////////////////////////////////////////////////////////
        void display()
        {

        data = seg[value/100];
        tram =0;
        delay(50);
        tram = 1;
        P2 = seg[value%100/10];
        chuc = 0;
        delay(50);
        chuc = 1;
        P2 = seg[(value%100)%10];
        donvi = 0;
        delay(50);
        donvi = 1;
        }
        Bạn đọc code chắc là bạn biết sai chỗ nào rồi ! Bạn sử dụng port 0 mà không dùng trở treo nguồn là sai cơ bản nhé ! Bạn dùng BJT dòng A mà không có trở phân cực B cũng là sai cơ bản lun nhé !
        Last edited by tramng; 12-02-2014, 18:19.

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        • bqviet
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi bqviet
          Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
          06-12-2025, 17:17
        • nguyendinhvan
          Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
          bởi nguyendinhvan
          Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
          05-12-2025, 19:59
        • afrendly
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi afrendly
          Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
          04-12-2025, 01:27
        • nick22
          Trả lời cho Máy điện châm ?
          bởi nick22
          Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
          01-12-2025, 13:23
        Đang tải...
        X