基于单片机的一种小型避障机器人的设计(终)(共35页).docx
精选优质文档-倾情为你奉上 毕业论文(设计)基于单片机的一种小型避障机器人的设计学 生 姓 名: 关惠元 指导教师: 李向军 专业名称: 自动化 所在学院: 信息与工程学院 2015年5月专心-专注-专业目 录摘 要随着科技的进步,机器人的发展已是一种社会进步的必然趋势,机器人技术的进展非常迅速,同时机器人在人类领域的应用越来越广泛,人类已经不单单为了探索那些危险领域,如太空,深海等,在我们的生活中也变得越来越重要。本次设计基于单片机的简单避障机器人,主要由单片机、电动机、红外传感器和电源等模块组成,是通过红外传感器采集数据,经过A/D转换,在经由单片机处理来控制伺服电机的转动,当机器人前行是红外线发射器左右两边信号发射器发出信号,左右接收器接受信号,当左边出现障碍时,红外线接收器得到信号输出为0,机器人右转,转完后重复上面程序,当右边遇到障碍时过程和左边动作相同。其中单片机的程序是由VB上位机显示程序结合C语言编程所完成的。关键词:单片机 红外传感器 伺服电机 避障AbstractWith the progress of science and technology, the development of the robot is a kind of trend of social progress, robot technology progress very quickly, at the same time, more and more widely applied in the field of robot in the human, the human has not only to explore the dangerous areas, such as space, deep sea and so on, also becomes more and more important in our life. Simple robot obstacle avoidance, this design is based on single chip microcomputer is mainly composed of single chip, motor, infrared sensor and power supply modules, such as through infrared sensors to collect data, after A/D conversion, the processed by single chip microcomputer to control the servo motor rotation, when robots are infrared transmitters on both sides signal emitter signal, control receiver signal reception, when problems to the left, infrared receiver signal output is 0, the robot turn right, turn after repeating the above procedure, when encounter problems when the process is the same as the action on the left on the right. The MCU program by VB PC display program with C language programming.Keywords: SCM infrared sensors servo motor obstacle avoidance第一章 前 言1.1研究目的和意义随着科学的进步和社会的发展,人们为了探索一些未知的领域,如海洋深处,外太空这些人类不能到达的地方,机器人的应用越来越普及,就连我们的日常生活中机器人的应用也日趋变多,如搬运、加工、排障,甚至连炒菜都在用。机器人是多学科技 术集成的产物 , 它涉及机械设计与制造技术往往一个国家的机器人制造水平反映着这个国家工业与制造业的发展程度。所以,机器人的研究越来越重要。1.2智能机器人的发展历史、现状以及发展趋势智能机器人主要由单片机、电动机、红外传感器和电源等模块组成。一般来说,要求在运行的过程中,机器人车能够有效的避开前方的障碍物。它的根本原理就是,机器人在行进的过程中,通过红外传感器发射接收信号,并将信号送给单片机,单片机根据已经设定好的程序来命令伺服电机的转动,改变机器人的运行方向来达到我们想要的避障的目的1。实用步行机器人首先在军事上使用,帮助士兵收集信息,吸引敌人,避免伤害。这种机器人也将有助于公民救灾和科学,探索地球危险地带,在太空中,探索其他行星和卫星。随着成本下降,行走机器人就会出现我们的身边,改善我们的生活质量,尤其是对我们那些都是老年人,体弱者,或者只是累了在家休息的。在十九世纪后期,机器人的设计与制造在全球风靡,世界上一些著名的公司开始研制移动机器人,因而使得机器人的研究方向出现了很多种。90年代以来,因为传感器技术的提高,信息处理技术的发展,机器人的适应能力越来越强。现在的机器人种类多,应用广。综合国外专家的解释,可普遍认为机器人一般有如下功能的机器2:(1)行为动作与任何动物的某些活动类似;(2)应用性广,动作程序灵活多变;(3)具有学习,推理,判断以及学习等一定简单的智能。(4)有一定独立性,在一个完整的系统里可以不需要人类的操作。随着智能技术、pc技术、自动化的发展,机器人的发展必然越来越好。机器人近几年有如下趋势:(1)性价比逐步提高,性能不断提高,而单价不断下降。(2)由于PC技术的发展,集成电路技术的不断提高。机器人更便于操作,可靠性更强,维护性也大大地提高了。(3)传感器的发展越来越成熟,现在已经不单单是简单的定位,测速度等,越来越像人类来发展,如人体所具有的触觉,听觉等,都在用来建模与控制。 (4)虚拟技术在机器人中的作用已经不仅仅是模拟,演算,而是向过控方向发展3。1.3 本课题要解决的问题(1)机器人电路设计,让组成机器人的各部分可以紧密的配合。(2)红外传感器的选择和调试,要求信号强,受干扰程度小。(3)运用C语言以及VB对软件系统的编程编程,做到简单有效的避障。(4)考虑生活中种种环境因素,设计出一条路线,让机器人能接触到各种各样的障碍。第二章 总体设计方案2.1任务分析本设计的主要任务主要是在红外线传感器将数据采集来以后经过处理,通过单片的已经编好程序来控制机器人的前进,停止,左右转动,来达到避障的效果。机器人要实现下面的4个基本智能任务: (1)具有红外传感器 (2)可以探测周边环境 (3)在红外传感器信息上做出判断 (4)控制机器人运动2.2总体方案的设计本次设计分为传感器机构、控制机构、执行机构、电源四个硬件。执行机构是来完成行走效果,传感器机构主要任务是信息采集,控制机构主要是信息处理,而电源是为前三个机构提供电力支持。本文研究的小型避障机器人是以单片机为核心,通过红外传感器接受信息,利用伺服电动机来控制机器人移动,从而达到避障效果的。传感器模块 红外装置 电源模块控制模块执行器模块伺服电机图1 系统结构框图第三章 硬件电路的设计3.1红外传感器电路设计3.1.1红外发射二极管的选择红外发射二极管的按峰值波长(p)主要为:850nm、870nm、880nm、940nm、980nm,我们接触较多的850nm和940nm 。本次所用的就是后者,940nm红外发射二极管具高强光度,快反应度。在红外遥控,红外探测,红外幕墙安保的系统中广泛的应用4。表1 红外发射二极管极限参数参数名称符号额定值单位 正向电流IFM3060mA正向脉冲电流(1)IFPM0.31A 反向电压VR5V耗散功率PM90mW工作温度范围Top-25+80贮存温度范围Tst-40+100焊接温度(2)Tst260注(1): f=1KHz,tp/T1% 注(2): t3s,离器件本体4mm以上 表2 红外发射二极管的光电参数(TA=25)参数符号测试条件规范值单位正向电压VFIF50mA1.5V 反向电流IRVR5V10 A法向辐射强度IEIF50mA2mW/sr峰值发射波长pIF50mA850940nm光谱半宽度 IF50mA50nm 辐射度角21/2IF50mA16deg图2 相对光谱灵敏度与波长的关系红外发射二极管发射管的辐射强度(Power)与输入电流(If)成正比。辐射强度:Power(单位:W,W/sr,W/cm2)的作用就是用来表示二极管的发出的信号强度的大小的5。发射距离与辐射强度(Power) 成正比。W/sr:是辐射强度的单位,为IR发射红外线光之单位立体角(sr)所辐射出的光功率的大小。W/cm2:表示照度的单位,为sensor单位面积(cm2)所接收IR发射之辐射功率的大小。半功率角:2½ 指红外线二极管其上下或左右两边所辐射出之红外线强度为该组件最大辐射强度的50%时,其上下或左右两边所夹的角度称为半功率角6。 图3 30度半功率角辐射强度示意图3.1.2红外接收器的选择本次设计选用HS38B,该器件特性:低功耗、高灵敏度、优良的抗干扰能力。一般用于家用电器。表3 红外接收器电路原理 极限参数:电源电压(v)6.0工作温度-2585功耗(mw)30储存温度-40125光电参数:(T=25 Vcc=5V F0=38Khz)参数测试条件MinTypMax工作电压4.55.51接收距离测试信号=300mA1015载波频率38K接收角度距离衰减+/-45BMP宽度-3Db Bandwidth23.35静态电流无信号输入时0.81.5低电平输出Vin=0V Vcc=5V0.20.4高电平输出Vcc=5V4.5输出脉冲宽度Vin=500Vp-p500600700Vin=50mVp-p500600700注:光轴上测试,以宽度为600/900s为发射脉冲,在5CM范围内,取50次平均值INWaveformRectifierAGCControlWaveformDetctorATCBOFoscillatorInputAGCPostAmpVCCOUT图4 HS38B内部结构测试波形inout图5 测试红外接收器的时序图在使用说明书上我们找到了生产厂商提供的最佳使用条件:项目MINTYPMAX工作电压2.75.5输入频率38工作温度-102580表4 HS38B最佳使用条件红外发射接收器图6 红外发射与接收器机器人在行进过程中,红外线二极管发射光线,在遇到障碍物时,光线反射回来,红外检测器检测到,给出信号到单片机,后者在这个信号的基础上命令电机转动。试验中我们只需要940nm波长的红外线,所以我们按了一个光滤波器,不让别的波长的光通过。为了防止普通光源(阳光和灯光)对IR的干涉,红外检测器还有一个电子滤波器,它的作用是只允许大约38.0KHz的电信号通过。3.2 STC89C52单片机介绍STC89C52单片机是高性能、低功耗的CMOS8位单片机。STC89C52是8051单片机的增强型,可选择十二时钟周期或六时钟周期,指令代码与传统8051完全兼容。STC89C52单片机包括一个8位的微型处理器CPU,一个256字节的片内数据存储器,具有 8K 在系统可编程Flash存储器,片上集成512 字节RAM,3个16位计数器/定时器(定时器T0、T1、T2 ),4个中断源的中断控制系统,32个并行的通用I/O接口(P0-P3),全双工异步串行接口UART(可以用定时器软件实现多个UART),片内振荡器和时钟发生电路等7。3.2.2 STC89C52单片机引脚图及各引脚功能简介STC89C52单片机的引脚分布图如图7所示图7 STC89C52单片机的引脚分布包括电源引脚,外接晶体引脚,控制和复位引脚,输入和输出(I/O)引脚。电源引脚Vcc和GND,Vcc接+5 V电压,GND接地。外接晶体引脚:XTAL 1 :芯片的内部有一个反相放大器的输出端和输入端。一般情况下与晶体振荡器连接。XTAL 2:振荡器反相放大器的输入端口。控制引脚:ALE允许地址锁存,外部扩展的并行I/O口或外部存储器被访问时,AEL 的输出来锁存地址字节的低八位。通常情况下,地址锁存控制信号ALE可用作外部时钟或定时器,此时其输出脉冲频率为振荡频率fosc的六分之一。外部数据存储器被访问的时候,地址锁存控制信号ALE脉冲会被跳过。需要的时候,把1写入地址锁存控制信号ALE的使能标志位,也就是8EH地址的SFR的第0位,地址锁存控制信号ALE是无效的。复位引脚:在输入持续的两个时钟周期以上正电平到复位引脚RST时,单片机的复位初始化操作可以由此来完成。此功能由DISRTO位控制,DISRTO是地址为8EH的特殊寄存器AUXR的一位,DISRTO默认值是高电平复位有效。 PSEN:外部程序存储器选通信号,在外部代码在单片机的外部程序存储器执行的时候,每半个机器周期就激活PSEN一次,在外部数据存储器被访问的时候,不激活外部程序存储器选通信号8。访问外部程序存储器控制信号EA:EA接地时,外部程序存储器读取指令的地址是0000H-FFFFH。EA接VCC时,执行内部程序指令。输入和输出(I/O)引脚:STC89C52单片机最多可有32个I/O口线,分别为9:P 0口:P 0.0-P 0.7,当P0口用作输出口时,P 0.0-P 0.7每个引脚能驱动八个TTL负载,P0口可作为高阻抗输入(对P0口输入1)。P0口是八位双向I/O口且其属性是漏极开路的。P0口的复用功能:可以作为数据总线(D 7-D 0)或者地址总线低八位(A7-A0)。P 1口:P 1.0-P 1.7,P1口是八位双向I/O口,且内部带有上拉电阻,4个TTL输入可以被P 1.0-P 1.7输出缓冲器输出或者吸收,P1口用为输入口时,需要把1输入P1口,P1口的电位被其内部的上拉电阻拉高,这个时候由于其上拉电阻的缘故,会有电流从被外部拉低的端口中输出。复用功能:P1.1作为计数器/定时器2的触发输入,P1.0作为计数器/定时器2的外部技术输入。P 2口:P 2.0-P 2.7是八位双向I/O端口,且内部带有上拉电阻,4个TTL输入可以被P 2.0-P 2.7输出缓冲器输出或者吸收。P2口用为输入口时,需要把1输入P2口,P2口的电位被其内部的上拉电阻拉高,这个时候由于其上拉电阻的缘故,会有电流从被外部拉低的端口中输出。P2口复用功能:外部程序存储器被访问时,地址总线高八位从P2口输出。P 3口:P 3.0-P 3.7是八位双向I/O口,且内部带有上拉电阻,4个TTL输入可以被P 3.0-P 3.7输出缓冲器输出或者吸收。P3口用为输入口时,需要把1输入P3口,P3口的电位被其内部的上拉电阻拉高,这个时候由于其上拉电阻的缘故,会有电流从被外部拉低的端口中输出。复用功能如表5所示引脚复用功能P3.7RD(外部数据存储器读选通)P3.6WR(外部数据存储器写选通)P3.5T1(定时器1的外部输入)P3.4T0(定时器0的外部输入)P3.3INT1(外部中断1)P3.2INT0(外部中断0)P3.1TXD(串行输出口)P3.0RXD(串行输入口)表5 P3口各引脚复用功能单片机I/O口的使用:STC89C52单片机的每个I/O口能承受的灌电流是20ma,但在实际应用中,为了保护单片机,一般情况下都会使用限流电阻,防止I/O口被烧毁。即使输出时能输出20ma的拉电流,实际也要加限流电阻。STC89C52单片机芯片的最大工作电流最好不要超过70ma,也就是从MCU-GND流出的电流不能超过70ma。STC89C52单片机的I/O口的驱动能力可以达到20ma,在实际使用时,可以采用拉电流方式和灌电流方式。实际中,应尽可能使用灌电流方式,这样能提高整个系统的可靠性和负载能力。STC89C52单片机新增了16位计数器/定时器2,各个控制位如表6所示:表6 T2各个控制位分布76543210TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2T2控制寄存器中各位功能介绍如表7所示:表7 T2控制寄存器中各位功能介绍符号功能 CP/RL2重装载/捕获选择。在CP/RL2的值为0时,如果EXEN2的值也为1,而且T2EX端脉冲由正变负,这时执行捕获操作。当CP/RL的值为的值为1时,如果EXEN2的值为1,定时器T2溢出时,且负跳变脉冲作用于T2EX端,就能执行自动重装载操作。在RCLK的值为1时,或者TCLK的值为1时,CP/RL2无效,只有在定时器T2溢出的情况下才会强制它自动重装载。C/T2决定定时器T2工作于计数方式还是定时方式的控制位。当C/T2的值为0时,该位可以选择定时方式,当C/T2的值为1时,该位可以选择对外部事件技术方式,而且是下降沿才能触发。TR2决定定时器T2启动还是停止的控制位。当TR2的值为1时,定时器T2就会启动。EXEN2定时器T2的外部允许控制位。在EXEN2的值为1时,若串行口的波特率发生器不是定时器T2,当负跳变脉冲作用于T2EX端口时,就能激活定时器T2重装载或捕获。在EXEN2的值为0时,定时器T2的接收端是无效的外部信号。TCLK发送时钟允许。在TCLK的值为1时,串口的发送时钟由定时器T2溢出脉冲提高,当TCLK的值为0时,发送脉冲由定时器T1的溢出脉冲提高。RCLK接收时钟允许。在RCLK的值为1时,串口的接收时钟由定时器T2的溢出脉冲提供,在RCLK的值为0时,接收脉冲由定时器T1的溢出脉冲提供。EXF2定时器T2外部标志位。在EXEN2的值为1时,还要在脉冲由正变负时作用于定时器T2的接收端引脚上或者有捕获或重装载出现的时候,这时EXF2会置位,并开始申请中断。这个时候如果允许定时器T2中断,那么CPU就会响应中断,定时器T2 的中断程序运行,只能用软件对EXF2清除。当DCEN=1时,EXF2不能激活中断。TF2定时器T2溢出标志位。当定时器T2溢出时,硬件使其置位,只能用软件对其清零;在RCLK的值为1时,或者TCLK的值为1时,定时器T2溢出,不对TF2置位10。当模式是捕获时,2个选项由EXEN2设置,EXEN2的值为0时, T2用作16位计数器或定时器,至于是定时器还是计数器由T2CON中的C/T2位决定,当TF2置位时溢出,TF2还能产生中断,该功能由定时器2的中断使能位决定。EXEN2=1时,同上,但外部输入T2EX从“1”跳变到“0”时,RCAP2L捕获TL2的当前值,而RACP2H捕获TH2的当前值。此外,T2EX的由正变负能使EXF2置位,EXF2产生中断,该功能由定时器2的中断使能位决定。中断服务程序可以确定引起中断的事件,具体确定方法是查询TF2和EXF2来确定。在捕获模式中,千万不能重新装载TH2和TL2的值,在T2EX有捕获时间时,计数器仍按T2EX的由正变负计数,或者在六时钟模式时,按晶振频率的六分之一计数,在十二时钟模式时,按晶振频率的一半计数。在16位的自动重装模式中,定时器/计数器的选择可以由C/T2来决定,递增或者递减由其编写的程序控制。递减计数使能位DCEN决定计数的方向,T2MOD寄存器包含递减计数使能位DCEN4。在DCEN为“0”时,向上计数是定时器2的默认设置;在DCEN为“1”时,递增计数还是递减计数由T2中的T2EX来决定。在DCEN为“0”时,T2自动递增计数。在这种模式中,EXEN2位的设置决定地址。当EXEN2为“0”时,TF2置位前溢出,T2递增计数到0FFFFH的地址,然后定时器2把RCAP2H的8位数值与RCAP2L的8位的数值重新装载。可以通过软件设置RCAP2H和RCAP2L的值。3.3伺服电机3.3.1伺服电机的介绍电动机的作用是将电能转换为机械能, 电动机根据使用电源不同分为直流电动机和交流电动机两种,在本次设计的电机选择上我们就有步进电机和直流电机两种,我们选择的是直流伺服电机(servo motor ),伺服电机是指在伺服系统中控制机械元件运转的发动机,是一种间接变速装置。伺服电机可的优点就是可以控制速度,精确度也非常准确,可以把电压信号转换成电机的转矩与转速来控制驱动。伺服电机转子转速在输入信号控制下快速反应,在自动控制系统中,用作执行原件,且具有时间常数小、可控性强,线性度高等优点,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。本次设计使用的直流伺服电机特点11: 1.体积小、动作快、反应快、过载能力大、调速范围宽 2.低速力矩大, 波动小,运行平稳 3.低噪音,高效率 4.后端编码器反馈(选配)构成直流伺服等优点 5.变压范围大,频率可调3.3.2 伺服电机的信号控制电机转速为零的控制信号时序图1.3ms的控制脉冲序列使电机顺时针全速旋转1.7ms的控制脉冲序列使电机顺时针全速旋转3.4模数转换芯片简介如今电子市场上模数转换的芯片有很多,但芯片功能、模数转换速度、模数转换精确度的高低都不相同,但是对用户来讲,无论什么芯片,都肯定要包括转换启动信号输入口、模拟信号输入口、数字信号输出口、转换结束信号输出端这几部分。其中模拟信号输入口包括双极性和单极性的,数字信号输出口还包括串行口和并行口。除了这基本的几部分,不同类型的芯片可能还会有控制信号端。至于选择哪种模数芯片,要根据自身的需要和技术参数,一般情况下还需了解模数芯片的其他两个特性: (1)数字信号输出端是否有可控的三态输出。数字信号输出端有可控三态输出的模数转换芯片,单片机的数据总线可以与模数转换芯片的输出端直接相连,模数转换完成以后,选通三态门,此操作由读数信号RD来完成,最后把转换的数据送到总线。如果数字信号输出端没有可控三态输出。这种芯片有两种情况,一种是芯片内部本身就没有输出三态门,另一种是虽然芯片有三态门,但是模数芯片外部不可控。数字信号输出端没有可控三态输出的模数芯片不能将数据输出线与单片机的数据总线直接相连,这种芯片通过I/O接口才能与单片机进行信息交换。 (2)要看模数芯片启动转换时控制方式是电平控制式还是脉冲控制式。如果模数转换芯片启动转换是脉冲控制式的,需要一个脉冲信号,但这个脉冲信号要符合芯片要求,把这个脉冲施加在启动转换引脚上,模数转换就能启动并且自动完成。通常情况下,能与单片机配合使用的芯片,单片机的I/O端口写脉冲都能满足模数转换芯片对启动脉冲的要求。如果模数转换芯片启动转换是电平控制式的,这就需要一个规定的电平作为启动信号,并且在转换过程中该电平保持恒定。如果转换中途撤消或者改变规定的电平,模数转换芯片就会停止模数转换,那么得到的结果很可能是错误的。所以,一定要用可编程并行I/O接口芯片的一位或者D触发器来锁存这个规定的电平,从而保持该电平保持恒定。 3.4.1 ADC 0809芯片的主要技术参数和特性本设计选择的芯片是ADC0809 。ADC 0809转换精度为7位,它是CMOS元器件,ADC0809的ADC部分是8位的,而且是逐次逼近型的,除此之外,ADC 0809还拥有通道寻址逻辑和模拟多路开关,它们也都是8通道的。因此完全可以把ADC 0809当作一个简单的数据采集系统。可以直接把8个单端的模拟信号输入ADC 0809进行分时A/D转换,这种方法普遍应用于过程控制、巡回多点检测和运动控制。 ADC 0809的分辨率为8位,还具有可控的三态输出缓存器。芯片的外接电源为额定电压+5V。 ADC 0809模拟输入电压的范围分为单极性和双极性两种,单极性时为05V;双极性时为固定的±5V,±10V,这种情况需要一定的外接电路。 ADC 0809的模数转换时间由芯片的时钟频率所决定。使用ADC 0809芯片时不需要调节它的满刻度和零点。ADC 0809启动模数转换时控制方式是脉冲式的,而且是正脉冲,脉冲的上升沿能把所有的内部寄存器都清零,脉冲的下降沿则控制A/D转换的开始12。 3.4.2 ADC 0809芯片各引脚功能简介ADC 0809的内部结构和外部引脚分布分别如图8和图9所示。内部结构和工作原理可以通过下图看出,不需要再重新赘述一番。图8 ADC0809芯片的内部结构图9 ADC0809芯片的外部引脚分布ADC 0809芯片的各引脚功能介绍如下:(1)IN0IN7:这是8路模拟量输入端,其中的任意一路的选择都是通过ADDA、ADDB、ADDC这3根地址译码线的置零和置一来决定的。 (2)D7D0:模数转换结束后的数字量输出端,这8位数字量输出端排列顺序是D0是最低位,从D0-D7依次升高,D7是最高位。因为这八个引脚是三态可控输出,所以可以与单片机的数据线直接连接。(3)ALE:地址锁存允许信号,当该引脚是高电平或上升沿时有效。当地址锁存允许信号引脚是高电平或上升沿时,芯片会锁存ADDC、ADDB、ADDA这三位地址信号,模拟通道与译码选通对应。在使用该引脚时,地址锁存允许信号通常情况下和START信号连接,这样可以锁存启动A/D转换和锁存通道地址。(4)ADDC、ADDB、ADDA:模拟信号通道选择的地址信号,从ADDA到ADDC位数依次升高。地址信号和选中的通道一一对应,即ADDC、ADDB、ADDA都为零时,对应的被选择的通道是IN0,ADDC、ADDB、ADDA分别为0、0、1时,被选择的通道是IN1,ADDC、ADDB、ADDA分别为0、1、0时,被选择的通道是IN2,ADDC、ADDB、ADDA分别为0、1、1时,被选择的通道是IN3,ADDC、ADDB、ADDA分别为1、0、0时,被选择的通道是IN4,ADDC、ADDB、ADDA分别为1、0、1时,被选择的通道是IN5,ADDC、ADDB、ADDA分别为1、1、0时,被选择的通道是IN6,ADDC、ADDB、ADDA分别为1、1、1时,被选择的通道是IN7 。(5)OE:输出允许信号,该引脚是正脉冲或者上升沿时有效。当输出允许信号引脚是高电平的时候,表示模数转换结束;当输出允许信号引脚是低电平的时候,表示模数转换正在进行。在单片机发出输出允许信号的时候,ADC 0809打开输出三态门,数据总线把转换结果读走。当是中断工作方式的时候,输出允许信号引脚可以向CPU申请中断。(6)START:模数转换启动信号,该引脚是正脉冲或者上升沿时有效。模数转换启动信号引脚上的正脉冲或脉冲上升沿能促使逐次逼近寄存器置零,模数转换启动信号引脚上脉冲的下降沿促使开始模数转换。如果芯片正在进行模数转换过程中,又有新的启动脉冲到该引脚,那么原来的模数转换进程就会中断,开始重新从头转换。 (7)VREF+、VREF-:正参考电压输入端和负参考电压输入端,用作逐次逼近的基准,为片内DAC电阻网络提供一个基准电压。当输入是单极性的时候,VREF+通常情况下为+5V,VREF-通常情况下为0V;当输入为双极性的时候,VREF+接正极性的参考电压,VREF-接负极性的参考电压。 (8)EOC:转换结束信号,该引脚是正脉冲或者上升沿时有效。在模数转换进程中时,转换结束信号引脚的信号是低电平,否则,转换结束信号引脚的信号就是高电平。转换结束信号引脚的信号可以向CPU发送中断请求信号,CPU也可以查询转换结束信号引脚的状态信号。当不断采样模拟信号和模数转换时,转换结束信号引脚能当作启动信号,和START端接在一起,但是需要外加电路第一次启动。 ADC0809芯片的工作时序如图10所示:图10 ADC0809芯片的工作时序在通道选择地址有效时,ALE(地址锁存允许信号)一旦有信号,就立即锁存地址,与地址锁存允许信号同时出现转换启动信号,有时候是地址锁存允许信号之后是转换启动信号。而START(A/D转换启动信号)的上升沿会促使逐次逼近寄存器复位,在这个上升沿之后8个时钟周期加上2s的时间内,EOC(转换结束信号)的信号会变成低电平,表明A/D转换正在进行中,A/D转换结束后,转换结束信号再变高电平。单片机接收到转换结束信号的高电平信号后,会立即送出OE(输出允许信号)信号,打开输出三态门,进而读取A/D转换结果。选择模拟输入通道和A/D转换开始操作是可以相互独立的两个部分,但是ADC 0809允许选择模拟输入通道和启动模数转换结合起来,所以,通常情况下,把它们结合起来完成。这样做的好处是可以用一条指令既启动转换又能选择模拟通道。在与单片机接口时,有两种方法选择输入通道,一种通过数据总线选择,另一种是通过地址总线选择13。 如果要用EOC信号去向CPU请求中断,要特别留心启动信号后2s+8个时钟周期的时间内才是EOC信号电平的变低。所以,最好的方法是利用EOC的上升沿产生中断请求。 3.5串口通信 3.5.1串口通信简介串口通信的概念是串口是按位接收和发送字节的。串口通信比并行通信慢,但串口通信结构和原理简单,使用时价格低,还能够实现远距离通信(但远距离通信要在限制内),因为串口通信能使用一根数据线发送数据,而且在同一时间可以在另一根数据线接收数据。串口通信包括地线,发送和接收3根线。因为串口通信是异步的,串口通信能使用一根数据线发送数据,而且在同一时间可以在另一根数据线接收数据。串口通信最重要的参数有(1)起始位(2)数据位(3)停止位(4)奇偶校验(5)波特率。这5个参数必须匹配时这两个端口才能进行串行通信: 1.起始位:先低位后高位是数据传送的顺序,不定长度的空闲位存在于字符之间。起始位“0”是开始传送的信号,告诉接收方开始传送,接收设备在接收状态下不停地检测传送数据线,当接收方在检测到一系列的“1”后,检测到一个“0”,就表明出现起始位,数据开始接收。 2.数据位:在串口通信中,数据位是实际数据位的参数。在一个信息由发送端发送时,这个信息包括起始位、奇偶校验位、数据位和停止位。位于起始位和校检位之间的数据就是数据位,在没有校检位的时候,则位于起始位和停止位之间的是数据位。3.奇偶校验位:它是一种检错方式存在于串口通信过程中,校验位是可有可无的。奇校验、偶校验、高校验和低校验是奇偶校验位的四种检错方式。奇校验和偶校验时,校验位由串口设置,奇个或偶个逻辑高位的传输数据用一个值保证。低位校验和高位校验并不是真正的检查数据,它们只是逻辑高时置位,逻辑低时校验。这就使得接收设备能很清楚一个位的状态,进一步判断接收数据和传输数据是否同步,是否有噪声干扰串口通讯等等。4.停止位:它表示串口通信中传输数据的最后一位。因为在传输线上数据是定时的,且每个设备的时钟都不相同,在通讯中有可能两个设备会有小小的不同步。因此停止位不但表示数据传输的结束,还提供了设备校正时钟同步的机会。 5.波特率:在串口通信中,它是表示通信速度的参数。表示通信中每秒传送位的个数。一般电话线的波特率为15200、36600、28800和14400。当然波特率还可以更大,但是波特率越大,通信距离距离就越短。通常距离很近设备间的通信才用高波特率。现在社会上使用最多的串行通信接口是RS-232。如图所示:图11 串行通信接口是RS-232接口相对于信号地而言,才叫做收发端的数据信号。高低电平之间来回摆动是RS-232典型的信号,发送数据时,五到十五伏之间的正电平和负十五伏到负五伏之间的负电平作用于发送端驱动器。没有传输数据的时候,线上电平是TTL,数据传送从开始到结束的进程中,从TTL电平转换到RS-232电平,再返回TTL电平是线上电平的变化过程。从+3V到+12V和从-3V到-12V是接收器常见的工作电平。因为接收电平和发送电平的值相差也就2V到3V上下,所以它的共模抑制能力有点差,还有双绞线上分布电容的影响,15米是它的最大传送距离,而且最高速率不超过20kb/s。另外,RS-232是为点对点通信,也就是说只用一对收发设备。如图所示:图12 下位机和上位机的接线方法全双工串行通讯接口具有UART所有的功能,STC89C52单片机内部这种接口,并且可以编程。 在异步通信时,接收数据和发送数据都由自己的时钟(RCLK与TCLK)控制,但必须要和字符位数的波特率一致。发送和接收的过程如下:串行口发送启动是从执行一条写SBUF的指令开始的,就是说SBUF被CPU写入数据时,串行口发送过程就已经开始了。然后同步移位脉冲,除了方式0,低位在前面,高位在后面,依次是起始位、数据位、停止位从TXD引脚开始一位一位地向外发送。串行口接收的状态由允许接收位REN决定,允许接收器接收的条件是用软件置REN为“1”。一位接一位的数据被接收端RXD接收,然后RXD把这些数据送入输入移位寄存器,并且输入移位寄存器最左面是起始位,控制电路最后一次移位的时候,把“1”写入接收中断标志RI,向CPU申请中断。SBUF中的数据被CPU读入累加器。接收中断标志RI和