基于GPRS无线射模块的51单片机智能小车设计

上传人:阳*** 文档编号:50677682 上传时间:2022-01-21 格式:DOCX 页数:30 大小:5.55MB
收藏 版权申诉 举报 下载
基于GPRS无线射模块的51单片机智能小车设计_第1页
第1页 / 共30页
基于GPRS无线射模块的51单片机智能小车设计_第2页
第2页 / 共30页
基于GPRS无线射模块的51单片机智能小车设计_第3页
第3页 / 共30页
资源描述:

《基于GPRS无线射模块的51单片机智能小车设计》由会员分享,可在线阅读,更多相关《基于GPRS无线射模块的51单片机智能小车设计(30页珍藏版)》请在装配图网上搜索。

1、目录1概述22系统原理22.1 底盘的选择22.2 电机的选择32.3电机驱动模块42.4 红外循迹模块72.5 超声波测距模块92.6 GPRS模块102.6.1 LQ1000 GPRS DTU 概述102.6.2 使用方式113硬件系统设计113.1单片机选择113.1.1 80C51单片机硬件结构123.1.2 最小应用系统设计133.2 电路设计163.2.1 电机安装与驱动163.2.2 红外循迹模块163.2.3 超声波测距模块163.2.4 DTU无线控制模块173.3 小车的控制184软件系统设计205.心得与体会216.附录221 概述自第一台工业机器人诞生以来,机器人的发展

2、已经遍及机械、电子、冶金、交通、宇航、国防等领域,其涉及到多个学科,机械、电工、自动控制、计算机测量、人工智能、传感技术等等,是众多领域的高科技。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。而智能小车比赛就是机器人技术的一个重要研究方向。智能小车作为机器人的典型代表,可以分为三大组成部分:传感器检测部分、执行部分、CPU。在本次课程设计中,我所制作的智能小车要实现自动避障功能,还拥有扩展循迹等功能,感知导引线和障碍物。基于上述要求,传感检测部分考虑到小车一般不需要感知清晰的图像,只要求粗略感知即

3、可,所以可以舍弃昂贵CCD传感器而考虑使用价廉物美的红外反射式传感器来充当。智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进。CPU使用STC89C51单片机,配合软件编程实现。而本次课程设计所制作的小车,其与众不同的地方在于全部使用上位机通过无线模块对其进行控制,小车本身不具备任何输入设备。小车可以工作在三种模式下,超声波测距模式,红外循迹模式以及无线控制模式。在无线控制模块下可以远距离对其进行前后左右停的操作。除此之外,还可以实现手机对小车的状态控制。2 系统原理该智能小车模型是一辆由PCB和车体拼装的小车。所有的机械结构和零部件都安装固定在电路板上,除几个特殊模块是由自己手动

4、焊之外,其余是买回的封装好的模块。其稳定性更高。2.1 底盘的选择底盘的作用在于固定电机,并安置其他模块。根据个人喜好,可以选择4轮的和2轮+万向轮式的。我选择的是4轮驱动小车。2.2 电机的选择图2.1 直流减速电机右图为小车使用的直流减速电机,减速比为1:48,额定电压为39V.当我们在直流电机的两极施加一定的电压后,电机开始匀速转动,如果这时候将电极对调,原来的正极变负极、负极变正极,那么电机就会反向转动。小车转弯则是通过左右两侧电机速度不同来控制的。图2.2 直流减速电机参数下图是典型的“H”桥电路,采用下面这种电路,即可实现上面所说的电极翻转,从而达到电机的正反转。图2.3“H”桥电

5、路常态下,4个桥臂的开关保持开路状态,这时候电机两端悬空,没有电压。当1、4开关闭合,2、3开关打开,电流从1号开关流经电机,再从4号开关流出,这时候电机正转。 当2、3开关闭合,1、4开关打开,电流从2号开关流经电机,再从3号开关流出,这时候电机反转。通过上面的分析,我们只需要通过控制1、2、3、4 号开关的打开与关闭,即可以实现对电机转向的控制。如果在改变开关的导通时间,即控制pwm占空比,就可以实现对电机转速的调节。下面我们将要介绍电机驱动模块。2.3电机驱动模块图2.4 电机驱动模块L298N电路图L298N是专用驱动集成电路,属于H桥集成电路,与L293D的差别是其输出电流增大,功率

6、增强。其输出电流为2A,最高电流4A,最高工作电压50V,可以驱动感性负载,如大功率直流电机,(二相、三相、四相)步进电机,伺服电机,电磁阀等,特别是其输入端可以与单片机直接相联,从而很方便地受单片机控制。当驱动直流电机时,可以直接控制两路电机,并可以实现电机正转与反转,实现此功能只需改变输入端的逻辑电平。本模块具有体积小,控制方便的特点。具体使用方法:板上的EN1与EN2为高电平时有效,只有当EN1与EN2为高电平时,电机才旋转,则电机不转,这里的电平指的是TTL电平。EN1为IN1和IN2的使能端,EN2为IN3和IN4的使能端。当EN1=1,IN1=1 INT2=0时电机1正转,EN1=

7、1,IN1=0 IN2=1电机1反转。同理,当EN2=1,IN3=1 IN4=0电机2正转,EN2=1,IN3=0 IN4=1电机2反转。A-、B-接电机1,C-、D-接电机2。图2.5 L298N实物图下面,我们将要研究L289N的供电问题,L298N的输出电压跟供电电压是有关系的:经过实验我们发现,输入多少V,输出就差不多是多少V(略有损耗)。由原理图我们知道,L298N供电方式有两种。方式一,由于L298N的逻辑控制电压是5V的,所以可以为它提供5V电源。方式二,用12V铅蓄电池为其供电,A通道和B通道输出的是驱动电机的12V电压,同时选择板载5V使能,这时+5V供电端可以输出5V电压(

8、此时不能再给+5V供电端加电压了,否则会烧掉78M05),向外供电,以方便外部的控制电路使用。图2.6 L298N工作方式2.4 红外循迹模块此模块是为智能小车,机器人等自动化机械装置提供一种多用途的红外线探测系统的解决方案。该传感器模块对环境光线适应能力强 , 其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物 ( 反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2 6 0cm ,工作电压为3.3V-5V 。该传感器的探测距离可以通过电位器调节、具有干扰小、

9、便于装配、使用方便等特点,可以广泛应用于机器人避障 、 避障小车、流水线计数及黑白线循迹等众多场合。下面我们来了解一下此模块的具体介绍,其中,每1 路的传感器的红外发射管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于关断状态,此时模块的TTL 输出为高电平,相应指示二极管一直处于熄灭状态;当被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管导通,此时模块的TTL 输出端为低电平,指示二极管被点亮。图2.7 红外循迹模块实物图下面是接法说明:图2.8 红外循迹模块引脚介绍模块接线说明:1.DO1-1 路TTL 电平输出2.DO2-

10、2 路TTL 电平输出3.DO3-3 路TTL 电平输出4.DO4-4 路TTL 电平输出5.GND-接电源负极6.VCC-接电源正极2.5 超声波测距模块图2.9 超声波模块实物图 其工作原理如下:控制口发一个10US以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。如此不断的周期测,就可以达到你移动测量的值了。(1)采用 IO 触发测距,给至少10us 的高电平信号;(2)模块自动发送8 个40khz 的方波,自动检测是否有信号返回;(3)有信号返回,通过IO 输出一高电平,高电平持续的时间就

11、是(4)超声波从发射到返回的时间测试距离=(高电平时间*声速(340M/S/2;超声波时序图如下:图2.10 超声波时序图其接口定义如下:Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd2.6 GPRS模块此模块是本课程设计重点,也是相对于以往智能小车创新之处。在本课程设计中,我们使用了灵旗通信的 LQ1000 GPRS DTU通信模块。图2.11 LQ1000 GPRS DTU实物图2.6.1 LQ1000 GPRS DTU 概述LQ1000 GPRS DTU采用了先进的GPRS无线通信技术、嵌入式单片机技术和TCP/IP网络通信技术,其稳定性强、可靠性高、实时性好、应用性广、功

12、能强大,是一种实现串口设备数据通过无线透传到中心软件的有力设备。LQ1000 GPRS DTU 提供标准RS232/485数据接口,可以方便的连接RTU、PLC、串口仪表、工控机等设备,仅需一次性完成初始化配置,用户设备就可以与数据中心通过GPRS无线网络建立连接,实现数据的全透明传输。2.6.2 使用方式安装SIM卡将SIM卡从DTU的外壳背面的插槽中插入,SIM卡座插入插槽后需要卡紧,以防SIM未插入到位导致终端通信异常。然后用螺丝锁紧插槽外的挡板。目前在中国大陆地区的中国移动和中国联通的手机卡都可以使用。在其他国家或地区的GPRS网络的手机卡也可以使用。DTU一共有四种应用方式图2.12

13、 LQ1000 GPRS DTU应用方案我们所应用的是第一种方案,只不过稍稍做些改动,进行DTU与中心软件进行通信。3 硬件系统设计3.1单片机选择一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROMRAMI/O口定时/记数器中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既按照系统功能要求配置外围设备,如键盘显示器打印机A/DD/A转换器等,要设计合适的接口电路。3.1.1 80C51单片机硬件结构80C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。如果

14、按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。1) 微处理器该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。2) 数据存储器片内为128个字节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为

15、数据存储器。3)程序存储器由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节。4) 中断系统具有5个中断源,2级中断优先权。5) 定时器/计数器片内有2个16位的定时器/计数器, 具有四种工作方式。6) 串行口1个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。7) P1口、P2口、P3口、P4口为4个并行8位I/O口。8) 特殊功能寄存器共有21个,用于对片内的个功能的部件进行管理、控制、监视。实际上是一些控制寄存器和状

16、态寄存器,是一个具有特殊功能的RAM区。由上可见,80C51单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。3.1.2 最小应用系统设计80C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单可靠。

17、在本次课程设计中,我使用的便是51单片机最小系统。用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图80C51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:有可供用户使用的大量I/O口线。内部存储器容量有限。图3.1 80C51单片机最小系统应用系统开发具有特殊性。1、时钟电路80C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。80C51单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振

18、荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHZ到12MHZ之间选择。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,但在60pF到70pF时振荡器有较高的频率稳定性。所以本设计中,振荡晶体选择6MHZ,电容选择65pF。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。为了提高温度稳定性,应采用NPO电容。2、复位电路80C51的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器用来抑

19、制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。时钟频率用6MHZ时C取22uF,R取1K。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。按键手动复位电路见图3.2。时钟频率选用6MHZ时,C取22uF,Rs取200,RK取1K。图3

20、.2 80C51复位电路3.2 电路设计选好单片机后,我们将各个模块逐个进行调试。3.2.1 电机安装与驱动将四个电机安装在小车底盘上,并固定好,然后将电机与L298N模块相连,通过以上的介绍,我们可以知道,如果是做两轮驱动,需要一个L298N,4轮驱动需要用2个L298N。其中,一个控制左上,右上, 一个控制左下,右下。我们分别将其编号为1号和2号。1号L298N的in1in2控制右上,in3in4控制左上。2号L298N的in1in2控制左下,in3in4控制右下。我们用P00P03控制L298N输入,这样,两个l298n需要8个输入,即占用单片机的8个端口,在实验的过程中,我们发现,左上

21、左下的电机是同步的,右上右下电机是同步的。因此说,1号L298N的in1in2和2号L298N的in3in4是相同的控制信号,1号L298N的in3in4和2号L298N的in1in2是相同的控制信号,我们自己焊了一个板子,具有三排排针,然后对应的引脚短路,其中一排连接单片机的引脚,另外两排分别连接1号L298N和2号L298N。这样,我们就节省了四个单片机的IO输出。IN 1/IN2IN 3 /IN41右上左上2左下右下图3.3 L298N引脚控制在此模块中,我们采用第一种供电方式,即直接用单片机供电。3.2.2 红外循迹模块我们将红外循迹模块的D0D3与单片机的P04P07口相连。用来检测

22、数据的输出,是否检测到障碍物,当检测到障碍物,会输出低电平。3.2.3 超声波测距模块将Echo与P11相连,Trig与P12相连。3.2.4 DTU无线控制模块首先,对DTU进行设置。使用串口线将DTU与电脑相连,打开设备管理器,查看所用端口。然后打开LQ1000 GPRS DTU参数配置与服务端软件。图3.4 LQ1000 GPRS DTU参数配置打开串口,进入设置,然后是终端参数联网设置。其接入中心IP设置为所在网络IP地址。点击设置按钮。图3.5 LQ1000 GPRS DTU终端参数联网设置返回LQ1000 GPRS DTU参数配置与服务端软件。点击退出设置。以上是DTU设置过程。3

23、.3 小车的控制本课程设计,集成了三个模块,红外循迹,超声波测距与无线通信模块,因此此智能小车可以工作在三种工作方式下。默认为无线控制模块。三种工作模式的选择都是通过DTU无线模块进行控制。选择不同的模式,将给单片机发送不同的指令。如下图是自己编写的上位机程序,右下角部分是控制面板。图3.6 LQ1000 GPRS DTU上位机程序当我们选择超声波测距模式时,小车会进行超声波测距,并适时根据距离障碍物的距离进行运动方式的调整,我们将阈值设置为15,当距离小于15cm时,小车的运动状态为先后退0.8秒后向右运动0.8秒。当小车工作在红外循迹模块时,小车会按照地面上的黑线前进,及时调整方向。当小车

24、工作在无线模式下,我们可以控制小车5种运动状态,前后左右停。除此之外,小车还可以由手机控制其运动状态。下面介绍手机控制小车运动过程。如下图是手机控制小车运动的APP。图3.7 手机控制小车运动APP首先输入DTU所在网络IP地址。点击连接。下面即可对小车的运动状态进行控制。4 软件系统设计图4 智能小车系统程序框图其中,软件程序包括三部分。第一部分,51单片机程序编写,将各个模块模块化到一起,控制小车工作在各个模式。如上图所示是智能小车的系统程序框图。主要处理流程包括初始化、判断等。初始化主要设定处理的各项外设,如时钟、定时器、IO输入输出、SPI、UART、DMA等等。第二部分,上位机程序的

25、编写。由C+的MFC程序。编写了控制小车运动的控制面板。第三部分,手机App编写。这部分是求教于实验室的师兄帮助编写完成的。5.心得与体会经过半个学期的努力,终于顺利的完成了基于GPRS无线发射模块的51单片机智能小车设计,可以实现用上位机控制小车工作在不同的工作模式下,或者是利用手机APP控制小车的运动状态。在制作的过程中,遇到了许多问题,并不断去解决,学习到了许多知识。首先对于单片机的基础知识有了一定的了解,更加深入的了解了定时器,中断的使用。除此之外,学习了GPRS模块,可以完成远距离无线控制。软件方面,进一步学习了程序的模块化,使得程序更加简洁。另外,学习了c+编程,编写了上位机MFC

26、程序。十分具有成就感。存在的问题,因为在整个过程中将重点放在无线模块的调试,对于超声波与红外循迹模块没有过多的投入,导致成果检测的时候发现超声波测距模块硬件出现问题,导致效果不稳定。对于红外循迹模块,最初小车的速度过快,当循迹转弯的时候小车来不及反应,所以看起来不够灵敏,因此降低占空比,降低小车的速度可以很好的解决这个问题。整体来说,虽然任务大体完成,单仍然存在许多可以改进的地方。例如小车的速度不能实时的控制,距离可以返回给上位机但是不能显示在小车上,因此说另外可以添加显示模块,对速度距离进行实时的显示。对于超声波和红外效果也可以进一步进行改进。另外还可以集成摄像头模块等。此次的课程设计不仅教

27、会了我专业知识,更加让我明白了要想学到东西要亲自动手这个道理,一个部分一个部分的完成,一个问题一个问题的解决。将各个部分整合到一起,软件与硬件是分不开的。遇到问题也要不骄不躁,认真学习进而解决问题。6.附录Main.c/*- P0.1-P0.4用于电机控制 中断用来接收数据-*/#include /包函8051内部资源的定义#include #include #include delay.h #include move.h#include chuankou.h#include hongwai.h#include UltrasonicDistanceDriver.h#include Ultras

28、onicDistanceConfig.h/#include /unsigned char temp; bit rec=0, send=1; /#include main() char pcOutBuf30; /串口返回超声波测距字符串缓存 unsigned int iOld=0; /超声波测得的距离 unsigned int control_flag; InitUART(); while(1) control_flag=get_control_flag(); if(control_flag=1) send_byte(temp); while(control_flag=1) InitUltras

29、onicDistance(); /当调用测距函数后,返回为0,表示测距成功,否则测距函数正在延迟中/当取值有效时,如果与前次值没变化,则不作更新 iOld = getDistance(); /sprintf(pcOutBuf, S=%drn, iOld); /SerialSendStr(pcOutBuf); /送到串口 if(iOld30) stop_car(); delay1ms(10); back(); delay1ms(1000); delay1ms(1000); stop_car(); delay1ms(10); turn_right(); /右边不转 左边转 int1,2控制右侧 d

30、elay1ms(1000); delay1ms(1000); else straight(); else if(control_flag=2) hongwai(); /P0=0XF0; send_byte(temp); else if(control_flag=3) /state=W; while(temp!=I&temp!=U) send_byte(temp); if( temp=Q) stop_car(); delay1ms(5); straight(); delay1ms(100); delay1ms(100); else if(temp=H) stop_car(); delay1ms(

31、5); back(); delay1ms(100); delay1ms(100); else if(temp=Y) turn_right(); /右边不转 左边转 int1,2控制右侧 delay1ms(1000); delay1ms(1000); else if(temp=Z) turn_left(); /左边不转 右边转 delay1ms(1000); delay1ms(1000); else if(temp=T) stop_car(); delay1ms(1000); delay1ms(1000); /*-Move.c-*/#include#include move.h#include

32、delay.h void straight() int1=1; int2=0; int3=1; int4=0; void back() int1=0; int2=1; int3=0; int4=1; void turn_right() /右边不转 左边转 int1,2控制右侧 int1=0; int2=0; int3=1; int4=0; void turn_left() /左边不转 右边转 int1=1; int2=0; int3=0; int4=0; void stop_car() /停 int1=0; int2=0; int3=0; int4=0; /*-hongwai.c-*/#inc

33、lude /包函8051内部资源的定义#include #include move.h#include delay.h#include hongwai.h void hongwai() if(text1=0&text2=0&text3=1) /探测到之后输出为0; stop_car();delay1ms(100);turn_right(); delay1ms(1000); delay1ms(1000); if(text1=1&text2=0&text3=0) /探测到之后输出为0; stop_car();delay1ms(100);turn_left();delay1ms(1000); del

34、ay1ms(1000);else stop_car();delay1ms(100);straight();delay1ms(100); /*-chuankou.c-*/#include /包函8051内部资源的定义#include #include chuankou.hunsigned int control_flag;void InitUART(void) TMOD = 0x20; SCON = 0x50; TH1 = 0xFD; TL1 = TH1; PCON = 0x00; EA = 1; ES = 1; TR1 = 1;control_flag=3;void send_byte(uns

35、igned char str1) if(rec=1)&(send=1) /rec=1 说明接收完数据既没有发也没有收 SBUF=str1; rec=0; send=0; /*- *向串口发送一个字符串 以0结束 *param char *str 需要发送的字符串指针 *return void *-*/void SerialSendStr(char *str) while(*str)send_byte(*str+);unsigned int get_control_flag() return control_flag;void UARTInterrupt(void) interrupt 4 if

36、(RI) RI = 0;temp=SBUF;rec=1;if(temp=U) control_flag=1;if(temp=I) control_flag=2;if(temp=W) control_flag=3; else TI = 0;send=1;/*-UltrasonicDistance.c-*/#include /包函8051内部资源的定义#include #include UltrasonicDistanceDriver.h#include UltrasonicDistanceConfig.h/*/ HC-SR04 超声波测距模块操作库 /-/ 晶振:11.0592 / Create

37、 Date:2011-09-27 User:JerryLi / email: / 工作时将会占用 T0 计数器 / HC-SR04 的探测精度范围为 2cm-400cm / / 在当前晶振工作频率下,一次有效测距需要23.42ms / /-/#define uchar unsigned char#define uint unsigned intuint distance;int time,sum=0;int succeed_flag;uchar timeL,i;uchar timeH;void delay_20us() uchar a ; for(a=0;a0;x-) for(y=110;y0

38、;y-);/*- *获取最近一次测得的距离 * 注意:每次成功测距,需要耗时100ms-150ms左右时间 *-*/unsigned int getDistance(void) for(i=0;i10;i+) EA=0; /关总中断 Trig=1; /超声波输入端 delay_20us(); /延时20us Trig=0; /产生一个20us的脉冲 while(Echo=0); /等待Echo回波引脚变高电平 succeed_flag=0; /清测量成功标志 EA=1; EX0=1; /打开外部中断0 TH0=0; /定时器1清零 TL0=0; /定时器1清零 TF0=0; /计数溢出标志 T

39、R0=1; /启动定时器0 delay(10); /等待测量的结果 TR0=0; /关闭定时器1 EX0=0; /关闭外部中断0 if(succeed_flag=1) time=timeH*256+timeL; distance=time*0.0172; /厘米 if(succeed_flag=0) distance=100; /没有回波则清零 sum=sum+distance; distance=sum/10; / display(distance); sum=0; return distance;/外部中断0,用做判断回波电平void exter() interrupt 0 / 外部中断0是0号 EX0=0; /关闭外部中断 timeH =TH0; /取出定时器的值 timeL =TL0; /取出定时器的值 succeed_flag=1;/至成功测量的标志 /定时器1中断,用做超声波测距计时void timer1() interrupt 1 / TH1=0; TL1=0; 30 / 30文档可自由编辑打印

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!