Thông báo

Collapse
No announcement yet.

Đồng hồ điện tử hiển thị LCD dùng cổng nối tiếp truyền máy tính -> 89s52

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

  • Đồng hồ điện tử hiển thị LCD dùng cổng nối tiếp truyền máy tính -> 89s52

    mọi người giúp mình sửa lỗi này nhé. các bạn kết nối com 2<->3 nhé.
    các bạn chạy proteus rùi để ý hiển thị LCD 1 lát sẽ thấy thỉnh thoảng hiển thị lỗi, thừa thêm 1 số ở đầu.
    anh e xem giúp và chỉ chỗ code chưa đúng và sửa hộ mình nhé.
    mình xin cảm ơn.
    mình up file cứ bảo lỗi nên up ảnh + code 89x52 nhé

    code VDK:
    #include<reg52.h>
    #include<stdio.h>
    #include<string.h>
    unsigned char i,j;
    unsigned char x,y,M[10];
    sbit RS = P1^2;
    sbit RW= P1^1;
    sbit EN= P1^0;

    void delay_ms(void)
    {
    TH0=64535/256;
    TL0=64535%256;
    TR0=1;
    while(!TF0);
    TR0=TF0=0;
    }
    void kiemtraco(void)
    {
    P2=0xff;
    RS=0;
    RW=1;
    do
    {
    EN=1;
    delay_ms();
    EN=0;
    x=P2;
    x=x&0x80;
    }
    while(x!=0x80);
    }
    void ghi_lenh(unsigned char lenh)
    {
    kiemtraco();
    P2=lenh;
    RS=0;
    RW=0;
    EN=1;
    delay_ms();
    EN=0;
    delay_ms();
    }
    void ghi_kytu(unsigned char kytu)
    {
    kiemtraco();
    P2=kytu;
    RS=1;
    RW=0;
    EN=1;
    delay_ms();
    EN=0;
    delay_ms();
    }


    void khoitao(void)
    {
    ghi_lenh(0x01);
    ghi_lenh(0x38);
    ghi_lenh(0x06);
    ghi_lenh(0x0c);
    }
    void main(void)
    {
    IE=0x90;
    TMOD=0x21;
    SCON=0x50;
    TH1=TL1=-3;
    TR1=1;
    khoitao();
    ghi_lenh(0x01);
    delay_ms();
    ghi_lenh(0x80);
    while(1);

    }
    void serial_port() interrupt 4
    {
    if(RI)
    {
    RI=0;
    y=SBUF;
    if (y!=66)
    {
    M[j]=y;
    j++;
    }
    else
    {
    ghi_lenh(0x01);
    delay_ms();
    ghi_lenh(0x80);
    delay_ms();
    while(i<j)
    {
    ghi_kytu(M[i]);
    i++;
    }
    i=j=0;
    }
    }
    }
    Clock.zipClock.zip

  • #2
    bạn sửa lại hàm void delay_ms(unsigned long int t)
    {
    unsigned long int i;
    for (i=0;i<t;++i);;
    }
    tất cả để delay_ms(5);
    ghi_kytu => để :delay_ms(30);
    Không có việc gì chúng ta làm là vô ích. Một người không thể làm thay đổi thế giới, hãy chia sẻ ý tưởng của bạn, có thể mọi người sẽ đồng tình.

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X