ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:776.41KB ,
资源ID:11722008      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11722008.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(ZigBee加速度检测-课程设计报告.docx)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

ZigBee加速度检测-课程设计报告.docx

1、 编 号: 审定成绩: 重庆邮电大学 物联网工程课程设计(报告)

2、设计题目: 行走过程中的加速度测试节点设计 学 院 名 称 : 自动化学院 学 生 姓 名 : ×× 专 业 : 物联网工程 班 级 : ×× 学 号 : ×× 指 导 教 师 : ×× 填表时间: 2015 年 11 月 重庆邮电大学教务处制 一、题目:行走过程中的加速度测试节点设计 二、设计任务: 运用所学传感器技术、计算机网络和物联网工程等方面的知识,设计基于三轴加速度传感器的测试节点,获取行走过程中的手臂或小腿加速度,完成数字量输入或模拟量输入的硬

3、件设计和低功耗无线通信协议软件设计等工作。具体任务如下: 三、设计要求: 1.画出加速度测试节点的结构图。 2.选择低功耗无线通信芯片和三轴加速度传感器,设计硬件电路。 3.开发完成ZigBee协议,完成与上位机的通信。 4.画出程序流程图并编写调试代码。 四、参考资料: 1. 李朝青.《单片机原理及接口技术》(简明修订版).北京航空航天大学出版社,1998年. 2. 胡向东.《传感技术》.重庆大学出版社,2006年第1版. 3. 谭浩强.《C语言程序设计》.北京:清华大学出版社,2002年. 4. 谢希仁.《计算机网络》.北京:电子工业出版社,2003年.

4、 摘要 根据要求,基于ZigBee协议使用单片机和三轴加速度传感器的测试节点,并且能够通过低功耗通信协议将采集到的数据发送出去并接收。 器材上,我们选择使用了AT89C51作为主控芯片,两块CC2530用来传输数据组网,加速度传感器则选择了ADXL345三轴加速度传感器模块,通信协议使用ZigBee协议,传感器数据通信协议采用IIC协议。将ADXL345三轴加速度传感器模块连接到一块CC2530上,作为加速度测试节点与ZigBee终端节点,另一块CC2530与AT89C51连接,则作为接收加速度数据的协调器节点,并通过串口通信与上位机通信。 关键词:

5、ZigBee,加速度,IIC 目录 摘要 1 一、设计分析 3 1. 1 ZigBee整体概述 3 1.2 IEEE 802.15.4标准概述 4 1.3 ZigBee协议体系结构 4 1.4 AT89C51简述 5 1.5 CC2530概述 5 1.6 ADXL345概述 6 二、解决方案 8 2.1具体过程 8 三、串口总线对比 12 3.1 CAN总线 12 3.2 UART总线 13 3.3 SPI总线 14 3.4 IIC总线 16 3.5综合对比 17 四、设计总结 20 附录代码

6、 21 一、设计分析 此系统,采集模块采集了数据,通过IIC通信协议传输到其中一块cc2530开发板,然后通过ZigBee协议发送到另一块cc2530开发板子来完成。最后通过串口传输到上位机显示数据。系统分析图如图1.1所示。 图1.1系统分析图 1. 1 ZigBee整体概述 物联网的定义是:物联网(Internet of Things)是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。它具有普通对象设备化、自治终端互联化和普适服务智能化3个重要特征。 无线传感器网络(Wireless S

7、ensor Network, WSN)是由大量的静止或移动的传感器以自组织和多跳的方式构成的无线网络,以协作地感知、采集、处理和传输网络覆盖地理区域内被感知对象的信息,并最终把这些信息发送给网络的所有者。 ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。根据国际标准规定,ZigBee技术是一种短距离、低功耗的无线通信术。协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(HTTP,TELNET,DNS,EMAIL等),运输层(TCP,UDP),网络层(

8、IP),链路层(WI-FI,以太网,令牌环,FDDI等),物理层。 1.2 IEEE 802.15.4标准概述 IEEE 802.15.4网络是指在一个POS内使用相同无线信道并通过IEEE 802.15.4标准相互通信的一组设备的集合,又名LR-WPAN网络。在这个网络中,根据设备所具有的通信能力,可以分为全功能设备(Full Function Device , FFD)和精简功能设备(Reduced Function Device , RFD)。 该标准定义了物理层(PHY)和介质访问控制层(MAC)。这种低速率无线个人局域网的网络结构简单、成本低廉、具有有限的功率和灵活的吞吐量。低

9、速率无线个人局域网的主要目标是实现安装容易、数据传输可靠、短距离通信、极低的成本、合理的电池寿命,并且拥有一个简单而且灵活的通信网络协议。 1.3 ZigBee协议体系结构 ZigBee协议栈建立在IEEE 802.15 4的PHY层和MAC子层规范之上。它实现了网络层(networklayer,NWK)和应用层(applicationlayer,APL)。在应用层内提供了应用支持子层(application support sub—layer,APS)和ZigBee设备对象(ZigBee Device Object,ZDO)。应用框架中则加入了用户自定义的应用对。 ZigBee的体系结

10、构由称为层的各模块组成。每一层为其上层提供特定的服务:即由数据服务实体提供数据传输服务;管理实体提供所有的其他管理服务。每个服务实体通过相应的服务接入点(SAP)为其上层提供一个接口,每个服务接入点通过服务原语来完成所对应的功能。 1.4 AT89C51简述 AT89C51是市面上一款最常见的单片机,也是国内科教实验最常用的。是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦

11、除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图1.4所示双列直插式封装(DIP. Dualln-line Package), DIP封装与MCS一51系列单片机的引脚完全兼容,可互换使用。 图1.4 双列直插式封装 1.5 CC2530概述 CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总的材料成本建立强大的网络节点。

12、CC2530 结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其它强大的功能。CC2530 有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB 的闪存。CC2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低能源消耗。CC2530外围电路图如图1.4所示。 图1.5 CC2530外围电路图 1.6 ADXL345概述 ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达±16g。数字输出数据

13、为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜角度变化。该器件提供多种特殊检测功能。活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。敲击检测功能可以检测任意方向的单振和双振动作。自由落体检测功能可以检测器件是否正在掉落。这些功能可以独立映射到两个中断输出引脚中的一个。图1.6.1、图1.6.2分别是外围电路图、接线样例。 图1.6.1 ADXL345外围电

14、路图 图1.6.2 接线样例 二、解决方案 解决方案采取的是,AT89C51对加速度传感器进行数据通信采集,然后将数据通过串口发送给相连的CC2530协调器,在与处理和与上位机通信,使用ZigBee协议栈在其应用层进行采集、组网、传输等一系列动作。开发过程中代码选择使用c语言,完成课题,因为汇编相对于C语言不便于理解思考,快速开发。 首先选择硬件,我们选择市面上最常见的单片机AT89C51,这是一款国内科教实验最常见的单片机,简单易上手开发,价格也低廉。 由于需要基于ZigBee协议进行开发,所以我们选择了对ZigBee很好兼容性的cc2530开发板进行

15、组网传输,这是一款比较适合新手开发学习的板子。它有着很好的低功耗收发器能力,总体材料价格很低,作为ZigBee节点低功耗,低成本的方向有着相同的一致性。 对于传感器的选择,我们选择了ADX1345三轴加速度传感器,他是采用数字量输出,有着低功耗、低成本、低误差的特点,采用IIC通信,满足ZigBee要求的低功耗、低成本的主要特点,故选择了它。 传感器支持IIC和spi两种通信方式,选择的时候,选择了,相对较简单,而且连线少的IIC通信方式,速度快,连线少更加适合ZigBee节点。而不是采用SPI,因为它的连线方式比较复杂,虽然它是全双工,但是考虑设计要求,故选择IIC。 整个代码大概可以

16、分成3部分,第一部分是数据采集程序,它包括IIC通信代码和读出传感器寄存器内部的测量数据两部分。第二部分是节点数据传输,节点采集的加速度数据发送给协调器,与协调器相连的51单片机收到数据后进行相关处理。第三部分是上位机的数据传输和显示,52单片机与上位机通过串口连接进行数据通信显示。 2.1具体过程 工作具体过程如图2.1所示。 图2.1 工作流程图 接下来进行部分源代码分析: 1)先进行一系列的串口定义: 第1.2行代码进行IIC总线需要用到的两个串口进行宏定义,然后3.4行分别对需要用到的改变P1_1串口的方向。最后一行宏定义需要用到的硬件地址。 2)串口

17、初始化: 表示串口位真,定义波特率,关闭流量控制,最后打开串口。 3)初始化传感器: 经过查询ADXL355的使用手册后,选择传感器的模式,电源类型,打开中断,偏移量等等基础能力。 4)读取数据: ADXl345的储存单元是0x3~0x5,先打开IIC总线然后送设备地址+写信号,接下来送存储单元地址,从0x3开始,再给一个起始信息,发送设备地址+读信号,连续读取6个地址数据,存储中BUF,收到最后一个=数据需要回NOACK,写停止信号。 整理数据并放入数组以便发送出去,由于ADXl345采集到的数据是二进制补码的形式所以需要进行转换,例如: 变换完成后并放入数

18、组后就可以利用协议栈自带的发送程序发送给协调器了。最后通过串口通信传送给上位机就完成了整个实验。 三、串口总线对比 本次课程设计,本人负责对加速度传感器与51单片机通信的数据传输协议进行对比研究,从中采取最适合本课程设计的通信协议方式。进行对比的多种工业应用串行总线有:IIC,SPI,UART,CAN四种。 3.1 CAN总线 CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之 间交换信息,形成汽车电子控制网络。比如:发动

19、机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。 CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误,因为它的硬件错误检定特性增强了CAN的抗电磁干扰能力。一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,。当信号传输距离达到10Km时,CAN 仍可提供高达50Kbit/s的数据传输速率。 它是一种有效支持分布式控制或实时控制的串行通信网络。较之许多RS-485基于R

20、线构建的分布式控制系统而言,基于CAN总线的分布式控制系统具有明显的优越性。 主要特点: 1) 低成本,结构简单,只有2根线与外部相连。 2) 极高的总线利用率 3) 很远的数据传输距离(长达10Km,速率低于5Kbps) 4) 高速的数据传输速率(高达1Mbit/s,通信距离小于40M) 5) 可根据报文的ID决定接收或屏蔽该报文 6) 内部集成了错误探测和管理模块,可靠性高 7) 发送的信息遭到破坏后,可自动重发 8) 节点在错误严重的情况下具有自动退出总线的功能 9) 报文不含源地址或目标地址,仅用标志符来指示功能信息、优先级信息,没有主从之分。 由于CAN总线具有

21、很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。图3.1是CAN总线的简单应用示例 图3.1 CAN总线应用示例图 3.2 UART总线 UART是一种通用串行数据总线,用于异步通信,也就是我们经常所说的串口。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。它比IIC、SPI这两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,

22、硬件上由两根线,一根用于发送,一根用于接收。主机和从机通信至少要接三根线,RX、TX和GND。TX用于发送数据,RX用于接受数据。如果A是PC机,B是单片机,A和B之间还要接一块电平转换芯片,用于将TTL/CMOS(单片机电平)转换为RS232(PC机电平)。 UART总线,基本都用于调试,是计算机中串行通信端口的关键部分。如我们经常用的单片机和PC机调试,用串口助手。它比较少用于工业应用。图3.2是UART总线简图,图3.3是UART总线结构图。 图3.2 UART总线简图 图3.2 UART总线简图 3.3 SPI总线 SPI是串行外设接口(Serial Periph

23、eral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

24、主器件为时钟提供者,可发起读从器件或写从器件操作。这时主器件将与一个从器件进行对话。当总线上存在多个从器件时,要发起一次传输,主器件将把该从器件选择线拉低,然后分别通过 MOSI 和 MISO 线启动数据发送或接收。 图3.3点对点SPI通信原理图 SPI 时钟速度很快,范围可从几兆赫兹到几十兆赫兹,且没有系统开销,这一点比IIC优秀。但是相应地,SPI 在系统管理方面的缺点是缺乏流控机制,无论主器件还是从器件均不对消息进行确认,主器件无法知道从器件是否繁忙。因此,必须设计聪明的软件机制来处理确认问题。同时,SPI 也没有多主器件协议,必须采用很复杂的软件和外部逻辑来实现多主器件架

25、构。每个从器件需要一个单独的从选择信号。总信号数最终为 n+3 个,其中 n 是总线上从器件的数量。因此,导线的数量将随增加的从器件的数量按比例增长。同样,在 SPI 总线上添加新的从器件也不方便。对于额外添加的每个从器件,都需要一条新的从器件选择线或解码逻辑。 SCLK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优 点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控 制,当没有时钟跳变时,从设备不采集或传送数据。

26、也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为 SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。 3.4 IIC总线 IIC是一种二线制串行总线接口,工作在主/从模式。二线通信信号分别为开漏 SCL 和 SDA 串行时钟和串行数据。主器件为时钟源。数据传输是双向的,其方向取决于读/写位的状态。每个从器件拥有一个唯一的 7 或 10 位地址。主器件通过一个起始位发起一次传输,通过一个停止位终止一次传输。起始位之后为唯一的从器件地址,再后为读/写位。 I2C总线速度为从0Hz到3.4MHz。它没有SPI 那样快,但对于系统管理

27、器件如温度传感器来说则非常理想。I2C 存在系统开销,这些开销包括起始位/停止位、确认位和从地址位,但它因此拥有流控机制,主器件还是从器件均对消息进行确认,主器件知道从器件是否繁忙。主器件在完成接收来自从器件的数据时总是发送一个确认位,除非其准备终止传输。从器件在其接收到来自主器件的命令或数据时总是发送一个确认位。当从器件未准备好时,它可以保持或延展时钟,直到其再次准备好响应。图3.4为IIC线路结构图。 图3.4 IIC线路结构图 I2C总线上允许连接多个微处理器以及各种外围设备,如存储器、LED及LCD驱动器、A/D及D/A转换器等。为了保证数据可靠地传送,任一时刻总线只能由某一

28、台主机控制,各微处理器应该在总线空闲时发送启动数据,为了妥善解决多台微处理器同时发送启动数据的传送(总线控制权)冲突,以及决定由哪一台微处理器控制总线的问题,I2C总线允许连接不同传送速率的设备。多台设备之间时钟信号的同步过程称为同步化。 I2C允许多个主器件工作在同一总线上。多个主器件可以轻松同步其时钟,因此所有主器件均采用同一时钟进行传输。多个主器件可以通过数据仲裁检测哪一个主器件正在使用总线,从而避免数据破坏。由于 I2C总线只有两条导线,因此新从器件只需接入总线即可,而无需附加逻辑。 I2C总线是各种总线中使用信号线最少,并具有自动寻址、多主机时钟同步和仲裁等功能的总线。使用I2C

29、总线设计计算机系统十分方便灵活,体积也小。 3.5综合对比 下图图3.5是四种总线特性的简单比较,图3.6是特性列举导图。 图3.5 四种总线特性比较 图3.6 特性列举导图 3.5.1 CAN和UART CAN是一种多主方式的串行通讯总线,高数据率,高抗电磁干扰性,具备错误检定,抗电磁干扰能力,有效支持分布式控制系统和实时控制,主要应用于汽车制造业、航天业等高要求的工业领域。 UART,既常见的串口通信,主要应用于调试和用来主机与辅助设备通信,是计算机中串行通信端口的关键部分。 我负责的是传感器将数据传送给51单片机.,短距离传输,并没有涉及复杂器件,对实时

30、性控制要求不高,同时也考虑到成本问题。因此没必要采用工业级的现场总线CAN总线。而UART是计算机串行通信端口的关键部分,常用于调试。所以不采用此种总线方式。并且,ADXL345手册中指定的通信协议只有IIC和SPI。所以只从IIC和SPI考虑。 3.5.2 SPI和IIC SPI,比IIC速率快而且没有系统开销,但是没有流控机制,要想解决从机中的发送数据冲突问题,只能设计特定复杂的软件来解决。 而IIC有系统开销,但是本设计并没涉及过多器件,也并未对实时性要求高。由于 I2C总线只有两条导线,因此新从器件只需接入总线即可,而无需附加逻辑。 SPI协议硬件接线相比较更多,软件简单,速度

31、快;IIC硬件接线简单,只需两根线,软件比SPI复杂点,速度慢。 本设计较为简单、小规模,采用SPI和IIC并没有较大区别和对性能有较大影响,也不会因为采用了IIC会产生较大冗余。考虑自身的实际编程能力和以往对51单片机的接触,我们选择了更熟悉了IIC,通用I/O端口作为I2C总线接口模拟IIC,放弃了使用SPI。 四、设计总结 本设计是,以2块CC2530单片机组网通信, ADXL345三轴加速度传感器采集加速度,再串口传给51单片机在传给CC2530,然后数据传送给协调器,最终传输到上位机记录。本设计的实验过程,

32、我们更能体会到物联网的实际应用,尤其在工业应用和智能家居应用。通过组网技术,把更多的传感器互联互通,数据传送给主控芯片处理分析,最后发送到上位机进行查看操控。 其中,我是负责51单片机和加速度传感器的采用的串行总线通讯方式的选择。总共查阅资料研究对比了四种常见的串口总线:CAN,UART,SPI,IIC。开始自在大一时候用过51单片机模拟IIC,而且也是简单的套用网络的标准程序,没有深入学习时序电路图和理解它的作用。也不知道还有SPI、CAN、UART的存在。通过学习这四种串口总线,还是收获不少,学会了时序电路图的看法和用途,了解了常用串口总线的区别和特性。 中途遇到了难题,在此感谢黄庆卿

33、老师和其他小组同学给予关键帮助指导,经过不懈努力,团队最终解决了问题。这次实验,增加了我们实际动手能力和解决和分析问题的能力。在这次的课程设计当中遇到了很多的困难和问题,我们通过查询资料一起讨论最后完成这次的课程设计,收获良多。 20 附录代码 #include #include //Keil library #include //Keil library #include #define uchar un

34、signed char #define uint unsigned int #define DataPort P2 //LCD1602数据端口 sbit SCL=P0^4; //IIC时钟引脚定义 sbit SDA=P0^3; //IIC数据引脚定义 #define SlaveAddress 0xA6 //定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改 //ALT ADDRESS引脚接地时地址为0xA6,接电源时地址为0x3A typedef unsigned char BYTE; typede

35、f unsigned short WORD; BYTE BUF[8]; //接收数据缓存区 uchar ge,shi,bai,qian,wan; //显示变量 int dis_data; //变量 void delay(unsigned int k); void Init_ADXL345(void); //初始化ADXL345 void WriteDataLCM(uchar dataW); void WriteComm

36、andLCM(uchar CMD,uchar Attribc); void DisplayOneChar(uchar X,uchar Y,uchar DData); void conversion(uint temp_data); void Single_Write_ADXL345(uchar REG_Address,uchar REG_data); //单个写入数据 uchar Single_Read_ADXL345(uchar REG_Address); //单个读取内部寄存器数据 void Multiple_Read_ADXL345(); //连续

37、的读取内部寄存器数据 //------------------------------------ void Delay5us(); void Delay5ms(); void ADXL345_Start(); void ADXL345_Stop(); void ADXL345_SendACK(bit ack); bit ADXL345_RecvACK(); void ADXL345_SendByte(BYTE dat); BYTE ADXL345_RecvByte(); void ADXL345_ReadPage(); void ADXL345_WritePage()

38、 //********************************************************* unsigned char ch; bit read_flag= 0 ; void Uart_Init(void) { SCON = 0x50 ; //UART为模式1,8位数据,允许接收 TMOD |= 0x20 ; //定时器1为模式2,8位自动重装 PCON |= 0x80 ; //SMOD=1; TH1 = 0xFD ; //Baud:19200 fosc="11".0592MHz IE

39、 |= 0x90 ; //Enable Serial Interrupt TR1 = 1 ; // timer 1 run TI=1; } //向串口发送一个字符 void send_char_com( uchar Byte) { SBUF = Byte; while (TI== 0); TI= 0 ; } //串口接收中断函数 void Uart_Int(void) interrupt 4 { if (RI) { RI = 0 ;

40、 ch=SBUF; read_flag= 1 ; //就置位取数标志 } } void conversion(uint temp_data) { wan=temp_data/10000+0x30 ; temp_data=temp_data%10000; //取余运算 qian=temp_data/1000+0x30 ; temp_data=temp_data%1000; //取余运算 bai=temp_data

41、/100+0x30 ; temp_data=temp_data%100; //取余运算 shi=temp_data/10+0x30 ; temp_data=temp_data%10; //取余运算 ge=temp_data+0x30; } /*******************************/ void delay(unsigned int k) { unsigned int i,j; for(i=0;i

42、 {;}} } /************************************** 延时5微秒(STC90C52RC@12M) 不同的工作环境,需要调整此函数,注意时钟过快时需要修改 当改用1T的MCU时,请调整此延时函数 **************************************/ void Delay5us() { _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();

43、 } /************************************** 延时5毫秒(STC90C52RC@12M) 不同的工作环境,需要调整此函数 当改用1T的MCU时,请调整此延时函数 **************************************/ void Delay5ms() { WORD n = 560; while (n--); } /*********************起始信号**********************/ void ADXL345_Start() { SDA = 1;

44、 //拉高数据线 SCL = 1; //拉高时钟线 Delay5us(); //延时 SDA = 0; //产生下降沿 Delay5us(); //延时 SCL = 0; //拉低时钟线 } /*********************停止信号**************************/ void ADXL345_Stop() {

45、 SDA = 0; //拉低数据线 SCL = 1; //拉高时钟线 Delay5us(); //延时 SDA = 1; //产生上升沿 Delay5us(); //延时 } /******************发送应答信号入口,参数:ack (0:ACK 1:NAK)**** ********/ void ADXL345_SendACK(bit ack) {

46、 SDA = ack; //写应答信号 SCL = 1; //拉高时钟线 Delay5us(); //延时 SCL = 0; //拉低时钟线 Delay5us(); //延时 } /********************接收应答信号*****************/ bit ADXL345_RecvACK() { SCL = 1;

47、 //拉高时钟线 Delay5us(); //延时 CY = SDA; //读应答信号 SCL = 0; //拉低时钟线 Delay5us(); //延时 return CY; } /*********向IIC总线发送一个字节数据**************/ void ADXL345_SendByte(BYTE dat) { BYTE i; for (i=0; i

48、<8; i++) //8位计数器 { dat <<= 1; //移出数据的最高位 SDA = CY; //送数据口 SCL = 1; //拉高时钟线 Delay5us(); //延时 SCL = 0; //拉低时钟线 Delay5us(); //延时 } ADXL345_Re

49、cvACK(); } /**************从IIC总线接收一个字节数据*********************/ BYTE ADXL345_RecvByte() { BYTE i; BYTE dat = 0; SDA = 1; //使能内部上拉,准备读取数据, for (i=0; i<8; i++) //8位计数器 { dat <<= 1; SCL = 1; //拉高时钟线 Dela

50、y5us(); //延时 dat |= SDA; //读数据 SCL = 0; //拉低时钟线 Delay5us(); //延时 } return dat; } //******单字节写入******************************************* void Single_Write_ADXL345(uchar REG_Address,uchar REG_da

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服