资源描述
基于I2C总线的远程数据采集系统摘 要 针对远距离多点数据的采集,节省微处理器的输入输出引脚,满足多器件控制的要求,设计一套基于I2C总线的远程数据采集系统。本系统以带有I2C接口的LPC900系列单片机作为主控MCU,来实现数据的处理;以P82B96驱动器提高I2C总线的负载能力,提高传输距离从而实现数据的远程传输;以带有I2C接口的A/D转换器PCF8591来采集数据并进行数据类型的转换;以温度传感器AD590来测量环境温度;以LED驱动器ZLG7290驱动数码管显示数据。通过不断的调试和完善实现多点的温度测量,在数码管上显示即时温度。 本系统采用LPC922单片机为主控制器,通过I2C总线实现远距离的温度测量。本系统分为以下几个模块:微处理器核心模块、LED显示模块、键盘模块、温度测量模块、数据远距离传输模块、电源模块。关键词:单片机,I2C总线,远程数据采集I2C Bus-based Remote Data Acquisition SystemABSTRACT For long-distance multi-point data collection, to save the input and output pins of the microprocessor, to meet the requirementsthe control of multiple devices, design a set of I2C bus based remote data acquisition system. The system interfaces with LPC900 MCU I2C as a master MCU, to achieve data processing; to P82B96 I2C bus drive to improve load capacity and improve transmission range in order to achieve the remote transmission of data; to I2C interface with A /D PCF8591 converter to capture data and perform data type conversions; to AD590 temperature sensor to measure ambient temperature; to drive ZLG7290 LED digital display driver data. Debug and improve through continuous multi-point temperature measurement, digital display in real-time temperature. This system uses the LPC922 microcontroller-based controller, through the I2C bus for remote temperature measurements. The system is divided into the following modules: microprocessor core module, LED display module, keyboard module, temperature measurement module, remote data transmission module, power supply module.KEY WORDS: microcontroller, I2C bus, remote data acquisition33 / 37目 录摘 要IABSTRACTII1 绪论11.1数据采集系统及发展历程11.2 I2C总线及优点12 系统方案32.1 系统方案简介32.2 系统总体方案的确定32.2.1 主控制器方案的选型32.2.2 I2C扩展芯片的选型42.2.3 温度传感器的选型42.2.4 LCD液晶驱动器的选型52.2.5 A/D转换器的选型52.3总结53 P89LPC922单片机及I2C接口63.1 P89LPC922单片机概述63.1.1 芯片部框图63.3.2 引脚配置73.4 I/O口73.4.1 I/O端口配置83.4.2 准双向口输出配置83.4.3 开漏输出配置83.4.4 仅为输入配置83.4.5 推挽输出配置93.5 中断93.6 I2C总线接口93.6.1 概述93.6.2 I2C特殊功能寄存器描述103.6.3 I2C操作模式123.7总结134 硬件电路设计144.1 单片机控制电路144.2 LED显示模块154.3 远程传输模块164.4 电源模块184.5 温度测量模块184.5.1 A/D转换器 PCF8591194.5.2 温度传感器AD590194.6总结205 系统软件设计215.1 Main函数设计215.2 I2C发送数据函数225.3 键盘中断函数235.4 键盘处理函数235.5 LED显示函数245.6 A/D转换函数245.7总结256 总结与展望266.1 课题总结266.2 课题展望26致 28参 考 文 献29附 录 元器件清单30附 录 原理图311 绪论1.1数据采集系统及发展历程 数据采集是将被测对象的各种参量通过各种传感元件作适当转换后,再经信号调理、采样、放大、滤波、量化、编码,然后通过无线或有线的方式进行传输等步骤,最后送到控制器进行数据处理或存储纪录的过程。 在进行数据采集时,由于许多被测对象离主控中心距离较远或现场环境不允许数据采集系统就近放置,只能用长线通过远距离传送给主控制器,这便产生了远程数据采集系统。应用远程数据采集系统可对生产现场的各种参数进行采集、监视和记录,是提高产品质量、降低成本、增加生产效率和节省人力的重要手段;另外,远程数据采集是控制系统实现控制的基本条件,只有准确实时的获取对象的运行数据才能实施有效的控制。数据采集系统经历了几个发展阶段。早期的数据采集系统基于ISA、PCI总线,采集的数据是模拟量,系统庞大,采集后需要将模拟信号经过放大、调理通过长线传送给计算机系统;在长线传输过程号的电磁干扰是不可避免的,信号转换的过程也存在干扰;基于串口传输数据的数据采集系统传输速度慢,而且多为主从式结构,系统稳定性低。基于单片机的数据采集系统利用数字传感器直接输出数字信号,经过总线的传输直接送给计算机系统,操作方便,无需信号转换。1.2 I2C总线及优点 I2CInterIntegrated Circuit总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个I2C总线器件同时连接到I2C总线上,所有I2C兼容的器件都具有标准的接口,通过地址来识别通信对象,使他们可以经由I2C总线互相通信。 I2C总线很大程度上减轻了系统对I/O口需求的压力,弥补了系统主处理芯片I/O口的不足,通过扩展芯片总线的传输长度可高达1000米,并且能够以最高以3.4Mbps的最大传输速率支持40个组件。I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接受数据。在CPU与被控IC之间,IC和IC之间进行双向传送,各种被控电路均并联在这条总线上,每个电路都有唯一的地址。在信息传输过程中,I2C总线上并联的每一个模块电路既是被控器或是主控器,又是发生器或是接收器,这取决与它所要完成的功能。CPU发出的控制信号分为地址码和数据码两部分:地址码用来选址,及接通需要控制的电路;数据码是通信的容,这样各控制电路虽然挂在同一条总线上,却彼此独立。利用I2C总线实现远程数据采集不但布线方便,传输速度快,操作方便,节省I/O资源,多主式的结构更增加了系统的稳定性。2 系统方案2.1 系统方案简介该系统设计是利用LPC900系列单片机,通过I2C总线,实现远程的温度采集。基于I2C的远程数据采集系统由主控制模块和数据采集模块两大部分构成。主控制模块以LPC900系列单片机为核心控制器,集成了键盘操作功能。温度传感器AD590测得温度后转换为电信号经过放大和信号调理送入A/D转换器PCF8591实现模数转换,再通过由扩展芯片P82B96扩展后的I2C总线实现远距离通信。显示模块利用I2C总线可以并联多个I2C接口器件的特性,使用ZLG7290作为LED驱动器驱动数码管显示。系统方案如下:图2-1 系统设计框图2.2 系统总体方案的确定2.2.1 主控制器方案的选型 方案一:常用的51单片机89C51 89C51无硬件I2C,需用软件模拟I2C时序,操作繁琐,调试麻烦,部资源不充足,且5V工作电压功耗高、速度低,用于该课题无明显优势。 方案二:LPC900系列单片机 LPC900系列单片机具有体积小、有I2C引脚、超低的功耗完全掉电时电流低至1A,工作电压低至2.43.6V、6倍速于80C51、工业级芯片、可靠性高、增强型I/O口、丰富的片资源和ICP在线编程方便快捷等优势。 用LPC93X系列单片机能满足要求但资源浪费,价格高,故最终确定选用LPC922单片机。2.2.2 I2C扩展芯片的选型 I2C的传输距离有限。实际应用时,必须扩展I2C通信距离。P82B715和P82B96是Philips研制的应用于远距离通信的I2C扩展器。P82B715只有3000pF的输出容性负载,且不可电平转换,而P82B96的最大输出容性负载高达4000pF,支持电平转换,还可以作为通用的准双向总线缓冲器。当通信速率为31KHz可达到1000米。因此在这个系统里选用P82B96。2.2.3 温度传感器的选型方案一:热电偶传感器 热电偶传感器的原理是将温度变化转换为电势的变化。它是利用两种不同材料的金属连接在一起,构成的具有热点效应原理的一种感温元件。其优点为精确度高、测温围广、结构简单、使用方便、型号种类比较多且技术成熟。目前广泛应用于工业和民用产品中。热电偶传感器的种类很多,在选择时必须考虑其灵敏度、可靠性、稳定性等条件。 方案二:热电阻传感器 热电阻传感器的原理是将温度变化转换为电阻值的变化。热电阻传感器是中低温区最常用的一种温度传感器。它的主要特点是:测量精度高,性能稳定、其中铂电阻的测量精度是最高的,被制作成标准的基准仪。从热电阻的测温原理可以知道,被测温度的变化是直接通过热电阻阻值的变化来变现的。因此,热电阻的引出线的电阻的变化会给测温带来影响。为了消除引线电阻的影响,一般采用三线制或四线制。 方案三:半导体集成模拟温度传感器 半导体IC温度传感器是利用半导体PN结的电流、电压与温度变换关系来测温的一种感温元件。这种传感器输出线性好、精度高,而且可以把传感器驱动电路、信号处理电路等与温度传感器部分集成在同一硅片,体积小,使用方便,应用比较广泛的有AD590等。IC温度传感器在微型计算机控制体系中,通常用于室温的测量,以便微型计算机对温度测量值进行补偿。 方案四:半导体集成数字温度传感器 随着科学技术的不断进步和发展,新型温度传感器的种类繁多,应用逐渐广泛,并且开始由模拟式向着数字式、单总线式、双总线式、多总线式发展。数字温度传感器更适合与各种微处理器的I/O接口相连接,组成自动温度控制系统,这种系统克服课模拟传感器与微处理器接口时需要信号调理电路和A/D转换器的弊端,被广泛应用于工业控制、电子测温等各种温度控制系统中,数字温度传感器中比较有代表性的有DS18B20等。 本设计为设计方便,性能稳定,准确性高,决定选用半导体集成温度传感器,由于DS18B20采用的是单总线技术,不支持I2C总线,所以选用AD590模拟温度传感器。2.2.4 LCD液晶驱动器的选型方案一:LCD字符型液晶驱动器PCF2113是LCD字符型液晶驱动器,自身带有I2C接口,I2C速率是400khz,工作电压为2.5V到5V,可驱动两行、每行12个字符,片可产生LCD偏置电压,功耗很低且本身自带片RAM,但是外围引脚多,操作繁琐。方案二:LED驱动器ZLG7290ZLG7290是一种具有I2C接口的键盘及LED驱动管理器件, 提供数据译码和循环、移位、段寻址等控制。它能够直接驱动8位共阴式数码管, 并可扩展驱动电流和驱动电压。 本系统利用I2C总线接口,直接用数码管显示,所以选用ZLG7290可满足要求。2.2.5 A/D转换器的选型考虑到选用的A/D转换器应该有I2C总线接口,精度达到8位就可以满足要求,芯片部应该有多个通道来配合I2C总线进行多点的数据采集,选用PCF8591芯片。2.3总结 本章节主要介绍了系统的整体方案,给出了系统的设计方法和设计思路,同时对系统中的各个器件进行选型,为系统的硬件设计最好准备。3 P89LPC922单片机及I2C接口3.1 P89LPC922单片机概述P89LPC922是一款单片封装的微控制器,适合于许多要求高集成度、低成本的场合,可以满足多方面的性能要求。P89LPC922采用了高性能的处理器结构,指令执行时间只需要24个时钟周期,6倍于标准80C51器件。P89LPC92集成了许多系统级的功能,这样可大减少元件的数目、电路板面积以及系统的成本。LPC922的运算速度很快,当操作频率为12MHz时,除乘法和除法指令外80C51CPU的指令执行时间为167333ns。同一时钟频率下,LPC922的速度为标准80C51器件的6倍。只需要较低的时钟频率即可达到同样的性能,这样无疑降低了功耗EMI;LPC922的操作电压围为2.43.6V。I/O口可承受5V可上拉或驱动到5.5V的电压;它有2个16位定时/计数器,每一个定时器均可设置为溢出时触发相应端口输出或作为PWM输出;LPC922有400kHz字节宽度的I2C通信端口;可以直接实现I2C总线通信;有8个键盘中断输入,另加2路外部中断输入;4个中断优先级;低电平复位,使用片上电复位时不需要外接元件。复位计数器和复位干扰抑制电路可防止虚假和不完全的复位。另外还提供软件复位功能;可配置的片振荡器及其频率围和RC振荡器选项通过用户可编程Flash配置位选择,选择RC振荡器时不需要外接振荡器件。振荡器选项支持的频率围为20KHz12MHz可选择RC振荡器选项并且其频率可进行很好的调节;LPC922有可编程端口输出模式,准双向口,开漏输出,推挽和仅为输入功能模;所有口线均有LED驱动能力20mA;LPC922最少有15个I/O口,选择片振荡和片复位时可多达18个I/O口。3.1.1 芯片部框图LPC922单片机的功能框图如3-1所示。图3-1 功能框图3.3.2 引脚配置 P0口是一个可由用户定义输出类型的8位I/O口。在上电复位时,P0锁存器配置为部上拉禁止的仅为输入模式。P0口由口配置寄存器设定为输出或输入模式,每一个管脚均可单独设定。P0口具有键盘输入中断功能。所有管脚都具有施密特触发输入。引脚有1,20,19,18,17,16,14,13。P1是一个可由用户定义输出类型的8位I/O口。在上电复位时P1锁存器配置为部上拉禁止的仅为输入模式。P1口由口配置寄存器设定为输出或输入模式,每一位均可单独设定。P1.2、P1.3作为输出时为开漏。P1.5为仅为输入模式。所有管脚都具有施密特触发输入。引脚12,11,10,9,8,4,3,2;其中4引脚是RST外部复位输入。作为复位管脚时,输入的低电平会使芯片复位,I/O口和外围功能进入默认状态,处理器从地址0开始执行。P3口是一个可由用户定义输出类型的2位I/O口,在上电复位时,P3锁存器配置为部上拉禁止的仅为输入模式。P3口由口配置寄存器设定为输出或输入模式,每一个管脚均可单独设定,所有管脚都具有施密特触发输入。 3.4 I/O口LPC922有3个I/O口P0、P1和P3。P0和P1为8位I/O口而P3为2位I/O口。I/O口的具体数目取决于所选择的振荡和复位方式,具体如表3-1。表3-1 可用的I/O口数目时钟源复位选项I/O口数目片振荡器或看门狗振荡器无外部复位上电时除外18使用外部复位脚RST17外部时钟输入无外部复位上电时除外17使用外部复位脚RST16低/中/高速振荡器外部晶振或谐振器无外部复位上电时除外16使用外部复位脚RST153.4.1 I/O端口配置除了3个口P1.2、P1.3和P1.5以外,LPC922其他所有的I/O口均可由软件配置成4种输出类型之一,四种输出类型分别为:准双向口标准8051输出模式PXM1.Y=0,PXM2.Y=0;推挽PXM1.Y=0,PXM2.Y=1;开漏输出PXM1.Y=1,PXM2.Y=1;仅为输入功能PXM1.Y=1,PXM2.Y=0。每个口配置2个控制寄存器控制每个管脚输出类型。P1.5只能作为输入口,无法进行配置。P1.2和P1.3只能配置为输入口或开漏口。3.4.2 准双向口输出配置准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。这是因为当口线输出为1时驱动能力很弱,允许外部装置将其拉低。当管脚输出为低时,它的驱动能力很强,可吸收相当大的电流。准双向口除了有三个上拉晶体管适应不同的需要外,其特性和开漏输出有些相似。LPC922为3V器件,但管脚可承受5V电压。在准双向口模式中如果用户在管脚加上5V电压将会有电流从管脚流向VDD。这将导致额外的功率消耗,因此建议不要在准双向口模式中向管脚施加5V电压。准双向口带有一个施密特触发输入以及一个干扰抑制电路。3.4.3 开漏输出配置当口线锁存器为0时,开漏输出关闭所有的上拉晶体管而仅驱动端口的下拉晶体管。作为一个逻辑输出时这种配置方式必须有外部上拉,一般通过电阻外接到VDD。开漏端口带有一个施密特触发输入以及一个干扰抑制电路。3.4.4 仅为输入配置该配置无输出驱动器,它带有一个施密特触发输入口以及一个干扰抑制电路。3.4.5 推挽输出配置推挽输出配置的下拉结构和开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的强上拉。推挽模式一般用于需要更大驱动电流的情况。推挽管脚带有一个施密特触发输入以及一个干扰抑制电路。3.5 中断LPC922采用4中断优先级结构。这为P89LPC922的多中断源的处理提供了极大的灵活性。LPC922支持12个中断源:外部中断0和1、定时器0和1、串口Tx、串口Rx、组合的串口Tx/Rx、掉电检测、看门狗/实时时钟、I2C、键盘中断和比较器1和2。任何一个中断源均可通过对IEN0和IEN1中相应的位置位或清零,实现单独使能或禁止。IEN0中还包含了一个全局禁止位EA,它可禁止所有中断。每个中断源都可被单独设置为四个中断优先级之一,分别通过清零或置位IP0、IP0H、IP1、IP1H中相应位来实现00最低优先级,11最高优先级。一个中断服务程序可响应更高级的中断,但不能响应同优先级或低级中断。最高级中断服务程序不响应其它任何中断。如果两个不同中断优先级的中断源同时申请中断时,响应较高优先级的中断申请。如果两个同优先级的中断源同时申请中断,那么通过一个部查询顺序序列确定首先响应哪一个中断请求,这叫做仲裁队列。3.6 I2C总线接口3.6.1 概述I2C全称:inter integrated chips是一种串行通信协议,专利权归属于Philips公司。I2C有三种速度模式:标准模式0100kbps、快速模式0400kbps、高速模式03.4Mbps。有严格的规,如接口的电气特性、信号时序、信号传输的定义、总线状态设置、总线管理规则及总线状态处理等。LPC922器件提供字节方式的I2C接口所支持的最大数据传输速率为400kHz。I2C总线用两条线SDA和SCL在总线和器件之间传递信息。I2C总线的传输模式是主机和从机之间为双向数据传送,这样主机和从机之间可以相互访问;I2C总线也是多主机总线,它不存在中央主机;在总线上的器件都可以当做主机来发送数据;多主机同时传送时进行仲裁来避免总线上数据冲突;而且串行时钟同步使得不同位速率的器件可以通过一条串行总线进行通信;典型的I2C总线配置如图3-2所示。 图3-2 I2C总线配置3.6.2 I2C特殊功能寄存器描述I2DAT包含要发送的数据或刚接收的数据。当8位直接寻址寄存器没有处理移位数据时,CPU可对其进行读和写。这意味着用户只能在SI置位时对I2DAT进行访问。I2DAT中的数据在SI置位时一直保持不变。I2DAT中的数据总是从右向左移位。寄存器各位如图3-3。图3-3 I2C数据寄存器CPU可以对I2ADR寄存器进行读或写操作。该寄存器仅在I2C处于从模式下才使用。在主模式中该寄存器的容无效。I2ADR的最低位为通用调用位。当该位置位时对通用调用地址进行识别。寄存器各位功能如图3-4。图3-4 I2C从地址寄存器CPU对I2CON寄存器进行读或写操作,见图3-5。其中两个位受硬件影响:SI和STO位。SI由硬件置位而STO位由硬件清零。当I2C处于主模式时,CRSEL决定SCL的频率,在从模式中,该位被忽略并自动与主I2C器件的时钟频率最大400KHz同步。当CRSEL=1时,I2C接口将定时器1的溢出速率的1/2作为I2C的实钟频率。定时器1在8位自动重装模式模式2中由用户编程。图3-5 I2C控制寄存器I2STAT寄存器是个8位只读寄存器。见图3-6。它包含了I2C接口的状态代码。最低3位总是为0。I2C一共有26种可能的状态。当代码为F8时表示无可用的相关状态信息,SI也不会置位。所以其他25种状态码都对应一个已定义的I2C状态。进入任何一个状态时,SI都会置位。 图3-6 I2C状态寄存器当设置CRSEL=0以选择部SCL发生器作为I2C接口的时钟源时,用户必须对I2SCLH和I2SCLL进行设置以选择合适的数据传输速率。I2SCLH定义SCL高电平的PCLK周期数,I2SCLL定义SCL低电平的PCLK周期数。频率由下面的公式决定: 31式中:Fpclk表示PCLK的频率。用户可以通过设置这两个寄存器得到不同的SCL占空比。但寄存器的值必须确保I2C数据传输速率围为0400kHz。因此对I2SCLH和I2SCLL的值有一些限制,建议两个寄存器的取值都应大于3个PCLK周期。3.6.3 I2C操作模式I2C操作模式有:主发送器模式、主接收器模式、从接收器模式和从发送器模式。在这里介绍主发送器模式。在该模式中,数据从主机发送到从机。在进入主发送器模式之前,I2CON必须将I2EN置位使能I2C功能,STA、STO和SI必须设置为0,CRSEL定义串行位速率。如果AA位为0,而另一个器件成为总线的控制器时,I2C将不会对它自身的从地址或通用调用地址产生应答。换句话说,如果AA复位,I2C不能进入从模式。第一个发送的数据包含接收器件的从地址7位和数据方向位。在此模式下,数据方向位R/W为0表示执行写操作。因此第一个发送的字节为SLA+W。数据每次发送8位。每发送一个字节,都接收到一个应答位。起始和停止条件用于指示串行传输的起始和结束。通过置位STA进入I2C主发送模式。I2C逻辑在总线空闲后立即发送一个起始条件。当发送完起始条件后,SI置位。此时状态寄存器I2STAT中的状态代码应当为08H。该状态码用于指向一个中断服务程序。该中断程序将从地址和数据方向位SLA+W装入I2DAT。SI位必须在数据传输能够进行之前清零。当从地址和方向位已经发送且接收到应答位之后,SI位再次置位,并且对于主模式,可能的状态代码为18H、20H或38H。图3-7为主发送器模式和从接收器模式的发送格式。图3-7 主发生器和主接收器模式格式在图中,各种符号的意义为:S:开始位START;SLA:从机地址Slave Address,7位从机地址;W:写标志位Write,1位写标志;R:读标志位Read,1位读标志;A:应答位Acknowledge,1位应答;:非应答位Not Acknowledge,1位非应答;D:数据位DATA,每个数据都必须是8位;P:停止位STOP;阴影:主机产生的信号;无阴影:从机产生的信号。每个状态代码对应的执行动作见表3-1。表3-1 主发送器模式状态代码I2STATI2C总线硬件状态写I2CON硬件执行的下一个动作STASTOSIAA08H已经发送起始条件x00x将发送SLA+W,接收ACK位18H已经发送SLA+W;已经接收到ACK010100110000xxxx将发送数据字节,接收ACK位将发送重复起始条件将发送停止条件;STO标志将复位将发送停止条件,然后发送起始条件;STO标志将复位20H已经发送SLA+W;已经接收到非ACK28H已经发送I2DAT中的数据字节;已接收ACK30H已经发送I2DAT中的数据字节;已接收非ACK38H在SCL+R/W或数据字节中丢失仲裁010000xxI2C总线被释放;进入不可寻址从模式,当总线为空闲时发送起始条件3.7总结 本章节主要介绍了核心MCU LPC922单片机的特性以及片资源,还有对其部的I2C总线接口相关的寄存器如何配置来确保I2C总线的通信。4 硬件电路设计4.1 单片机控制电路本设计中采用Philips LPC922单片机作为主控器,配以外部RC复位电路和晶振电路构成了单片机系统。晶体振荡电路在微控制器系统中非常重要,它决定了整个微控制器系统能否稳定工作。P89LPC922提供几个可由用户选择的振荡器选项。这样就满足了从高精度到低成本的不同需求。这些选项在对Flash进行编程时配置,包括片看门狗振荡器、片RC振荡器、使用外部晶振的振荡器或外部时钟源。晶振可选择低、中或高频晶振,频率围为20KHz到12MHz。本系统中选用6MHz的晶振,可以保证精度达到系统要求。P1.5/RST管脚可作为低有效复位输入或数字输入口。当UCFG1寄存器中的位RPE置位时,使能外部复位输入功能。当清零时,复位脚可作为一个输入管脚。每一个复位源在复位寄存器RSTSRC中都有一个对应的标志。用户可读取该寄存器以判断最近的复位源是哪一个。这些标志位可通过软件写入0清零。P0.0P0.4键盘中断口连接5个按键,用来控制的数据的传输和采集。 单片机的外围电路如下所示:图4-1 单片机键盘电路图4-2 单片机复位及键盘电路4.2 LED显示模块数字LED显示屏由显示数字0 9的数码管和驱动数码管的芯片ZLG7290两大部分组成,。ZLG7290外围电路包括晶振电路、复位电路和I2C接口电路。数码管是4位联体式数码管。ZLG7290是带有I2C接口键盘管理和显示驱动的芯片,加入键盘管理可以实现仪器仪表的人机对话。在图4-3中, U是LED 驱动管理器件ZLG7290。图中SegA SegDP对应连接数码管的8个段, DIG0 DIG7分别连接各数码管的位。按照I2C总线协议的要求, 信号线SCL和SDA上必须要分别加上拉电阻R2、R3, 其阻值是10k,接电源3.3V。ZLG7290需要一外接晶体振荡电路供系统工作, 晶振通常取值8MH z, 调节电容C1和C2通常取值在30pF左右。复位信号是低电平有效, 一般只需外接简单的RC复位电路, 也可以通过直接拉低RST引脚的方法进行复位。因为芯片可直接驱动LED 数码管显示, 电流较大, 且为动态扫描方式, 为尽量消除电源噪声干扰, 提高电路抗干扰能力, 应用时可在电源VCC的正负极间并入一个100uF的电容。VCC选用+ 3. 3V。数码管必须是共阴式的, 不能直接使用共阳式的, 这里采用4位联体式数码管。数码管在工作时要消耗较大的电流, RP2是限流电阻, 阻值是220欧姆。如果要增大数码管的亮度, 可以适当减小电阻值。 图4-3 LED显示电路电路4.3 远程传输模块在使用I2C器件的过程中,I2C总线在应用中常受到限制,例如:信号传输距离有限,常用于一个PCB板;总线上挂接的节点器件有限,受容性负载最大值400pF的限制;挂接多个器件时速度只能取最低值,高速I2C器件速度发挥不出来等。I2C总线扩展器P82B96的开发扩展了总线容量,从400pF扩展到4000pF,增加了总线可支持器件的数目。而且扩展了通讯距离,利用线缆在I2C总线的速率为31KHz时传输距离可长达1000米。 P82B96是一款双极性I2C扩展芯片,在保持I2C系统的工作模式和特性不变的情况下,通过缓冲SDA和SCL总线上的数据来扩展通信距离,同时I2C扩展器P82B96提供了一种在标准I2C总线和其他总线配置间的无锁存、双向性的逻辑接口,它可以把I2C总线连接到215V的逻辑器件上,且不受I2C总线协议的限制和时钟速率的限制。能增加I2C总线的传输距离和节点上的负载数目。I2C扩展器P82B96彻底地解决了I2C总线在远距离传输的不足。 管脚描述如表4-1。表4-1 P82B96管脚描述符号管脚描述Sx1I2C总线Rx2接收信号Tx3发送信号GND4地Ty5发送信号Ry6接收信号Sy7I2C总线SDA或SCLVCC8电源作用为增加I2C通信距离时,两个P82B96必须匹配使用。电路设计时必须加上拉电阻,P82B96的具体连接方法如图4-4所示。图4-4 P82B96实现远距离I2C通信在系统中的应用如下图所示:图4-5 I2C通信扩展电路4.4 电源模块本系统电源用到3.3V、5V两种电源。LPC922单片机供电需要3.3V,ZLG9270的工作电压也用到3.3V,为了降低延时,为P82B96提供3.3V、5V两种电源。PCF8591和AD590都采用5V供电即可。利用电池供电引出5V电压,经SPX3819后输出3.3V提供单片机的工作电压。电路简单,只需在输入输出端分别接上10F滤波电容,电路设计如图4-6。Error! Reference source not found.图4-6 电源转换电路SPX3819是一个具有低压差电压和低噪声输出电压调节器。它有一个小于1以下的初始误差和逻辑兼容的ON / OFF切换输入。禁用时,电力消耗下降到几乎为零。其他主要功能包括电池反向保护,限流和热关机。它具有非常低的输出温度系数,输出设备需要一个很稳定的电容。4.5 温度测量模块 本系统设计目的在于采集现实环境的温度信息,所以需要利用单片机采集温度传感器的数据,温度传感器使用美国模拟器件公司生产的AD590,采集的信号需要经过放大和信号调理,再传送到A/D转换器PCF8951,即把模拟信号转换成数字信号,转换后通过I2C总线传输给处理中心。4.5.1 A/D转换器 PCF8591PCF8591是一款单电源、低功耗8位COMS型A/D、D/A转换芯片,它具有4路模拟量输入通道、一路模拟量输出通道和1个I2C总线接口。该器件I2C从地址的低三位由芯片的A0、A1和A2三个地址引脚决定,所以在不增加任何硬件的情况下同一条I2C总线最多可以连接8个同类型的器件。该器件具有多路模拟量输入、片上跟踪保持、8位A/D转换和8位D/A转换等功能。A/D与D/A的最大转换速率由I2C总线的最大传输速率决定。 PCF8591采用的是单电源供电,正常工作电源电压围为2.5V6V;重要的是通过I2C总线完成数据的输入/输出,采样频率是由I2C总线传输速率决定的。PCF8591进行数据转换时需要外接一参考电压。PCF8591采用典型的I2C总线接口器件寻址方法,即总线地址由器件地址、引脚地址和方向位组成。飞利蒲公司规定A/D器件地址为1001。引脚地址为,其值由用户选择,因此I2C系统中最多可接=8个具有I2C总线接口的A/D器件。地址的最后一位为方向位,当主控器对A/D器件进行读操作时为1,进行写操作时为0。总线操作时,由器件地址、引脚地址和方向位组成的从地址为主控器发送的第一字节。 在进行数据操作时,首先是主控器发出起始信号,然后发出读寻址字节,被控器做出应答后,主控器从被控器读出第一个数据字节,主控器发出应答,主控器从被控器读出第二个数据字节,主控器发出应答一直到主控器从被控器中读出第n个数据字节,主控器发出非应答信号,最后主控器发出停止信号。4.5.2 温度传感器AD590 集成温度传感器实质上是一种半导体集成电路,它是利用晶体管的b-e结压降的不饱和值Vbe与热力学温度T和通过发射极电流I的下述关系实现对温度的检测: 式中:K波尔兹常数; q电子电荷绝对值。 AD590 是美国模拟器件公司生产的单片集成两端感温电流源。流过器件的电流mA等于器件所处环境的热力学温度开尔文度数,即: 式中:Ir流过器件AD590的电流,单位为mA; T热力学温度,单位为K。 AD590的测温围为-55+150,电源电压围为4V30V。其输出电流是以绝对温度零度-273为基准,每增加1,它会增加1A输出电流。AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。AD590精度很高,在-55+150围,非线性误差为0.3。 温度测量电路如下:图4-7 温度测量电路图AD590的输出电流I=273+TAT为摄氏温度,因此测量的电压V为273+TA10K=2.73+T/100V。为了将电压测量出来又务须使输出电流I分流,我们使用LM324作为电压跟随器输出电压等于输入电压V;由于电源供应多器件之后,是带杂波的,因此我们使用齐纳二极管作为稳压管,得到3V的稳压电源,再利用可变电阻分压,其输出电压V1需调整至2.73V;接下来我们使用LM324作为差动放大器使得输出Vo为100K/10KV2-V1=T/10,即假如现在温度为摄氏28,输出电压Vo则为2.8V,输出电压接A/D转换器,那么A/D转换输出的数字量就和摄氏温度成线形比例关系。A/D转换器的参考电压用5V,接地,选择AIN0作为电压输入端。在本系统设计时使用5V基准电压源来实现,基准电压源提供一个绝对电压,与输入电压进行比较以确定适当的数字输出。4.6总结 本章节主要介绍了该系统的硬件电路设计,包括几个模块的核心工作原理。主要包括单片机控制模块、LED显示模块、远程传输模块、电源模块和温度测量模块五大部分。5 系统软件设计5.1 Main函数设计 主函数调用底层应用函数,开始时调用开机延时函数、初始化函数,然后配置PCF8591为输出状态,查询是否有按键标志位,若有键按下则清零键盘中断标志位并做按键处理,无键按下时等待按键按下。本系统的Main函数流程如图5-1,程序见程序清单5-1。图5-1 MAIN函数流程图程序清单5-1 主函数/* 函数名称:main* 函数功能:主函数* 入口参数:无* 出口参数:无*/void main Delay;/* 开机后延迟10ms*/Main_Init;/* 相关初始化操作*/ISendStr; /* 配置PCF8591为输出状态 */ whileif /* 有键按下时处理程序*/KeyFlag=0;/* 清零按键标志位*/KEY_Process;ISendStr;/* 向输出寄存器写入数据 */ 5.2 I2C发送数据函数该函数包括启动总线、发送从器件地址、发送子地址、发送数据、结束总线,全过程严格遵循I2C总线传输数据时序。发送从器件地址后状态寄存器值等于0x18,表示I2C总线已经发送SLA+W并接收了应答信号,下一步将发送子地址字节,不等于时表示未接收到应答信号,这时将置位STO,停止总线并返回0。发送子地址和数据字节后,状态寄存器值为0x28,表示已经发送子地址或数据字节并接收了应答信号,不等于表示没有接收到应答信号并返回0。发送完数据字节后,状态寄存器里的值为0x28时将结束总线并返回1。具体流程如 图5-2所示。 图5-2 I2C发送数据5.3 键盘中断函数首先在键盘中断的初始化程序中置位键盘中断允许,清零键盘中断标志,设置中断产生条件,打开中断。键盘中断程序如 程序清单5-2。 程序清单5-2 键盘中断服务程序/* 函数名称:KEY_ISR* 函数功能:键盘中断服务程序* 入口参数:无* 出口参数:无*/void KEY_ISR interrupt7KeyFlag= 1;/* 设置按键标志位*/KBCON= 0x00;/* 清除键盘标志位*/5.4 键盘处理函数按键控制远程扩展I/O口电平,具体包括按键判断、按键防抖和按键处理三步骤。其流程如图5-3。图5-3 键盘处理子程序流程图5.5 LED显示函数使用ZLG7290驱动数码管显示有两种方法,一是向命令缓冲区07H-08H写入复合指令,向07H写入命令并选通相应的数码管,向08H写入所要显示的数据,这种方法每次只能写入一个字节的数据,多字节数据的输出可在程序中用循环写入的方法实现;二是向显示缓存寄存器10H-17H写入所要显示的数据的段码,段码的编码规则为从高位到低位为abcdefgdp,每次可写入1-8个字节数据。图5-3 ZLG7290键盘扫描及显示程序流程图该流程图的功能是复位后,数码管显示初值0-7,若有键按下,则判断是普通键还是功能键,若为功能键,则保持原来的显示不变,使8个数码管同时闪烁;若为普通键,则将键值显示在第一个和第二个数码管并同时闪烁,其他数码管不闪烁,原有的显示左移两位。5.6 A/D转换函数对PCF8591的AIN0通道进行A/D转换,将转换后的8位二进制数读取到单片机中。首先将字节地址选择字写入PCF8591中,与D/A转换设置相同为90H;接下来写入转换控制字,因只对AIN0通道进行采样,所以转换控制字为00H;接下来再写入一个地址选择字,此时的地址选择字中的D0R/应当设置成1读,所以此时的地址选择字为91H。图5-4 A/D转换流程图5.7总结本章节主要介绍了系统的软件实现,主函数的流程确定函数的设计思想,几个子函数的设计使系统的方案得以实现。子函数设计主要包括:I2C发送数据函数、键盘中断、键盘处理函数、LED显示函数和A/D转换函数。6 总结与展望6.1 课题总结经过三个月理论研究和实验验证,完成了基于I2C总线的远程I/O扩展系统的设计。从绘制电路原理图、PCB图、制板到电路实现整个过程中,我了解了单片机的开发流程,熟悉了多种元器件的应用。一个好的系统是硬件设计与软件编程的完美结合,任何一个环节都会影响到整个系统的可行性。在系统的实现过程中遇到了不少的困难,也走了不少弯路;同样,在这个过程中也有了很多收获,很多体会。主要的感受有以下几点:第一、一定要把基础知识学好,不断提高自学能力。只有对系统所需所有知识点都有稳固的基础,才能顺利完成工作。实践是以理论为依据的,理论对实践有重要的指导作用。没有良好的理论基础,实践只是空中楼阁,是不牢固的。第二、重视实践,提高实际操作能力。我们必须掌握理论知识,但仅有理论是不够的;实践当中所需要的大量技能是书本上根本没有的,也是课堂上根本学不到的,这就需要自己在工作之余不断的努力练习才可以弥补这方面的不足。同时,在实践中学习是一件令人愉快的事,同时还能巩固之前所学的知识,提高自身的能力。第三、要真正做到脚踏实地,彻底抛弃侥幸心理。软件以及系统的设计要求开发者考虑周全,认真对待每一个细节;一个微小的错误也可能使整个系统瘫痪。第四、要有坚韧的意志,勇敢面对困难与挑战。程序的调试与修改是一项艰苦而又枯燥的工作。第五、合理有效的利用身边资源。公司图书馆、互联网给我们提供了非常丰富的资源,身边的同事就更是一部部活的万能词典,他们丰富的工作学习经验与项目实践经验是我们最有力的保障。本系统只设计了通过I2C总线进行远距离的数据采集,应该还可以加入采集后的控制系统和报警系统的。但由于本人能力有限,目前还只是进行了粗浅的研究,还有很多深入的细节问题尚待研究解决,但是此设计还是在一定程度上证明了课题的可行性。6.2 课题展望I2C总线最显著的特点是规的完整性、结构的独立性和用户使用时的傻瓜化。目前I2C总线大量应用在视频、音响系统中,Philips公司推出的近200种I2C总线接口器件,I2C总线已被众多的厂家使用在高档电视机、机和摄录像系统中,在测控领域中单片机应用尚未普及推广,I2C总线有望成为一项常规性系统扩展技术。I2C远程数据采集技术已经为许多公司采用,推广该技术有助于推广我国单片机的应用水平。该技术有很广泛的应用前途,且I2C总线的数据传输速度也越来越快。远程数据的采集可以扩展到很多节点的数据检测和控制,应用前景很好。优化设计应考虑数据传输的可靠性、工程实施的可行性、系统兼容性及可扩展性,同时还应使该系统具有投资少、见效快、应用围广泛等特点。在I2C总线技术上还有很多工作可以做,如位方式的数据通讯、由ACCESS.BUG构成的桌面多机系统及网络,也可能是未来的一个研究方向。本人相信随着系统的进一步完善和发展,最终能够把一套完整的扩展模块应用于众多领域。致 四年的生活相处不久,却从科技大学老师身上学到了太多,必将终身受益,感所有教授过我课程的的老师们。此论文是在玉杰老师的指导下完成的,从课题选题、学习原理图与PCB绘制开始,到做出实物、编写程序并加以调试改进,再到最后完成稳定的硬件实物和到论文完成的整个过程中,曾遇到过不少的问题,在解决问题的过程中,收获了很多。始终浸透着导师的心血和汗水。导师治学严谨、博文广识、务实求精,他们对新知识孜孜以求的探索精神和对学术前沿动态敏锐的洞察力使学生受益匪浅,真诚正直的为人态度无不让我终生难忘。在整个毕业设计期间,得到了老师的谆谆教诲和卓有成效的指导,在此,特向导师致以最诚挚的敬意和最美好的祝愿!感身边所有的朋友与同学,你们四年来的关照与宽容,与你们一起走过的缤纷时代,将会是我一生最珍贵的回忆。参 考 文 献1 周立功LPC900系列Flash单片机应用技术航空航天大学,20032 马忠梅,籍顺心等单片机的C语言应用程序设计航空航天大学,20013 康华光电子技术基础模拟部分第五版华中科技大学电子技术课题组,2005,3203604 朝青,艳玲单片机与PC机网络通信技术M:航天航空大学,2007:10275 周立功等增强型80C51单片机速成与实践:航空航天大学,2003:10276 Philips SemiconductorI2C总线概要.pdf7 Philips SemiconductorI2C总线规.pdf8 Philips SemiconductorP89LPC920_21_22_221-08_en.pdf
展开阅读全文