标题: 我的单片机超声波测距课程设计(PCB 原理图 代码) [打印本页]

作者: 越勤奋越幸运    时间: 2018-12-25 23:08
标题: 我的单片机超声波测距课程设计(PCB 原理图 代码)
制作出来的实物图如下:


电路原理图如下:


一、    作品简介
以51单片机为核心,利用超声波传感器对障碍物进行距离测量并将结果发送到液晶显示屏上,并可以设定距离,当数据高于预警值时可以进行声光报警。
二、    设计原理
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。
三、    功能说明
设计单片机最小系统,供电电路有上电指示功能,采用串口下载程序,USB供电,具有复位功能。采用超声波传感器,能够实现对障碍物距离的测量;采用液晶显示,能够对测量的距离进行显示。
有报警电路,能够实现对预警值的设置,同时当数据高于设定预警距离的时候可以进行声光报警(有声音报警,并且通过红绿的指示灯对非正常和正常情况进行报警)。

Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)


软件:KEIL5、altium proteus
仿真内容:LCD1602显示,超声波测距(程序非阻塞方式,使用外部中断,平均值滤波更精准)真机测试:正常,使用HC-SRF04超声波测距模块(测距范围:4-450cm),STC89C52单片机。
//超声波管脚定义
sbit RX=P3^3;
sbit TX=P3^2;
//超声波初始化
void Init_ultrasonic_wave()
{
  TX=0;      //关闭发射
  TMOD=0x01;     //设T0为方式1,GATE=1;
  TH0=0;
  TL0=0;         
  ET0=1;           //允许T0中断
  EA=1;      //开启总中断
}
//启动超声波
void StartModule()  //启动模块
{
TX=1;         //启动一次模块
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
}
//距离计算 SD为当时的超声速度
void Conut()
{
  time=TH0*256+TL0;
  TH0=0;
  TL0=0;
  L_=(time*3.49)/200;     //算出来是CM;  
  //距离大于200或者超时
  if(L_>500||flags==1)
  {
  flags=0;
  //无效显示
  flag1s=0;
  L_=0;
  FW=1;
  Feng_Start();
  }
  //距离小于100
  else if(L_<=500)
  {
  flag1s=1;
  FW=1;
  Feng_Stop();
  }

具体内容请在附件中查看
全部资料51hei下载地址:
作品视频及照片.rar (145.87 KB, 下载次数: 117)

作者: 无脑英雄    时间: 2019-1-2 12:35
楼主可以发一下仿真图吗
作者: 阿斯蒂芬asdf    时间: 2019-1-2 14:30
非常感谢。。。
作者: a598089072    时间: 2019-1-9 19:54
谢谢分享
作者: dinel    时间: 2019-1-13 15:18
感谢分享

作者: qq1021384936    时间: 2019-6-6 07:58
谢谢大佬的制图!!!!!!
作者: 小黑14    时间: 2019-12-17 23:31
可以用,谢谢楼主给的图哦




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1