找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STC单片机烧录后显示P1.0和P1.1与此次下载无关

[复制链接]
跳转到指定楼层
楼主
ID:1093570 发表于 2023-9-19 18:17 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如图,可是我的超声波接线的trig和echo就接在这俩上,导致1602不显示测距的距离了,我想知道是程序的问题还是硬件接口的问题,谢谢各位的指导了

IMG_20230919_181114.jpg (1.56 MB, 下载次数: 32)

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

使用道具 举报

沙发
ID:57657 发表于 2023-9-19 19:43 | 只看该作者
用示波器或逻辑分析仪捕捉trig和echo的信号是否正确?
回复

使用道具 举报

板凳
ID:1093570 发表于 2023-9-19 19:57 来自手机 | 只看该作者
npn 发表于 2023-9-19 19:43
用示波器或逻辑分析仪捕捉trig和echo的信号是否正确?

不好意思我刚学这俩都没有//
回复

使用道具 举报

地板
ID:65956 发表于 2023-9-20 08:32 | 只看该作者
这系列的单片机这两个口要用作IO口时请加上拉电阻就行了
回复

使用道具 举报

5#
ID:744809 发表于 2023-9-20 08:39 | 只看该作者
和这个没关系,是你程序有问题。
回复

使用道具 举报

6#
ID:123289 发表于 2023-9-20 08:51 | 只看该作者
都有问题,不信,上图、上程序。
回复

使用道具 举报

7#
ID:1093570 发表于 2023-9-20 17:08 来自手机 | 只看该作者
yzwzfyz 发表于 2023-9-20 08:51
都有问题,不信,上图、上程序。

不好意思因为我不太写的出来所以是粘粘别人的然后注释有乱码

IMG_20230919_182922.jpg (1.23 MB, 下载次数: 44)

IMG_20230919_182922.jpg

IMG_20230919_182943.jpg (1.3 MB, 下载次数: 37)

IMG_20230919_182943.jpg

IMG_20230919_182954.jpg (1.38 MB, 下载次数: 30)

IMG_20230919_182954.jpg

IMG_20230919_183004.jpg (1.25 MB, 下载次数: 27)

IMG_20230919_183004.jpg
回复

使用道具 举报

8#
ID:1093570 发表于 2023-9-20 17:47 来自手机 | 只看该作者
不好意思因为我不太写的出来所以粘粘别人的然后注释就有乱码

IMG_20230919_182922.jpg (1.23 MB, 下载次数: 34)

IMG_20230919_182922.jpg

IMG_20230919_182943.jpg (1.3 MB, 下载次数: 35)

IMG_20230919_182943.jpg

IMG_20230919_182954.jpg (1.38 MB, 下载次数: 39)

IMG_20230919_182954.jpg

IMG_20230919_183004.jpg (1.25 MB, 下载次数: 35)

IMG_20230919_183004.jpg
回复

使用道具 举报

9#
ID:1093570 发表于 2023-9-20 19:21 来自手机 | 只看该作者
yzwzfyz 发表于 2023-9-20 08:51
都有问题,不信,上图、上程序。

不好意思粘粘别人的我用的是--/我不太写得出来

HCSR04.c
#include <REGX52.H>
#include "Timer0.h"

//定义引脚接口
sbit Trig = P1^0;
sbit Echo = P1^1;

/**
  * @brief  HC-SR04初始化
  * @param  无
  * @retval 无
  */
void HCSR04_Init()
{
        Timer0_Init();
        Trig = 0;
        Echo = 0;
}

/**
  * @brief  HC-SR04接收一个12us的触发信号
  * @param  无
  * @retval 无
  */
void HCSR04_Trig()
{
        unsigned char i;
        Trig = 1;
        i = 5;while (--i);                //延时12us
        Trig = 0;
}

/**
  * @brief  HC-SR04接收触发信号并计算回波信号高电平时间
  * @param  无
  * @retval 无
  */
void HCSR04_Set()
{
        HCSR04_Trig();
        while(!Echo);
        TR0 = 1;
        while(Echo);
        TR0 = 0;
}

/**
  * @brief  HC-SR04计算模块与障碍间的距离
  * @param  Duration(持续时间)        发送到接收的间隔时间
  * @param  Distance  模块与障碍间的距离
  * @retval Distance
  */
float HCSR04_Calc()
{
        unsigned int Duration = 0;
        float Distance = 0;
       
        Duration = TH0*256+TL0;
        Distance = Duration*0.017;//时间*音速/2,音速=340m/s=0.034cm/us
        TH0 = 0;
        TL0 = 0;
       
        return Distance;
}

Timer0.c
#include <REGX52.H>

/**
  * @brief  定时器0初始化@11.0592MHz
  * @param  无
  * @retval 无
  */
void Timer0_Init()      //@11.0592MHz
{
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x01;                //设置定时器模式
        TH0 = 0;                        //设置定时初值
        TL0 = 0;                        //设置定时初值
        TF0 = 0;                        //清除TF0标志
        TR0 = 0;                        //定时器0不计时
}

main.c
#include <REGX52.H>
#include "Delay.h"
#include "HCSR04.h"
#include "LCD1602.h"

unsigned int Distance;

void main()
{
        LCD_Init();                                                //LCD1602初始化
        HCSR04_Init();                                        //HC-SR04初始化
        LCD_ShowString(1,1,"Distance:");
        LCD_ShowString(2,4,"cm");
        while(1)
        {
                HCSR04_Set();                                //HC-SR04接收触发信号并计算回波信号高电平时间
                Distance = HCSR04_Calc();        //计算距离
                LCD_ShowNum(2,1,Distance,3);//调用显示
                Delay(20);
        }
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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