Thông báo

Collapse
No announcement yet.

Giúp em đoạn code đo khoảng cách dùng sóng siêu âm

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

  • Giúp em đoạn code đo khoảng cách dùng sóng siêu âm

    Hiện tại em đang làm mạch đo khoảng cách dùng sóng siêu âm SFR-05. Em làm xong đoạn code nhưng nó báo lỗi không cho dịch ra file .HEX . Sau đây là đoạn code em nó, bác nào biết chỗ sai chỉ dùm em nhá Ths!


    #include<reg52.h>
    //================
    sbit Led1 = P0^3;
    sbit Led2 = P0^2;
    sbit Led3 = P0^1;
    sbit Led4 = P0^0;
    sbit Led_bao_1 = P3^6;
    sbit Led_bao_2 = P3^7;
    sbit trig = P3^1;
    sbit echo = P3^2;
    //=================
    unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
    unsigned char M1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x1 0};
    int a,b,c,d,e,f,g,h;
    unsigned char timel,timeh,i;
    float time;
    bit ok;
    void delay(unsigned int t)
    {
    unsigned int i;
    for {i=0;i<=t;i++);
    }
    void hienthi(float cm)
    {
    e=cm*100;
    e= (int)(e);
    g=e/100;
    h=e%100;
    a=g/100;
    b=(g%100)/10;
    c= ((g%1000)%10);
    d=h/10;
    for {f=0;f<100;f++)
    {
    Led1=1; //led dau tien sang
    P2=M[a];
    delay(20);
    Led1=0;
    P2=0xff;//xoa du lieu
    Led2=1; //led 2 sang
    P2=M[b];
    delay(20);
    Led2=0;
    P2=0xff;//xoa du lieu
    Led3=1; //led 3 sang
    P2=M1[c];
    delay(20);
    Led3=0;
    P2=0xff;//xoa du lieu
    Led4=1; //led 4 sang
    P2=M[d];
    delay(20);
    Led4=0;
    P2=0xff;//xoa du lieu
    }
    }
    void ngatINT0 () interrupt 0{
    timel=TL0;
    timeh=TH0;
    TL0=TH0=0;
    ok=0;
    }
    }
    void main(){
    trig=0;
    TMOD=0x09; //timer 0 che do 1 (16bit) cuc GATE mo
    TR0=1;
    IT0=1; //ngat ngoai 0 che do falling
    IT1=1;
    EX0=1; //cho phep ngat ngoai 0
    EX1=1;
    EA=1; // cho phep ngat toan cuc
    ok=0;
    while(1){
    if(ok==0){
    trig=1;
    delay(20);
    trig=0;
    ok=1;
    }
    time=timel+timeh*256;
    hienthi(time/58);
    }
    }

  • #2
    Bạn xem nó báo sai ở đâu thì sửa ở đấy thôi.
    #include<reg52.h>
    //================
    sbit Led1 = P0^3;
    sbit Led2 = P0^2;
    sbit Led3 = P0^1;
    sbit Led4 = P0^0;
    sbit Led_bao_1 = P3^6;
    sbit Led_bao_2 = P3^7;
    sbit trig = P3^1;
    sbit echo = P3^2;
    //=================
    unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
    unsigned char M1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x1 0};
    int a,b,c,d,e,f,g,h;
    unsigned char timel,timeh,i;
    float time;
    bit ok;
    void delay(unsigned int t)
    {
    unsigned int i;
    for (i=0;i<=t;i++);
    }

    void hienthi(float cm)
    {
    e=cm*100;
    e= (int)(e);
    g=e/100;
    h=e%100;
    a=g/100;
    b=(g%100)/10;
    c= ((g%1000)%10);
    d=h/10;
    for (f=0;f<100;f++)
    {
    Led1=1; //led dau tien sang
    P2=M[a];
    delay(20);
    Led1=0;
    P2=0xff;//xoa du lieu
    Led2=1; //led 2 sang
    P2=M[b];
    delay(20);
    Led2=0;
    P2=0xff;//xoa du lieu
    Led3=1; //led 3 sang
    P2=M1[c];
    delay(20);
    Led3=0;
    P2=0xff;//xoa du lieu
    Led4=1; //led 4 sang
    P2=M[d];
    delay(20);
    Led4=0;
    P2=0xff;//xoa du lieu
    }
    }
    void ngatINT0 () interrupt 0
    {
    timel=TL0;
    timeh=TH0;
    TL0=TH0=0;
    ok=0;
    }

    void main(){
    trig=0;
    TMOD=0x09; //timer 0 che do 1 (16bit) cuc GATE mo
    TR0=1;
    IT0=1; //ngat ngoai 0 che do falling
    IT1=1;
    EX0=1; //cho phep ngat ngoai 0
    EX1=1;
    EA=1; // cho phep ngat toan cuc
    ok=0;
    while(1){
    if(ok==0){
    trig=1;
    delay(20);
    trig=0;
    ok=1;
    }
    time=timel+timeh*256;
    hienthi(time/58);
    }
    }
    Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
    http://diencongnghiep360.com/
    http://tudienhathe.vn/

    Comment


    • #3
      ths bạn, mình đã sửa đc rồi

      Comment

      Về tác giả

      Collapse

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

      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.
        Hôm qua, 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