已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
龙岩学院毕业设计题目: 基于单片机智能防丢器设计 专业: 电子信息工程 学号: 2014041826 作者: 王伟中 指导教师(职称): 汤永清 副教授 二零一六年五月 基于单片机智能防丢器设计0基于单片机智能防丢器设计 【摘要】防丢器与人们现实生活息息相关,也逐渐受到大家的重视。本文设计了智能防丢器。电路部分主要由STC89C52单片机、 GPS定位模块、无线发送接收模块、显示模块,按键模块以及声光、震动报警模块组成。通过STC89C52单片机对母机或者子机接收的信息进行处理,能随时更新母机、子机的信息,并在主控芯片上加入按键模块,可以调节人们设定的安全距离。实验表明,基本满足设计要求。【关键字】STC89C52,无线通信,报警,GPSIntelligent Anti-Lost Design【Abstract】The issue of anti-lost design is closely related to modern people lives. Intelligent anti-lost is designed. Circuit unit includes STC89C52 MCU control module, GPS positioning module, Wireless transceiver module, display module, Key Module and sound and light vibration module. By STC89C52 microcontroller processing information from mother- unit or sub-unit received, information from mother-unit and sub-unit can update timely. By adding key modules on the mother unit, safety distance can be adjusted. The result is shown that the design meet to requirements.【Keywords】STC89C51, Wireless communication, Alarm, GPS目录第1章 绪论11.1课题的背景与意义11.2国内近年来的研究成果11.3预期结果1第2章 设计思路以及方案的论证22.1智能防丢器的设计要求和扩展功能22.1.1设计要求:22.1.2扩展功能22.2设计思路的确立22.方案的认证42.4 模块设计42.4.1主控芯片方案42.4.2无线通信模块方案5第3章 硬件电路设计63.1 STC89C52单片机主控模块设计63.2无线模块设计63.2.1管脚定义:73.2.2注意事项73.3 GPS模块设计83.3.1原理图如图3-3所示83.3.2 UBLOX芯片83.3.3 我们对此GPS定位模块引脚83.4 OLED显示模块93.5声光报警模块设计93.6震动报警模块设计10第4 章 软件系统设计114.1开发环境的选择114.1.1 编程语言的选择114.1.2开发平台的简介114.2系统模块流程图124.3程序编写124.3.1 子机发送程序134.3.2 母机接收程序14第5章 系统的调试及实验结果155.1整个设计工作流程155.2 实验测试155.2.1 无线传输距离的测试155.2.2 GPS定位系统精度的测试155.3调试分析155.4设计过程中遇到的问题。175.5实验结果(实物图)19第6章 总结与展望206.1 全文的总结工作206.2智能防丢器的展望20致谢语21参考文献22附录23附录1:电路原理图23附录2:元器件列表23附录3:发送模块程序24第1章 绪论1.1课题的背景与意义 随着科技发展了,社会进步了,人们的生活节奏也越来越快了,正是因为这种快节奏的生活方式,各种各样的因素以及竞争压力,导致人们经常处于一种紧张的状态,很多人就开始变得丢三落四,手机和衣服之类的经常遗忘在某个角落,最关键的是经常会把孩子丢失,稍不留意孩子就跑丢了。你走在公交路上,钱包和手机经常会不小心从口袋里滑落;在等车等船时,一不留神,小偷就会偷走你的包,如果小孩走丢,那就更焦急,所以为了防止这类事情的发生,智能防丢器就应运而生了,而且很方便、很实用。 防丢器由于体积小、性能高、方便携带,把它放在钱包,孩子以及一些贵重的东西上面可以起到防丢的作用。我们可以任意调节防丢器检测的范围,还以定位防丢器的位置,超出范围可以报警,功耗低,无污染。比较方便,操作难度不大,如果防丢器接上功放还可以当收音机,不仅可以防丢防,还可以供娱乐使用,老少皆宜,市场发展前景比较好。所以,这次我们对防丢器进行更深一步的研究。1.2国内近年来的研究成果 随着防丢器融入我们的生活,国内外越来越多的人对它进行了研究,它展现出来的性能越来越高,功能越来越强大。 2000年,张朝辉设计了这样一款防丢器,它产生的报警方式跟别人不一样,采用的是声光报警,当母机和子机超过设定的范围的时候就会报警。 2010年,刘密哥、王路设计了一款不仅有防丢功能,而且还具有查找功能的防丢器. 2014年,郭明明开发了一种有别于以前的防丢器,它采用的是蓝牙通讯方式,可以双向传播信号,除了声光报警之外还加上了其它的报警方式。 本次设计的防丢器的创新点在于采用GPS模块定位进行母机和子机的测距,并且选用OLED屏进行显示,比较直观明了,在此基础上还加了按键模块,可以调节安全距离,这增加了设计的实用性。1.3设计任务的分析 本次设计由两个部分组成分别是硬件部分和软件部分。硬件电路部分主要由STC89C52单片机、 通过GPS定位模块结合无线发送接收模块完成一个具体定位信息的传输的思想,再通过显示模块显示出具体的位置,同时在硬件电路中设置按键模块以及声光、震动报警模块,完成一个合理的报警系统,通过STC89C52单片机对母机或者子机接收的信息进行处理,能随时更新母机、子机的信息,并在主控芯片上加入按键模块,可以调节人们设定的安全距离。1.4预期结果 设定安全报警距离为10米,在主机的显示屏上显示母机和子机的定位信息,当母机和子机超出安全距离或者接收不到无线信号时,报警电路工作。硬件电路的主要是STC89C52单片机和 GPS定位模块和无线发送接收模块和OLED屏显示模块。第2章 设计思路以及方案的论证 2.1智能防丢器的设计要求和扩展功能 2.1.1设计要求: 1.采用单片机作为主控芯片,我们可以用它来处理数据以及报警。要制作出无线发送和接收装置各一个,分别叫做母机和子机,在正常情况下不报警。但是当母机和子机超出一定范围时,就说明有东西丢失了,产生报警。 2.调频和调幅方式自选。 3.采用超外差方式接收。 4.作用距离为10m。 5.发射功率不大于10mW。 2.1.2扩展功能1.要做两个装备,一个发送,一个接收,配套使用,只能相互识别彼此。2.采用3V扣电池。 3.报警距离可调。 4.实现论证并实现低功耗方案,要求方案合理可行(例如采用间歇工作方式,就需要提出有效的同步措施和握手规范等)。2.2设计思路的确立 按照它的具体要求,可以把本次设计分为两个部分:母机模块和子机模块。 母机模块主要包括:STC89C52单片机控制模块、GPS定位模块、无线发送接收模块、OLED显示模块以及声光、震动报警模块和按键模块,如图2-1所示。图2-1 母机模块示意图 子机模块主要包括:STC89C52单片机控制模块、GPS定位模块、无线发送接收模块、OLED显示模块以及声光、按键模块和灯光提示模块。图2-2 子机模块示意图 因此,设计方案如下:硬件电路的主要是STC89C52单片机和 GPS定位模块和无线发送接收模块和OLED屏显示模块,按键模块以及声光、震动报警模块。该防丢器运用GPS模块获取定位信息,并在OLED屏上显示出母机和子机的位置。当超出安全距离或者接收不到无线信号时,母机和子机不能进行正常信号传输,通过STC89C52单片机对母机或者子机接收的信息进行处理,能具体随时更新母机、子机的信息,并在主控芯片上加入按键模块,可以调节设定的安全距离,当超出这个范围时,就会实现声光报警和震动报警,以完成信号不能正常传输就报警的任务。2.方案的认证 根据上面的设计思路,要想完成这个智能防丢器的设计,首先要画出整个电路的原理图。由于电路不是特别复杂,可以通过焊接电路板的方法,就不需要制作PCB板子了,这样不仅增加了成本,也会加大本次设计的难度。 下面就是整个系统设计的原理图,因为母机和子机的模块相同,因此图2-3这个原理图既是母机的原理图也是子机的原理图。图2-3防丢器整体原理图 这个原理图将直接引导下面在硬件电路中具体地连接元器件和单片机引脚相连。2.4 模块设计 2.4.1主控芯片方案 方案一:采用STC89C52单片机实现功能。此款51单片机具有安全性能高、运行速度比较快、处理功能强、功耗和成本低等优点。同时,STC89C52单片机易于开发,应用领域广等特点。 方案二:采用STM32VET6这款ARM芯片,它可以配备一流的外设,具有低功耗,最大的集成度等特点,引脚多,能够实现更多全面的功能,性能强大。 综合考虑:本次设计选择STC89C52单片机作为本系统的微控制单元。理由:虽然STM32VET6这款ARM芯片功能强大,但是它相对于51单片机而言首先成本较高,还有就是操作难度较大,里面寄存器配置相当繁琐,在本次设计中,STC89C52这款51单片机完全可以实现了,不需要选择操作难度更大的ARM芯片,这样会降低我们本次设计的难度。 2.4.2无线通信模块方案 方案一:nrf2401无线收发模块。 根据平常的使用的经验来看,2401的缺点是发送玩每帧数据后没有标志位,必须要自己估算延时时间。如果需要高速的话,就不要选择2401了,速度跟不上。 在本次设计中假如选用此模块测距的话,因为无线电传输速度非常快,根据测量时间来算出母机和子机的距离的话,由于单片机的局限性,测量精度没有那么高,所以会导致测量距离误差较大。 方案二:XL4463无线收发模块。 选用这个模块结合GPS定位系统,无线模块可以将定位信息相互传给母机和子机,通过两个位置定位可以算出距离,定位精度相对较高,方案可行。综合考虑:选择XL4463无线收发模块。第3章 硬件电路设计3.1 STC89C52单片机主控模块设计 STC89C52RC单片机是一种高速、低功耗、有着超强抗干扰的单片机,其主要特性有:1. 该单片机兼容之前所有的51单片机,属于增强版的。2. 由于工作电压不同分成5V单片机和3V单片机,5V单片机的工作电压在5.5V3.3V之间,3V单片机的工作电压在3.82.0V;3. 32个通用I/O口,进行复位后为:P1/P2/P3是准双向口/弱上拉;4. 可在线编程(ISP)/在应用可编程(IAP),不用编程器或仿真器,可以用串口(RXD/P3.0,TXD/P3.1)下载程序;5. 有3个16位定时器/计数器。包括定时器T0、T1、T2;为-40+85,商业级的工作温度范围为075;6. 该芯片的封装为PDIP封装。 引脚图如图3-1所示:图3-1 单片机主控芯片图3.2无线模块设计 图3-2是本系统用到的无线模块的原理图:图3-2 无线模块原理图3.2.1管脚定义: 1.GPIO1 (本设计没用到) 2.GPIO0(用于内部接收开关使能控制本设计没用到) 3.VDD 电源 3.3V 4.GPIO2 通用数字 IO 口通过 SPI 寄存器配置完成多种功能,包括单片机时钟输,FIFO状态,POR等 5.SDO 采用SPI通信进行数据输出 6.GND 电源地7.SCLK 数据时钟线8.SDI采用SPI通信进行数据输入 9.NIRQ 中断状态输出 10.NSEL使能引脚 11.SDN 除关闭模式外 SDN=0,当 SDN=1 芯片将完全关闭,寄存器所用数据将丢失 12.GND 电源地3.2.2注意事项 (1)无线模块对于静电感应比较强,所以要对静电进行保护。使用它的时候不要用手直接接触,不然会对它造成损坏。(2)无线模块推荐的直流电源,工作电压建议在 3.3V 工作。(3) 接口可直接和 3.3V 单片机端口连接,无需串隔离电阻,如单片机为 5V 时,和模块连接,需要串联3K左右的电阻,防止损坏接口。是否接上拉电阻视单片机端口类型而定,如果是开漏型端口就需要加上拉电阻。用硬件 SPI 控制模块的话, SPI 速率不要超过 10M, 如没硬件 SPI 也可用 IO 口模拟 SPI 的时序进行控制。在多信道同时工作情况下,每个信道间隔最好大于 1MHZ,否则容易产生干扰。 在本设计中,使用XL4463无线收发模块进行数据的传输,传输GPS模块定位到的位置。3.3 GPS模块设计 3.3.1原理图如图3-3所示图3-3 GPS模块原理图 3.3.2 UBLOX芯片 特性参数: 1 模块采用U-BLOX NEO-6M模组,体积小巧,性能优异。 2,模块加上了放大电路,天线接收速率加快。 3, 模块可通过串口进行各种参数设置,并可保存在EEPROM,使用方便。 4,模块有SMA接口,可以和很多天线配对。 5,模块兼容3.3V/5V电平,方便连接各种单片机系统。 3.3.3 GPS定位模块引脚 1.VCC 电源( 3.3V5.0V) 2. GND 地 3.TXD 模块串口发送脚( TTL电平,不能直接接RS232电平),可接单片机的RXD。 4. RXD模块串口接收脚( TTL电平,不能直接接RS232电平),可接单片机的TXD 5.PPS模块表示脉冲输出(本设计没有用到) 在本次设计中,主要用这个GPS模块获取定位信息,算出母机和子机的距离。3.4 OLED显示模块 图3-4是本系统选用的OLED模块电路图图3-4 OLED显示模块原理图 VCC是接电源,GND是接地端,SCL是时钟端,SDA代表传输数据端,在时钟和数据引脚上都要接上一个1K的上拉电阻,保证电路的顺利工作。 在本次设计中,使用OLED显示屏来显示GPS的定位位置,并且显示通过按键设置的安全距离。3.5声光报警模块设计图3-5 声光报警模块原理图 如图3-5所示,在声光报警模块中,当超过安全距离的时候,P1.1引脚接单片机低电平,蜂鸣器就会响,声响报警模块就会工作,实现声响报警功能。 此时P1.0也设置为高电平,报警闪烁灯开始工作。3.6震动报警模块设计图3-6 震动报警模块原理图 由图3-6可知震动报警电路主要由两个电阻,一个电机,一个NPN型三极管和偏心块组成。可调偏心块安装在电机转子轴的两侧,当电机旋转时,偏心块就会产生激振力,当转子的平衡超出设定的范围时,电机就会震动。 当连接单片机的P1.2置低电平的时候,电路导通,震动电机工作,就会震动报警。第4 章 软件系统设计4.1开发环境的选择4.1.1 编程语言的选择 本次设计利用C语言进行编程,用C语言编写的程序易于移植、便于调试、可读性好。而不选用汇编语言的原因是其开发过程非常复杂,而且可读性较差。4.2系统模块流程图首先给母机和子机同时上电,母机和子机获取GPS定位信息后,通过无线模块数据传输在分别母机的OLED屏上显示出两个模块的定位,计算实际距离,再通过按键调节两个模块的距离,判断出是否超出安全距离,如果是就会产生报警,否则循环。图4-2所示的就是整个智能防丢器系统模块流程图。图4-2 系统模块流程图4.3程序编写 主要把程序分为子机的发送程序和母机的接收程序。其中发送程序和接收程序都是由主函数模块、GPS模块、无线通信模块和OLED模块组成。4.3.1 子机发送程序 起初两个模块的GPS初始化,然后把子机的定位发送到母机,如果发送成功,可以在母机的OLED屏上显示出子机的定位,如果接收不到信息,就产生报警,并且重复发送,直到发送成功位置。如图4-3所示。图4-3子机发送程序流程图4.3.2 母机接收程序 把母机和子机初始化,然后检测是否母机接收子机的定位信息接收成功,如果接收成功了,再把两个定位信息全部显示在OLED屏上,并且设计安全距离,假如超出了这个距离,就会产生报警。如图4-4所示。图4-4母机接收程序流程图 第5章 系统的调试及实验结果5.1整个设计工作流程首先构思下整个设计该怎么实现,然后规划该买哪些元器件,在购买完元器件后,先把单片机的最小单元焊接好,然后开始焊接外接电路,报警系统,GPS模块,无线通信模块,OLED模块以及按键模块,需要注意的是每焊接完一个模块要检查一下这个模块电路的正确性,不然到最后硬件部分搭完,调试出现了问题,到时候开始排查问题的时候就很麻烦。硬件全部搞定之后,再开始进行软件的调试,软件程序部分要分模块开始写。5.2 实验测试5.2.1 无线传输距离的测试 把母机和子机两个模块分别供上电,一个人拿着子机模块站在原地,另一个拿着母机模块往远处走,观察母机的状况。 实验结果分析:当两个模块相距450米左右的时候,母机就接收不到子机无线传输的定位信息,会产生报警。 因此,得出结论:无线传输的最大距离为450米,设定安全报警距离的时候不要超过450米。5.2.2 GPS定位系统精度的测试 拿着一个定位系统模块,初始化定位系统,得到定位信息,记录下来,然后开始往一个方向走,当OLED屏上的数值变化1秒时,我们再标记一下当前的位置,测量当前位置和初始位置的距离,这就是定位系统模块所能测到的最小距离,也就是精度。 实验结果分析:经过反复测量,GPS每变化1秒,就走出了30米。 实验结论:该GPS的定位精度为30米,我们通过这个GPS测量距离不能达到预期结果那样10米的精度。5.3调试分析本设计中主机和从机上都有一个GPS,通过无线模块把从机上的GPS传到主机上。根据两个GPS的位置,按照公式可以计算主机和从机的距离,但是由于GPS的定位精度和分辨率可能会影响实际值的真正结果,通过网上搜寻资料和结合地理知识,在主从设备GPS量一致的情况下采用了两个不同的公式计算出主从设备的实际距离,列出表格,比较前后的数据,选取较小误差的公式作为实际距离的最佳公式。公式1:实际距离= 这个公式讲的是求出主机和从机的精度做差值,然后纬度也做差值,然后用勾股定理求出两点的实际距离。公式2: a1 = (RxBuf0 * 10)+RxBuf1) * 600;/经度的度转换 b1 = (RxBuf2 * 10)+RxBuf3) * 60;/经度的分转换 c1 = (RxBuf4 * 10)+RxBuf5) + a1 + b1)/600;/经度转换成十进制 A1 = (RxBuf7*100)+(RxBuf8 * 10)+(RxBuf9) * 600; B1 = (RxBuf10 * 10)+RxBuf11) * 60; C1 = (RxBuf12 * 10)+RxBuf13) + A1 + B1)/600; /*主机的经度和纬度*/ a2 = (Display_GPGGA_Buffer17 * 10)+(Display_GPGGA_Buffer18) * 600; b2 = (Display_GPGGA_Buffer19 * 10)+Display_GPGGA_Buffer20) * 60; c2 = (Display_GPGGA_Buffer21 * 10)+(Display_GPGGA_Buffer22) + a1 + b1)/600; A2 = (Display_GPGGA_Buffer30*100)+(Display_GPGGA_Buffer31 *10)+(Display_GPGGA_Buffer32) * 600; B2 = (Display_GPGGA_Buffer33 * 10)+Display_GPGGA_Buffer34) * 60; C2 = (Display_GPGGA_Buffer35 * 10)+Display_GPGGA_Buffer36) + A1 + B1)/600; 实际距离= (int)(111.12*(float)cos(1/(float)(float)sin(C1)*(float)sin(C2) + (float)cos(C1)*(float)cos(C2)*(float)cos(C2-C1);分别选取两组数据来比较这两个公式算出来的主机和从机的距离跟实际值的误差。第一组数据: 当主机经度为121.76,纬度为31.05 从机精度为121.77,纬度为31.05时,我们测出主机和从机实际距离为35米。计算出主从机间的距离误差公式187米52米公式231米4米表1第二组数据:当主机经度为121.70,纬度为31.19 从机精度为121.70,纬度为31.16时,测出主机和从机实际距离为73米。计算出主从机间的距离误差公式1599米526米公式265米8米表二通过两组数据的对比,可以明显的看出公式2比较精确,因此,在测量主机和从机之间的距离的时候,采用公式2来计算。5.4设计过程中遇到的问题。 问题1:如图5-1所示,在做震动报警电路的时候,当P1.2连接单片机时,给它输入低电平,报警震动电路工作,但是在这个时候发现这个震动电机不工作,经过百般思索,终于找到了原因,就是在三极管集电极串连了1K的电阻,由于阻值较大,电流比较小,震动电机不工作。之后串连了一个小一点的电阻,33的电阻,然后电机就工作了。图5-1震动报警模块原理图问题2:在调试这个GPS模块的时候,下载程序初始化,由于第一次运行,初始化时间特别长,起初误认为这个GPS模块出现了问题,由于本实验用的是OLED屏,相比较而言,12864显示屏更为常见,通过实验让GPS模块上的数据在12864上显示,经过一段时间的等待之后出现了图5-2所示的状态,那就说明这个GPS模块是对的。图5-2 用12864显示屏显示GPS模块图之后又重新把GPS模块接到OLED屏上让它显示,结果OLED屏上也出现了定位信息(如下图所示)因此可以得出结论:刚开始OLED屏上没显示点位数据是因为GPS模块第一次初始化特别慢,GPS模块的连接是对的。图5-3 OLED显示GPS模块图问题3:在调试无线模块的时候,之前选用的433无线通信模块,但是由于以前没用过这个无线模块,调试程序的时候总是不能传输数据,后来换了个无线模块,换成了nrf2401无线通讯模块。5.5实验结果(实物图) 这就调试成功之后子机和母机的模块实物图,从图中可以看到在主机上面可以显示出来主机和从机的定位信息图5-4 智能防丢器实物图 。第6章 总结与展望6.1 全文的总结工作 本次设计以STC89C52这款经典的51单片机为控制核心,主要硬件电路模块包括GPS定位模块、nrf2401无线发送接收模块、OLED屏显示模块、按键模块以及声光、震动报警模块。该防丢器运用GPS模块获取定位信息,并在OLED屏上显示出母机和子机的位置。超出距离母机和子机不能进行正常信号传输,通过STC89C52单片机对母机或者子机接收的信息进行处理,能具体随时更新母机、子机的信息,并在主控芯片上加入按键模块,可以调节我们设定的安全距离,当超出这个范围时,就会实现声光报警和震动报警,以完成信号不能正常传输就报警的任务。 虽然我们本次的设计取得了一定的成绩,但是在设计的过程中遇到了很多的难题,然而正是因为这些难题使得我们对硬件电路设计以及软件编程有了更深刻的理解,同时也增强了我们独立学习的能力、动手能力、思考的能力和创新能力。 6.2智能防丢器的展望 本课题研究的智能防丢器具有便宜,简单,实用等优点,而且在现代生活中也起到了越来越重的作用,应用领域也越来越广,尤其是我们在设计中加入了震动模块,震动报警效果比较明显,更好地在人多的时候提醒人们重要物品防丢,减少儿童丢失事件,可见我的这个设计很有研究的价值。 时代在进步,科技在发展,我们的产品要向低功耗,美观,便宜等方向靠拢,但是由于本人水平有限,本次防丢器的设计也有一定的不足,电路焊接的时候有点粗糙,在实际用的时候很容易遭到损坏,还要就是我们运用到的GPS定位模块,精度不是特别高,本次设计的要求是超出10米范围就报警,但是由于我们使用的GPS定位的,每相差1秒就是30米,由于精度的问题导致本次设计达不到预计的效果。所以我们就展望下次能够提高智能防丢器的精度,那么防丢器的设计就完美了。致谢语 本次毕业设计的顺利完成以及毕业论文的成功撰写,我要特别感谢汤永清老师给我的帮助,从始至终,导师对我非常关心,很耐心地指导我。从开始的时候帮我选题,帮我查找资料,帮我分析本次设计中的难点,重点,给我提供了很多技术上的支持。同时还百忙之中抽出时间反复关心我论文的进度,最后还帮我修改了论文的格式,为我能够完成这篇论文打下了坚实的基础。 汤永清老师非常和蔼可亲,不仅有着丰富的知识,学问很广,严谨的科学态度,而且还保持着积极的生活态度,耐心地知道他人,为人师表,非常值得我们尊敬,深深得打动着我,激励着我,他是我一生的榜样。 最后,我要感谢我们学院的领导和老师,不仅给我很好的学习环境,还在我需要帮助的时候无私奉献,也要感谢给过我帮助的同学,我们一起学习,一起努力,正是因为你们,我才充满了力量。在此感谢你们! 参考文献1 高吉祥.高频电子线路M.北京:电子工业出版社,2003. 2 曾兴雯,刘乃安,陈健,等.高频电路原理与分析J.陕西:西安电子科技大学出版社,2001. 3 王卫东,傅佑麟,等.高频电子线路M.北京:电子工业出版社,2004. 4 高如云,陆曼茹,张企民,孙万蓉,等.通信电子线路M.陕西:西安电子科技大学出版社,2002. 5 张肃文.高频电子线路M.北京:高等教育出版社. 6 Joseph J. Carr.射频电路设计M.北京:电子工业出版社,2001. 7 Behead Razavi.射频微电子M.北京:清华大学出版社,2003. 8 Horowitz P,Hill W,The Art of Electronic Second EditionM. New York: Cambridge University Press, 1989 9 Cotter W.Sayre.完整无线设计M.北京:清华大学出版社,2004. 10 刘长军,黄卡玛,闫丽萍,等.射频通讯设计M.北京:科学出版社,2005. 11 铃木宪次.高频电路设计与制作M.北京:科学出版社,2005. 12阳翠娥高频电子线路实验与课程设计M黑龙江:哈尔滨工业大学出版社,200113 于海勋,郑长明,等高频电路实验与仿真M北京:科学出版社,2005.14 市井裕一高频电路设计与制作M北京:科学出版社,2006附录附录1:电路原理图附录2:元器件列表元器件及型号数量1K电阻4个10K电阻6个10uF电解电容2个220uF电解电容2个104(瓷片电容)2个22pF瓷片电容2个11.0592MHz晶振2个轻触按键4个GPS2块OLED2块STC89C52RC2片Nrf24012个转换电路2个电源插座1个绿色LED灯4个电源开关2个排针若干万用板1块附录3:发送模块程序1. main.c文件程序如下#include pbdata.h#include intrins.hunsigned char xdata Display_GPGGA_Buffer68 = 0;unsigned char xdata Display_GPRMC_Buffer68;bit Flag_OV = 0;bit Flag_Calc_GPGGA_OK = 0;bit Flag_Calc_GPRMC_OK = 0;typedef unsigned long ulong;typedef unsigned char uchar;typedef unsigned char uint;/*NRF24L01端口定义*sbit MISO=P13;sbit MOSI=P14;sbitSCK =P12;/*NRF24L01*sbitCE =P11;sbitCSN=P15;sbitIRQ=P16;#define TX_ADR_WIDTH 5 / 5 uints TX address width#define RX_ADR_WIDTH 5 / 5 uints RX address width#define TX_PLOAD_WIDTH 20 / 20 uints TX payload#define RX_PLOAD_WIDTH 20 / 20 uints TX payloaduint TX_ADDRESSTX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01;/本地地址uint const RX_ADDRESSRX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01;/接收地址/*NRF24L01寄存器指令*#define READ_REG 0x00 / 读寄存器指令#define WRITE_REG 0x20 / 写寄存器指令#define RD_RX_PLOAD 0x61 / 读取接收数据指令#define WR_TX_PLOAD 0xA0 / 写待发数据指令#define FLUSH_TX 0xE1 / 冲洗发送 FIFO指令#define FLUSH_RX 0xE2 / 冲洗接收 FIFO指令#define REUSE_TX_PL 0xE3 / 定义重复装载数据指令#define NOP 0xFF / 保留#define CONFIG 0x00 / 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 / 自动应答功能设置#define EN_RXADDR 0x02 / 可用信道设置#define SETUP_AW 0x03 / 收发地址宽度设置#define SETUP_RETR 0x04 / 自动重发功能设置#define RF_CH 0x05 / 工作频率设置#define RF_SETUP 0x06 / 发射速率、功耗功能设置#define STATUS 0x07 / 状态寄存器#define OBSERVE_TX 0x08 / 发送监测功能#define CD 0x09 / 地址检测 #define RX_ADDR_P0 0x0A / 频道0接收数据地址#define RX_ADDR_P1 0x0B / 频道1接收数据地址#define RX_ADDR_P2 0x0C / 频道2接收数据地址#define RX_ADDR_P3 0x0D / 频道3接收数据地址#define RX_ADDR_P4 0x0E / 频道4接收数据地址#define RX_ADDR_P5 0x0F / 频道5接收数据地址#define TX_ADDR 0x10 / 发送地址寄存器#define RX_PW_P0 0x11 / 接收频道0接收数据长度#define RX_PW_P1 0x12 / 接收频道0接收数据长度#define RX_PW_P2 0x13 / 接收频道0接收数据长度#define RX_PW_P3 0x14 / 接收频道0接收数据长度#define RX_PW_P4 0x15 / 接收频道0接收数据长度#define RX_PW_P5 0x16 / 接收频道0接收数据长度#define FIFO_STATUS 0x17 / FIFO栈入栈出状态寄存器设置/*void Delay(unsigned int s);void inerDelay_us(unsigned char n);void init_NRF24L01(void);uint SPI_RW(uint uchar);uchar SPI_Read(uchar reg);void SetRX_Mode(void);uint SPI_RW_Reg(uchar reg, uchar value);uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars);unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);void nRF24L01_TxPacket(unsigned char * tx_buf);unsigned long ReadCount(void);void Delay_hx711_us(void);void Delay(unsigned int s)unsigned int i;for(i=0; is; i+);for(i=0; i0;n-)_nop_();/*NRF24L01初始化void init_NRF24L01(void) inerDelay_us(100); CE=0; / chip enable CSN=1; / Spi disable SCK=0; / SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); / 写本地地址SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); / 写接收端地址SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); / 频道0自动ACK应答允许SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); / 允许接收地址只有频道0,如果需要多频道可以参考Page21 SPI_RW_Reg(WRITE_REG + RF_CH, 0); / 设置信道工作为2.4GHZ,收发必须一致SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); /设置接收数据长度,本次设置为32字节SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); /设置发射速率为1MHZ,发射功率为最大值0dBuint SPI_RW(uint uchar)uint bit_ctr; for(bit_ctr=0;bit_ctr8;bit_ctr+) / output 8-bit MOSI = (uchar & 0x80); / output uchar, MSB to MOSI输出函数,MSB到莫西uchar = (uchar 1); / shift next bit into MSB. 下一位移到MSBSCK = 1; / Set SCK high. sck=1uchar |= MISO; / capture current MISO bit 获取当前味噌点SCK = 0; / .then set SCK low again 然后设置SCK的低了 return(uchar); / return read ucharuchar SPI_Read(uchar reg)uchar reg_val;CSN = 0; / CSN low, initialize
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中七年级地理教学设计:南亚热带季风气候与农业差异的区域认知构建
- 高一英语Unit 2 Using language听力板块教学设计-聚焦观点表达的听说整合课
- 初中七年级科学“物质的特性”章末复习教学设计
- 三年级安全教育《低级玩笑不要开》教学设计
- 初中七年级英语上册词汇Day10语境化教学设计
- 初中生物七年级下册教学设计:人体结构模型的项目化构建与核心素养落实
- 初中九年级物理《电流和电流表》高效课堂培优教学设计
- 小学五年级道德与法治“小行动大环保-垃圾分类”主题班会教学设计
- 第六节 几种重要的盐教学设计-九年级科学
- 小学四年级道德与法治教学设计:网络新世界的理性探索与素养养成
- 2026年中小学教师高级职称专业水平能力测试复习题库及答案
- 小学一年级上册劳动的教学计划
- 2026年福建专升本护理学(真题)试卷(含答案)
- 新部编版一年级语文上全册教案
- 2026江西吉安峡江县招聘基层就业公共服务岗位工作人员2人考试备考试题及答案详解
- 2027届新高考化学精准突破复习-电化学备考策略
- 2026年高考语文备考之修辞手法及表达效果(知识清单)
- 血液透析中心工作制度
- 长沙银行招聘笔试题库
- 2026年质量月活动实施方案
- 国家能源集团企业文化与基础知识
评论
0/150
提交评论