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

        Đang tải...
        X