基于I2C总线的多通道温度实时采集系统的设计与实现2014414185026_3001796[精选]_第1页
基于I2C总线的多通道温度实时采集系统的设计与实现2014414185026_3001796[精选]_第2页
基于I2C总线的多通道温度实时采集系统的设计与实现2014414185026_3001796[精选]_第3页
基于I2C总线的多通道温度实时采集系统的设计与实现2014414185026_3001796[精选]_第4页
基于I2C总线的多通道温度实时采集系统的设计与实现2014414185026_3001796[精选]_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、comment a1: 参照前一稿批注, 本本 科科 生生 毕毕 业业 设设 计计 论论 文文 基于 i2c 总线的多通道温度实时采集系统的设计 与实现 傅煜傅煜 院院 系:系: 机电学院机电学院 专专 业:业: 机电一体化专业机电一体化专业 班班 级:级: 112112 班班 学学 号:号: 120702210120702210 指导教师:指导教师: 薛建国薛建国 职称(或学位):职称(或学位): 副教授副教授 2014 年年 4 月月 原创性声明 本人郑重声明:所呈交的论文(设计) ,是本人在导师的指导下, 独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论 文(设计)不含任何

2、其他个人或集体已经发表或撰写过的作品成果。对 本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确 方式标明。本人完全意识到本声明的法律结果由本人承担。 学生签名: 年 月 日 指导声明 本人指导的 同学的毕业论文(设计)题目大小、难 度适当,且符合该同学所学专业的培养目标的要求。本人在指导过 程中,通过网上文献搜索及文献比对等方式,对其毕业论文(设计) 内容进行了检查,未发现抄袭现象,特此声明。 指导教师签名: 年 月 日 目 录 摘摘 要要.i abstract.ii 1 绪论绪论.1 1.1 数据采集系统及发展历程.1 1.2 i2c 总线及优点.1 2 系统方案系统方案.3

3、2.1 系统方案简介.3 2.2 系统总体方案的确定.3 2.2.1 主控制器方案的选型.3 2.2.2 i2c 扩展芯片的选型.4 2.2.3 温度传感器的选型.4 2.2.4 lcd 液晶驱动器的选型.5 2.2.5 a/d 转换器的选型.5 2.3 总结.5 3 p89lpc922 单片机及单片机及 i2c 接口接口.6 3.1 p89lpc922 单片机概述.6 3.1.1 芯片内部框图.6 3.3.2 引脚配置.7 3.4 i/o 口 .7 3.4.1 i/o 端口配置 .8 3.4.2 准双向口输出配置.8 3.4.3 开漏输出配置.8 3.4.4 仅为输入配置.8 3.4.5 推

4、挽输出配置.9 3.5 中断.9 3.6 i2c 总线接口.9 3.6.1 概述.9 3.6.2 i2c 特殊功能寄存器描述.10 3.6.3 i2c 操作模式.12 3.7 总结.13 4 硬件电路设计硬件电路设计.14 4.1 单片机控制电路.14 4.2 led 显示模块.15 4.3 远程传输模块.16 4.4 电源模块.18 4.5 温度测量模块.18 4.5.1 a/d 转换器 pcf8591.19 4.5.2 温度传感器 ad590.19 4.6 总结.20 5 系统软件设计系统软件设计.21 5.1 main 函数设计.21 5.2 i2c 发送数据函数.22 5.3 键盘中断

5、函数.23 5.4 键盘处理函数.23 5.5 led 显示函数.24 5.6 a/d 转换函数.24 5.7 总结.25 6 总结与展望总结与展望.26 6.1 课题总结.26 6.2 课题展望.26 致致 谢谢.28 参参 考考 文文 献献.29 附附 录录 元器件清单元器件清单.30 附附 录录 原理图原理图31 1 基于 i2c 总线的多通道温度实时采集系统的 设计与实现 傅煜 (电子信息工程系 指导教师:薛建国) 摘要:针对远距离多点数据的采集,节省微处理器的输入输出引脚,满足多器件控制的要求,设计一 套基于 i2c 总线的远程数据采集系统。本系统以带有 i2c 接口的 lpc900

6、 系列单片机作为主控 mcu, 来实现数据的处理;以 p82b96 驱动器提高 i2c 总线的负载能力,提高传输距离从而实现数据的远程 传输;以带有 i2c 接口的 a/d 转换器 pcf8591 来采集数据并进行数据类型的转换;以温度传感器 ad590 来测量环境温度;以 led 驱动器 zlg7290 驱动数码管显示数据。通过不断的调试和完善实现 多点的温度测量,在数码管上显示即时温度。 本系统采用 lpc922 单片机为主控制器,通过 i2c 总线实现远距离的温度测量。本系统分为以下 几个模块:微处理器核心模块、led 显示模块、键盘模块、温度测量模块、数据远距离传输模块、电 源模块。

7、关键词:单片机,i2c 总线,远程数据采集 design and implementation of real time data acquisition system for multi channel temperature based on i2c bus fuyu (electronic 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 w

8、ith 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 2 measurement, digital display in real-time tempera

9、ture. 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 mod

10、ule, power supply module. key words: microcontroller, i2c bus, remote data acquisition 3 1 绪论 及发展历程 数据采集是将被测对象(外部世界、现场)的各种参量(如物理量、化学量、生物量等) 通过各种传感元件作适当转换后,再经信号调理、采样、放大、滤波、量化、编码,然 后通过无线或有线的方式进行传输等步骤,最后送到控制器进行数据处理或存储纪录的 过程。 在进行数据采集时,由于许多被测对象离主控中心距离较远或现场环境不允许数据 采集系统就近放置,只能用长线通过远距离传送给主控制器,这便产生了远程数据采集 系统

11、。应用远程数据采集系统可对生产现场的各种参数进行采集、监视和记录,是提高 产品质量、降低成本、增加生产效率和节省人力的重要手段;另外,远程数据采集是控 制系统实现控制的基本条件,只有准确实时的获取对象的运行数据才能实施有效的控制。 数据采集系统经历了几个发展阶段。早期的数据采集系统基于 isa、pci 总线,采集 的数据是模拟量,系统庞大,采集后需要将模拟信号经过放大、调理通过长线传送给计 算机系统;在长线传输过程中信号的电磁干扰是不可避免的,信号转换的过程也存在干 扰;基于串口传输数据的数据采集系统传输速度慢,而且多为主从式结构,系统稳定性 低。基于单片机的数据采集系统利用数字传感器直接输出

12、数字信号,经过总线的传输直 接送给计算机系统,操作方便,无需信号转换。 1.2 i2c 总线及优点 i2c(interintegrated circuit)总线是一种由 philips 公司开发的两线式串行总线, 用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。它 是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速 率较高等优点。在主从通信中,可以有多个 i2c 总线器件同时连接到 i2c 总线上,所有 i2c 兼容的器件都具有标准的接口,通过地址来识别通信对象,使他们可以经由 i2c 总线 互相通信。 i2c 总线很大程度上减轻了系统对 i

13、/o 口需求的压力,弥补了系统主处理芯片 i/o 口 的不足,通过扩展芯片总线的传输长度可高达1000米,并且能够以最高以的最大传输速 率支持40个组件。 i2c 总线是由数据线 sda 和时钟线 scl 构成的串行总线,可发送和接受数据。在 cpu 与被控 ic 之间,ic 和 ic 之间进行双向传送,各种被控电路均并联在这条总线上, 每个电路都有唯一的地址。在信息传输过程中,i2c 总线上并联的每一个模块电路既是被 控器(或是主控器) ,又是发生器(或是接收器) ,这取决与它所要完成的功能。cpu 发 出的控制信号分为地址码和数据码两部分:地址码用来选址,及接通需要控制的电路; 4 数据码

14、是通信的内容,这样各控制电路虽然挂在同一条总线上,却彼此独立。 利用 i2c 总线实现远程数据采集不但布线方便,传输速度快,操作方便,节省 i/o 资 源,多主式的结构更增加了系统的稳定性。 5 2 系统方案 2.1 系统方案简介 该系统设计是利用 lpc900 系列单片机,通过 i2c 总线,实现远程的温度采集。基于 i2c 的远程数据采集系统由主控制模块和数据采集模块两大部分构成。主控制模块以 lpc900 系列单片机为核心控制器,集成了键盘操作功能。温度传感器 ad590 测得温度 后转换为电信号经过放大和信号调理送入 a/d 转换器 pcf8591 实现模数转换,再通过由 扩展芯片 p

15、82b96 扩展后的 i2c 总线实现远距离通信。显示模块利用 i2c 总线可以并联多 个 i2c 接口器件的特性,使用 zlg7290 作为 led 驱动器驱动数码管显示。系统方案如下: lpc922 复位电路 晶振电路 共阴数码 管 键盘电路 p82b96 p82b96 a/d pcf8591 ads590 sda scl sda sda scl scl sclsda led驱动器 7290 sclsda 段输出 图 2-1 系统设计框图 2.2 系统总体方案的确定 2.2.1 主控制器方案的选型主控制器方案的选型 方案一:常用的 51 单片机 89c51 89c51 无硬件 i2c,需用

16、软件模拟 i2c 时序,操作繁琐,调试麻烦,内部资源不充足, 且 5v 工作电压功耗高、速度低,用于该课题无明显优势。 方案二:lpc900 系列单片机 lpc900 系列单片机具有体积小、有 i2c 引脚、超低的功耗(完全掉电时电流低至 1a,工作电压低至 2.43.6v) 、6 倍速于 80c51、工业级芯片、可靠性高、增强型 i/o 口、丰富的片内资源和 icp 在线编程方便快捷等优势。 用 lpc93x 系列单片机能满足要求但资源浪费,价格高,故最终确定选用 lpc922 单 片机。 6 2.2.2 i2c 扩展芯片的选型扩展芯片的选型 i2c 的传输距离有限。实际应用时,必须扩展 i

17、2c 通信距离。p82b715 和 p82b96 是 philips 研制的应用于远距离通信的 i2c 扩展器。p82b715 只有 3000pf 的输出容性负载, 且不可电平转换,而 p82b96 的最大输出容性负载高达 4000pf,支持电平转换,还可以 作为通用的准双向总线缓冲器。当通信速率为 31khz 可达到 1000 米。因此在这个系统里 选用 p82b96。 2.2.3 温度传感器的选型温度传感器的选型 方案一:热电偶传感器 热电偶传感器的原理是将温度变化转换为电势的变化。它是利用两种不同材料的金 属连接在一起,构成的具有热点效应原理的一种感温元件。其优点为精确度高、测温范 围广

18、、结构简单、使用方便、型号种类比较多且技术成熟。目前广泛应用于工业和民用 产品中。热电偶传感器的种类很多,在选择时必须考虑其灵敏度、可靠性、稳定性等条 件。 方案二:热电阻传感器 热电阻传感器的原理是将温度变化转换为电阻值的变化。热电阻传感器是中低温区 最常用的一种温度传感器。它的主要特点是:测量精度高,性能稳定、其中铂电阻的测 量精度是最高的,被制作成标准的基准仪。从热电阻的测温原理可以知道,被测温度的 变化是直接通过热电阻阻值的变化来变现的。因此,热电阻的引出线的电阻的变化会给 测温带来影响。为了消除引线电阻的影响,一般采用三线制或四线制。 方案三:半导体集成模拟温度传感器 半导体 ic

19、温度传感器是利用半导体 pn 结的电流、电压与温度变换关系来测温的一 种感温元件。这种传感器输出线性好、精度高,而且可以把传感器驱动电路、信号处理 电路等与温度传感器部分集成在同一硅片,体积小,使用方便,应用比较广泛的有 ad590 等。ic 温度传感器在微型计算机控制体系中,通常用于室温的测量,以便微型计 算机对温度测量值进行补偿。 方案四:半导体集成数字温度传感器 随着科学技术的不断进步和发展,新型温度传感器的种类繁多,应用逐渐广泛,并 且开始由模拟式向着数字式、单总线式、双总线式、多总线式发展。数字温度传感器更 适合与各种微处理器的 i/o 接口相连接,组成自动温度控制系统,这种系统克服

20、课模拟传 感器与微处理器接口时需要信号调理电路和 a/d 转换器的弊端,被广泛应用于工业控制、 电子测温等各种温度控制系统中,数字温度传感器中比较有代表性的有 ds18b20 等。 本设计为设计方便,性能稳定,准确性高,决定选用半导体集成温度传感器,由于 ds18b20 采用的是单总线技术,不支持 i2c 总线,所以选用 ad590 模拟温度传感器。 7 2.2.4 lcd 液晶驱动器的选型液晶驱动器的选型 方案一:lcd 字符型液晶驱动器 pcf2113 是 lcd 字符型液晶驱动器,自身带有 i2c 接口,i2c 速率是 400khz,工作 电压为 2.5v 到 5v,可驱动两行、每行 1

21、2 个字符,片内可产生 lcd 偏置电压,功耗很低 且本身自带片内 ram,但是外围引脚多,操作繁琐。 方案二:led 驱动器 zlg7290 zlg7290是一种具有i2c接口的键盘及led驱动管理器件, 提供数据译码和循环、移 位、段寻址等控制。它能够直接驱动8位共阴式数码管(或64只独立的led ), 并可扩展驱 动电流和驱动电压。 本系统利用 i2c 总线接口,直接用数码管显示,所以选用 zlg7290 可满足要求。 2.2.5 a/d 转换器的选型转换器的选型 考虑到选用的 a/d 转换器应该有 i2c 总线接口,精度达到 8 位就可以满足要求,芯片 内部应该有多个通道来配合 i2c

22、 总线进行多点的数据采集,选用 pcf8591 芯片。 本章节主要介绍了系统的整体方案,给出了系统的设计方法和设计思路,同时对系 统中的各个器件进行选型,为系统的硬件设计最好准备。 8 3 p89lpc922 单片机及 i2c 接口 3.1 p89lpc922 单片机概述 p89lpc922 是一款单片封装的微控制器,适合于许多要求高集成度、低成本的场合, 可以满足多方面的性能要求。p89lpc922 采用了高性能的处理器结构,指令执行时间只 需要 24 个时钟周期,6 倍于标准 80c51 器件。p89lpc92 集成了许多系统级的功能, 这样可大大地减少元件的数目、电路板面积以及系统的成本

23、。 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 个键盘

24、中断输入,另加 2 路外部中断输入;4 个中断优先级;低电平复位,使 用片内上电复位时不需要外接元件。复位计数器和复位干扰抑制电路可防止虚假和不完 全的复位。另外还提供软件复位功能;可配置的片内振荡器及其频率范围和 rc 振荡器选 项(通过用户可编程 flash 配置位选择),选择 rc 振荡器时不需要外接振荡器件。振荡 器选项支持的频率范围为 20khz12mhz 可选择 rc 振荡器选项并且其频率可进行很好的 调节;lpc922 有可编程端口输出模式,准双向口,开漏输出,推挽和仅为输入功能模; 所有口线均有 led 驱动能力 20ma;lpc922 最少有 15 个 i/o 口,选择片内振

25、荡和片内 复位时可多达 18 个 i/o 口。 3.1.1 芯片内部框图芯片内部框图 lpc922 单片机的功能框图如 3-1 所示。 9 图 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 锁存器配置为内部上拉禁止

26、的仅为输入模式。p1 口由口配置寄存器设定为 输出或输入模式,每一位均可单独设定。p1.2、p1.3 作为输出时为开漏。p1.5 为仅为输入 模式。所有管脚都具有施密特触发输入。引脚 12,11,10,9,8,4,3,2;其中 4 引脚 是 rst 外部复位输入(通过 flash 配置选择)。作为复位管脚时,输入的低电平会使芯片复 位,i/o 口和外围功能进入默认状态,处理器从地址 0 开始执行。p3 口是一个可由用户定 义输出类型的 2 位 i/o 口,在上电复位时,p3 锁存器配置为内部上拉禁止的仅为输入模 式。p3 口由口配置寄存器设定为输出或输入模式,每一个管脚均可单独设定,所有管脚

27、都具有施密特触发输入。 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 口数目 10 无外部复位上电时除外18片内振荡器或 看门狗振荡器使用外部复位脚 rst17 无外部复位上电时除外17 外部时钟输入 使用外部复位脚 rst16 无外部复位上电时除外16低/中/高速振荡器 外部晶振或谐振器使用外部复位脚 rst15 3.4.1 i/o 端口配置端口配置 除了 3

28、个口(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(rst)只能作为输入口,无 法进行配置。p1.2(scl/t0)和 p1.3(sda/int0)只能配置为输入口或开漏口。 3.4.2 准双向口输出配置准双向口输出配置 准

29、双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。这是因为 当口线输出为 1 时驱动能力很弱,允许外部装置将其拉低。当管脚输出为低时,它的驱 动能力很强,可吸收相当大的电流。准双向口除了有三个上拉晶体管适应不同的需要外, 其特性和开漏输出有些相似。 lpc922 为 3v 器件,但管脚可承受 5v 电压。在准双向口模式中如果用户在管脚加 上 5v 电压将会有电流从管脚流向 vdd。这将导致额外的功率消耗,因此建议不要在准双 向口模式中向管脚施加 5v 电压。 准双向口带有一个施密特触发输入以及一个干扰抑制电路。 3.4.3 开漏输出配置开漏输出配置 当口线锁存器为0时,开漏输出关闭

30、所有的上拉晶体管而仅驱动端口的下拉晶体管。 作为一个逻辑输出时这种配置方式必须有外部上拉,一般通过电阻外接到 vdd。 开漏端口带有一个施密特触发输入以及一个干扰抑制电路。 3.4.4 仅为输入配置仅为输入配置 该配置无输出驱动器,它带有一个施密特触发输入口以及一个干扰抑制电路。 3.4.5 推挽输出配置推挽输出配置 推挽输出配置的下拉结构和开漏输出以及准双向口的下拉结构相同,但当锁存器为 1时提供持续的强上拉。推挽模式一般用于需要更大驱动电流的情况。 11 推挽管脚带有一个施密特触发输入以及一个干扰抑制电路。 3.5 中断 lpc922 采用 4 中断优先级结构。这为 p89lpc922 的

31、多中断源的处理提供了极大的灵 活性。lpc922 支持 12 个中断源:外部中断 0 和 1、定时器 0 和 1、串口 tx、串口 rx、 组合的串口 tx/rx、掉电检测、看门狗/实时时钟、i2c、键盘中断和比较器 1 和 2。 任何一个中断源均可通过对 ien0 和 ien1 中相应的位置位或清零,实现单独使能或 禁止。ien0 中还包含了一个全局禁止位 ea,它可禁止所有中断。 每个中断源都可被单独设置为四个中断优先级之一,分别通过清零或置位 ip0、ip0h、ip1、ip1h 中相应位来实现(00最低优先级,11最高优先级)。一 个中断服务程序可响应更高级的中断,但不能响应同优先级或低

32、级中断。最高级中断服 务程序不响应其它任何中断。如果两个不同中断优先级的中断源同时申请中断时,响应 较高优先级的中断申请。 如果两个同优先级的中断源同时申请中断,那么通过一个内部查询顺序序列确定首 先响应哪一个中断请求,这叫做仲裁队列。 3.6 i2c 总线接口 3.6.1 概述概述 i2c(全称:inter integrated chips)是一种串行通信协议,专利权归属于 philips 公司。 i2c 有三种速度模式:标准模式(0100kbps)、快速模式(0400kbps)、高速模 式(03.4mbps)。有严格的规范,如接口的电气特性、信号时序、信号传输的定义、 总线状态设置、总线管

33、理规则及总线状态处理等。lpc922 器件提供字节方式的 i2c 接口 所支持的最大数据传输速率为 400khz。 i2c 总线用两条线 sda 和 scl 在总线和器件之间传递信息。i2c 总线的传输模式是 主机和从机之间为双向数据传送,这样主机和从机之间可以相互访问;i2c 总线也是多主 机总线,它不存在中央主机;在总线上的器件都可以当做主机来发送数据;多主机同时 传送时进行仲裁来避免总线上数据冲突;而且串行时钟同步使得不同位速率的器件可以 通过一条串行总线进行通信; 典型的 i2c 总线配置如图 3-2 所示。 12 vcc rp rp lpc922 sda scl scl a/d转换

34、sdascl led驱动 sda scl i2c总线 图 3-2 i2c 总线配置 3.6.2 i2c 特殊功能寄存器描述特殊功能寄存器描述 i2dat 包含要发送的数据或刚接收的数据。当 8 位直接寻址寄存器没有处理移位数 据时,cpu 可对其进行读和写。这意味着用户只能在 si 置位时对 i2dat 进行访问。 i2dat 中的数据在 si 置位时一直保持不变。i2dat 中的数据总是从右向左移位。寄存器 各位如图 3-3。 i2dat.7i2dat.1i2dat.2i2dat.3i2dat.4i2dat.5i2dat.6i2dat.0 不可位寻址 复位源:任何复位 复位值: 000000

35、00b i2dat 地址: dah 7 6 5 4 3 2 1 0 图 3-3 i2c 数据寄存器 cpu 可以对 i2adr 寄存器进行读或写操作。该寄存器仅在 i2c 处于从模式下才使用。 在主模式中该寄存器的内容无效。i2adr 的最低位(lsb)为通用调用位。当该位置位时对 通用调用地址(00h)进行识别。寄存器各位功能如图 3-4。 i2adr.1i2adr.2i2adr.3i2adr.4i2adr.5i2adr.6gc 不可位寻址 复位源:任何复位 复位值: 00000000b i2adr 地址: dbh 7 6 5 4 3 2 1 0 i2adr.7 位 符号 功能 i2adr.

36、71 i2adr.60 七位自身从地址。当处于主模式时,改寄存器内容无效。 i2adr.0 gc 通用调用位。置位时,对通用调用地址进行识别,否则忽略。 图 3-4 i2c 从地址寄存器 cpu 对 i2con 寄存器进行读或写操作,见图 3-5。其中两个位受硬件影响:si 和 sto 位。si 由硬件置位而 sto 位由硬件清零。 当 i2c 处于主模式时,crsel 决定 scl 的频率,在从模式中,该位被忽略并自动与 主 i2c 器件的时钟频率(最大 400khz)同步。当 crsel=1 时,i2c 接口将定时器 1 的溢 13 出速率的 1/2 作为 i2c 的实钟频率。定时器 1

37、在 8 位自动重装模式(模式 2)中由用户编 程。 -aasistostai2encrsel 可位寻址 复位源:任何复位 复位值: x00000 x0b i2con 地址: d8h 7 6 5 4 3 2 1 0 位 符号 功能 i2con.7 - 保留将来之用。用户不要将其置1。 i2con.6 i2en i2c接口使能。该位为0时,i2c功能被禁止。p1.3/sda和p1.2/scl可作为通用 i/o 口。该位置位时,使能i2c接口。 i2con.5 sta 起始标志。sta=1: i2c进入主模式,检测i2c总线当总线空闲时产生一个起始条 件。也能产生重复起始条件。sta=0:不会产生起

38、始或重复起始条件。 i2con.4 sto 停止标志。sto=1:在主模式中,向 i2c发送一个停止条件。在从模式中,可以从 错误状态中恢复。停止标志由硬件自动清零。 i2con.3 si i2c中断标志。当进入25种可能的i2c状态中的任意一个,该位置位。当ea、ei2c 以及si置位时产生中断。该位通过软件清零。 i2con.2 aa 声明应答标志位。 i2con.1 - 保留将来之用。用户不要将其置1。 i2con.0 crsel scl时钟选择。crsel=1:定时器1溢出产生scl;crsel=0:使用内部scl发生 器。 - 图 3-5 i2c 控制寄存器 i2stat 寄存器是个

39、 8 位只读寄存器。见图 3-6。它包含了 i2c 接口的状态代码。最 低 3 位总是为 0。i2c 一共有 26 种可能的状态。当代码为 f8 时表示无可用的相关状态信 息,si 也不会置位。所以其他 25 种状态码都对应一个已定义的 i2c 状态。进入任何一个 状态时,si 都会置位。 00sta.0sta.1sta.2sta.30 不可位寻址 复位源:任何复位 复位值: 11111000b i2stat 地址: d9h 7 6 5 4 3 2 1 0 sta.4 位 符号 功能 sta.73 sta.40 i2c的状态代码。 sta.20 - 这3位未用并设置为0。 图 3-6 i2c

40、状态寄存器 当设置 crsel=0 以选择内部 scl 发生器作为 i2c 接口的时钟源时,用户必须对 i2sclh 和 i2scll 进行设置以选择合适的数据传输速率。i2sclh 定义 scl 高电平的 pclk 周期数,i2scll 定义 scl 低电平的 pclk 周期数。频率由下面的公式决定: (3-1) )scll2isclh2i (2 fpclk 位速率 式中:fpclk表示 pclk 的频率。用户可以通过设置这两个寄存器得到不同的 scl 占 空比。但寄存器的值必须确保 i2c 数据传输速率范围为 0400khz。因此对 i2sclh 和 i2scll 的值有一些限制,建议两个

41、寄存器的取值都应大于 3 个 pclk 周期。 3.6.3 i2c 操作模式操作模式 14 i2c 操作模式有:主发送器模式、主接收器模式、从接收器模式和从发送器模式。在 这里介绍主发送器模式。 在该模式中,数据从主机发送到从机。在进入主发送器模式之前,i2con 必须将 i2en 置位使能 i2c 功能,sta、sto 和 si 必须设置为 0,crsel 定义串行位速率。如果 aa 位为 0,而另一个器件成为总线的控制器时,i2c 将不会对它自身的从地址或通用调 用地址产生应答。换句话说,如果 aa 复位,i2c 不能进入从模式。 第一个发送的数据包含接收器件的从地址(7 位)和数据方向位

42、。在此模式下,数据 方向位(r/w)为 0 表示执行写操作。因此第一个发送的字节为 sla+w。数据每次发送 8 位。每发送一个字节,都接收到一个应答位。起始和停止条件用于指示串行传输的起始 和结束。 通过置位 sta 进入 i2c 主发送模式。i2c 逻辑在总线空闲后立即发送一个起始条件。 当发送完起始条件后,si 置位。此时状态寄存器(i2stat)中的状态代码应当为 08h。 该状态码用于指向一个中断服务程序。该中断程序将从地址和数据方向位(sla+w)装 入 i2dat。 si 位必须在数据传输能够进行之前清零。 当从地址和方向位已经发送且接收到应答位之后,si 位再次置位,并且对于主

43、模式, 可能的状态代码为 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 位非应答;a d:数据位(data),每个数据都必须是 8 位; p:停止位(stop); 阴影:主机产生的信号; 15 无阴影:从机产生的信

44、号。 每个状态代码对应的执行动作见表 3-1。 表 3-1 主发送器模式 写 i2con 状态代码 i2stat i2c 总线 硬件状态 stastosiaa 硬件执行 的下一个动作 08h已经发送起始条件x00 x 将发送 sla+w,接收 ack 位 18h 已经发送 sla+w; 已经接收到 ack 20h 已经发送 sla+w; 已经接收到非 ack 28h 已经发送 i2dat 中 的数据字节;已接 收 ack 30h 已经发送 i2dat 中 的数据字节;已接 收非 ack 0 1 0 1 0 0 1 1 0 0 0 0 x x x x 将发送数据字节,接收 ack 位 将发送重复

45、起始条件 将发送停止条件;sto 标志 将复位 将发送停止条件,然后发送 起始条件;sto 标志将复位 38h 在 scl+r/w 或数据 字节中丢失仲裁 0 1 0 0 0 0 x x i2c 总线被释放;进入不可寻 址从模式,当总线为空闲时 发送起始条件 本章节主要介绍了核心 mcu lpc922 单片机的特性以及片内资源,还有对其内部的 i2c总线接口相关的寄存器如何配置来确保i2c总线的通信。 16 4 硬件电路设计 4.1 单片机控制电路 本设计中采用 philips lpc922 单片机作为主控器,配以外部 rc 复位电路和晶振电路 构成了单片机系统。 晶体振荡电路在微控制器系统中

46、非常重要,它决定了整个微控制器系统能否稳定工 作。p89lpc922 提供几个可由用户选择的振荡器选项。这样就满足了从高精度到低成本 的不同需求。这些选项在对 flash 进行编程时配置,包括片内看门狗振荡器、片内 rc 振 荡器、使用外部晶振的振荡器或外部时钟源。晶振可选择低、中或高频晶振,频率范围 为 20khz 到 12mhz。本系统中选用 6mhz 的晶振,可以保证精度达到系统要求。 rst 管脚可作为低有效复位输入或数字输入口。当 ucfg1 寄存器中的位 rpe(复位 管脚使能)置位时,使能外部复位输入功能。当清零时,复位脚可作为一个输入管脚。 每一个复位源在复位寄存器 rstsr

47、c 中都有一个对应的标志。用户可读取该寄存器 以判断最近的复位源是哪一个。这些标志位可通过软件写入0清零。 p0.0p0.4 键盘中断口连接 5 个按键,用来控制的数据的传输和采集。 单片机的外围电路如下所示: r12 330 led5 s1 r11 330 r13 330 r9 330 r10 330 s5 s4 s3 s2 led1led2led3led4 p00 p01 p02 p03 p04 v cc3.3 图 4-1 单片机键盘电路 17 cmp2/p0.0/kbi0 1 p1.7 2 p1.6 3 p1.5/rest 4 v ss 5 x tal1/p3.1 6 x tal2/p3

48、.0/clkout 7 p1.4 8 p1.3 9 p1.2 10 p0.6/cm p1 14 rx d/p1.1 11 tx d/p1.0 12 t1/p0.7 13 v dd 15 cmpref /p0.5/kbi5 16 cin 1a /p0.4/kbi4 17 cin 1b/p0.3/k bi3 18 cin 2a /p0.2/kbi2 19 cin 2b/p0.1/k bi1 20 p89lpc922 c1 22p c2 22p r1 10k s1 y1 6m c3 4.7uf sda scl p00p01 p02 p03 p04 v cc3.3 v cc3.3 图 4-2 单片机复

49、位及键盘电路 4.2 led 显示模块 数字 led 显示屏由显示数字 0 9 的数码管和驱动数码管的芯片 zlg7290 两大部分 组成,。zlg7290 外围电路包括晶振电路、复位电路和 i2c 接口电路。数码管是 4 位联体 式数码管。 zlg7290 是带有 i2c 接口键盘管理和显示驱动的芯片,加入键盘管理可以实现仪器 仪表的人机对话。 在图 4-3 中, u 是 led 驱动管理器件 zlg7290。图中 sega segdp 对应连接数码管 的 8 个“段”( a dp), dig0 dig7 分别连接各数码管的“位”(每个数码管的公共端, 这里只 有 4 位数码管, 故只用了

50、dig0 dig3)。 按照 i2 数码管必须是共阴式的, 不能直接使用共阳式的, 这里采用 4 位联体式数码管。数码 管在工作时要消耗较大的电流, rp2 是限流电阻, 阻值是 220 欧姆。如果要增大数码管的 亮度, 可以适当减小电阻值。 18 sega 23 segb 24 segc 1 segd 2 sege 7 segf 8 segg 9 segdp 10 scl 19 sda 20 x2 18 x1 17 rst 15 gnd 11 v cc 16 dig7 13 dig6 12 dig5 21 dig4 22 dig3 3 dig2 4 dig1 5 dig0 6 u z lg7

51、290 c1 30p c2 30p r1 10k y1 8m c4 4.7uf v cc3.3 a bf c g d e dp a bf c g d e dp a bf c g d e dp a bf c g d e dp com1 6 com2 8 com3 9 com4 12 a 11 b 7 c 4 d 2 e 1 f 10 g 5 dp 3 dpy1 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 rp2 220 sega sega segb segb segc segc segd segd sege sege segf segf segg segg se

52、gdp segdp dig0 dig1 dig2 dig3 dig3 dig2 dig1 dig0 v cc3.3 c30.1u r2 10k r3 10k v cc3.3 scl sda 图 4-3 led 显示电路电路 4.3 远程传输模块 在使用i2c器件的过程中,i2c总线在应用中常受到限制,例如:信号传输距离有限, 常用于一个pcb板;总线上挂接的节点器件有限,受容性负载最大值400pf的限制;挂接 多个器件时速度只能取最低值,高速i2c器件速度发挥不出来等。i2c总线扩展器p82b96的 开发扩展了总线容量,从400pf扩展到4000pf,增加了总线可支持器件的数目。而且扩展 了通

53、讯距离,利用线缆在i2c总线的速率为31khz时传输距离可长达1000米。 p82b96是一款双极性i2c扩展芯片,在保持i2c系统的工作模式和特性不变的情况下, 通过缓冲sda和scl总线上的数据来扩展通信距离,同时i2c扩展器p82b96提供了一种在 标准i2c总线和其他总线配置间的无锁存、双向性的逻辑接口,它可以把i2c总线连接到 215v的逻辑器件上,且不受i2c总线协议的限制和时钟速率的限制。能增加i2c总线的传 输距离和节点上的负载数目。i2c扩展器p82b96彻底地解决了i2c总线在远距离传输的不足。 管脚描述如表 4-1。 19 表 4-1 p82b96 管脚描述 符号管脚描述

54、 sx1i2c 总线(sda 或 scl) rx2接收信号 tx3发送信号 gnd4地 ty5发送信号 ry6接收信号 sy7i2c 总线(sda 或 scl) vcc8电源 作用为增加 i2c 通信距离时,两个 p82b96 必须匹配使用。电路设计时必须加上拉电 阻,p82b96 的具体连接方法如图 4-4 所示。 3.3v 5v 3.3v 5v 5v sda scl 1 sx 7 sy rx 2 tx 3 ty 5 ry 6 8 vcc gnd 4 p82b96 5v 5v 3.3v 5v 5v sda scl sx 1 sy 7 2 rx 3 tx 5 ty 6 ry 8 vcc gnd

55、 4 p82b96 长线缆 主机端远程控制端 图 4-4 p82b96 实现远距离 i2c 通信 在系统中的应用如下图所示: r7 10k r6 10k r8 330 r5 330 scl sda sdaxscly v cc5v cc5v cc5 sx 1 rx 2 t x 3 gnd 4 t y 5 ry 6 sy 7 v cc 8 u2 p82b96t p v cc3.3v cc3.3 图 4-5 i2c 通信扩展电路 20 4.4 电源模块 本系统电源用到 3.3v、5v 两种电源。lpc922 单片机供电需要 3.3v,zlg9270 的工作 电压也用到 3.3v,为了降低延时,为 p

56、82b96 提供 3.3v、5v 两种电源。pcf8591 和 ad590 都采用 5v 供电即可。 利用电池供电引出 5v 电压,经 spx3819 后输出 3.3v 提供单片机的工作电压。电路简单, 只需在输入输出端分别接上 10f 滤波电容,电路设计如图 4-6。error! reference source not found. v in 1 v out 5 gnd 2 en 3 byp 4 u3 spx 3819 c11 10uf/16v c10 10uf/16v v cc3.3 j1 v cc5 图 4-6 电源转换电路 spx3819 是一个具有低压差电压和低噪声输出电压调节器。

57、它有一个小于 1以下的 初始误差和逻辑兼容的 on / off 切换输入。禁用时,电力消耗下降到几乎为零。其他主 要功能包括电池反向保护,限流和热关机。它具有非常低的输出温度系数,输出设备需 要一个很稳定的电容。 4.5 温度测量模块 本系统设计目的在于采集现实环境的温度信息,所以需要利用单片机采集温度传感 器的数据,温度传感器使用美国模拟器件公司生产的 ad590,采集的信号需要经过放大和 信号调理,再传送到 a/d 转换器 pcf8951,即把模拟信号转换成数字信号,转换后通过 i2c 总线传输给处理中心。 4.5.1 a/d 转换器转换器 pcf8591 pcf8591 是一款单电源、低

58、功耗 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 总线完成数据的输入/输出,采样频率是由

59、 i2c 总线传输速率决定的。pcf8591 进行数 据转换时需要外接一参考电压。 21 pcf8591 采用典型的 i2c 总线接口器件寻址方法,即总线地址由器件地址、引脚地 址和方向位组成。飞利蒲公司规定 a/d 器件地址为 1001。引脚地址为 aaa012 ,其值由 用户选择,因此 i2c 系统中最多可接2 3 =8 个具有 i2c 总线接口的 a/d 器件。地址的最后 一位为方向位 wr/ ,当主控器对 a/d 器件进行读操作时为 1,进行写操作时为 0。总线 操作时,由器件地址、引脚地址和方向位组成的从地址为主控器发送的第一字节。 在进行数据操作时,首先是主控器发出起始信号,然后发

60、出读寻址字节,被控器做 出应答后,主控器从被控器读出第一个数据字节,主控器发出应答,主控器从被控器读 出第二个数据字节,主控器发出应答一直到主控器从被控器中读出第 n 个数据字节, 主控器发出非应答信号,最后主控器发出停止信号。 4.5.2 温度传感器温度传感器 ad590 集成温度传感器实质上是一种半导体集成电路,它是利用晶体管的b-e结压降的不饱 和值vbe与热力学温度t和通过发射极电流i的下述关系实现对温度的检测: ln i be q kit v ( 4 1) 式中:k波尔兹常数; q电子电荷绝对值。 ad590 是美国模拟器件公司生产的单片集成两端感温电流源。流过器件的电流 (ma)等

温馨提示

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

最新文档

评论

0/150

提交评论