基于ARM超声波测距模块开发毕业设计(论文)

来源:银行从业 发布时间:2020-09-04 点击:

毕业设计(论文)
基于ARM的超声波测距模块开发 目录 第一章 概述 1 1.1课题来源 1 1.2超声检测技术简述 1 1.2.1超声波检测 1 1.2.2超声检测误差来源 2 1.3系统任务和要求 3 1.4系统方案设计 3 1.5系统开发意义及应用 4 第二章 系统原理分析 5 2.1超声波检测系统分析 5 2.1.1超声波测距原理 5 2.1.2温度补偿原理 5 2.2超声波检测预备知识 6 2.2.1超声波的应用 6 2.2.2超声波传感器 7 第三章 系统总体设计 11 3.1智能测量模块总体设计 11 3.1.1超声传感器的选择 11 3.1.2超声信号的处理 12 3.2系统模块电路设计 13 3.3系统通信总体设计 13 3.3.1串行通信基本概念 13 3.3.2串行通信过程 14 3.4系统通信软件设计 14 第四章 系统硬件设计 16 4.1关键器件选择 16 4.1.1嵌入式ARM微处理器LPC2131 16 4.1.2液晶显示器 16 4.1.3 超声波传感器 16 4.2超声波检测模块 17 4.2.1超声波收发分体回路设计 17 4.2.2超声波收发一体回路设计 19 4.3液晶模块 20 4.3.1 FYD12864-0402B液晶模块介绍 20 4.3.2 FYD12864-0402B液晶模块的应用 21 4.4串口通信模块 21 4.4.1 串行通信协议 21 4.4.2 串行通信总线标准接口 21 4.5温度补偿模块 22 4.5.1温度传感器DS18B20原理 22 4.5.2 DS18B20与ARM接口电路 22 4.6电源模块 23 第五章 系统软件设计 24 5.1系统程序总体设计 24 5.2下位机程序设计 25 第六章 系统测试 29 6.1系统操作 30 6.2测试结果分析 31 第七章 系统展望 33 结束语 34 致 谢 34 参考文献 35 附录一、系统PCB图 37 附录二、整机实物图 37 附录三、主要程序代码 38 附录四、翻译 41 第一章 概述 1.1课题来源 超声波测距技术是近年来出现的测距新技术[1],是一种非接触的检测方式,和红外、激光及无线电测距相比, 它具有结构简单、可靠性能高、价格便宜、安装维护方便等优异特性,在近距范围内超声测距具有不受光线、颜色以及电、磁场的影响,在恶劣作业环境下有一定的适应能力[2]。

因此利用超声波测距在实现定位及环境建模场合,如:液位、汽车防撞雷达、井深及管道长度测量、机器人定位、辅助视觉系统等方面得到广泛的应用。但传统的超声波测距仪测量精度普遍较低,都不能满足高精度测量的要求。为了克服此不足, 作者从测距仪结构设计和回波信号处理的角度出发,提出了基于回波包络峰值[3]的检测方法,从而进一步提高测距仪超声检测的精度、系统的稳定性和抗干扰性对。本设计是基于ARM来实现的。

1.2超声检测技术简述 1.2.1超声波检测 图1-1声波频率界限 声波是一种能在气体、液体和固体中传播的机械波。根据声波振动频率的范围,可以分为次声波、声波、超声波和特超声波。一般人耳能听到的声音的频率范围在20Hz~20kHz之间,频率低于20Hz的波称为次生波,而高于20kHz的波称为超声波,频率高于Hz的波称为特超声波[4]。声波频率界限如图1-1所示。超声波检测中常用的工作频率在0.25~20MHz范围内。

由于超声波具有的这些良好的品质,超声波的研究和应用已经渗入工业、农业、国防、医学以及航天和航空等领域并且取得了卓有成效的进展[5]。甚至有人认为超声技术可以和电子技术、信息技术以及核技术相媲美,是一门具有广阔发展前景的高新技术。

1.2.2超声检测误差来源 本系统采用渡越时间法进行物位测量,通过不断检测超声波发射后遇到被测界面所反射回来的回波,从而测出发射和接收回波的时间差t,然后求出待测物位到传感器的距离L,在已知声速v的情况下,不难得出:
L=0.5vt (1)
下面对影响超声波距离测量精度的因素进行逐一分析。

(1)声速 从式(1)可以看出,必须知道声波在媒质中的传播速度v,才能从传播时间求出待测距离,但是各种媒质有不同的声速。因此,在实际测量时,很难把声速看成一个不变的恒量。当媒质的成分、温度、压强等因素都没有很大的变化,而且测量精度要求又不很高的情况下,把声速当作不变的方法才能勉强满足测量要求,否则就应该进行声速校正。

在多数情况下,温度是影响声速的一个重要因素,例如在空气中声速理论公式为:
(2)
式中 T为摄氏温度,式(2)表明空气中声速是温度的函数,此时式(1)为 m (3)
不难看出,温度每变化1℃,引起声速变化约千分之1.8。这对测量结果影响较大。所以,应进行温度补偿。通常情况下,可在设备中安装温度敏感元件,采用适当的补偿电路,利用敏感元件的输出信号来对声速进行校正。

(2)硬件响应时间 硬件电路是有一定延时的。例如滤波电路一般在几十微秒左右。另外超声物距测量系统中广泛采用ARM来检测渡越时间,而ARM系统的延时,相对来讲也比较大。例如利用ARM的外部中断来检测回波触发信号。尽管它己经被设置为最高的中断优先级,并且不会被其他的中断所阻碍,但是中断响应是需要一定时间的。

(3)触发时间 一般来说,以接收信号的幅值超过我们规定的阈值时的时刻作为停止计时信号[6]。当待测物位发生变化时,接收电路输出信号的幅值就发生变化,距离近输出信号幅值较大,此时在回波信号的第二周幅值就有可能超过规定的阈值,进而发出停止计时信号,距离较远时,输出信号幅值较小,回波信号的第3周(甚至第4周)幅值才有可能超过规定的阈值,并发出停止计时信号。从理论上讲,停止计时信号应在图中的a点发出,由于阈值的存在,而实际停止信号是在下图中的a点之后的某一时刻发出。并且发出的时刻(时间检出点)是随物位的变化而变化,这种“时间检出点”的变化就产生了物位测量的误差。

图1-2 放大滤波后的回波信号 1.3系统任务和要求 1、测量范围:
0~15m 2、测量精度:
±1% 3、使用温度范围:
-10℃~50℃ 4、显示:
液晶显示 5、电源:
内置电源,外置稳压电源12~24V 6、抗干扰:
去噪声能力强(检波能力强) 7、检测类型:
用1或2个超声头 8、外部接口:
RS232接口 1.4系统方案设计 超声波测距技术在工业生产和科学研究中得到广泛的应用。超声波测距电路多种多样,甚至已有专用超声波测距集成电路[7],但是有的电路复杂,技术难度大,有的调试困难,专用集成电路的成本很高,操作很不方便。目前,国内的超声波测距专用集成电路的精度只能达到厘米级,可以满足一般工业测量的要求,但对于一些精度要求较高测距场合就不合适了。

本测距系统是基于ARM开发的,抗干扰性强,利用超声波测距原理,结合ARM的数据处理,测量精度可以达到毫米级。串行通信、LCD显示于一体。串行通信功能可以使系统和PC机进行通信;
LCD显示功能用于显示测量数据。

本系统采用渡越时间法测量超声波,所谓渡越时间法可以表述为:设超声波发射传感器到目标障碍物的距离为L,超声波在空气中的传播速度为v,超声波从发射到接收传感器接收所经历的渡越时间为t,则L=vt/2。

其中该系统中超声波的往返时间间隔由ARM通过外部中断定时获得,并将定时结果通过软件的算法算出最终距离,将最终结果通过ARM送液晶显示。再通过RS232串口通信,将测得数据送给上位机显示,实现对数据的实时监控。

为了充分利用ARM中的资源,尽量降低测距系统的成本,系统采用ARM控制产生40kHz的方波信号,驱动超声波传感器,为了增强测距范围,在发射部分增加信号功率发大电路,为了进一步提高发射信号的功率[8],从而提高测距范围。在对接收信号的处理,系统采用了电压跟随、放大、电压比较的方案,成本低廉,由于超声波在传播的过程中有很大程度的衰减,当到达超声波接收传感器的时候,信号已经此相当的小,因此必须对接受信号进行放大,放大后再送往电压比较器进行比较。通过比较检测出有用信号,送给ARM进行处理,从而实现对待测距离的测量,由于环境温度对超声波传播速度的影响比较大,所以需要采集环境温度,并对超声波传播速度进行修正。

为了便于实时检测、控制,可以将测量到的数据每次距离变化时通过串口传送给上位机,上位机可对测量到的数据进行相应的数字信号处理。

1.5系统开发意义及应用 超声波检测与控制技术是以超声波作为采集信息的手段,能在不损坏和不接触被测量对象的情况下探测对象。距离是在不同的场合和控制中需要检测的一个参数,超声波测距是一种很有效的测量方法,有着广泛的应用。但目前的超声波测距系统存在着精度低,盲区大及测量数据不稳定等问题。针对上述缺点,作者 设计了独特、有效的盲区消隐和接收信号处理方法,并进行温度补偿,从而提高了测量精度和灵活性;
以ARM作为控制中心,研制了智能化、便携式超声波测量系统。该系统的各种技术指标均能达到工程应用的要求,具有很大的市场潜力。

第二章 系统原理分析 2.1超声波检测系统分析 2.1.1超声波测距原理 本系统以ARM为核心,由ARM控制定时发出方波信号,同时准备接收。发射机产生40KHz左右的脉冲信号,经放大后驱动超声波传感器,方波信号经超声波传感器转换为超声信号向障碍物发射。超声波信号在介质中传播遇到待测物体表面时,由于不同介质的反射性能差异很大,对超声波的传播影响不同。其发射波被接收电路接收时,转变成电信号,该信号经相应地选频、检波、放大后,再进行信号判别,给ARM相应的触发信号,ARM对接收数据进行处理,并参照发出控制脉冲的基准时间,得出超声波在介质中的传播时间。其基本检测实现方法如图2-1所示。其原理可用公式表示为。

2-1智能测量模块系统图 2.1.2温度补偿原理 常温常压下,空气近似为理想气体。超声波在理想气体中传播速度为 m/s,式中为气体摩尔质量;
r为气体的比热比;
R为气体常数;
T为热力学温度。对于一定的气体r、为定值。由公式可知:声速与热力学的平方根成正比。温度越高声速越大,温度越低声速越小。必须考虑温度对超声波的传播速度的影响,设0时声速为,则t时声度为,则 m/s, m/s 。又 0时,空气中声速的实验值为331.42m/s,那么t空气中声速的表达式为:,式中m/s,即:。用ARM进行开方运算在程序上实现比较困难,为了便于ARMC语言编程,现用数学软件Matlab编程实现对公式的简化,运用Matlab多项式拟合编程实现如下:
t=0:0.01:100; %拟合的温度范围 v0=331.42*(1+t/273).^0.5; %声速与摄氏温度的理论公式 v=polyfit(t,v0,3); %拟合出的声速与温度多项式 fv=polyval(v,t); subplot(1,2,1) plot(t,v0,'.',t,fv,'-r'); gtext('蓝色曲线为理论速度曲线'); ylabel('速度 V0((m/s)'); xlabel('温度 t(℃)'); subplot(1,2,2); plot(t,fv,'-r'); y=poly2sym(v); gtext('红色曲线为拟合速度曲线'); ylabel('速度 V(m/s)'); 图2-2拟合曲线和理论曲线比较 xlabel('温度 t(℃)'); 运行Matlab程序得出的拟合声速与摄氏温度曲线与理论上声速与摄氏温度曲线对比图2-2。运行程序后,可得拟合声速与摄氏温度的关系:
m/s。

于是,通过传感器测的空气中的温度代入上述公式,即可得到超声波在空气中的传播速度,再检测出超声波在空气中传播的时间T,便可得到超声波在空气中传播的距离:

2.2超声波检测预备知识 2.2.1超声波的应用 超声波传感器是利用超声波特性而研制成的传感器,超声波传感器技术已广泛用工业、国防、交通、生物医疗和家庭领域[9]。超声波技术的应用如下表所示。

用途 备注 用途 备注 工 业 金属材料及非金属材料的探伤 测量金属与非金属的厚度 超声振动切削加工(金属与非金属)
超声波清洗零件 超声波焊接 超声波流量计 超声波料位及液位检测与控制 超声波显微镜 温度计 各种制造业 板材、管材 钟表业、精密仪表、轴承 半导体器件生产 化工、石油、轻工 海洋 鱼群探测 深度测量 声纳 水中摄影 通信 定向通信 医疗 超声波诊断仪(显像技术)
超声波胎儿状态检查仪 超声波血流计 超声洁牙器 断层图象 2.2.2超声波传感器 (1)超声波传感器原理 超声波传感器有两种工作方式:直射式,反射式。反射式超声波传感器的工作原理如图2-3所示。首先由振荡器产生40kHz方波信号,在经过放大器来驱动超声波发送器,使之发出40kHz超声波向外传播,超声波接收器接收到上述信号后,就通过放大器和滤波器得到控制信号,送至控制器。图中的a、b构成双晶体片,再40kHz超声波驱动下,发送器中的双晶体片在不同方向被压缩或拉伸就形成了超声波。

图2-3 超声波传感器的工作原理 (2)超声波基本特性 1.频率特性。图2-4是某超声波发射器的频率特性曲线,为发射器的中心频率,在该频率处,发射器所产生的超声波最强,即超声声压能级最高,而在两侧,声压能级迅速衰减。因此在使用当中,一定要用频率接近的交流电压来驱动超声波发射器。图2-5是某超声波接收器的频率特性.其中为中心频率.由图2-5知,当并联电阻较大时,曲线在处最尖锐.接受灵敏度最高,可知超声波具有较好的选频特性,其特性优势与并联电阻R有关。

图2-4 超声波发生器的频率特性 图2-5 超声波接收器的频率特性 图2-6 超声波传感器的指向特性 2.指向特性。由于传感器压电晶片是一个圆形片,故可以把其表面划分为许多小点,把每个点都看作为一个振荡源,辐射出一个半球面波——子波,这些子波虽没有指向性,但离传感器空间某一点的声压是这些子波叠加的结果,都具有指向性,如图2-6所示,当℃时,声压最大,角度逐渐增大或减小时,声压减小。

(3)超声波的回波检测 ①小波分析理论 小波分析是一种信号的时间一尺度(时间一频率) 分析方法,它具有高分辨率的特点,而且在时、频两域都具有表征信号局部特征的能力,是一种窗口大小固定不变但其形状可改变、时间窗和频率窗都可以改变的时频局部化分析方法。它在低频部分具有较高的频率分辨率和较低的时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率。因此,可以利用小波分析法对接收到的回波信号进行分析、去噪,获得更加平滑、有效的回波包络曲线,进而可以利用峰值检测法准确计算出回波前沿的到达时刻。我们在这里采用Morlet复小波。因为当其形状控制参数取较小值时。在几何形状方面,它较其它类型小波函数更加相似于接收回波波形。根据小波分析的最大匹配原则,当子波与所分析的号在几何形状上越相似时,利用该子波提取到的信号特征就越准确。Morlet复小波函数的数学表达式为: (1)
图2-7 Morlet复小波 式中j = - 1,β为形状控制参数,当取β= 1时,其实部、虚部及模如图2-7 所示。

图2-8 回波包络峰值检测波形 从图2-7可以看出,复小波函数的模可完全平滑地包络其实部和虚部。

因此,利用复小波函数的模便可很容易获得回波信号的小波包络分析。回波信号经小波包络运算处理后,可以帮助剔除环境噪声信号,获得更平滑、理想的回波包络曲线。利用包络峰值检测原理对小波包络后的回波信号分析处理,从而准确计算回波前沿的到达时刻。

②回波信号的包络峰值检测 根据小波分析理论提出一种新的确定回波前沿的计算方法,即回波信号的包络峰值检测法。通过示波器对回波波形进行观察,可以发现对同一探测物,不同传播距离的回波包络线都有较好的一致性,回波波形都大致相同,只是波幅不同,并且同一距离时的不同类型探测物的回波波形也大致相同,只是波幅不同。

从工程精度考虑,可以认为超声回波幅值包络线的形状基本不随回波信号的大小而变化。

即回波信号包络峰值所对应时刻b与回波前沿到达时刻a间的时间差( b- a) 不随探测物远近的变化而变化。而时间差( b- a)也容易通过实验计算出来。

因此,可将接收回波信号的包络峰值所对应的时刻b作为停止记数的时刻,用回波包络峰值所对应时刻与回波前沿到达时刻的时间差( b- a) 就可消除由于时间检出点变化所引起的测量误差。

回波信号在进行线性包络检波之后,在分别通过微分电路、零点交叉检测,最后进入ARM外部中断0的入口,从而完成传播声时的准确计时。因为采用包络峰值时间点的检测方法与信号振幅无关, 故具有优良的传输时间检出特性。包络峰值检出原理及波形如图2-8所示。包络峰值检测也可以消除虚假回波的干扰,使达到阀值的虚假回波可以被峰值检测滤掉。因为超声波接收回波的幅值随传播距离的增加而成指数规律衰减,所以采用AGC 电路使放大倍数随距障碍物距离的增加成指数规律增加的电路。在计数器开始计时的时刻,AGC 电压开始随时间增加而增加,在检测到回波脉冲后清零。零交叉点检测可以保证回波到达时刻不受回波大小变化。采用鉴宽电路可以抑制偶然的尖峰干扰信号,使尖锐的干扰信号被鉴宽电路挡住而不能到达电平比较电路。

因此,采用包络峰值检测可以保证回波前沿的准确到达时刻。

接收器等待发射脉冲第一个回波的同时,通知定时器/计数器T0在微处理器的外部中断接收到回波到来信号,T0计数器停止计数。ARM一旦识别到的第一个回波到达时,便发生中断,终止内部计数器计数,并对计数器中的数据进行程序处理。ARM通过内部设定程序的运算,可以算出超声波传感器到当前的障碍物的距离,并将测得的距离实时地在液晶显示模块上显示。

第三章 系统总体设计 3.1智能测量模块总体设计 利用第二章讲述的测距原理,作者设计了超声波测距系统,它的作用是检测当前障碍物的距离,并将测得的结果实时地在液晶上显示出来,并可将检测得到的数据值通过RS232/485网络传送给上位机控制器。

图3-1 超声测距原理框图 由图可看出该系统共有5个模块组成:超声波发射模块、超声波接收模块、温度补偿模块、液晶显示模块、串行通信模块。对于具体电路模块的介绍见以下章节。

3.1.1超声传感器的选择 超声检测精度取决于检测方法、仪器和超声换能器性能。目前在低超声频段(20~100kHz),喇叭辐射面的面积比棒状换能器大,所以辐射面的声强较低,与其粘结的不锈钢板表面空化腐蚀小。在本系统中采用喇叭状换能器,这种换能器尤其在较高频段{40kHz以上),其优点更为突出。因为它可以削弱横向振动所带来的不良影响,频带也较宽。在选择中,要综合考虑超声接收换能器各项参数指标,比如其与电路的阻抗匹配问题,如果电路的输入阻抗与换能器的阻抗不一致,就会引起驻波,使波形模糊。

3.1.2超声信号的处理 系统的性能受背景噪声的限制,从抗干扰的角度来说,应充分利用信号场与干扰场在时--空统计特性上的差异,对超声信号进行处理,以便最大限度地获得增益。

1.信号的放大和噪声的抑制。由于从接收换能器传来的信号很微弱,又存在着较强的噪声,所以放大信号和抑制噪声是首先必须考虑的。通常使用低噪声晶体多级调谐放大器完成此项任务[11]。在检测过程中,由于工作频带窄,故应按功率匹配,使前置放大器的输入阻抗与换能器输出阻抗的数值相近。通带中心频率等于信号频率。这样环境噪声中的绝大部份能量就被阻挡在通带之外了,但对通带内的噪音抑制则无能为力。可以通过增加发射功率和提高接受基阵的方向性来提高信噪比,使这个问题得到改善。

2.混响及其抑制。通常较简单的抑制混响方法是使用一定时间规律(例如指数规律)来控制接收机增益的时间,增益控制界(TVG)对出现在接收机输入端的信号和混响及噪声进行动态压缩。要使放大器增益随时间变化的规律与混响随时间衰减的规律严格相反是很困难的,补偿的方法是增加一个自动增益控制器(AGC) [12]。

3.回波信号的处理。回波信号的包络通常是不规则的,不便对它进行数字处理,所以对它整形是必要的,整形电路形式多样,可以是单稳态电路,也可以是施密特触发器或其它电路。

为了进一步滤除噪声及混响的影响,可设置一门限检测阈值,该门限电平一般大于噪声的均方根值。当信号超过阈值时判断为有目标回波,若阈值过高,只有强信号才能被检出,这样检出概率就降低;
若阈值过低,信号超过阈值的机会多了,但同时噪声超过阈值的机会也多,则检出的有用信号夹杂的噪声就会增多。

4.对目标回波信号的进一步处理。进行数字滤波和计算,求从发射信号开始到收到目标回波为止的深度(距离)历经时间值,并将它转换成深度(距离)值,然后将此值显示并打印。可采用微处理器。

本系统中,由ARM产生的波形通过隔离放大后驱动超声换能器的发送端,换能器的接收端接收的信号比较弱,另外由于换能器本身的特性和声程中随机干扰、传播介质的非均匀性等造成的信号时延抖动是随机的,包含很多的噪声信号。又由于超声波的传播介质中存在很多不确定的因素,难以抑制,这样势必影响检测精度。对超声信号的模拟处理首先我们对信号的输出端进行隔离,防止回波产生,在混波信号中选取其中有用信号,滤除无用的噪声信号,防止驻波干扰。在简单的模拟化处理后,从软件上对信号进行数字化的处理。

本系统中数字信号处理是在ARM中用程序来实现的。在此,作者采用平均滤波法,去除最大值和最小值后,将几个采样信号的平均值作为一个信号值,这样就能将信号中的瞬时干扰噪声减小。选用多少采样信号求其平均值,是根据信号频率及噪声的特征来确定的。同时也应用程序判断滤波法,从程序的角度判断有用信号,将无用信号滤除,通过仿真实验证明,通过以上的信号处理方法能有效的保证超声信号的重现,失真程度也很小。

3.2系统模块电路设计 图3-1主机控制器总结构框图 智能测量模块电路部分主要包括超声信号检测电路、LCD液晶显示、RS232通信接口等部分。主机控制器在液晶显示屏中将具体数据显示出来,液晶显示采用字符型液晶显示模块。并将测得的数据通过串口传送给上位机,同时进行存储。主机控制器总结构框图如图3-1所示。

3.3系统通信总体设计 3.3.1串行通信基本概念 (1)数据通信的基本概念 系统在实际工作中,像上位机的CPU与外部设备之间常常要进行数据交换一样,为了通过上位机对系统进行实时控制,将系统测得数据实时传送给上位机,所有这些信息交换均可称为数据通信。本系统采用的是串行数据通信方式,接口为RS232串口,实验证明这种通信方式简单易行,符合本系统要求。

(2)串行通信 图3-2 发射接收时钟数据位比较 在串行通信过程中二进制数字系列以数字信号波形的形式出现。不论接收还是发送,都必须有时钟信号对传送的数据进行定位。接收/发送时钟就是用来控制通信设备接收/发送字符数据速度的,该时钟信号通常由处理器内部的时钟电路产生。在接收数据时,接收器在接收时钟的上升沿对接收数据采样,进行数据位检测;在发送数据时,发送器在发送时钟的下降沿将移位寄存器的数据串行移位输出。如图3-2所示: 3.3.2串行通信过程 两个通信设备在串行线路上实现成功的通信必须解决两个问题:一是串-并转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;二是设备同步,即同步发送设备和接收设备的工作节拍相同,以确保发送的数据在接收端被正确读出。

3.4系统通信软件设计 系统通信软件由下位机、主机控制器通信软件和上位机控制软件三部分组成。

下位机通信软件功能主要是接收主机控制器发送过来的信号,针对各下位机地址发送应答信号,再根据主机控制器发来的控制信号做出相应的反应,随后发送主机控制器所需数据。其通信功能使用了ARM的串行中断和查询收发状态标志位的方法实现。下位机平时对各监控点的进行数据采集并定时存贮,当有串行中断时执行串行中断服务程序,判别是否为本机的地址信息,地址信息与本机地址相符时,转为接收控制命令,并执行相应的操作;
地址信息与本站地址不符时则退出中断。下位机通信流程图如图3-4所示。

图3-4下位机通信流程 图3-5 上位机通信软件界面 主机控制器的通信软件实现功能主要包括呼叫各从机,并向各机发送查询控制命令。其工作过程为控制器发送需呼叫的从机的地址,然后等待接收从机的应答信号,若应答信号正确即发送控制命令,若应答信号不正确则重新发送需呼叫的地址,并等待接收应答信号,接收到应答信号后接收有个下位机发送的数据,存储在相对应的数据存储区并在LCD液晶显示屏中显示出来。本系统的上位机控制软件由Delphi7编写,具有良好的可视效果,功能包括数据发送、数据接收、串口通信设置等功能。上位机通信软件界面如图3-5。

第四章 系统硬件设计 4.1关键器件选择 4.1.1嵌入式ARM微处理器LPC2131 (1)嵌入式ARM微处理器LPC2131概述 LPC2131是基于一个支持实时仿真和跟踪的16/32 位ARM7TDMI-STM CPU[15],并带有32kB、64kB 和512kB 嵌入的高速Flash 存储器[15]。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率下运行[17]。多个32 位定时器、1个或2 个10 位8 路的ADC、10 位DAC、PWM 通道、47 个GPIO 以及多达9 个边沿或电平触发的外部中断使它们特别适用于工业控制应用以及医疗系统[18] (2)嵌入式ARM微处理器LPC2131主要特性[19] ① 2 个32 位定时器/计数器(带4 路捕获和4 路比较通道)、PWM 单元(6 路输出)和看门狗。

② 多个串行接口,包括2 个16C550 工业标准UART、2 个高速I2C 接口(400 kbit/s)、SPITM 和具有缓冲作用和数据长度可变功能的SSP。

③ 片内晶振频率范围:1~30 MHz。

④ 单电源,具有上电复位(POR)和掉电检测(BOD)电路:
⑤ 高速:RISC型8051内核,速度比普通8051快12倍。

4.1.2液晶显示器 液晶显示器(LCD)凭借其功耗低、图形美观等多种优势,在仪器仪表产品中得到越来越多的应用,FYD12864-0402B是一种多功能的LCD驱动器,可以用软件的方式设定系统功能,由于选择的是串行数据传输方式,所以FYD12864-0402B和ARM之间只需要6根线的接口。

4.1.3 超声波传感器 本测距系统中的超声波传感器[20]采用生产的T40-16(送信用)和R40-16 (受信用) 的压电陶瓷传感器[21]。下图为超声波传感器的型号说明:
图4-1 超声波传感器型号说明 4.2超声波检测模块 超声波检测模块主要包括发射超声波产生、超声传感器驱动部分、超声回波的接收放大、滤波、信号比较电路。根据所选超声波传感器的类型及个数,超声波检测电路可分为:收发分体回路和收发一体回路。下面对两种方案进行介绍。

4.2.1超声波收发分体回路设计 图4-2 硬件电路整机原理图 该方案采用一对单收、单发型超声波传感器。发射电路主要由超声波传感器(发射),集成电路IC555、IC4049组成。电路采用555集成芯片构成一个频率为40kHz的多谐振荡器,再通过IC4049集成电路驱动超声波传感器。接收电路主要由超声波传感器(接收),集成运放LM5532,比较器LM393,集成电路IC4011,IC555以及三极管9012组成。IC555构成一个延时回路,主要是用来设置超声波检测的盲区[22]。集成运放LM5532构成一级、二级放大电路,实现对超声波回波信号的增幅,LM393则是运用电压比较的原理来设置检测回波的阈值,从而识别回波信号的到达。四个2输入的与非门4011构成一个RS触发器,保持超声波的检出信号为一脉宽可变的正脉冲,脉冲宽度就是超声波渡越时间,三极管9012用来实现对检出正脉冲信号进行放大,然后送给ARM的中断口。ARM通过中断启动内部计数器对正脉冲进行计数,再进行处理得到脉冲的宽度,即超声波的渡越时间[23]。超声波的整机、发送及接收电路如图4-2和图4-3、图4-4所示。

图4-3 超声波发送模块 (a)超声波接收电路 (b)延时电路 (c)保持检出回波电路 图4-4 超声波接收电路 4.2.2超声波收发一体回路设计 该方案采用收发兼用型超声波传感器。收发一体回路[24]主要由集成电路IC4049,IC4011,集成运放LM5532,比较器LM393及二极管,三极管组成。电路由ARM的T0口产生40kHz超声波,经三极管构成的共射极放大电路放大,再经过IC4049驱动超声波传感器。收到的回波信号经过LM5532一、二级放大,在经过比较器LM393和IC4011构成的RS触发器检出一脉宽可变的正脉冲信号,脉宽就是超声波的渡越时间,检出的正脉冲被送到ARM的中断口,ARM通过中断启动内部计数器对正脉冲进行计数,再进行处理得到脉冲的宽度,即超声波的渡越时间。超声波收发一体电路如图4-5所示。

图4-5 超声波收发一体电路 以上两种方案的主要区别是分体回路发送的40kHz超声波由硬件电路产生,一体回路的40kHz超声波ARM[25]通过软件编程产生,从总体上考虑本系统采用收发分体方案,因为本系统的可编程模块较多,加上ARM的容量有限,在设计的时候要尽量减少系统的程序,所以本系统采用收发分体回路。

4.3液晶模块 4.3.1 FYD12864-0402B液晶模块介绍 (1)FYD12864-0402B引脚说明 管脚号 名称 LEVEL 功能 1 VSS 0V 电源地 2 VDD +5V 电源正(3.0V-5.5V)
3 V0 - 对比度(亮度)调整 4 CS H/L 模组片选端,高电平有效 5 SID H/L 串行数据输入端 6 CLK H/L 串行同步时钟:上升沿时读取SID数据 15 PSB L L:串行方式 17 /RESET H/L 复位端,低电平有效 19 A VDD 背光源电压+5V 20 K VSS 背光源负端0V (2)时序图与指令表 1. 串口读写时序图 图 4-6 串口读写时序图 2. 串口数据线模式数据传输过程图 图 4-7串口数据线模式数据传输过程图 4.3.2 FYD12864-0402B液晶模块的应用 (1)与嵌入式ARM微处理器接口 ARM与液晶FYD12864选用串行总线通信方式,所以液晶FYD12864的15脚PSB接低,ARM通过P0.13脚和FYD12864液晶模块进行通信,时钟控制由P0.11脚完成,P0.15脚控制FYD12864的片选端CS,其中ARM与液晶供地。

4.4串口通信模块 4.4.1 串行通信协议 通信协议是对数据传送方式的规定,包括数据格式的定义和数据位定义等。通信方式必须遵从统一的通信协议。串行通信协议包括同步协议和异步协议两种,在这里只讨论异步串行通信协议。要想保证通信成功,通信双方必须有一系列的约定。这种约定就叫做通信规程或协议,它必须在编程之前确定下来。只有双方都正确地识别并遵守这些规定才能顺利地进行通信。

4.4.2 串行通信总线标准接口 由于系统是3.3V系统,所以要使用SP3232E进行RS-232电平转换。JP6为UART0口连接跳线,当使用串口功能时,将这些跳线短接到相应的功能端,JP6应短接TxD0和RxD0,在本系统中SP3232E芯片与ARM接口如图4-9所示。

图4-9 SP3232E和ARM接口 4.5温度补偿模块 由于超声波的声速受环境温度的影响较大,所以在应用超声波进行检测时,需要对超声波的速度进行温度的补偿。本系统采用DALLAS公司生产的单总线、数字式温度传感器DS18B20采集环境温度送给ARM,由ARM通过软件编程对超声波的速度进行温度补偿。

4.5.1温度传感器DS18B20原理 DS18B20为1-Wire总线的数字温度传感器[26],其可提供可编程的9位至12位的摄氏温度(对于华氏温度应用场合,可以查表转换)的测量,其功能模块图如图4-10所示,引脚定义为: GND--地;
VDD--电源;
DQ--数据输入输出端。。配置寄存器用以给用户自由选择将DS1SB20传感器的数字输出设置为9,10,11或12位。8位CRC发生器用于暂存器读写阶段提供循环冗余检验使用。

图4-10 DS18B20功能模块图 4.5.2 DS18B20与ARM接口电路 DS18B20与ARM微处理器的硬件接口比较简单。图4-11和图4-12给出了DS18B20在两种供电方式下的硬件接口电路图。当设备使用外部电源供电的时候,使用ARM的一个通用接口就可以实现数据的传递。

图4-11 DS18B20寄生供电电路 图4-12 DS18B20外部供电电路 DS18B20也可以采用寄生电源供电,这在远程度测量和测量空间受限制的情况下特别有价值。需要注意的是,DS18B20在进行温度转换或者将暂存寄存器里面的数据复制到EEPROM[27]内的时候,所需要的电流会达到1.5mA。这个电流将通过上拉电阻导致不期望的压降,而且超出了Cpp即所能提供的电流,此时可用如图4-11所示的一个三极管来提供电流。在本系统中DS18B20与ARM的接口电路如图4-13所示。

图4-13 DS18B20与ARM2131接口电路 4.6电源模块 系统内部配置了+12V和+5V的稳压源,外部配置了12V~24V的直流输入接口,用户有很大的选择空间。系统内部电源模块如图4-12。

图4-14 系统电源模块 第五章 系统软件设计 5.1系统程序总体设计 本系统采用嵌入式ARM微处理器LPC2131为控制核心控制器件[28],用C语言进行编程。本章主要介绍用系统的软件实现,本系统软件主要有两部分:上位机(PC)控制软件和下位机(嵌入式ARM微处理器)控制软件。下位机软件包括40kHz超声信号的产生、回波检测[29]、数据处理程序、温度检测、液晶、SP3232E芯片、存储器芯片的驱动程序。上位机软件主要是串口通信软件包括串口设置,发送数据、接收数据窗口等,可以在线设置各种通信速率、奇偶校验、通信端口而无需重新启动程序,可以设置定时发送的数据以及时间间隔;
可以自动显示接收到的数据,并能在字符串、十进制和十六进制之间进行切换[30];
设置串口连线DTR、RTS线和显示CD、CTS、DSR线的状态。软件是整个系统的灵魂,系统的最终实现必须要依靠软件来实现。系统下位机软件功能框图如图5-1所示,系统上位机软件流程框图如图5-2所示:
图5-1下位机软件功能框图 图5-2 上位机软件流程图 5.2下位机程序设计 系统的下位机主要负责环境温度的采集及超声测量信息的采集、处理、保存并通过串口将最终结果传送给上位机。系统测试的结果由ARM控制在液晶上显示。系统主程序流程图如图5-3所示。下面对各个电路模块的程序设计进行说明。

图5-3 下位机主程序流程图 (1)超声波(40kHz)的产生 40kHz超声波的产生运用了ARM的内部时钟来实现的,通过软件将ARM的某个I/O口(系统为P0.0脚)置“1”或“0”,高低电平的周期为25us。根据系统硬件要求在发射超声波时需要发送6-10个波。具体检测程序见附录 (2)超声波渡越时间的检测 系统收到的回波信号被放大、滤波、比较处理,最终送到ARM中断口的是一脉宽可调的正脉冲,脉宽就是超声波的渡越时间。具体程序见附录。

(3)FYD12864-0402B液晶模块驱动程序设计 FYD12864-0402B液晶模块程序实现流程图如图5-4,具体程序见附录。

图5-4 FYD12864-0402B液晶模块程序流程图 (4)温度传感器驱动程序设计 本系统采用 DALLAS半导体公司最新单线数字温度传感器DS18B20,DS18B20是支持 “一线总线”接口的温度传感器。由于 DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20时序图如下图所示。

图5-5 DS18B20复位时序 图5-6 DS18B20读时序 图5-7 DS18B20写时序 5.3上位机程序的设计 系统上位机程序是在Delphi的开发环境中利用了微软的Visual Basic中提供的一个串口控件-Microsoft Communication Control(简称MSComm)控件进行串口编程的。

5.3.1 MSComm控件处理通讯方式 (1)事件驱动方式 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。可以利用 MSComm 控件的OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

(2)查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

5.3.2 MSComm控件属性 MSComm控件有很多重要的属性,但首先必须熟悉几个属性[31]:CommPort设置并返回通信端口号:Settings以字符串的形式设置并返回数据传输速率、奇偶校验、数据位、停止位;
PortOpen设置并返回通信端口的状态,也可以打开和关闭端口;
Input从接收缓冲区返回和删除字符;
Output向传输缓冲区写一个字符串。MSComm控件常用的几个属性:CommPort属性、Settings属性、PortOpen属性、Input属性、Output属性。

5.3.3 MSComm控件的使用 MSComm控件通过串行端口发送和接收数据,为应用程序提供串行通信功能,使用非常方便。下面对Delphi中使用MSComm控件进行通信编程进行简单介绍。

(1)初始化并打开串口 设置MSComm控件的属性可以在程序设计期时直接指定,也可以在程序运行期间设置。除了使用对象观察器设置MSComm控件的属性外,Delphi还提供了一个属性对话框,双击窗体中的MSComm控件即可弹出,可以通信端口号、通信协议 、传输速率参数、数据接收格式、通信端口开/关进行设定。

(2)捕捉串口事件 MSComm控件可以采用查询或事件驱动的方法从端口获取数据。由于控件的OnComm事件通过CommEvent属性能够反映串口当前发生的错误和事件,所以操作串口最简单的方法就是适当地设置控件Rtreshold属性为一个正数,然后编写其OnComm事件处理代码。

(3)串口的读写 串口的读写分为两种情况:字符串的读写和二进制数的读写。由于Input和Output中都是Variant变量 ,Delphi能够直接将它们和字符串类型相互转换,所以可以直接读取MSComm控件的Input属性,以及直接用字符串为Output属性赋值。如果双方是以二进制形式发送数据,如果一方以字符串形式读写,那么通信就会失败。

(4)关闭串口 在使用完MSComm通信对象后,需要将通信端口关闭。如果关闭窗体,占用的端口也会被关闭。

5.3.4系统通信软件设计 图5-8系统通信软件界面 在安装MSComm控件后,选择“File|New|Application”菜单项,保存项目和单元文件。然后在主窗口中添加各类组件,建立系统通信软件界面如图5-8,具体实现程序见附录。

第六章 系统测试 6.1系统测试 测试主要仪器:12V~24V稳压电源一台 Tektronix TDS 2012 100MHz 1GS/s 示波器一台 万用表一台 PC机一台(有串口)
测试结果如下:
6.1.1发射回路的测试 用示波器观测超声波发射电路输出的驱动超声波传感器工作声波波形,峰-峰值为5V,输出波形为矩形波,频率为40kHz,波形基本不失真,并且相当稳 定。波形如下图所示:
图5-1 555电路产生高低电平为1:1000 图5-2 555电路产生的经调制后的40KHZ方波信号 的矩形 图5-3 4049驱动后到达超声波发射传感器的40KHZ方波信号 6.1.2接收回路的测试 接收回路接收到回波后,经过放大比较,检出的有用信号为一个脉宽可变的正脉冲,脉宽就是超声波的渡越时间,并将该脉冲送给ARM的中断口,由ARM通过中断检测出脉冲的宽度,用示波器观测产生脉宽可变的正脉冲的波形过程如下图。波形很稳定,改变超声波传感器与障碍物的距离时,脉冲宽度也随之改变。

图5-7 经RS触发器检出的脉宽反映超声波传播时间的正脉冲信号 图5-5 回波信号经一级放大后的波形 图5-6 回波信号经二级放大后的波形 图5-4 超声波接收传感器接收的回波信号 6.1系统操作 启动仪器,液晶显示器上将显示当前环境的温度,如图5-8;
再经过短暂的停顿后,系统将进入检测距离状态,如图5-9,如选择RS232输出设置,系统将会把检测到的数据通过串口发送给PC机,如图5-10。

图5-8 温度检测 图5-9 距离检测 图5-10与PC机通信 6.2测试结果分析 标尺(mm)
测试(mm)
标尺(mm)
测试(mm)
标尺(mm)
测试(mm)
300 300 2400 2404 4600 4603 400 400 2500 2500 4700 4700 500 500 2600 2600 4800 4804 600 600 2700 2700 4900 4900 700 697 2800 2803 5100 5100 800 800 2900 2903 5200 5200 900 898 3000 3000 5300 5300 1000 1000 3100 3102 5400 5400 1100 1100 3200 3200 5700 5704 1200 1200 3300 3300 5800 5800 1300 1296 3400 3400 5900 5902 1400 1400 3500 3500 6000 6000 1500 1500 3700 3702 6100 6100 1600 1600 3800 3802 6200 6203 1700 1697 3900 3900 6300 6300 1800 1801 4000 4000 6400 6400 1900 1900 4100 4102 6500 6500 2000 2000 4200 4203 6600 6600 2100 2100 4300 4300 6700 6700 2200 2200 4400 4400 6800 6802 2300 2302 4500 4500 6900 6900 通过测试,系统精度达到了设计的要求,误差很难避免,但通过分析误差的来源,改变设计和测试方法,可以把降低系统的误差。从而使系统更加完美。如对测量结果进行数字滤波,对环境温度进行多点测量,避免局部温度对系统造成误差。

第七章 系统展望 在设计和开发过程中,严格遵循了系统的需求分析、总体设计、软硬件详细设计与实现、系统调试等开发步骤,分阶段的完成了各设计任务。但在系统调试过程中,发现存在一些问题有待进一步探讨和改进,主要包括以下几个方面:
(1) 检测精度方面。虽然课题采用ARM来提高系统检测的精度,并且采用温度补偿和数字滤波的方法减少了部分检测误差,但是系统的测量精度仍然与理论值有所差距。通过提高采样频率,可进一步提高检测精度,但是还是要综合考虑硬件的承受能力。

(2) 性能稳定性方面。课题由于时间仓促,在电路分析设计上虽尽量全面考虑,但是在一些特殊的测量环境(如湿度比较大、风力比较大的环境),系统测试的数据并不稳定。并且在换能器驱动方面,发射功率还不是很理想,接收电路还需改进。

(3) 嵌入式监控方面。由于本课题是作者第一次运用到嵌入式设计,许多运用不熟悉,在设计时遇到很多困难。虽然最终能实现系统要求,但会有数据丢失的现象发生。这方面设计需要进一部修改。

(4) 系统全面完善。本课题主要还是着重在概念的提出,初步的实验阶段,实验结果虽然比较成功,但如果要真正应用到产品生产,还有很多可待改进之处。比如可以在系统中加入控制报警模块,用户可以根据需要对系统设定一个测距安全区间,当系统测量到的位移信息不在该区间内,系统自动报警,提醒用户。

本课题利用波分析法对回波信号进行运算处理,大大提高了测距精度,并且将嵌入式ARM微处理器引入其中,推动着超声测距系统向着控制精度更高、更加智能化的方向发展。

超声波检测以其非接触性优点,在工程应用中,得到了广泛的应用。本智能测量模块可以用来测量料位、物位、液位等,可以做成环保局、水利局水位检测、采集、控制系统。可以把本系统安装在各个水位采集点,系统将各个采集点的水位实时上传给上位机,上位机可以通过通信网络对各个采集点的水位进行实时监控,本系统还可以加上无线发送模块,通过无线网络把数据传送给上位机。

结束语 毕业设计是对大学四年学习的一个系统考察,是理论学习与实践相结合的一个系统学习,也是我们对大学四年所学的一个系统总结。由于本智能测量模块的核心控制器是ARM,在做课题之前,我又对ARM机进行了系统的学习,完成了ARM最小系统的设计和调试以及ARM外围电路的设计和编程(如键盘、液晶显示、蜂鸣器等),通过学习我对ARM的相关技术有了一个较为系统的把握。

毕业设计让我认识到,如果要想成功,就要有耐心和信心。在系统设计的过程中我曾遇到了许多困难,有些问题在导师的指导下很快就能解决,但有些细微的问题,就需要自己想办法去解决。通过系统编程,我深刻地认识到,在编程之前首先要画出程序流程图,然后在去按照流程图来进行具体的程序设计。

致 谢 本论文是在导师朱昌平教授的谆谆教诲和悉心指导下完成的。在此我要特别感谢我的指导老师朱昌平教授!感谢朱老师对我的孜孜不倦的指导,论文汇聚了导师的智慧和汗水。在导师的不断鼓励下,我得以顺利完成论文创作。导师严谨的治学态度、渊博的知识、宽广的胸怀和为事业的献身精神,给我留下的极深刻的印象,让我非常的佩服,在这过程中不管遇到什么困难,朱老师总是尽可能的为我提供各种帮助,及时给予学习上的指导和生活上的照顾,我从心底感激朱老师。在315实验室和老师、师兄、师姐一起的日子里我学到了很多,这段日子给我以后的继续学习深造打下了一个坚实的基础,这段日子将永远留在我记忆中。

同时还衷心的感谢在本次毕业设计过程中给我以很大帮助的韩庆邦老师、单明雷老师、李建老师、路正莲老师他们在本次毕业设计中给了我们很多帮助和支持,在此表示我对他们的感谢。

感谢师兄郭卫栋、王月庆、邓星松、师姐路龙惠等在科研过程中给予我的大量的帮助。

感谢全体315实验室的兄弟姐妹,再次对关心和帮助过我的人们衷心说声:谢谢!谢谢你们的帮助和照顾,使我成为一个合格的本科毕业生。

最后我要感谢我的家人,是他们一直鼓励我、支持我,使我能够顺利的完成学业。

作者:刘晓萍 二零零七年六月 参考文献 【1】 赵珂. 时差法超声测距仪的研制[J]. 国外电子元器件,2005(1): 65-67. 【2】 赵珂,向瑛,王忠等,高准确度超声波测距仪的研制[J].传感器技术,2003(2):55-57. 【3】 Walker James S. A Primer on WAVEL ETS and theirScientific Applications [M] . Florida : CRC Press LLC ,1999. 【4】 腾艳菲,陈尚松.超声波测距精度的研究.国外电子测量技术,2006(2)
【5】 刘迎春,牟金秀,于复生,毕宏彦.基于时差的超声波测距研究[J]. 计量技术,2005(1):3-4. 【6】赵占林, 刘洪梅. 超声测距系统误差分析及修正[J].科技情报开发与经济.2002(6):144-145 【7】罗忠辉,黄世庆.提高超声测距精度的方法[J]. 机械设计与制造,2005(1): 109   【8】应崇福, 查济璇. 超声和它的众多应用[M].长沙,1994:48-67. 冯若.超声手册[M].1999,南京:313-473 【9】 赵广涛, 程荫杭.基于超声波传感器的测距系统设计[J].微计算机信.2006(01):35-78 【10】ABIDI M A ,Gonzalez R C. The use of multi2sensor data for robotic Application[J ] . IEEE Transactions on Robotics and Automation , 1990 ,6(2) :248~256. 【11】 徐国华, 孔蕙, 李贻斌等. 超声波测距系统的设计与实现[J].电子应用技术.1995(12):6-7 【12】康华光.电子技术基础[M]. 北京:高等教育出版社, 2002 【13】求是科技.Visual C++串口通信工程开发实例导航[M].北京:人民邮电出版社.2003 【14】求是科技,崔建华,郭瑞军.Delphi串口通信工程开发实例导航.北京:人民邮电出版社,2003 【15】周立功.ARM微控制器基础与实战.北京:北京航空航天大学出版社,2004 【16】周立功,张华. 深入浅出ARM7、LPC2131X/214X[M].北京:北京航空航天大学出版社, 2005. 【17】田泽.嵌入式系统开发与应用(第一版). 北京:北京航空航天大学出版社, 2005. 【18】陈赜,刘振兴,李宗福等.ARM嵌入式技术实验教程[M]. 北京:北京航空航天大学出版社, 2005. 【19】何荣森, 何希顺. 从ARM体系看嵌入式处理器的发展[J].微电子学与计算机.2002 (5):42-45 【20】Elmer Hannes, Schweinzer Herbert. High resolution ultrasonic distance measurement in air using coded signals[R]. Ultrasonics. 2002(2):1565-1570 【21】肖功纯.超声换能器的频率选择[J].自动化仪表.2001(1):9-13 【22】孙波,季远,李光军等.功率超声换能器导纳特性检测及电端匹配研究[J].振动测试与诊断.2002(4):287-290 【23】 郏东耀.利用超声波传感器测液位的方法[J].自动化与仪器仪表.2002(5):51-53 【24】肖俊,牛炜,莫易敏等.收发同体超声测距系统设计[J].传感器技术.2003(8):32-34 【25】 郑德春, 姚庆栋, 刘鹏等. 嵌入式模拟器中的JTAG应用[J].浙江大学学报.2006(01) 【26】GRMMEL P M. Improve ultrasonic detection using theanalytic signal magitade[J ] . Ultrasonics , 1981 , 19(2) :73~76. 【27】 袁易全,陈思忠.近代超声原理与应用[M].南京:南京大学出版社,1996 【28】 高克成.超声物位计现状[J].声学技术.2005(2):50-51 【29】 Alfonsi G., Brambilla S., Chiuch D., The use of an ultrasonic Doppler velocimeter in turbulent pipe flow.Experiments in Fluids. 2003(6):553-559 【30】 中国机械工程学会无损检测分会.超声波检测[M].北京:机械工业出版社.2000 【31】 杜功焕,朱哲民,袭秀芬.声学基础[M].上海:上海科学技术出版社.1981 附录一、系统PCB图 附录二、整机实物图 附录三、主要程序代码 (一) FYD12864液晶函数 int main (void) { uint16 i, n=234; PINSEL0 = 0x00000000; PINSEL1 = 0x00000000; // 设置所有管脚连接GPIO IO0DIR = all; lcd_initial(); DelayNS(20); send_data(0xf8,0x00,0x20); DelayNS(20); write_list_word(0,0,show1,16); DelayNS(20); end_data(0xf8,0x00,0x20); write_list_word(0,1,show2,16); DelayNS(200); show(3,2,1234); while(1) { for(i=0;i<99;i=i++) { show(3,2,i+10);} } return 0; } (二) DS18B20函数 (1)DS18B20复位子程序 bit reset() //如果DS18B20在返回值为0,否则为1 { bit ack; DA1=1; //数据线拉高 DelayNS(10) DA1=0; //数据线拉低 DelayNS(10) DA1=1; //数据线拉高 DelayNS(4) ack=DA1; //读DS18B20应答脉冲 DelayNS(16) return(ack); } (2)DS18B20读子程序 uchar DSRead(void) //DS18B20读子程序,返回值为一个字节数 { uchar i,dat; dat=0; for(i=0;i<8;i++) { dat>>=1; DA1=1;DelayNS(10) DA1=0;DA1=1;//产生读信号 _nop_();_nop_();_nop_();_nop_(); if(DA1) dat|=0x80; //DA为1就读1,否则读0 DelayNS(4) } return(dat); } (3)DS18B20写子程序 void DSWrite(uchar val) { uchar i; bit vb; for(i=0;i<8;i++) { vb=val&0x01; //送最低位到vb DA1=1;DA1=0; //产生写信号 DelayNS(10); DA1=vb; DelayNS(3) DA1=1; val>>=1; //写下一位 } } (三) 超声波渡越时间的检测函数 void test_time() //收发一体超声波渡越时间的检测子程序 { start: TMOD=0x01; //设置定时器0工作在方式1 TL0=0x00; TH0=0x00; //初始化定时器 EA=1; //中断允许 ET0=1; //定时器0中断允许 _B=0; _R=0; //设置盲区允许 TR0=1; //启动定时器定时T0:工作在方式1,计数初值为0 wave(); //发送40kHz超声波 delay10us(220); //设置盲区值 _B=1;_R=1; //启动测试 Test: if(int0==1) //检测int0=1? 即收到反射波? { TR0=0;time=TH0*256+TL0; //定时时间 } else {if(TF0==1) {TF0=0;goto start; } else {goto Test;} } } (四) 距离显示函数 void convert(uint n) { uchar i; uchar a[5]; for(i=4;i>=0;i--) { a[i]=n%10;n=n/10;if(!i) break; } if(rs232) { if(t_flag)//send temperature { watchdog(); printf("The Temperature is : ");sendData(a[1]+0x30);sendData(a[2]+0x30);sendData('.'); sendData(a[3]+0x30); sendData(a[4]+0x30);printf(" ^C"); sendData('\n'); for(i=12;i>0;i--){sendData('\t');} } else //send temperature { printf("The length is : "); if(a[0])sendData(a[0]+0x30);sendData(a[1]+0x30); sendData('.');sendData(a[2]+0x30);sendData(a[3]+0x30);sendData(a[4]+0x30);rintf("m"); sendData('\n'); for(i=12;i>0;i--){sendData('\t');} } } } (五) 串口通信函数 void init_232() { TMOD=0x20;//mode 2 auto reload TL1=0xfd; TH1=0xfd;//baudRate:9600 SCON=0x52; //sm0,sm1,sm2,ren,tb,rb8,ti,ri PCON&=0x7f;//smod=0; TR1=1; } uchar sendData(uchar c) { while (!TI);{watchdog();} TI = 0;return (SBUF=c); } (六) 系统上位机函数 //打开串口 MSComm.CommPort :=cmbbxComNum.ItemIndex +1; //默认值为 '9600,N,8,1' ComSetting:=cmbbxBaud.Text; ComSetting:=ComSetting+','+cmbbxCheckBit.Text; ComSetting:=ComSetting+','+cmbbxDataNum.Text; ComSetting:=ComSetting+','+cmbbxStopBit.Text; MSComm.Settings:=ComSetting; MSComm.PortOpen:=True; //变换各个组件的状态 shpSerial.Brush.Color:=clRed; //指示灯变红 Panel1.Enabled:=False; btnSerial.Caption :='关闭串口'; chckbxHexShow.Enabled:=False; end else begin //关闭串口 附录四、翻译 THE INTRODUCE OF I2C-BUS PROTOCOL 1、THE I2C-BUS SPECIFICATION 1.1、Here are some of the features of the I2C-bus: · Only two bus lines are required; A serial data line (SDA)and a serial clock line (SCL). · Each device connected to the bus is software addressable by a unique address and simple master/slave relationships exist at all times; Masters can operate as master-transmitters or as master-receivers. ·It’s a true multi-master bus including collision detection and arbitration to prevent data corruption if two or more masters simultaneously initiate data transfer. ·Serial, 8-bit oriented, bi-directional data transfers can be made at up to 100 kbit/s in the Standard-mode, up to 400 kbit/s in the Fast-mode, or up to 3.4 Mbit/s in the High-speed mode. ·On-chip filtering rejects spikes on the bus data line to preserve data integrity · The number of ICs that can be connected to the same bus is limited only by a maximum bus capacitance of 400 pF. 2、INTRODUCTION TO THE I2C-BUS SPECIFICATION For 8-bit oriented digital control applications, such as those requiring microcontrollers, certain design criteria can be established: · A complete system usually consists of at least one microcontroller and other peripheral devices such as memories and I/O expanders · The cost of connecting the various devices within the system must be minimized · A system that performs a control function doesn’t require high-speed data transfer · Overall efficiency depends on the devices chosen and the nature of the interconnecting bus structure. To produce a system to satisfy these criteria, a serial bus structure is needed. Although serial buses don’t have the throughput capability of parallel buses, they do require less wiring and fewer IC connecting pins. However, a bus is not merely an interconnecting wire, it embodies all the formats and procedures for communication within the system. Devices communicating with each other on a serial bus must have some form of protocol, which avoids all possibilities of confusion, data loss and blockage of information. Fast devices must be able to communicate with slow devices. The system must not be dependent on the devices connected to it, otherwise modifications or improvements would be impossible. A procedure has also to be devised to decide which device will be in control of the bus and when. And, if different devices with different clock speeds are connected to the bus, the bus clock source must be defined. All these criteria are involved in the specification of the I2C-bus. 3、 THE I2C-BUS CONCEPT The I2C-bus supports any IC fabrication process (NMOS,CMOS, bipolar). Two wires, serial data (SDA) and serial clock (SCL), carry information between the devices connected to the bus. Each device is recognized by a unique address (whether it’s a microcontroller, LCD driver, memory or keyboard interface) and can operate as either a transmitter or receiver, depending on the function of the device. Obviously an LCD driver is only a receiver, whereas a memory can both receive and transmit data. In addition to transmitters and receivers, devices can also be considered as masters or slaves when performing data transfers (see Table 1). A master is the device which initiates a data transfer on the bus and generates the clock signals to permit that transfer. At that time, any device addressed is considered a slave. The I2C-bus is a multi-master bus. This means that more than one device capable of controlling the bus can be connected to it. As masters are usually micro-controllers,let’s consider the case of a data transfer between two microcontrollers connected to the I2C-bus This highlights the master-slave and receiver-transmitter relationships to be found on the I2C-bus. It should be noted that these relationships are not permanent, but only depend on the direction of data transfer at that time. · microcontroller A terminates the transfer. Even in this case, the master (microcontroller A) generates the timing and terminates the transfer. The possibility of connecting more than one microcontroller to the I2C-bus means that more than one master could try to initiate a data transfer at the same time.To avoid the chaos that might ensue from such an event -an arbitration procedure has been developed. This procedure relies on the wired-AND connection of all I2C interfaces to the I2C-bus. If two or more masters try to put information onto the bus,the first to produce a ‘one’ when the other produces a ‘zero’ will lose the arbitration. The clock signals during arbitration are a synchronized combination of the clocks generated by the masters using the wired-AND connection to the SCL line Generation of clock signals on the I2C-bus is always the responsibility of master devices; each master generates its own clock signals when transferring data on the bus. Bus clock signals from a master can only be altered when they are stretched by a slow-slave device holding-down the clock line, or by another master when arbitration occurs. 4、 GENERAL CHARACTERISTICS Both SDA and SCL are bi-directional lines, connected to a positive supply voltage via a current-source or pull-up resistor. When the bus is free, both lines are HIGH. The output stages of devices connected to the bus must have an open-drain or open-collector to perform the wired-AND function. Data on the I2C-bus can be transferred at rates of up to 100 kbit/s in the Standard-mode, up to 400 kbit/s in the Fast-mode, or up to 3.4 Mbit/s in the High-speed mode. The number of interfaces connected to the bus is solely dependent on the bus capacitance limit of 400 pF. For information on High-speed mode master devices, see Section 13. 5、 BIT TRANSFER Due to the variety of different technology devices (CMOS,NMOS, bipolar) that can be connected to the I2C-bus,the levels of the logical ‘0’ (LOW) and ‘1’ (HIGH) are not fixed and depend on the associated level of VDD. One clock pulse is generated for each data bit transferred. 6、 TRANSFERRING DATA 6.1、 Byte format Every byte put on the SDA line must be 8-bits long. The number of bytes that can be transmitted per transfer is unrestricted. Each byte has to be followed by an acknowledge bit. Data is transferred with the most significant bit (MSB) first. If a slave can’t receive or transmit another complete byte of data until it has performed some other function, for example servicing an internal interrupt, it can hold the clock line SCL LOW to force the master into a wait state. Data transfer then continues when the slave is ready for another byte of data and releases clock line SCL. In some cases, it’s permitted to use a different format from the I2C-bus format (for CBUS compatible devices for example). A message which starts with such an address can be terminated by generation of a STOP condition,even during the transmission of a byte. In this case, no acknowledge is generated. 7、 ARBITRATION AND CLOCK GENERATION 7.1、 Synchronization All masters generate their own clock on the SCL line to transfer messages on the I2C-bus. Data is only valid during the HIGH period of the clock. A defined lock is therefore needed for the bit-by-bit arbitration procedure to take place. Clock synchronization is performed using the wired-AND connection of I2C interfaces to the SCL line. This means that a HIGH to LOW transition on the SCL line will cause the devices concerned to start counting off their LOW period and, once a device clock has gone LOW, it will hold the SCL line in that state until the clock HIGH state is reached. However, the LOW to HIGH transition of this clock may not change the state of the SCL line if another clock is still within its LOW period. The SCL line will therefore be held LOW by the device with the longest LOW period. Devices with shorter LOW periods enter a HIGH wait-state during this time. When all devices concerned have counted off their LOW period, the clock line will be released and go HIGH. There will then be no difference between the device clocks and the state of the SCL line, and all the devices will start counting their HIGH periods. The first device to complete its HIGH period will again pull the SCL line LOW. In this way, a synchronized SCL clock is generated with its LOW period determined by the device with the longest clock LOW period, and its HIGH period determined by the one with the shortest clock HIGH period. 7.2 、 Arbitration A master may start a transfer only if the bus is free. Two or more masters may generate a START condition within the minimum hold time (tHD;STA) of the START condition which results in a defined START condition to the bus. Arbitration takes place on the SDA line, while the SCL line is at the HIGH level, in such a way that the master which transmits a HIGH level, while another master is transmitting a LOW level will switch off its DATA output stage because the level on the bus doesn’t correspond to its own level. Arbitration can continue for many bits. Its first stage is comparison of the address bits (addressing information is given in Sections 10 and 14). If the masters are each trying to address the same device, arbitration continues with comparison of the data-bits if they are master-transmitter,or acknowledge-bits if they are master-receiver. Because address and data information on the I2C-bus is determined by the winning master, no information is lost during the arbitration process. A master that loses the arbitration can generate clock pulses until the end of the byte in which it loses the arbitration. As an Hs-mode master has a unique 8-bit master code, it will always finish the arbitration during the first byte If a master also incorporates a slave function and it loses arbitration during the addressing stage, it’s possible that the winning master is trying to address it. The losing master must therefore switch over immediately to its slave mode. Figure 9 shows the arbitration procedure for two masters. Of course, more may be involved (depending on how many masters are connected to the bus). The moment there is a difference between the internal data level of the master generating DATA 1 and the actual level on the SDA line, its data output is switched off, which means that a HIGH output level is then connected to the bus. This will not affect the data transfer initiated by the winning master. Since control of the I2C-bus is decided solely on the address or master code and data sent by competing masters, there is no central master, nor any order of priority on the bus. Special attention must be paid if, during a serial transfer, the arbitration procedure is still in progress at the moment when a repeated START condition or a STOP condition is transmitted to the I2C-bus. If it’s possible for such a situation to occur, the masters involved must send this repeated START condition or STOP condition at the same position in the format frame. In other words, arbitration isn’t allowed. · A repeated START condition and a data bit · A STOP condition and a data bit · A repeated START condition and a STOP condition. Slaves are not involved in the arbitration procedure. 8、 FORMATS WITH 7-BIT ADDRESSES After the START condition (S), a slave address is sent. This address is 7 bits long followed by an eighth bit which is a data direction bit (R/W) - a ‘zero’ indicates a transmission (WRITE), a ‘one’ indicates a request for data (READ). A data transfer is always terminated by a STOP condition (P) generated by the master. However, if a master still wishes to communicate on the bus, it can generate a repeated START condition (Sr) and address another slave without first generating a STOP condition. Various combinations of read/write formats are then possible within such a transfer. Possible data transfer formats are: · Master-transmitter transmits to slave-receiver. The transfer direction is not changed. · Master reads slave immediately after first byte. At the moment of the first acknowledge, the master- transmitter becomes a master- receiver and the slave-receiver becomes a slave-transmitter. This first acknowledge is still generated by the slave. The STOP condition is generated by the master, which has previously sent a not-acknowledge (A). · During a change of direction within a transfer, the START condition and the slave address are both repeated, but with the R/W bit reversed. If a master receiver sends a repeated START condition, it has previously sent a not-acknowledge (A). NOTES: 1. Combined formats can be used, for example, to control a serial memory. During the first data byte, the internal memory location has to be written. After the START condition and slave address is repeated, data can be transferred. 2. All decisions on auto-increment or decrement of previously accessed memory locations etc. are taken by the designer of the device. 3. Each byte is followed by an acknowledgment bit as indicated by the A or A blocks in the sequence. 4. I2C-bus compatible devices must reset their bus logic on receipt of a START or repeated START condition such that they all anticipate the sending of a slave address, even if these START conditions are not positioned according to the proper format. 5. A START condition immediately followed by a STOP condition (void message) is an illegal format. I2C 总线协议简介 1、I2C总线规范 1.1、 I2C 总线的特征 • 只要求两条总线线路一条串行数据线SDA 一条串行时钟线SCL。

• 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器。

• 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏。

• 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达400kbit/s 高速模式下可达3.4Mbit/s。

• 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整。

• 连接到相同总线的IC器件数量只受到总线的最大电容400pF 限制。

2、介绍I2C总线规范 对于面向8 位的数字控制应用譬如那些要求用微控制器的要建立一些设计标准:
• 一个完整的系统通常由至少一个微控制器和其他外围器件例如存储器和I/O 扩展器组成。

• 系统中不同器件的连接成本必须最小。

• 执行控制功能的系统不要求高速的数据传输。

• 总的效益由选择的器件和互连总线结构的种类决定。

产生一个满足这些标准的系统需要一个串行的总线结构,尽管串行总线没有并行总线的数据吞吐能力,但它们只要很少的配线和IC连接管脚。然而总线不仅仅是互连的线,还包含系统通讯的所有格式和过程。

串行总线的器件间通讯必须有某种形式的协议避免所有混乱数据丢失和妨碍信息的可能性。快速器件必须可以和慢速器件通讯。系统必须不能基于所连接的器件,否则不可能进行修改或改进应当设计一个过程决定哪些器件何时可以控制总线。而且,如果有不同时钟速度的器件连接到总线必须定义总线的时钟源。所有这些标准都在I2C 总线的规范中。

3、I2C 总线的概念 I2C 总线支持任何IC 生产过程(NMOS、CMOS、双极性)两线―串行数据(SDA)
和串行时钟(SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器、LCD驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器9由器件的功能决定。很明显,LCD驱动器只是一个接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外器件在执行数据传输时也可以被看作是主机或从机。

主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。

I2C 总线是一个多主机的总线。这就是说,可以连接多于一个能控制总线的器件到总线。由于主机通常是微控制器,让我们考虑以下数据在两个连接到I2C 总线的微控制器之间传输的情况。

这突出了I2C 总线的主机—从机和接收器—发送器的关系。应当注意的是:这些关系不是持久的,只由当时数据传输的方向决定。

• 微控制器A 终止传输,甚至在这种情况下主机(微控制器A)也产生定时而且终止传输。

连接多于一个微控制器到I2C 总线的可能性意味着超过一个主机可以同时尝试初始化传输数据。为了避免由此产生混乱,发展出一个仲裁过程,它依靠线与连接所有I2C 总线接口到I2C 总线。

如果两个或多个主机尝试发送信息到总线,在其他主机都产生0 的情况下首先产生一个1 的主机将丢失仲裁。仲裁时的时钟信号是用线与连接到SCL 线的主机产生的时钟的同步结合。

在I2C 总线上产生时钟信号通常是主机器件的责任:当在总线上传输数据时,每个主机产生自己的时钟信号。主机发出的总线时钟信号只有在以下的情况才能被改变:慢速的从机器件控制时钟线并延长时钟信号,或者在发生仲裁时被另一个主机改变。

4、总体特征 SDA 和SCL 都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压。当总线空闲时,这两条线路都是高电平,连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。I2C 总线上数据的传输速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s 。连接到总线的接口数量只由总线电容是400pF 的限制决定。

5、位传输 由于连接到I2C 总线的器件有不同种类的工艺(CMOS 、NMOS、双极性),逻辑0(低)和1(高)的电平不是固定的,它由VDD 的相关电平决定。每传输一个数据位就产生一个时钟脉冲。

6 传输数据 6.1 字节格式 发送到SDA 线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制,每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态。当从机准备好接收下一个数据字节并释放时钟线SCL 后,数据传输继续。

在一些情况下,可以用与I2C 总线格式不一样的格式(例如兼容CBUS 的器件)。甚至在传输一个字节时,用这样的地址起始的报文可以通过产生停止条件来终止。此时不会产生响应。

7 仲裁和时钟发生 7.1 同步 所有主机在SCL 线上产生它们自己的时钟来传输I2C 总线上的报文数据,只在时钟的高电平周期有效。因此需要一个确定的时钟进行逐位仲裁。

时钟同步通过线与连接I2C 接口到SCL 线来执行。这就是说:SCL 线的高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL 线保持这种状态直到到达时钟的高电平。但是,如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL 线的状态。因此,SCL 线被有最长低电平周期的器件保持低电平。此时,低电平周期短的器件会进入高电平的等待状态。

当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平。之后,器件时钟和SCL线的状态没有差别。而且所有器件会开始数它们的高电平周期。首先完成高电平周期的器件会再次将SCL线拉低。

这样,产生的同步SCL 时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。

7.2 仲裁 主机只能在总线空闲的时候启动传输。两个或多个主机可能在起始条件的最小持续时间(tHD;STA )内产生一个起始条件,结果在总线上产生一个规定的起始条件。

当SCL 线是高电平时,仲裁在SDA 线发生;
这样,在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同。

仲裁可以持续多位。它的第一个阶段是比较地址位。如果每个主机都尝试寻址相同的器件,仲裁会继续比较数据位(如果是主机—发送器),或者比较响应位(如果是主机—接收器)。因为I2C 总线的地址和数据信息由赢得仲裁的主机决定,在仲裁过程中不会丢失信息。丢失仲裁的主机可以产生时钟脉冲直到丢失仲裁的该字节末尾。由于Hs 模式的主机有一个唯一的8 位主机码,因此一般在第一个字节就可以结束仲裁。

如果主机也结合了从机功能,而且在寻址阶段丢失仲裁,它很可能就是赢得仲裁的主机在寻址的器件,因此,丢失仲裁的主机必须立即切换到它的从机模式。

当然,可能包含更多的内容(由连接到总线的主机数量决定)。此时,产生DATA1 的主机的内部数据电平与SDA 线的实际电平有一些差别,如果关断数据输出,这就意味着总线连接了一个高输出电平。这不会影响由赢得仲裁的主机初始化的数据传输。

由于I2C 总线的控制只由地址或主机码以及竞争主机发送的数据决定,没有中央主机,总线也没有任何定制的优先权。

必须特别注意的是:在串行传输时,当重复起始条件或停止条件发送到I2C 总线的时候,仲裁过程仍在进行。如果可能产生这样的情况,有关的主机必须在帧格式相同位置发送这个重复起始条件或停止条件。也就是说,仲裁在不能下面情况之间进行。

• 重复起始条件和数据位 • 停止条件和数据位 • 重复起始条件和停止条件,从机不被卷入仲裁过程。

8、7位的地址格式 在起始条件(S)后,发送了一个从机地址。这个地址共有7 位,紧接着的第8 位是数据方向位(R/W)— 0 表示发送写,1 表示请求数据读。数据传输一般由主机产生的停止位P 终止。但是,如果主机仍希望在总线上通讯,它可以产生重复起始条件Sr和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同的读/写格式结合。

可能的数据传输格式有 • 主机发送器发送到从机接收器传输的方向不会改变。

• 在第一个字节后,主机立即读从机。在第一次响应时,主机-发送器变成主机-接收器,从机-接收器变成从机-发送器。第一次响应仍由从机产生。之前发送了一个不响应信号(/A)的主机产生停止条件。

•传输改变方向的时侯,起始条件和从机地址都会被重复。但R/W位取反。如果主机接收器发送一个重复起始条件,它之前应该发送了一个不响应信号(/A)。

注意:
1. 复合格式可以用于例如控制一个串行存储器。在第一个数据字节期间,要写内部存储器的位置。在重复起始条件和从机地址后,数据可被传输。

2.自动增加或减少之前访问的存储器位置等所有决定都由器件的设计者决定。

3.每个字节都跟着一个响应位在序列中用A 或/A 模块表示。

4.兼容I2C 总线的器件在接收到起始或重复起始条件时必须复位它们的总线逻辑,甚至在这些起始条件没有根据正确的格式放置,它们也都期望发送从机地址。

5.起始条件后面立即跟着一个停止条件(报文为空)是一个不合法的格式。

推荐访问:基于arm的论文 基于arm的嵌入式论文 arm毕业设计论文 基于ARM的自动除尘控制系统的设计与开发 基于arm9的毕业设计 基于arm的数码相框毕业设计 基于微信公众平台的深度开发论文 基于ARM控制的调频广播系统开发 基于arm板子的web服务器开发 基于arm的嵌入式系统开发与实例
上一篇:国家开放大学电大专科《土壤肥料学》简答论述题题库及答案(试卷号:2091)
下一篇:2019年深圳房屋租赁合同范本

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有