Thông báo

Collapse
No announcement yet.

giúp em sửa lỗi nháy liên tục trên màn hình hiển thị lcd

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

  • giúp em sửa lỗi nháy liên tục trên màn hình hiển thị lcd

    đây là code và mạch của em ạ khi em bật thì màn hình lcd hiển thị nhưng nháy đen liên tục các ace xem giúp em lỗi ở đâu ạ
    code ạ
    #INCLUDE <16F887.H>
    #FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP
    #USE DELAY(CLOCK = 20M)
    #INCLUDE <TV_LCD.C>

    #DEFINE MODE PIN_B0
    #DEFINE UP PIN_B1
    #DEFINE DOWN PIN_B2

    UNSIGNED INT8 GIO, PHUT, GIAY, BDT;
    UNSIGNED INT8 GT;
    #INT_TIMER1
    VOID INTERRUPT_TIMER1()
    { SET_TIMER1 (59286);
    BDT++;
    }
    Void LCD_HIENTHI()
    {
    LCD_COMMAND (0X84); LCD_DATA ("DONG HO");
    LCD_COMMAND (0XC4); LCD_DATA (GIO/10 + 0X30);
    LCD_DATA (GIO%10 + 0X30); LCD_DATA (":");
    LCD_DATA (PHUT/10 + 0X30); LCD_DATA (PHUT%10 + 0X30);
    LCD_DATA (":"); LCD_DATA (GIAY/10 + 0X30);
    LCD_DATA (GIAY%10 + 0X30);
    }
    VOID LCD_NHAPNHAY()
    { IF (GT==1) { LCD_COMMAND (0XC4); LCD_DATA (" ");}
    IF (GT==2) { LCD_COMMAND (0XC7); LCD_DATA (" ");}
    IF (GT==3) { LCD_COMMAND (0XCA); LCD_DATA (" ");}
    }
    VOID BT_MODE()
    { IF (!INPUT (MODE))
    { DELAY_MS (20);
    IF (!INPUT (MODE))
    { GT++;
    IF (GT==4) GT=0;
    }
    WHILE (!INPUT(MODE));
    }
    }
    VOID BT_UP()
    { IF (!INPUT (UP))
    { DELAY_MS (20);
    IF (!INPUT (UP))
    { SWITCH (GT)
    {
    CASE 1: IF (GIO==23) GIO=0;
    ELSE GIO++;
    BREAK;
    CASE 2: IF (PHUT==59) PHUT=0;
    ELSE PHUT++;
    BREAK;
    CASE 3: IF (GIAY==59) GIAY=0;
    ELSE GIAY++;
    BREAK;
    DEFAULT: BREAK;
    }
    }
    WHILE (!INPUT (UP));
    }
    }
    VOID BT_DOWN()
    { IF (!INPUT (DOWN))
    { DELAY_MS (20);
    If (!INPUT (DOWN))
    { SWITCH (GT)
    { CASE 1: IF (GIO==0) GIO=23;
    ELSE GIO--;
    BREAK;
    CASE 2: IF (PHUT==0) PHUT=59;
    ELSE PHUT--;
    BREAK;
    CASE 3: IF (GIAY==0) GIAY=59;
    ELSE GIAY--;
    BREAK;
    }
    }
    WHILE (!INPUT (DOWN));
    }
    }


    VOID MAIN()
    { SET_TRIS_D (0X00);
    LCD_SETUP();
    GIAY=0;
    PHUT=0;
    GIO=0;
    BDT=0;
    LCD_HIENTHI();
    SETUP_TIMER_1 (T1_INTERNAL|T1_DIV_BY_8);
    Set_TIMER1 (59286);
    ENABLE_INTERRUPTS (GLOBAL);
    ENABLE_INTERRUPTS (INT_TIMER1);

    wHILE (TRUE)
    {
    IF (BDT<100)

    { LCD_HIENTHI();
    LCD_NHAPNHAY();
    BT_MODE();
    BT_UP();
    BT_DOWN();
    }
    ELSE
    { BDT=BDT-100;
    GIAY++;
    IF (GIAY==60)
    { GIAY=0;
    PHUT++;
    IF (PHUT==60)
    { PHUT=0;
    GIO++;
    If (GIO==24) GIO=0;
    }
    }
    }
    }
    }

Về tác giả

Collapse

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

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

Collapse

  • nguyendinhvan
    Trả lời cho Vấn đề về tốc độ quay
    bởi nguyendinhvan
    Sử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
    14-12-2025, 19:50
  • Andrea14
    Vấn đề về tốc độ quay
    bởi Andrea14
    Chào mọi người,

    Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
    12-12-2025, 12:42
  • 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
Đang tải...
X