Thông báo

Collapse
No announcement yet.

At89c51+adc0809 chia tỷ lệ mẫu hiễn thị giá trị lên led7seg

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

  • At89c51+adc0809 chia tỷ lệ mẫu hiễn thị giá trị lên led7seg

    có bác nào chỉ dùm cho mình với.
    mình vừa thiết kế mạch nhưng gặp phải lỗi bên lập trình như sau:
    yêu cầu là khi đưa vào ADC 0809 giá tri +5v hoặc giá trị <+5v thì qua 8951 hiển thị trên LCD là vẩn 5v
    ở đây mình làm nhưng khi đưa vào giá trị +5v thì trên LCD hiển thị là 255( giá trị 8bit)
    các bạn nào biết chỉ dùm mình trong phần chia đọ phân giải adc0809
    các bạn chỉnh sữa cho mình với
    cái code này nó hiện lên giá trị 8 bit=255
    code mình viết bang ngôn ngữ C, như sau:

    #include <reg52.h>
    #define uint unsigned int
    #define uchar unsigned char

    uchar code LEDData[]=
    {
    0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
    };
    sbit OE = P1^0;
    sbit EOC = P1^1;
    sbit ST = P1^2;
    sbit CLK = P1^3;

    void DelayMS(uint ms)
    {
    uchar i;
    while(ms--)
    {
    for(i=0;i<120;i++);
    }
    }

    void Display_Result(uchar d)
    {
    P2 = 0xf7;
    P0 = LEDData[d%10];
    DelayMS(5);
    P2 = 0xfb;
    P0 = LEDData[d%100/10];
    DelayMS(5);
    P2 = 0xfd;
    P0 = LEDData[d/100];
    DelayMS(5);
    }

    void main()
    {
    TMOD = 0x02;
    TH0 = 0x14;
    TL0 = 0x00;
    IE = 0x82;
    TR0 = 1;
    P1 = 0x3f;
    while(1)
    {
    ST = 0;
    ST = 1;
    ST = 0;
    while(EOC == 0);
    OE = 1;
    Display_Result(P3);
    OE = 0;
    }
    }

    void Timer0_INT() interrupt 1
    {
    CLK = !CLK;
    }

  • #2
    mình ko học C+ nên không hiểu ct của bạn, ngày trước mình cũng viết CT đo nhiệt độ dùng ADC 0804 hiển thị ra led 7 đoạn, về cơ bản thì cách chuyển đổi cũng giống nhau ,bạn move giá trị muốn đổi sang 1 thanh ghi nào đó,dùng cách lệnh x,:,+,- để chuyển nó qua mã thập phân,sau đó đưa hiển thị là được,good luck

    Comment


    • #3
      Nguyên văn bởi vietanhk4 Xem bài viết
      mình ko học C+ nên không hiểu ct của bạn, ngày trước mình cũng viết CT đo nhiệt độ dùng ADC 0804 hiển thị ra led 7 đoạn, về cơ bản thì cách chuyển đổi cũng giống nhau ,bạn move giá trị muốn đổi sang 1 thanh ghi nào đó,dùng cách lệnh x,:,+,- để chuyển nó qua mã thập phân,sau đó đưa hiển thị là được,good luck
      cảm ơn bạn, mình làm mãi mà vẫn bị lỗi. mình chỉ muốn sữa lại CODE thôi, còn modul phía sau là ADC+8951+Led thôi nak, mắc là mắc đoạn này
      {
      P2 = 0xf7;
      P0 = LEDData[d%10];
      DelayMS(5);
      P2 = 0xfb;
      P0 = LEDData[d%100/10];
      DelayMS(5);
      P2 = 0xfd;
      P0 = LEDData[d/100];
      DelayMS(5);
      }

      void main()
      {
      TMOD = 0x02;
      TH0 = 0x14;
      TL0 = 0x00;
      IE = 0x82;
      TR0 = 1;
      P1 = 0x3f;

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X