2010单片机课程设计_第1页
2010单片机课程设计_第2页
2010单片机课程设计_第3页
2010单片机课程设计_第4页
2010单片机课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、 摘 要超声波具有指向性强,能量消耗缓慢,传播距离较远等优点,所以,在利用传感器技术和自动控制技术相结合的测距方案中,超声波测距是目前应用最普遍的一种,它广泛应用于防盗、倒车雷达、水位测量、建筑施工工地以及一些工业现场。本设计主要是基于AT89S52芯片为核心的超声波测距仪,并有超声波处理模块CX20106A、CD4069组成的超声波发射电路、数码管显示等器件组成,包括单片机系统、超声波发射电路、超声波接收电路、单片机复位电路、LED显示电路。主要实现超声波测距并指示功能。依据实际的测量精度要求还可以添加温度补偿电路。本系统成本低廉,功能实用。关键词:超声波 单片机 测距 AT89S52一 单

2、片机AT89S52的特性AT89C系列单片机是Atmel公司生产的一款标准型单片机。其中数字9表示内含Flash存储器,C表示CMOS工艺。其管脚图如图1.1所示。图1.1 AT89C单片机管脚图AT89S52是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89S52是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-

3、51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89S52是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。1主要特性:与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:100写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 2管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每

4、脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P

5、2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘

6、故。P3口也可作为AT89C51的一些特殊功能口,如下所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,

7、ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FF

8、FFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。4芯片擦除:整个PEROM

9、阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。二 超声波测距的原理单片机发出超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波, 从而测出发射和接收回波的时间差t,然后求出距离,如公式2

10、-1 (2-1)式(2-1)中的c为超声波在空气中传播的速度。限制该系统的最大可测距离存在四个因素:超声波的幅度、反射物的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。接收换能器对声波脉冲的直接接收能力将决定最小可测距离。为了增加所测量的覆盖范围,减少测量误差,可采用多个超声波换能器分别作为多路超声波发射/接收的设计方法。由于超声波发球声波范围,其波速c与温度有关,表1-1列出了几种不同温度下的波速。表2-1 声速与温度的关系温度()3020100102030100声速(m/s)313319325323338344349386波速确定后,只要测得超声波往返的时间t,即可求得距离S。其系

11、统原理框图如图2-1所示。图2-1 超声波测距系统框图单片机AT89S52发出短暂的40kHz信号,经放大后通过超声波换能器输出;反射后的超声波经超声波换能器作为系统的输入,锁相环对此信号锁定,产生锁定信号启动单片机中断程序,读出时间t,再由系统软件对其进行计算、判别后,相应的计算结果被送至LED数码管进行显示。三 超声波测距系统电路的设计3.1 总体设计方案由单片机AT89S52编程产生40kHz的方波,由P3.6口输出,再经过放大电路,驱动超声波发射探头发射超声波。发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的检波放大、积分整形及一系列处理,送至单片机。单片机

12、利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。该测距装置是由超声波传感器、单片机、发射/接收电路和LED显示器组成。传感器输入端与发射接收电路相连,接收电路输出端与单片机相连接,单片机的输出端与显示电路输入端相连接。其时序图如图3-1所示。图3-1 时序图单片机在T0时刻发射方波,同时启动定时器开始计时,当收到回波后,产生一负跳变到单片机中断口,单片机响应中断程序,定时器停止计数。计算时间差,即可得到超声波在媒介中传播的时间t,由此便可计算出距离。3.2硬件系统:电路原理图:图3-2硬件电路可分为单片机系统及显示电路、超声波发射电路和超声波检测

13、接收电路三部分。 3.2.1单片机系统及显示电路本系统采用AT89S52来实现对超声波传感器的控制。单片机通过P1.0引脚经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。 超声波测距的硬件示意图如图3所示:单片机采用89S52或其兼容系列。采用12MHz高精度的晶振,已获得较稳定的时钟频率,减少测量误差。单片机用P1.0端口输出超声波换能器所需的40KHz的方波信号,利用外中断0口检测超声波接收电路输出的返回信号。 3.2.2显示的输出

14、显示的种类很多,从液晶显示、发光二极管显示到CRT显示器等,都可以与微机连接。其中单片机应用系统最常用的显示是发光二极管数码显示器(简称LED显示器)。液晶显示器简LCD。LED显示器价廉,配置灵活,与单片接口方便,LCD可显示图形,但接口较复杂成本也较高。该电路使用7段LED构成字型“8”,另外还有一个发光二极管显示符号及小数点。这种显示器分共阳极和共阴极两种。这里采用共阳极LED显示块的发光二极管阳极共接,如下图1所示,当某个发光二极管的阴极为低电平时,该发光二极管亮。它的管脚配置如下图3-2所示。VCC图1图2图3-2实际上要显示各种数字和字符,只需在各段二极管的阴极上加不同的电平,就可

15、以得到不同的代码。这些用来控制LED显示的不同电平代码称为字段码(也称段选码)。如下表为七段LED的段选码。 表3-1 七段LED的段选码显示字符共阳极段选码dp gfedcba显示字符共阳极段选码dp gfedcba 0 C0H A 88H 1 F9H B 83H 2 A4H C C6H 3 B0H D A1H 4 99H E 86H 5 92H F 8EH 6 82H P 8CH 7 F8H y 91H 8 80H 8. 00H 9 90H“灭” FFH本系统显示电路采用简单实用的4位共阳LED数码管,位码用PNP三极管8550驱动。单片机系统显示电路如图3-3所示。图3-3:单片机系统及

16、显示电路 3.2.3超声波发射电路超声波发射电路原理图如图3-4所示。发射电路主要有反向器CD4069和超声波发生换能器T构成,单片机P1.0的端口输出 40KHz方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端,可以提高超声波的发射强度。输出端采用两个反向器并联,用以提高驱动能力。上拉电阻R10,R11一方面可以提高反向器74lS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由震荡的时间。图3-4超声波发射电路原理图 3.2.4超声波检测接收电路集成电路CX2010

17、6A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38KHZ与测距的超声波频率40KHZ较为接近,可以利用它制作超声波检测接收电路(图3-5)。实验证明用CX20106A接受超声波(无信号时输出高电平),具有很高的灵敏度和较强的抗干扰能力。适当更改电容C4 的大小,可以改变接收电路的灵敏度和抗干扰能力。图3-5 :超声波检测接收电路原理图3.3软件部分 系统软件设计采用模块化设计,主要包括主程序设计、T1中断服务子程序、INT0外部中断服务子程序、测温子程序、距离计算子程序、显示子程序、延时子程序和报警子程序设计等。系统软件编制时应考虑相关硬件的连线,

18、同时还要进行存储空间、寄存器以及定时器和外部中断引脚的分配和使用。本设计中P1.0引脚连接到7 HC04推挽放大电路再连接到超声波发射传感器,P1.0引脚输出的将是软件方式产生的40 kHz方波,而P3.2(INT0)则被用来接收回波。定时器T1,T0均工作在工作方式1,为16位计数,T1定时器被用来开启一次测距过程以它的溢出为标志开始一个发射测量循环,T0定时器是用来计算脉冲往返时间,它们的初值均设为0。系统初始化后就启动定时器T1从0开始计数,此时主程序进入等待,当到达65 ms时T1溢出进入T1中断服务子程序;在T1中断服务子程序中将启动一次新的超声波发射,此时将在P1.0引脚上开始产生

19、40 kHz的方波,同时开启定时器T0计时,为了避免直射波的绕射,需要延迟1 ms后再开INT0中断允许;INT0中断允许打开后,若此时P3.2(INT0)引脚出现低电平则代表收到回波信号,将提出中断请求进入INT0中断服务子程序,在INT0中断服务子程序中将停止定时器T0计时,读取定时器T0时间值到相应的存储区,同时设置接收成功标志;主程序一旦检测到接收成功标志,将调用测温子程序,采集超声波测距时的环境温度,并换算出准确的声速,存储到RAM存储单元中;单片机再调用距离计算子程序进行计算,计算出传感器到目标物体之间的距离;此后主程序调用显示子程序进行显示;若超过设定的最小报警距离还将启动扬声器

20、报警;当一次发射、接收、显示的过程完成后,系统将延迟100 ms重新让T1置初值,再次启动T1以溢出,进入下一次测距。如果由于障碍物过远,超出量程,以致在T0溢出时尚未接收到回波,则显示“ERROR”重新回到主流程进入新一轮测试。主程序和定时器T1、外部中断INT0中断服务子程序的框图分别,如图3-6所示。图3-6: INT0中断服务子程序流程图此外,还有几点需要说明的是:(1)定时器T1之所以是65 ms溢出是因为它是16位定时计数器(65 535)。在使用12MHz的晶振时,由于周期T=1/f=1(12106)12=1s,则一个机器周期是1s,计数器每65 ms计数器溢出。(2)本设计中4

21、0 kHz方波的产生采用软件方式实现:控制P1.0口输出12s的高电平,再输出13s的低电平,这样得到一个周期的40 kHz的脉冲,再循环发送8次。(3)在CPU停止发送脉冲群后,由于电阻尼,换能器不能立即停止发送超声波,在一段时间内仍然会发送,故这段时间内不可立即开启INT0接收回波,要等待一段后以避免发送端的部分直射波未经被测物就直接绕射到接收端,这段被称为“虚假反射波”。从发射开始一直到“虚假反射波”结束这段时间,不开放INT0中断申请,可有效躲避干扰,但也会造成测试的“盲区”。本次设为1 ms,假定温度为20,则测量盲区为s=110-33442172 cm。(4)最大测试距离将取决于:

22、两次脉冲群发送之间的最小时间间隔和脉冲的能量。一般来说,发射端脉冲个数越多,能量越大,所能测的距离也越远。但也不是无限制的,本次读取定时器T0的计数值,最大能测试的距离是T0尚没溢出,故在温度20下,最大测试距离为s=vt2=65 535344(2106)=11272 m。在一些周期性发射超声波设备中,如果要测试的最大距离是10 m,则两次脉冲群之间的最小时间为t=2s/v=21034460:ms 。3.4超声波测距仪的算法设计 超声波测距的原理为超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。这样只要计算出从发出超声波信号到接收到返

23、回信号所用的时间,就可算出超声波发生器与反射物体的距离。距离的计算公式为: d=s/2=(ct)/2(1-2) 其中,d为被测物与测距仪的距离,s为声波的来回的路程,c为声速,t为声波来回所用的时间。在启动发射电路的同时启动单片机内部的定时器T0,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在INT0或INT1端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。其部分源程序如下:WORK:PUSHACCPUSHPSWPUSHBMOVPSW,#18HMOVR3,45HMOVR2,44HM

24、OVR1,00DMOVR0,17DLCALLMUL2BY2MOVR3,#03HMOVR2,0E8HLCALLDIV4BY2LCALLDIV4BY2MOV40H,R4MOVA,40HJNZJJ0MOV40H,#0AHJJ0:MOVA,R0MOVR4,AMOVA,R1MOVR5,AMOVR3,00DMOVR2,#100DLCALLDIV4BY2MOV41H,R4MOVA,41HJNZJJ1MOVA,40HSUBBA,#0AHJNZJJ1MOV41H,#0AHJJ1:MOVA,R0MOVR4,AMOVA,R1MOVR5,AMOVR3,#00DMOVR2,10DLCALLDIV4BY2MOV42H,R

25、4JNZJJ2MOVA,41HSUBBA,#0AHJNZJJ2MOV42H,#0AHJJ2:MOV43H,R0POPPOPPSPOPACRET 超声波发生子程序和超声波接收中断程序 超声波发生子程序的作用是通过P1.0端口发送2个左右超声波脉冲信号(频率约40kHz的方波),脉冲宽度为12s左右,同时把计数器T0打开进行计时。超波发生子程序较简单,但要求序运行准确,所以采用汇编言编程。超声波测距仪主程序利用稖中断0检测返回超声波信号,一旦接謶到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检

26、测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。前方测距电路的输出端接单片机INT0端口,中断优先级最高,左、右测距电路的输出通过与门IC3A的输出接单片机INT1端口,同时单片机P1.3和 P1.4接到IC3A的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左。部分源程序如下: INTT0:CLREACLRTR0MOVTH0,#00HMOVTL0,#00HSETBET1SETBEASETBTR0SETBTR1OUT:RET;T1中断,发超声波用:INTT1:CPLVOUTDJNZR4,RETIOUTCLRTR1CLRET1MOV

27、R4,#04HSETBEX0RETIOUT:RETI;外中断0,收到回波时进入PINT0:CLRTR0CLRTR1CLRET1CLREACLREX0MOV44H,TL0MOV45H,TH0SETB00HRETI超声波检测接收电路主要是由集成电路CX20106A组成,它是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38 kHz与测距的超声波频率40 kHz较为接近,可以利用它制作超声波检测接收电路。实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。适当更改电容Cs的大小,可以改变接收电路的灵敏度和抗干扰能力。

28、附录一:完整程序VOUTEQUP1.0ORG0000HLJMPSTARTORG0003HLJMPPINT0ORG000BHLJMPINTT0ORG0013HRETIORG001BHLJMPINTT1ORG0023HRETIORG002BHRETI;*主程序*START:MOVSP,#4FHMOVR0,#40HMOVR7,#0BHCLEARDISP:MOVR0,#00HINCR0DJNZR7,CLEARDISPMOV20H,#00HMOVTMOD,21HMOVTH0,#00HMOVTL0,00HMOVTH1,0F2HMOVTL1,0F2HMOVP0,0FFHMOVP1,0FFHMOVP2,0FF

29、HMOVP3,0FFHMOVR4,04HSETBPX0 SETBET0 SETB EASET TR0START1: ALLDISPLAYJNB00H,START1CLREALCALLWORKSETBEACLR00HSETBTR0MOVR2,#64HLOOP:LCALLDISPLAYDJNZR2,LOOPSJMPSTART1INTT0:CLREACLRTR0MOVTH0,#00HMOVTL0,#00HSETBET1SETBEASETBTR0SETBTR1OUT:RET ;T1中断,发超声波用:INTT1:CPLVOUTDJNZR4,RETIOUTCLRTR1CLRET1MOVR4,#04HSET

30、BEX0RETIOUT:RETI;外中断0,收到回波时进入PINT0:CLRTR0CLRTR1CLRET1CLREACLREX0MOV44H,TL0MOV45H,TH0SETB00HRETI;*显示程序:*DISPLAY:MOVR1,#40H;GMOVR5,#0F7H;GPLAY:MOVA,R5MOVP0,#0FFHMOVP2,AMOVA,R1MOVDPTR,#TABMOVCA,A+DPTRMOVP0,ALCALLDL1MSINCR1MOVA,R5JNBACC.0,ENDOUT;GRRAMOVR5,AAJMPPLAYENDOUT:MOVR2,#0FFHMOVP0,#0FFHRETTAB:DB0

31、C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH;共阳段码管0,1,2,3,4,5,6,7,8,9,不亮,A,-;延时程序:DL1MS:MOVR6,#14HDL1:MOVR7,#19HDL2:DJNZR7,DL2DJNZR6,DL1RET;*距离计算程序*WORK:PUSHACCPUSHPSWPUSHBMOVPSW,#18HMOVR3,45HMOVR2,44HMOVR1,00DMOVR0,17DLCALLMUL2BY2MOVR3,#03HMOVR2,0E8HLCALLDIV4BY2LCALLDIV4BY2MOV40H,R4MOVA,40HJNZJJ0MOV40H,#0AHJJ0:MOVA,R0MOVR4,AMOVA,R1MOVR5,AMOVR3,00DMOVR2,#100DLCALLDIV4BY2MOV41H,R4M

温馨提示

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

评论

0/150

提交评论