找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2585|回復(fù): 7
收起左側(cè)

51單片機(jī)的一個(gè)超聲波測(cè)距,我感覺沒有問(wèn)題但就是不顯示數(shù)據(jù)

[復(fù)制鏈接]
ID:890560 發(fā)表于 2021-3-24 21:05 | 顯示全部樓層 |閱讀模式
#include <REGX52.H>
#include <intrins.h>
#include "LCD1602.h"


sbit Ttig = P1^3;                //觸發(fā)信號(hào)控制端口
sbit Echo = P1^4;                //回響信號(hào)接收端口

unsigned long S = 0;
unsigned long time = 0;
unsigned int flag;
unsigned int timer;

void count()
{
        time=TH0*256+TL0;
        TH0=0;
        TL0=0;
        
        S=(time*1.7)/100;
        if(S>=300||flag==1)
                LCD_ShowString(1,1,"error");
        else
                LCD_ShowNum(2,1,S,3);
        

}


void main()
{
        TMOD=0x11;
        TH0=0;
        TL0=0;
        TH1=0XF8;
        TL1=0X30;
        ET0=1;
        ET1=1;
        TR1=1;
        EA=1;
        
        
        LCD_Init();
        while(1)
        {
                while(!Echo);
                TR0=1;
                while(!Ttig);
                TR0=0;
                count();
               
               
        }
               
        
}
void zd0() interrupt 1
{
        flag=1;
        
}
void zd1() interrupt 3
{
        TH1=0XF8;
        TL1=0X30;
        timer++;
        if(timer>=400)
        {
                timer=0;
                Ttig=1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                Ttig=0;
        }
        
}

回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2021-3-25 14:37 | 顯示全部樓層
就這點(diǎn)程序別說(shuō)出不了數(shù)據(jù),連編譯都過(guò)不去的
回復(fù)

使用道具 舉報(bào)

ID:811405 發(fā)表于 2021-3-25 14:56 | 顯示全部樓層
不是說(shuō)你感覺沒問(wèn)題就沒問(wèn)題,沒問(wèn)題就應(yīng)該能正常顯示了
回復(fù)

使用道具 舉報(bào)

ID:890560 發(fā)表于 2021-3-25 19:04 | 顯示全部樓層
man1234567 發(fā)表于 2021-3-25 14:37
就這點(diǎn)程序別說(shuō)出不了數(shù)據(jù),連編譯都過(guò)不去的

LCD的部分沒放上去,我試過(guò)LCD沒問(wèn)題,但就是沒數(shù)據(jù)
回復(fù)

使用道具 舉報(bào)

ID:68800 發(fā)表于 2021-3-25 20:46 | 顯示全部樓層
LCD_Init();
        while(1)
        {
                while(!Echo);      
                TR0=1;
                while(Echo);//這個(gè)地方改成這樣
               
                TR0=0;
                count();
               
               
        }
回復(fù)

使用道具 舉報(bào)

ID:207421 發(fā)表于 2021-3-26 12:33 | 顯示全部樓層
                while(!Echo);//等待回響
                TR0=1;        //如果是高電平,那么關(guān)閉定時(shí)器
                while(!Ttig); //你這里應(yīng)該判斷Echo是否被拉低
                TR0=0;       //如果Echo信號(hào)被拉低,那么關(guān)閉定時(shí)器,就可以計(jì)算結(jié)果了
                count();      //計(jì)算距離

   可以先用LCD函數(shù)寫一個(gè)固定的字符,看看顯示正不正常。

時(shí)序圖

時(shí)序圖
回復(fù)

使用道具 舉報(bào)

ID:890560 發(fā)表于 2021-4-5 12:25 | 顯示全部樓層
liugao888 發(fā)表于 2021-3-25 20:46
LCD_Init();
        while(1)
        {

好的,我試一下
回復(fù)

使用道具 舉報(bào)

ID:890560 發(fā)表于 2021-4-5 12:25 | 顯示全部樓層
lwh999995 發(fā)表于 2021-3-26 12:33
while(!Echo);//等待回響
                TR0=1;        //如果是高電平,那么關(guān)閉定時(shí) ...

感謝指點(diǎn)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表