毕业设计 基于51单片机的超声波测厚仪设计


🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机的超声波测厚仪设计 

第一章 硬件设计

1.1 单片机模块

1.1.1 单片机简介

AT89C51是美国ATMEL公司生产的低电压高性能CMOS8单片机,片内含4k字节的可反复擦写的只读程序存健器EROME和128 字节的随机存取数据存储器。兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元

AT89C51提供以下标准功能4k字节Flash闪速存储器,128 字节内部RAM32 个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作权式。拉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件I作直到下一个硬件复位。图3-1为AT89C51单片机的方框图

图1-1 AT89C51单片机的方框图

其引脚功能如下:

lVCC:电源电压;

lGND:地;

lP0口:8位漏极开路型双向I/O口;

lP1口:带内部上拉电阻的8位双向I/O口;

lP2口:带内部上拉电阻的8位双向I/O口;

lP3口:带内部上拉电阻的8位双向I/O口,其第二功能如表1-1所示;

lRST:复位输入,高电平有效;

l

ALE/PROG:ALE为地址锁存控制信号端,PROG为编程脉冲输入端;

l

PSEN:访问片外程序存储器;

lEA/VPP:外部访问允许;

lXTAL1:反向放大器输入端;

lXTAL2:反相器输出端。

P3口作为第二功能使用时各个功能引脚如表3-1所示:

表1-1  P3口各引脚第二功能

 

1.1.2 单片机最小系统

单片机最小系统,也叫单片机最小应用系统,是指用最少的原件组成单片机可以工作的系统。电源、振荡电路、复位电路构成了单片机最小系统的三要素,也就是说,一个单片机具备了这三个条件,就可以运行下载的程序了,其他的比如LED小灯、数码管、液晶等设备都是属于单片机的外部设备,即外设。单片机最小系统电路图如图1-2所示

图1-2 单片机最小系统电路图

(1)电源:主控电路供电5V。

(2)振荡电路:由晶振和电容组成,理论上来说,振荡频率越高表示单片机的运行速度越快,但是同时也对存储器的速度和印刷电路板的要求也就越高。AT89C51单片机的18脚和19脚是品振引脚,此最小系统接的是11.0592MHZ的晶振,外加两个33Pf的电容,这个电容的值没有特别的要求,作用是帮助晶振起振,并维持振荡信号的稳定。晶振电路如图1-3所示

(3)

复位电路:接到了单片机的9脚(RST)复位引脚上,当程序运行过程中突然断电,此时单片机内部有的数据会丢失,有的还没有丢失,为了单片机下次打开时还能正常运行,再次上电后,单片机内部要进行一个初始化,这个过程就可以理解为上电复位当程序运行时,遭受外界干扰死机,或者程序跑飞的时候,就可以按下复位键让程序重新开始运行,这个过程叫手动复位当程序死机或者跑飞的时候,如果程序长时间失去响应,单片机看门狗会自动复位重启单片机这个过程就是程序自动复位本单片机最小系统采用手动复位方式,复位电路如图1-4所示

图1-3 晶振电路                              图1-4 复位电路

3.2温度检测模块 

3.2.1 数字温度传感器DS18B20简介

声波在空气中传播时,空气的温度、大气压力、湿度等都会对超声波的速度有影响,其中空气的温度对于超声波的速度影响最大,所以,为了避免环境温度而带来的偏差,必须对环境温度进行检测,并通过计算消除环境温度引起的偏差。DS18B20具有接线简单、体积小、使用方便的特点,封装后可以用于各种场合的测温,尤其适应于狭小空间的测温DS18B20可以直接将温度转化成串行数字信号供处理器处理DSI8B20与单片机的连接分简单,单片机只需要一个I/O口就可以控制DS18B20进行温度采集DS18B20与单片机的连接如图1-5所示

图1-5 DS18B20连接电路

1.2.2 DS18B20工作原理

DS18B20的ROM中存放了个64位的序列号,可以看作是该温度传感器的地址序列码。光刻ROM序列号的作用是可以使每一个的温度传感器各不相同[17]。这样一台主机就可以挂接多个温度传感器,组成多个测温网点
    当进行温度操作时,如果主机对多个DS18B20进行使用,要先将主机逐个与各个DS18B20进行挂接,读出其序列号,然后将所有的DS18B20挂接到总线上,单片机发出匹配ROM指令,如果是只针对一个DS18B20进行操作,则可以不用进行这些步骤,并且不用读取ROM和匹配ROM,直接跳过CCH);然后开始温度转换、读取。DS18B20 ROM 部分命令和功能命令如表3-2,表3-3所示。

表1-2 DS18B20 ROM命令

命令

代码

搜索ROM

0xF0

读取ROM

0x33

匹配ROM

0x55

跳过ROM

0xCC

表1-3 DS18B20功能命令

命令

代码

转换温度

0x44

读暂存器

0xBE

写暂存器

0x4E

 DS18B20测量范围是-55℃~+125℃,测量分辨率为9~12位(复位值为12位,最大转换时间为750ms)。在要进行测温或者温度转换时控制器要发出44H命令,此时就会进行测温,温度转换结束之后,会以两个字节的形式保存在高速缓存存储器中。每个字节都是个八位的数据,高字节的前五位是温度符号位,如果前五位就是‘0’,则代表温度大于零,反之为‘1’。如果是正温度就直接乘以0.0625就得到了温度的值,如果小于零,就要减1在取反,再乘以0.0625。DS18B20 温度传感器的内部结构图如图3-6所示

图1-6  DS18B20内部结构图

1.2.3 温度补偿

超声波在固体中传播速度最快,在气体中传播速度最慢,而且声速c与温度有关。如果环境温度变化显着,必须考虑温度补偿问题。为了提高系统的测量精度,本文设计了温度补偿电路。根据实际温度的值,利用式(3-1)可计算补偿声速。表3-4为几种温度下的对应不同声速空气中声速与温度的关系可以表示为

            式(3-1)式中,T 为环境摄氏温度℃。

表1-4 声速与温度对应表

温度℃

-30

-20

-10

0

10

20

30

100

声速米/秒

313

319

325

332

338

344

349

386

1.3 超声波模块

HC-SR04超声波模块的电路连接图1-7所示。HC-SR04超声波传感器可以提供2cm~450cm的非接触式测量,测量精度可以达到3mm,该模块包括超声波发射电路,超声波接收电路和超声波控制电路。HC-SR04具有以下几个特点
    (1)超微型,体积小,相当于两个发射头面积的大小
    (2)盲区小,10mm以内可以当作0来处理:

(3)测量速度快,10ms 的测量周期不容易丢失目标:
(4)发射头和接收头成直线关系

图1-7 超声波电路连接图

 HC-SR04的引脚与单片机的接法如下:
   (1)VCC:接5V电源;
   (2)GND:接地;
   (3)Trig (控制器发射信号端):接单片机的I/O口;
   (4)Echo (接收端) :接单片机的I/O口。

超声波传感器的Trig端口和Echo端口在连接单片机端口时,要先接个上拉电阻,因为单片机的P2端口自带上拉电阻,所以将Trig端口和Echo端口接在P2.0和P2.1端口上。

HC-SR04的电气参数如表1-5所示

表3-5 HC-SR04电气参数表

电气参数

HC-SR04

工作电压

DC 5V

工作电流

小于2mA

工作频率

40HZ

感应角度

不大于15度

探测距离

2cm~450cm

精度

可达3mm

输入触发信号

10μs的TTL

输出回响信号

输出TTL脉冲,与距离成正比

尺寸大小

45×20×15mm

1.4 蜂鸣器和指示灯报警电路

蜂鸣器是一种一体化结构的电子讯响器,分为无源蜂鸣器和有源蜂鸣器,所谓的“源”是指电子元器件在工作时,如果其内部振荡源存在,则这种器件叫做有源器件。如果元器件在工作时内部没有振荡源则这种期间被称为无源器件
    有源蜂鸣器本身含有驱动,直接给他一定的电压就可以发声,无源蜂鸣器要靠外部驱动才可以响。无源蜂鸣器的理想驱动是一定频率的方波。蜂鸣器的I/O口与单片机的I/O口相连,当测量的距离小于或者超出测距范围时蜂鸣器报警,红色发光二极管亮灯,在安全距离之内时,红色发光二极管就不会会亮起,表示在安全距离以内。蜂鸣器和指示灯报警电路图如图3-8所示

图1-8 报警电路图

1.5显示模块

1.5.1 LM016L液晶显示模块简介

LM016L液晶显示器与单片机的连接电路如图3-9所示,VEE端是液晶显示对比度调节,如果直接接到VCC端会使对比度过高不会显示内容,一般要加一个电位进行对比度调节E是使能端,又称为允许输入端或禁止端,下降沿使能。RS是数据命令选择端,R/W是读写选择端。D0~D7是数据传输端。LM016L液晶显示器共有14个引脚,引脚说明如表3-6所示

表1-6 LM016L液晶显示器引脚说明

编号

符号

引脚说明

1

VSS

一般接地

2

VDD

接电源

3

VEE

液晶显示对比度调节

4

RS

寄存器选择

5

R/W

读写信号线

6

E

使能端

7~14

D0~D7

数据端

 

图1-9 LM016L连接电路

1.6 本章小结

本章主要介绍此次设计所用到的硬件设计。

首先本章第一节介绍了设计所用单片机AT89C51的基本参数以及引脚功能,接着介绍单片机最小系统,详细介绍了复位电路、振荡电路;

第二节介绍了温度检测模块,详细介绍温度传感器DS18B20的特点以及工作原理,并介绍温度与声速的关系式来实现温度补偿;

第三节介绍HC-SR04超声波传感器的特点以及与单片机的连接方式;

第四节主要介绍蜂鸣器以及发光二极管,二者组成报警电路;

第五节介绍LM016L液晶显示模块,阐述了其基本参数及引脚功能。

第二章 调试

1.1 构建仿真环境

Proteus是一款功能强大的软件,其ISIS用来做仿真非常方便,尤其是单片机系统的仿真。仿真时,首先绘制原理图,根据需要搭建好电路图。绘制原理图环境如图2-1所示。

图2-1 绘制原理图环境

搭建完电路图后,只需把Proteus与Keil进行联调即可。首先为单片机添加程序,双击单片机在弹出的框中选择Keil μVision 4中生成的程序hex文件,结束后即可开始仿真。二者联调如图2-2所示。

图2-2 Proteus与Keil联调图

2.2 调试结果

在调试时未超过测量范围的仿真图如图2-3所示。由此仿真可以看出,此时未超出测量范围(150-250mm),红灯未亮,蜂鸣器没响。

图2-3未超出测量范围仿真图

调试时超出测量范围的仿真图如图2-4所示。由此仿真可以看出,超出测量范围时,红灯亮起并且蜂鸣器发出声音。

图2-4 超出测量范围仿真图

模拟仿真其他情况相同只有不同温度下的厚度结果如表2-1所示。

表2-1 超声波测厚仿真结果

次数

温度(℃)

仿真结果(mm)

1

-30~-20

188

2

-20~-10

190

3

-10~0

194

4

0~10

195

5

10~20

203

6

20~30

209

7

>30

23

2.3 本章小结

本章主要介绍超声波测厚仪的仿真过程,对如何让仿真进行了详细说明,并给出不同温度下的仿真结果。

  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于51单片机超声波测距仪设计如下: 1. 硬件设计超声波测距模块HC-SR04通过4个引脚与51单片机相连,其中VCC接5V电源,GND接地,Trig接P1.0,Echo接P1.1。1602液晶通过16个引脚与51单片机相连,其中VSS接地,VDD接5V电源,VO接电位器,RS接P2.0,RW接P2.1,E接P2.2,D0-D7接P0口。 2. 软件设计: (1) 初始化1602液晶,设置超声波模块的Trig引脚为输出,Echo引脚为输入。 (2) 定义计时器,用于计算超声波从发射到接收的时间。 (3) 发送一个10us的高电平脉冲到Trig引脚,触发超声波模块开始测距。 (4) 等待Echo引脚变为高电平,开始计时。 (5) 等待Echo引脚变为低电平,停止计时。 (6) 根据计时器的值计算出距离,并将距离显示在1602液晶上。 以下是基于51单片机超声波测距仪设计的部分代码: ```c #include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char sbit Trig = P1^0; sbit Echo = P1^1; sbit RS = P2^0; sbit RW = P2^1; sbit E = P2^2; void delay(uint i) { while(i--); } void write_com(uchar com) { RS = 0; RW = 0; P0 = com; delay(100); E = 1; _nop_(); _nop_(); E = 0; } void write_data(uchar dat) { RS = 1; RW = 0; P0 = dat; delay(100); E = 1; _nop_(); _nop_(); E = 0; } void init() { write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); } void main() { uint distance; uchar str[16]; TMOD = 0x01; TH0 = 0; TL0 = 0; TR0 = 1; while(1) { Trig = 1; delay(10); Trig = 0; while(!Echo); TH0 = 0; TL0 = 0; while(Echo); TR0 = 0; distance = TH0 * 256 + TL0; distance = distance / 58; sprintf(str, "Distance: %d cm", distance); init(); write_data(str[0]); write_data(str[1]); //... write_data(str[15]); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值