Thông báo

Collapse
No announcement yet.

Quét 2 led 7 thanh bị nháy

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

  • Quét 2 led 7 thanh bị nháy

    quet 2 led 7 thanh - YouTube

    Mình đã chỉnh lại thạch anh thành 2Mhz, tăng thời gian delay, thì số hàng chục bị nháy, nếu chỉnh cho số hàng chục đỡ nháy thì số hàng đơn vị chạy quá nhanh, không đọc được, Mình phải chỉnh thế nào để hàng chục không bị nháy mà vẫn theo dõi được số hàng đơn vị?
    Code:
    Code:
    #include <REGX51.H>
    // a,b,c,d,e,f,g cua 2 led 7 noi voi cong P0
    #define c P2_0 //pin P2_0 dieu khien so hang chuc
    #define d P2_1 //pin P2_1 dieu khien so hang don vi
    unsigned char so[]={0Xc0,0X79,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90};// ma led 7 tu 0 den 9
    void delay(int ms)
    {
        while(ms--)
        {}
    }
    
    void hienthiso(unsigned char x)
    {
    unsigned char chuc=x/10;
    unsigned char donvi=x%10;
    c=1;d=1;
    if(x>=10)
    {
    c=0;d=1;
    P0=so[chuc];
    delay(500);
    c=1;d=0;
    P0=so[donvi];
    delay(500);
    }
    if(x<10)
    {
    c=1,d=0;
    P0=so[x];
    delay(1000);
    
    }
    
    }
    
    void main()
    {
    P0=0Xff;
    while(1)
    {
    unsigned char i;
    for(i=0;i<100;i++)
    hienthiso(i);
    }
    }
    Email:
    Đau đầu vì điện tử

  • #2
    giảm delay thì mới hết bi nháy chứ bác

    Comment


    • #3
      Nguyên văn bởi lowpass Xem bài viết
      quet 2 led 7 thanh - YouTube

      Mình đã chỉnh lại thạch anh thành 2Mhz, tăng thời gian delay, thì số hàng chục bị nháy, nếu chỉnh cho số hàng chục đỡ nháy thì số hàng đơn vị chạy quá nhanh, không đọc được, Mình phải chỉnh thế nào để hàng chục không bị nháy mà vẫn theo dõi được số hàng đơn vị?
      Code:
      Code:
      #include <REGX51.H>
      // a,b,c,d,e,f,g cua 2 led 7 noi voi cong P0
      #define c P2_0 //pin P2_0 dieu khien so hang chuc
      #define d P2_1 //pin P2_1 dieu khien so hang don vi
      unsigned char so[]={0Xc0,0X79,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90};// ma led 7 tu 0 den 9
      void delay(int ms)
      {
          while(ms--)
          {}
      }
      
      void hienthiso(unsigned char x)
      {
      unsigned char chuc=x/10;
      unsigned char donvi=x%10;
      c=1;d=1;
      if(x>=10)
      {
      c=0;d=1;
      P0=so[chuc];
      delay(500);
      c=1;d=0;
      P0=so[donvi];
      delay(500);
      }
      if(x<10)
      {
      c=1,d=0;
      P0=so[x];
      delay(1000);
      
      }
      
      }
      
      void main()
      {
      P0=0Xff;
      while(1)
      {
      unsigned char i;
      for(i=0;i<100;i++)
      hienthiso(i);
      }
      }
      chạy nhanh không phải do quét led mà do trong vòng While(1) của bạn không có delay, số i tăng liên tục, mắt mình không cảm nhận theo kịp. Bạn thử đặt thêm delay cỡ 500ms ở cuối vòng while(1) , se thấy khác. còn thời gian delay để quét thì phải giản suống, sao cho tần số khoảng 30 lần /s thì đẹp. tính 25 , trên lý thuyết là được, nhưng thực tế dùng delay, không thực sự chính xác và có thể gây nhấp nháy.

      Comment


      • #4
        ở phần quét led thì giảm time daylay đi để tần số quét khoảng 60hz là ok.còn trong phần while(1) thì cho thếm delay vào để chúng ta nhìn được nó tăng không thì nhanh quá không nhìn thấy trong phần delay cho biến tăng không nên dùng phần delay quét led mà nên dùng timer để làm delay hoặc vòng for thứ 2 làm delay vì sao thì là vì khi mình dùng phần delay quet led thì mcu sẽ không làm gì gây nên hiện tượng led bị nhấp nháy mỗi lần tăng lên một.chúc bạn thành công
        hãy làm theo cách của bạn!

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X