Thông báo

Collapse
No announcement yet.

Hỏi về Counter 89c52 led 7 đoạn

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

  • Hỏi về Counter 89c52 led 7 đoạn

    Mình mới học VĐK, làm bài tập đếm từ 0 đến 121 sử dụng counter t0 hiển thị trên 3 led 7 đoạn.Mình mô phỏng trên proteus mà ko biết sao nó ko hiển thị ra nhỉ,các bạn biết sai chỗ nào chỉ giùm mình với.Mình cảm ơn

    Code:

    #include<AT89X52.h>
    const unsigned char m7d[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
    unsigned char dvi,chuc,tram;
    int kqd;
    void delay(unsigned int x)
    {
    unsigned int y;
    for(y=0;y<x;y++){};
    }

    void giaima_hienthi()
    {
    dvi=kqd%10; kqd=kqd/10; chuc=kqd%10; tram=kqd/10;
    P0=m7d[dvi];
    P2=m7d[chuc];
    P3=m7d[tram];
    }

    void main()
    {
    TMOD=T0_CT_+T0_M0_; TR0=1;
    while(1)
    {
    kqd=(TH0<<8)+TL0;
    giaima_hienthi();
    if(TL0==121){TL0=1; TH0=0;}

    }
    }
    Last edited by hokbonchen; 19-11-2013, 00:02.

  • #2
    hình như là thiếu cấp xung ngoài thì phải

    Comment


    • #3
      Đếm lên thì bạn gọi TMOD, mình gọi thẳng TMOD=0x05 (trong thanh ghi ), đếm ban đầu bạn ko cho bằng 0 luôn đi (TL0=0)
      Trong phần while(1) thì bạn thêm phần kết quả đếm = TL0 nó mới chạy được chứ.
      Phần if thì nên chó kết quả đếm =121 hay hơn là TL0=121

      Comment


      • #4
        Nguyên văn bởi bloodyeye Xem bài viết
        Đếm lên thì bạn gọi TMOD, mình gọi thẳng TMOD=0x05 (trong thanh ghi ), đếm ban đầu bạn ko cho bằng 0 luôn đi (TL0=0)
        Trong phần while(1) thì bạn thêm phần kết quả đếm = TL0 nó mới chạy được chứ.
        Phần if thì nên chó kết quả đếm =121 hay hơn là TL0=121
        cảm ơn bạn,để mình thử lại xem thế nào,trong proteus mình tạo xung ngoài cho nó như thế nào nhỉ ?

        Comment


        • #5
          Nguyên văn bởi hokbonchen Xem bài viết
          cảm ơn bạn,để mình thử lại xem thế nào,trong proteus mình tạo xung ngoài cho nó như thế nào nhỉ ?
          của bạn chỉ yêu cầu cấp xung thì kiếm con IC tạo xung clock làm cái mạch tạo xung clock rồi gắn vào chân T0 hoặc T1 (dùng counter nào thì gắn cái đó, theo code bạn viết thì dùng T0 ), lên mạng kiếm mạch tạo xung clock là có .
          Code với kết nối trong sách lập trình vi xử lí có ví dụ, về làm theo là ra
          Còn bạn học làm bài tập về nhà thì đơn giản hơn nửa, dùng xung clock, lôi ra cấp vào chân T0 là nó chạy ngon lành

          Comment


          • #6
            Nguyên văn bởi bloodyeye Xem bài viết
            của bạn chỉ yêu cầu cấp xung thì kiếm con IC tạo xung clock làm cái mạch tạo xung clock rồi gắn vào chân T0 hoặc T1 (dùng counter nào thì gắn cái đó, theo code bạn viết thì dùng T0 ), lên mạng kiếm mạch tạo xung clock là có .
            Code với kết nối trong sách lập trình vi xử lí có ví dụ, về làm theo là ra
            Còn bạn học làm bài tập về nhà thì đơn giản hơn nửa, dùng xung clock, lôi ra cấp vào chân T0 là nó chạy ngon lành
            cảm ơn bạn nhiều,mình làm được cái này rùi
            mình có thêm một vấn đề nữa bạn giúp mình với
            bài tập cho dùng 89s52 với 3 nút nhấn điều khiển 3 led 7 đoạn,nếu nhấn start thì đếm lên đến 120 rồi về 0,stop dừng,clear thì xóa về 0,mình lập trình được 2 nút nhấn chứ thêm nút thứ 3 mình bó tay. (cái này không cần dùng timer nha bạn)

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X