返回目录:经济新闻
单片机入门系列文章算上本文已经是第10篇,不知道大家从我的这10篇文章中了解到了什么。今天我们再来介绍两款单片机的外围硬件模块,1602液晶显示屏,srf04超声波模块。做一款类似于倒车雷达的小产品。
先来看一下实际效果。
若需要本文实例仿真与源码,只需三步即可获取:
第一步:关注小编,“一枚科技仔”。
第二步:转发本文。
第三步:私信小编,发送“04”即可。
无偿分享,做开源思想的践行者。
0、功能分析。
随着我们对单片机不断的深入了解,需要不断的接触新的外围硬件去验证单片机的配置及使用方法。小编也随之这个步伐给大家准备了新的实例,基于单片机的超声波检测器,这里就是一个简单的模拟倒车雷达的装置,可用于距离检测,智能避障,物品防盗等方面。
既然要实现功能,需要些什么元器件呢?
- 显示部分:1602液晶显示屏(LCD显示屏)。它长什么样呢。
- 传感器检测部分:srf04超声波模块,这东西又长啥样呢。
- 单片机最小系统图。
1、原理图设计
直接干上原理图,不需要解释。
给了原理图,小编好像有点后悔,觉得什么都不讲好像有点对不住读者。
虽然是开源分享,但还是要把原理讲清楚。小编就从三个方面去讲整个系统如何搭建起来的。
科技仔小课堂时间到了,小板凳搬好,开始记笔记了哦!
(1)如何设计出原理图。
我想这个问题大家在初次接触电子设计的时候肯定会想,原理图是如何一步一步画出来,如何去设计的呢,这里就给大家提供一点思路。
当我们要做一款产品的时候,通过功能分析,知道我们要实现什么功能,选择什么样的模块去实现对应的功能。那么当我们选择模块时就需要去找相应模块的datasheet,类似于使用说明,设计手册的pdf文档。其中就有参考硬件电路,程序设计案例,模块的使用方法。我们根据官方提供的设计资料去修改,应用到我们实际设计中。这种方法在芯片外围电路方面是一种不错的解决方法。
我们还可以在网上去查找别人的一些类似的设计,单片机的发展也经历的几十年,很多走在我们前面的人已经将我们所想,所要做的东西已经做过并实现了。有了前面的例子,当我们在设计电路没有思路时也可以参考一下别人是怎么做的。尤其是在找不到datasheet,或者datasheet上没有参考电路时。我们做硬件其实也是需要减少重复造轮子的思想才能提高工作效率。
(2)如何理解模块的用法。
在我们绘制原理图前其实是需要先了解相应的模块的用法,如何与单片机,与其他硬件连接,如何写程序。这一步如何做呢,还是和上面一样,先看datasheet,再去查找别人类似的设计。有了别人的设计思路,那么最重要的还是要自己理解怎么去设计,去编程实现功能最重要。
这里我们需要分两步,拿到新的模块,不知道怎么用,先了解模块原理,将模块的工作原理了解清楚,最后根据原理去理解别人的参考程序,引脚是如何定义,内部信号如何处理,如何输出信号,如何输入信号等等。然后再去了解它的引脚是什么,哪边是电源,哪边是地,有没有使能脚(大部分的使能脚就相当于一个开关),信号输入输出脚在哪里。还要一些其他的引脚了解清楚之后。
理解参考程序之后就可以尝试做一些单元测试(将模块单独拿出来与单片机相连,进行独立测试),灵活的掌握模块使用方法,做到一通百通。
(3)实例分析
这里小编就拿如何使用srf04这个模块做一个简单示例分析。
首先我们要知道它的原理。
什么是超声波:超声波就是频率大于20KHz的声波,声波在遇到障碍时会反馈回到发射点。
超声波测距模块工作原理:
- 采用IO口TRIG触发测距,给至少10us的高电平信号
- 模块自动发送8个40KHz的方波,自动检测是否有信号返回。
- 有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。
知道了基本原理,再去了解模块的引脚定义
在这个电路中,1脚为电源,2脚为触发信号输入,3脚为回响信号输出,4脚为电源地。
Q:你是如何知道的呢?
A:datasheet上有啊。
这样就很清楚各个引脚的作用了。
知道了这些,就可以去看参考程序的案例,看懂之后就可以去设计程序了。
对应1602显示模块的设计大家自己去查找相应的资料。
2、程序编写
这一次程序比较复杂,我们需要对关键的地方进行一些了解。
首先超声波测距部分,这里我截取关键代码讲解。
#include "srf04.h"
void SRF04Init();
uint getDistance();
uint getAverageDistance();\t
unsigned int t;
// 初始化射频模块
void SRF04Init()
{
\tTMOD=0x19;
\tEA=1;
\tIT0=1; //设置为下降沿触发
\tTRIG=0; //关闭信号发射
}
// 获取单次距离样本
unsigned int getDistance()
{
\tTRIG=1;
\tnops(10); //触发信号延时
\tTRIG=0;
\tTR0=1; //打开定时器开始计时
\tEX0=1; //打开外部中断INT0
\treturn 0.018*t+1;//340/2*(t/1000/10)cm
}
// 求20次取值的平均值
unsigned int getAverageDistance()
{
\tunsigned char N=20; //样本数量
\tunsigned char k=N;
\tunsigned int sum=0;
\twhile(k--)
\t{
\t\tsum+=getDistance();
\t}
\treturn sum/N;
}
// 定时器配置
void timer()interrupt 0
{
\t
\tTR0=0; //进入外部中断INT0后停止计时
\tt=(TH0*256+TL0); //计算定时器时间
\tTH0=TL0=0; //清除计时器,为下一次测距做准备
\t
}
首先将超声波模块初始化,然后进入检测模式,每10us秒通过中断向单片机发送当前检测数据,再在显示器上进行显示。
lcd1602显示部分的代码内容较多,可关注我,发送“04”获取完整代码及仿真文件。
3、程序烧录,软硬件联调
仿真图上按srf04上的加减键即可直观的看到相应的变化。
4、写在最后
今天的这个案例其实并不重要,重要的是如如何去绘制原理图,了解一些方法,解决在设计时的障碍才是最重要的。我们在实际设计的时候会去参考别人成熟的设计,再进行修改,应用与自己的产品中。我们刚刚开始做,多多学习别人成熟的方案设计,对自己的设计思路是有很多帮助的。
对于这个案例我并没有过多的去讲解,整个系统原理并不复杂,但在设计的时候还是遇到了很多问题,我希望有兴趣的读者可以自己先尝试一下,找一些资料去做,也可以把用我的设计去修改,实现自己的一些小设计。
关注+转发+点赞,是我创作的动力,希望大家继续支持我这枚小小科技仔,分享更多有趣设计与思路。
相关阅读
51单片机超声波雷达倒车_基于51单片机的汽车倒车雷达的设计
- 百色金融新闻网经济新闻
- 单片机入门系列文章算上本文已经是第10篇,不知道大家从我的这10篇文章中了解到了什么。今天我们再来介绍两款单片机的外围硬件模块,1602液晶显示屏,srf04超声波模块。做一款类似
单片机的现状及其发展前景_单片机的发展历程和发展前景
- 百色金融新闻网经济新闻
- CMOS化 近年,由于CHMOS技术的进小,大大地促进了单片机的CMOS化。CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。这也是今后以80C51取代8