单片机接口技术:超声波测距仪的设计.ppt_第1页
单片机接口技术:超声波测距仪的设计.ppt_第2页
单片机接口技术:超声波测距仪的设计.ppt_第3页
单片机接口技术:超声波测距仪的设计.ppt_第4页
单片机接口技术:超声波测距仪的设计.ppt_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机接口技术,智能电子教研室,张永亮,本学期开设的“单片机接口技术”为54学时,是集成电路设计专业学生的一门重要的专业课。 集成0905班已先修模拟电子技术、数字电子技术、电子电路CAD、单片机应用等课程,单片机接口技术是一门实践性、应用性以及综合性较强的专业课,课程共设置了两个项目:一是围绕STC89C51单片机开发超声波测距仪,将键盘、显示技术、DS18B20温度采集、DS1302时钟芯片、AT24C02存储等功能综合在超声波测距仪这个综合性的设计任务中,从功能分析、方案论证、产品选型、单元电路设计、焊接、程序代码编写、软硬件调试等实践环节完成锻炼项目开发能力。二是用凌阳SPCE061A开发板实现对语音控制电风扇的设计。对电子类学生来说,无论是为了以后专业工作的需要,或是为了以后专业课学习的方便,都应该学习本课程。,课程介绍,项目一:基于STC89C51单片机的超声波测距仪的设计 设计要求:利用超声波换能器和单片机设计一种非接触式测距仪,具有温度补偿、测量准确、性能可靠性等优点。设计任务: 1、键盘及显示模块设计。 2、DS18B20温度采集模块设计。 3、DS1302时钟模块设计。 4、AT24C02数据存储模块设计。 5、超声波发射、接收模块设计。 项目二:基于SPCE061A单片机的语音控制电风扇的设计。设计任务: 1、熟练使用凌阳SPCE061A十六位单片机开发系统。 2、系统能够识别开机、关机、语音报温等控制命令。 3、外围电路,如:键盘输入、温度采集、数码显示、继电器控制等硬件电路的设计。 4、相应程序代码的编写。 重点、难点: 项目开发的过程:设计方案论证,硬件电路设计,软件程序代码编写,调试。,项目一:超声波测距仪的设计,一、功能要求,为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;目前较为常用的是压电式超声波发生器;通常用于小距离检测、障碍物检测等。 超声波测距器可应用于汽车倒车。建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度、物体厚度等的测量。其测量范围为0.204.00m,测量精度为1cm。测量时与被测物体无直接接触,能够清晰、稳定地显示测量结果。,设计要求:利用超声波换能器和单片机设计一种非接触式测距仪,该装置的测量距离为20CM-4M,并且具有温度补偿、测量准确、性能可靠性等优点。 1、掌握超声波传感器的工作原理并设计超声波发射器与接收器的工作电路。 2、测量距离为20CM-4M,测量误差1CM。 3、温度补偿范围:-20 - 100C。 4、实时显示实测距离、时间、温度。 5、具有存储功能,能查询历史纪录。,二、方案论证,由于超声波指向性强,能量消耗慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。利用超声波检测距离设计比较方便,计算处理也比较简单,并且在测量精度方面也能达到使用的要求。 超声波发生器可以分为两大类:一类是使用电气方式产生超声波;另一类是用机械方式产生超声波。电气方式包括电压型、电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波各不相同,因而用途也各不相同。目前在近距离测量方面较为常用的是压电式超声波换能器。 根据设计要求并综合各方面因素,本例决定采用AT89C52单片机作为主控器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成。超声波测距器系统设计框图如下:,二、方案论证,图1 系统硬件设计框图,三、系统硬件电路的设计,硬件电路主要分为以下7个部分:,1. 单片机系统电路 单片机采用89C51或其兼容系列。系统采用12MHZ高精度的晶振,以获得较稳定的时钟频率,并减小测量误差。单片机用P1.0端口控制输出超声波换能器所需的40kHz方波信号,利用外中断0口监测超声波接收电路输出的返回信号。,三、系统硬件电路的设计,MCS-51系列单片机内部结构框图,8位CPU 4kbytes 程序存储器(ROM) (52为8K) 256bytes的数据存储器(RAM)52有384bytes的RAM) 32条I/O口线111条指令,大部分为单字节指令 21个专用寄存器 2个可编程定时/计数器 5个中断源,2个优先级 (52有6个) 一个全双工串行通信口 外部数据存储器寻址空间为64kB 外部程序存储器寻址空间为64kB 逻辑操作位寻址功能 双列直插40PinDIP封装 单一+5V电源供电,1)片内资源,2)80C51的引脚封装,总线型,非总线型,3) 时钟电路,(a)内部时钟电路;(b) HMOS型外部振荡源 (C) CHMOS型外部振荡源,XTAL1:接外部晶振和微调电容的一端,在单片机内部,它是构成片内振荡 器的反向放大器的输入端。当采用外部振荡器时,该引脚接收振荡 器的信号,即把此信号直接接到内部振荡器的输入端。 XTAL2:接外部晶振和微调电容的另一端,在单片机内部,它是构成片内振 荡器的反向放大器的输出端。当采用外部振荡器时,此引脚应悬空。,单片机内部的时间单位 振荡频率fosc = 石英晶体频率或外部输入时钟频率 振荡周期= 振荡频率的倒数 机器周期 机器周期是单片机应用中衡量时间长短的最主要的单位 在多数51系列单片机中: 指令周期 执行一条指令所需要的时间 单位:机器周期 51单片机中:单周期指令、双周期指令、四周期指令,1机器周期 = 121/ fosc,3) 时钟电路,RST/VPD:是复位信号输入端,高电平有效。当此输入端保持2个机器周期的高电平时,就可以完成复位操作。RST引脚的第二功能是备用电源的输入端。,上电复位,按键复位,4、单片机系统,4) 复位电路,4、单片机系统,5) 存储器选择,外部程序存储器控制信号EA,EA=0: 访问外部程序存储器。 EA=1: 访问片内与片外程序存储器。【先内后外】,6) 最小系统,在计算机控制系统中,除了与生产过程进行信息传递的过程输入输出设备以外,还有与操作人员进行信息交换的常规输入设备和输出设备。键盘是一种最常用的输入设备,它是一组按键的集合,从功能上可分为数字键和功能键两种,作用是输入数据与命令,查询和控制系统的工作状态,实现简单的人机对话。 键盘接口电路可分为编码键盘和非编码键盘两种类型。编码键盘采用硬件编码电路来实现键的编码,每按下一个键,键盘便能自动产生按键代码。编码键盘主要有BCD码键盘、ASCII码键盘等类型。非编码键盘仅提供按键的通或断状态, 按键代码的产生与识别由软件完成。,2. 键盘及显示电路,2.1 键盘电路,2.1.1 键盘的抖动干扰,由于机械触点的弹性振动,按键在按下时不会马上稳定地接通而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为按键的抖动干扰,其产生的波形如图3所示,当按键按下时会产生前沿抖动,当按键弹起时会产生后沿抖动。这是所有机械触点式按键在状态输出时的共性问题,抖动的时间长短取决于按键的机械特性与操作状态,一般为10100ms,此为键处理设计时要考虑的一个重要参数。,2.1.2 抖动干扰的消除,按键的抖动会造成按一次键产生的开关状态被CPU误读几次。为了使CPU能正确地读取按键状态,必须在按键闭合或断开时,消除产生的前沿或后沿抖动,去抖动的方法有硬件方法和软件方法两种。 1硬件方法 硬件方法是设计一个滤波延时电路或单稳态电路等硬件电路来避开按键的抖动时间。图4是由R2和C组成的滤波延时消抖电路,设置在按键S与CPU数据线Di之间。按键S未按下时,电容两端电压为0,即与非门输入Vi为0,输出Vo为1。当S按下时,由于C两端电压不能突变,充电电压Vi在充电时间内未达到与非门的开启电压,门的输出Vo将不会改变,直到充电电压Vi大于门的开启电压时,与非门的输出Vo才变为0,,这段充电延迟时间取决于R1、R2和C值的大小,电路设计时只要使之大于或等于100ms即可避开按键抖动的影响。同理,按键S断开时,即使出现抖动,由于C的放电延迟过程,也会消除按键抖动的影响 图中,V1是未施加滤波电路含有前沿抖动、后沿抖动的波形,V2是施加滤波电路后消除抖动的波形。 2软件方法 软件方法是指编制一段时间大于100ms的延时程序,在第一次检测到有键按下时,执行这段延时子程序使键的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。同理,在检测到按键释放后,也同样要延迟一段时间,以消除后沿抖动,然后转入对该按键的处理。,图4 滤波延时消抖电路,2.1.3 查询法接口电路,现以3个按键为例,图5即为独立式键盘查询法接口电路。按键S0、S1、S2分别通过上拉电阻与CPU的数据线D0、D1、D2相连,当按键Si闭合时,数据线直接接地,因而CPU读入Di=0;当按键Si断开时,数据线通过上拉电阻接到正电源,因而CPU读入Di=1。 该接口电路实现的功能为:查询检测是否有键按下,如有键闭合,则消除抖动,再判断键号,然后转入相应的键处理。其程序流程如图6所示。 采用查询法时,必须保证CPU每隔一定时间主动地去扫描按键一次,该扫描时间间隔应小于两次按键的时间间隔,否则会有按键不响应的情形。显然这种方式占用CPU时间比较多。,图5 独立式键盘结构原理,图6 独立式键盘查询法程序流程图,在计算机控制中,显示装置是一个重要组成部分,主要用来显示生产过程的工艺状况与运行结果,以便于现场工作人员的正确操作。常用的显示器件有显示记录仪、发光二极管显示器LED、液晶显示器LCD、大屏幕显示器和图形显示器终端CRT。,2.2 显示电路,显示记录仪-是以模拟方式连续显示和记录过程参数的动态变化,但其价格都很贵,在目前的计算机控制系统中已很少采用。 LED数码管-由于具有结构简单、体积小、功耗低、配置灵活、显示清晰、可靠性高等优点,目前已被微型计算机控制系统及智能化仪表广泛采用。 LCD-则以其功耗极低的特点,占据了从电子表到计算器,从袖珍仪表到便携式微型计算机等应用场合。 CRT终端-CRT终端以其图文并茂的直观生动画面,可以显示生产过程中的各种画面及报表,如生产流程图、显示报警图、趋势曲线图、状态和回路查询图等,在很多微型计算机控制系统中,特别在DDC,SCC以及DCS控制系统中,大都采用CRT操作台进行监视和控制。,2.2.1 LED 显示器工作原理,LED(发光二极管Light Emitting Diode的英文缩写)是利用PN结把电能转换成光能的固体发光器件,根据制造材料的不同可以发出红、黄、绿、白等不同色彩的可见光来。LED的伏安特性类似于普通二极管,正向压降约为2伏左右,工作电流一般在10 -20 mA之间较为合适。,LED显示器有多种结构形式,单段的圆形或方形LED常用来显示设备的运行状态,8段LED可以显示各种数字和字符,所以也称为LED数码管,其外形如图2所示。8段LED在控制系统中应用最为广泛,其接口电路也具有普遍借鉴性。因此,我们介绍8段LED数码管显示器。,8段LED显示器的结构与工作原理如图7所示。,一个8段LED显示器的结构与工作原理如图7所示。它是由8个发光二极管组成,各段依次记为a、b、c、d、e、f、g、dp ,其中dp表示小数点(不带小数点的称为7段LED)。8段LED显示器有共阴极和共阳极两种结构,分别如图(b)、(c)所示。 共阴极LED的所有发光管的阴极并接成公共端COM,而共阳极LED的所有发光管的阳极并接成公共端COM。当共阴极LED的COM端接地,则某个发光二极管的阳极加上高电平时,则该管有电流流过因而点亮发光;当共阳极LED的COM端接高电平,则某个发光管的阴极加上低电平时,则该管有电流流过因而点亮发光。,8段LED通过不同段点亮时的组合,可以显示09、AF等十六进制数。显然,将单片机的数据输出口与LED各段引脚相连,控制输出的数据就可以使LED显示不同的字符。通常把控制LED数码管发光显示字符的8位字节数据称为段选码或者字符译码,如图8所示。,2.2.2 LED显示器显示方式,在计算机控制系统中,常利用n个LED显示器构成n位显示。通常把点亮LED某一段的控制称为段选,而把点亮LED某一位的控制称为位选或片选。根据LED显示器的段选线、位选线与控制端口的连接方式不同,LED显示器有静态显示与动态显示两种方式,下面以4个共阴极LED的组合为例进行说明。,1、静态显示 2、动态显示,2.2.2.1 静态显示方式,4个LED组合的静态显示电路如图9所示,图9 LED静态显示方式,例题1:说明4个共阴极LED静态显示3456数字的工作过程。,例题分析:看图9,当所有COM端连接在一起并接地时,首先由I/O口(1)送出数字3的段选码4FH即数据01001111到左边第一个LED的段选线上,阳极接受到高电平“1”的发光管g、d、c、b、a段因为有电流流过则被点亮,则结果为左边第一个LED显示3;接着由I/O口(2)送出数字4的段选码66H 即数据01100110到左边第二个LED的段选线上,阳极接受到高电平“1”的共阴极发光管g、f、c、b段则被点亮,则结果为左边第二个LED显示4;同理,由I/O口(3)送出数字5的段选码6DH即01101101到左边第三个LED的段选线上,由I/O口(4)送出数字6的段选码7DH即01111101到左边第四个LED的段选线上,则第三、四个LED分别显示5、6。,2.2.2.2 动态显示方式,LED动态显示电路如图10所示,图10 LED动态显示方式,例题2:说明4位共阴极LED动态显示3456数字的工作过程,例题分析:看图10, 首先由I/O口(1)送出数字3的段选码4FH即数据01001111到4个LED共同的段选线上, 接着由I/O口(2)送出位选码0111到位选线上,其中数据的高4位为无效的,唯有送入左边第一个LED的COM端D3为低电平“0”,因此只有该LED的发光管因阳极接受到高电平“1”的g、d、c、b、a段有电流流过而被点亮,也就是显示出数字3,而其余3个LED因其COM端均为高电平“1”而无法点亮;显示一定时间后, 再由I/O口(1)送出数字4的段选码66H即 01100110到段选线上,接着由I/O口(2)送出点亮左边第二个LED的位选码1011到位选线上,此时只有该LED的发光管因阳极接受到高电平“1”的g、f、c、b段有电流流过因而被点亮,也就是显示出数字4,而其余3位LED不亮; 如此再依次送出第三个LED、第四个LED的段选与位选的扫描代码,就能一一分别点亮各个LED,使4个LED从左至右依次显示3、4、5、6。,2.2.3 LCD显示器显示方式,字符型液晶显示器,硬件电路参考原理图,#define uchar unsigned char #define uint unsigned int sbit LCD_RS =P03; /RS 1:DATA 0 :COMMAND sbit LCD_RW =P04; /R/W 1:READ 0 :WRITE sbit LCD_E =P05; /E 1:ENABLE #define LCD_ch P2 /- void delay(uint i) while(i-); ,1) LCD线路连接、声明,/*写指令进入LCD1602*/ void LCD_command() LCD_RS=0; LCD_RW=0; LCD_E=0; delay(200); /延时大约2ms LCD_E=1; /*把数据写入LCD1602*/ void LCD_data() LCD_RS=1; LCD_RW=0; LCD_E=0; delay(200); LCD_E=1; ,/- void Init_LCD(void) /*初始化液晶*/ LCD_ch=0x01; /清屏 LCD_command(); LCD_ch=0x38; /8位数据,两行显示,5*7点阵 LCD_command(); LCD_ch=0x0c; /开显示,关光标,关闪烁 LCD_command(); LCD_ch=0x06; /读写数据后AC自动增一,画面不动 LCD_command(); ,/* 将数据ch显示在第i行第j列 */ void LCD_dis(uchar i,uchar j,uchar ch) uchar addr; if(i=0) addr = 0x80+j; /设置为第一行 else addr = 0xc0+j; /设置为第二行 LCD_ch=addr; LCD_command(); /先写地址 LCD_ch=ch; LCD_data(); /后送数据 ,#include /包含52单片机头文件 #include /包含LCD头文件 unsigned char x = “I am a student“; /- void main() /主函数 unsigned int i; Init_LCD(); /首先初始化各数据 while(1) for(i=0;i16;i+) LCD_dis(0, i, 0x30+i); /LCD_dis(0, i, i+0); LCD_dis(1, i, i+A); /LCD_dis(0, i,xi); /显示数组内容 delay(50000); ,2.3 本项目采用键盘及显示电路,2.4 程序代码设计,3. 超声波发射电路,超声波发射电路原理图如下图。发射电路主要由555振荡电路和反向器CD4069和超声波换能器构成,单片机P1.0端口控制555输出的40kHz方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推挽形式将方波信号加到超声波换能器两端可以提高超声波的发射速度。输出端采用两个反向器并联,用以提高驱动能力。两个上拉电阻一方面可以提高反向器CD4069输出高电平的驱动能力;另一方面可以增加超声波换能器的阻尼效果,以缩短其自由振荡的时间。,三、系统硬件电路的设计,用于驱动超声波传感器的40KHz的方波由一片NE555搭成的多谐振荡器生成,受控于控制器的PLUS_EN信号; 555芯片工作电压为12V,CD4069芯片工作电压为12V, 40KHz的方波经, CD4049调理后,成为振幅24V的方波,提高发射功率。,图2 555构成的多谐振荡器电路,3.1 555振荡电路,图3 555芯片3脚的输出波形,压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部结构如下图所示,它有两个压电晶片和一个共振板。当它的两极加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它是一个超声波发生器;反之,如果两极间未加外电压,当共振板接收道超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器了。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。超声波发射换能器上标有字母T,而接收换能器上标有字母R。,超声波换能器结构图,3.2 超声波换能器的工作原理,表1 T/R40的特征参数图,3.2 超声波换能器的工作原理,1.1 超声波检测接收电路1 集成电路CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路,如图所示。实验证明,用CX20106A接收超声波(无信号的输出高电平)具有很高的灵敏度和较强的抗干扰能力。适当地更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。,三、系统硬件电路的设计,4 超声波检测接收电路,CX20106A内部电路图,超声波检测接收电路,4.2 超声波检测接收电路2,4.2 超声波检测接收电路2 发射头发射出去的超声波经障碍物反射后,反射到接收头,而接收到的波形幅度非常小,所以在回波处理电路中,把接收到的波形放大了10000倍,用的LM324搭成的两级交流放大电路。经放大后的波形送入检波电路 ,射随后经LM324比较器;经比较器调理后的波形成为方波,可送给STC89C51的EXT1外部中断。在模块电路的设计中一定要注意,超声波发射头和接收头之间的干扰;一般压电式的超声波换能器都会存在余波的干扰,发射头和接收头间要有20cm的距离;而在发射头发射超声波后的3ms内,接收头会一直接收到发射头传过来的非反射波,这是干扰波,在软件处理的时候一定要注意清除掉此类的干扰。,5 温度测量电路 目前,温度测量方法很多,温度传感器也非常普遍。实验采用DS18B20芯片的“一线式”温度传感器。该传感器只需占用微处理器的一个普通端口,并且多个传感器可以并联在一起使用,适用于多点温度检测系统,节约了大量系统资源。 美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线“接口的温度传感器,在其内部使用了在板(ON-BOARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20体积更小、更经济、更灵活。可以充分发挥“一线总线”的优点。目前DS18B20批量采购价格仅10元左右。 DS18B20的外形及管脚排列如下图 :,三、系统硬件电路的设计,5.1 外形及引脚排列图,DS18B20引脚定义: (1)DQ为数字信号输入/输出端; (2)GND为电源地; (3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。,5.2 DS18B20的主要特性,(1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。 (2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 (4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。 (5)测温范围55125,在-10+85时精度为0.5,5.2 DS18B20的主要特性,(6)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。 (7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。 (8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 (9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。,5.3 内部结构图,DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非易失的温度报警触发器TH和TL、配置寄存器。,5.4 测温原理及框图,DS18B20测温原理如图所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。,5.4 测温原理及框图,5.5 DS18B20有4个主要的数据部件,(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 (2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。,这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。,表1: DS18B20温度值格式表,例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。,表2: DS18B20温度数据表,(3)DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。 (4)配置寄存器 该字节各位的意义如下:,低五位一直都是“1“,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位),高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。第九个字节是冗余检验字节。,5.6 高速暂存存储器,根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。,5.7 电路原理图,DS18B20测温系统具有测温系统简单、测温精度高、连接方便、占用口线少等优点。下面就是DS18B20几个不同应用方式下的测温电路图: 1、DS18B20寄生电源供电方式电路图 如下面图4所示,在寄生电源供电方式下,DS18B20从单线信号线上汲取能量:在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。 独特的寄生电源方式有三个好处: 1)进行远距离测温时,无需本地电源 2)可以在没有常规电源的条件下读取ROM 3)电路更加简洁,仅用一根I/O口实现测温,要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。 因此,图4电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。,2、DS18B20的外部电源供电方式 在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85。,外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。推荐使用外部电源供电方式。在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度,超声波测距器的软件设计主要由主程序、超声波程序发生子程序、超声波接收中断程序及显示子程序组成。由于C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率并且容易精确计算程序运行的时间,而超声波测距器的程序既有较复杂的计算(计算距离时),又要求精确计算程序运行时间(超声波测距时),所以控制程序可采用C语言和汇编语言混合编程。下面对超声波测距器的算法。,四、系统程序的设计,1. 超声波测距器的算法设计 距离计算公式:d=s/2=(vt)/2 其中d是被测物与测距器的距离;s是超声波的来回路程,v是超声波在当前温度下的速度,t是发送和接收超声波所经历的时间。声波在其传播介质中被定义为纵波。当声波受到尺寸大于其波长的目标物体阻挡时就会发生反射;反射波称为回声。假如声波在介质中传播的速度是已知的,而且声波从声源到达目标然后返回声源的时间可以测量得到,从声波到目标的距离就可以精确地计算出来。这就是本系统的测量原理。,四、系统程序的设计,超声波测距器原理图,四、系统程序的设计,T=0 C,超声波在空气中的传播速度C1=331.45m/s, C=331.45+0.61T (m/s) 式中 T:C,2.主程序算法设计 主程序首先要对系统环境初始化,设置定时器工作模式为16位定时、计数器模式,置位总中断允许位EA并对显示端口P0和P2清0;然后调用超声波发生子程序送出一个超声波脉冲。为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延迟0.1ms后才打开外中断0,接收返回的超声波信号。 由于采用12MHZ晶振,计数器每记一个数就是1us,计算当20时的超声波传输速度v=344m/s,则 d=(vt)/2=344t/2=(172T0/106)m=(172T0 /10000)cm 其中T0为中断T0的计数值。 测出距离后,结果以十进制BCD码方式送往LED显示约0.5S,然后再发出超声波脉冲重复测量。,四、系统程序的设计,四、系统程序的设计,主程序流程图,3 超声波发生子程序和超声波接收中断程序 超声波发生子程序的作用是通过P1.0端口发送两个左右的超声波脉冲信号(频率约40KHZ的方波),脉冲宽度为12us左右,同时把计数器T0打开进行计时。超声波发生子程序较简单,但要求程序运行时间准确,所以采用汇编语言程序编程。 超声波测距主程序利用外中断0检测返回超声波信号,一旦接收到返回的超声波信号(即INT0引脚出现低电平),立即进入超声波接收中断程序。进入该中断后,就立即关闭计时器T0,停止计时,并将测距成功标志字赋1。 如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2,表示本次测距不成功。,四、系统程序的设计,4. C程序代码 /*- 超声测距器单片机程序 MCU AT89C51 XAL 12MHz 2004.2.25 -*/ #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long extern void cs_t(void); extern void delay(uint); extern void display(uchar*); data uchar testok;,四、系统程序的设计,/*主程序*/ void main(void) data uchar dispram5; data uint i; data ulong time; P0 = 0xff; P2 = 0xff; TMOD = 0x11; IE = 0x80; while (1) cs_t(); delay(1); testok = 0; EX0 = 1; ET0 = 1; while (!testok) display(dispram);,四、系统程序的设计,if (1 = testok) time = TH0; time = (time8) | TL0; time *=172; time /= 10000; dispram0 = (uchar) (time % 10); time /= 10; dispram1 = (uchar) (time % 10); time /= 10; dispram2 = (uchar) (time % 10); dispram3 = (uchar) (time / 10); if (0 = dispram3) dispram3 = 17; else dispram0 = 16; dispram1 = 16; dispram2 = 16; dispram3 = 16; for (i=0; i300; i+) display(dispram); /,四、系统程序的设计,/*超声接收程序(外中断0)*/ void cs_r(void) interrupt 0 TR0 = 0; ET0 = 0; EX0 = 0; testok = 1; /*超时清除程序(内中断T0)*/ void overtime(void) interrupt 1 EX0 = 0; TR0 = 0; ET0 = 0; testok = 2; ,四、系统程序的设计,1. 当把硬件电路连接好后,接到电源,发现LED灯不亮。LED灯不亮的原因有以下几个: 单片机不工作 LED显示模块的硬件电路设计有问题 LED显示模块的硬件电路连线有问题 故障排查: 单片机不工作。先检查AT89C52单片机的电源线和地线是否接好,发现接线无误。再看晶振电路是否工作,仔细检查发现晶振有一个引脚接错,改正后发现,通电后晶振一端出现5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论