找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2581|回复: 7
打印 上一主题 下一主题
收起左侧

51单片机的一个超声波测距,我感觉没有问题但就是不显示数据

[复制链接]
跳转到指定楼层
楼主
#include <REGX52.H>
#include <intrins.h>
#include "LCD1602.h"


sbit Ttig = P1^3;                //触发信号控制端口
sbit Echo = P1^4;                //回响信号接收端口

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;
        }
        
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2021-3-25 14:37 | 只看该作者
就这点程序别说出不了数据,连编译都过不去的
回复

使用道具 举报

板凳
ID:811405 发表于 2021-3-25 14:56 | 只看该作者
不是说你感觉没问题就没问题,没问题就应该能正常显示了
回复

使用道具 举报

地板
ID:890560 发表于 2021-3-25 19:04 | 只看该作者
man1234567 发表于 2021-3-25 14:37
就这点程序别说出不了数据,连编译都过不去的

LCD的部分没放上去,我试过LCD没问题,但就是没数据
回复

使用道具 举报

5#
ID:68800 发表于 2021-3-25 20:46 | 只看该作者
LCD_Init();
        while(1)
        {
                while(!Echo);      
                TR0=1;
                while(Echo);//这个地方改成这样
               
                TR0=0;
                count();
               
               
        }
回复

使用道具 举报

6#
ID:207421 发表于 2021-3-26 12:33 | 只看该作者
                while(!Echo);//等待回响
                TR0=1;        //如果是高电平,那么关闭定时器
                while(!Ttig); //你这里应该判断Echo是否被拉低
                TR0=0;       //如果Echo信号被拉低,那么关闭定时器,就可以计算结果了
                count();      //计算距离

   可以先用LCD函数写一个固定的字符,看看显示正不正常。

04.jpeg (46.57 KB, 下载次数: 38)

时序图

时序图
回复

使用道具 举报

7#
ID:890560 发表于 2021-4-5 12:25 | 只看该作者
liugao888 发表于 2021-3-25 20:46
LCD_Init();
        while(1)
        {

好的,我试一下
回复

使用道具 举报

8#
ID:890560 发表于 2021-4-5 12:25 | 只看该作者
lwh999995 发表于 2021-3-26 12:33
while(!Echo);//等待回响
                TR0=1;        //如果是高电平,那么关闭定时 ...

感谢指点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表