




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上学 号: 课 程 设 计题 目基于单片机的433M无线通信系统学 院专 业班 级 姓 名指导教师2018年 1月 13日单片机应用设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 基于单片机的433M无线通信系统课程设计目的:1、熟悉单片机应用系统的硬件设计及软件设计的基本方法;2、 将单片机原理与应用理论课的理论知识应用于实际的应用系统中;3、 训练单片机应用技术,锻炼实际动手能力4、 提高正确地撰写论文的基本能力。课程设计内容和要求1、 完成硬件电路的设计,其中包括单片机和CC1101模块的设计; 2、 完成无线通信模块的程序设计与实现
2、,上机运行调试程序,记录实验结果(如图表等),并对实验结果进行分析和总结; 3、 课程设计报告书按学校统一规范来撰写,报告主要包括以下内容:目录、摘要、关键词、基本原理、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真结果、实物运行结果照片、结论献等;4、 查阅不少于6篇参考文献。初始条件:1、 STC89C52和CC1100H模块; 2、 先修课程:单片机原理与应用。时间安排:第19周,安排设计任务,完成硬件设计;第20周,完成软件设计、撰写报告,答辩。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日专心-专注-专业目录摘要随着通信系统
3、信息容量的不断提高,射频技术在无线通信中占据着举足轻重的位置。无线射频技术利用射频方式进行非接触双向通信,可以自动识别目标对象并获取相关数据,具有精度高、适应环境能力强、抗干扰强、操作快捷等许多优点。本文主要内容是以单片机应用技术、无线收发技术为理论基础,实现数据的无线收发及状态的显示。 首先,本文介绍了STC89C52单片机以及无线收发芯片CC1101的相关理论知识。其次本文对于要解决的实验任务,介绍了如何构建思路及方案分析。详细介绍了系统的设计方案及各个模块的器件选型和硬件电路设计,MCU部分的软件设计流程图以及无线通信模块CC1101的软件编程要点。完成了基于单片机的433M无线通信系统
4、的设计实现。433MHz频段的优点在于无需申请频段许可,采用全向天线作为发射和接收天线,在实验室环境内发射无死区。关键字:STC89C52 CC1101 433M无线通信AbstractWith the continuous improvement of information capacity of communication system, radio frequency technology plays an important role in wireless communication. Wireless rf technology using non-contact two-way
5、 communication in the form of radio frequency (rf) can automatically identify the target object and obtain the relevant data, has high precision, strong ability to adapt, strong anti-interference, quick operation and many other advantages. The main content of this paper is the application technology
6、 of single chip microcomputer and wireless transceiver technology as the theoretical basis to realize the wireless transmission and status display of data.First of all, this paper introduces the relevant theoretical knowledge of STC89C52 single chip microcomputer and wireless transceiver chip CC1101
7、. Secondly, this paper introduces how to construct train of thought and plan analysis. This paper introduces the design scheme of the system and the device selection and hardware circuit design of each module, the software design flow chart of the MCU part and the software programming key points of
8、the wireless communication module CC1101. The design and implementation of the 33m wireless communication system based on SCM is completed. The advantage of the 433MHz frequency band is that there is no need to apply for the band license, and the whole antenna is used as the transmitting and receivi
9、ng antenna, and there is no dead zone in the laboratory environment.Key words: STC89C52 CC1101 433M wireless communication.1基本原理1.1无线通信系统无线通信就是不用导线、电缆、光纤等有线介质,而是用自由空间来传递电磁信号的通信方式。无线通信主要包括短波通信微波通信卫星通信和红外线通信。而无线收发顾名思义,就是将两块通信模块以空气为传输介质来实现发送和接收数据。发送时,通过模块中携带数据的变化高频电流,在天线上形成电磁波信号,发送出去。而接收端中,天线将接收到的电磁波信号
10、转换为携带数据的变化高频电流。短距离无线数据传输技术是作为一种无线通信的实用技术广泛应用于工业、农业以及人们日常生活中的,它是在一个单片的射频收发芯片和微控制器以及一些外围的电子器件(如电阻、电容等)构成的无线通信模块硬件电路的基础上,再配合软件上的开发,并按照命令字节的协议进行数据包的操作,便可实现其最基本的无线数据传输功能。简单的讲,只要有微控器,单片射频收发芯片以及少量的外围和显示设备就可以构成一个无线传输系统,传输系统结构如图1.1所示。外围操作和显示设备外围操作和显示设备单片射频收发芯片微控制器单片射频收发芯片微控制器 图1.1 无线传输系统结构图1.2芯片简介1.2.1单片机STC
11、89C52STC89C52是一种低功耗、高性能的CMOS 8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能: 8k字节Flash ROM,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,2个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/
12、计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。1.参数说明:(1)增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意 选择,指令代码完全兼容传统8051;(2)工作电压:5.5V3.3V(5V 单片机)/3.8V2.0V(3V 单片机);(3)工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作 频率可达48MHz;(4)用户应用程序空间为8K 字节;(5)片上集成512 字节RAM;(6)通用I/O 口(32个),复位后为:P0/P1/
13、P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻;(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RXD/P3.0,TXD/P3.1)直接下载用户程序,数秒即可完成一片;(8)具有EEPROM 功能;(9)具有看门狗功能;(10)共3个16位定时器/计数器。即定时器T0、T1、T2;(11)外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可由外部中断低电平触发中断方式唤醒;(12)通用异步串行口(UART),还可用定时器软件实现多个UART;(1
14、3)工作温度范围:-40+85(工业级)/075(商业级);(14)PDIP 封装;2.引脚说明(1)电源引脚 VCC:+5V 电源 VSS:接地端(2)外接晶体引脚 XTAL1:外接晶振输入端 XTAL2:外接晶振输入端(3)输入输出引脚 P0.0P0.7:不作为地址/数据线使用时,可作为准双向I/O口使用。但必须外接上拉电阻。 P1.0P1.7:带内上拉电阻的8位准双向通用I/O 口。 P2.0P2.7:带内上拉电阻的8位准双向通用I/O 口。访 问片外存储器时,P2 口用作高8位地址线。 P3.0P3.7:8位准双向I/O接口,每个引脚还具有第二功能(4)控制线 RST是复位端,当RST
15、端出现持续两个机器周期以上的高电平时,即可实现复位操作。 本实验基于STC89C52的单片机最小系统如图1.2所示 图1.2 单片机最小系统电路结构图1.2.2 无线通信CC1101芯片CC1101是TI(德州仪器)推出的一款低功耗433/868/915M频段的无线传输射频芯片,集2-FSK、GFSK、MSK调制方式于一体,提供扩展硬件支持的信息包处理、数据缓冲、群发信息、空闲信道评估、连接质量指示(RSSI)和无线唤醒,其具有多种优势特性,使得此芯片得到广泛应用。CC1101芯片具有以下基本特征:(1)支持 2-FSK、4-FSK、GFSK、MSK以及 OOK等等灵活的 ASK 波形整形的实
16、现的方式;(2)工作频段:300348 MHz、387464 MHz 和 779928 MHz;(3)高灵敏度(1.2 kBaud、433 MHz、1% 误包率条件下为 112 dBm);(4)低电流消耗(1.2 kBaud、433 MHz 下 RX 中为 15 mA);(5)所有支持频率下高达 +12dBm 的可编程输出功率;(6)0.6500kBaud 的可编程数据速率;(7)高效的 SPI 接口;利用一次“突发”数据传输便可对所有寄存器进行编程,编程很简洁;(8)64字节发送/接收FIFO,从而用户可以设计出高效编程缓冲,以达到最快传输波特率;(9)快速的锁定频率合成器以及 90 S的建
17、立时间使其适合于许多跳频系统;(10)提供同步字检测、地址校验、灵活的数据包长度和自动 CRC 处理的片上支持;(11)地址及CRC 检验功能及点对多点通信地址控制;(12)数字 RSSI 输出,这是许多射频芯片无法输出的重要参数;(13)可编程信道滤波器带宽;(14)可编程载波监听 (CS) 指示器;(15)可编程前导质量指示器 (PQI),用于随机噪声伪同步字检测增强保护;(16)支持在信号发送之前自动空闲信道评估 (CCA)(用于载波监听系统)(17)支持每个数据包的链路质量指示 (LQI);(18)可选数据自动白化和去白 (de-whitening);(19)标准2.54 DIP 间距
18、接口,便于嵌入式应用;(20)125 个可选工作频道,满足多点通信和跳频通信需要;(21)1.8V3.6V的宽工作电压;本实验中所用的CC1101芯片模块的电路结构如图1.3所示 图1.3 CC1101芯片模块的电路结构图2方案论证与设计经过仔细地分析与论证,我认为此次的基于单片机的488M无线通信系统可分为无线通信模块CC1101、单片机STC89C52最小系统、STC-ISP系统编程下载三部分组成。2.1无线通信模块选择方案一:nRF905芯片nRF905单片无线收发器是Nordic公司推出的单片射频发射器芯片,工作电压为1.9-3.6V,32引脚QFN封装(5mm×5mm),工
19、作于433/868/915MHz3个ISM频道(可以免费使用)。最大发射功率+10dBm,GFSK调制模式,仅支持50kbps通讯速率,最大数据包长度32-Byte,内置CRC。校验测试nRF905时选用444.0MHz的工作频率,设置发射功率为+10dBm(10mW),开启CRC校验,设置数据包长度为32-Byte。nRF905通讯距离的测试结果与nRF2401A和nRF24L01+相似,距离500米通讯稳定(丢包率不足1%)。到700米时出现严重的丢包。同时,nRF905所采用的433MHz胶棒天线具有较强的方向性,在接近极限距离时尤为明显。如想在远距离通讯中获得更好的稳定性,建议换用高增
20、益的定向天线。方案二:CC1101芯片德州仪器(TI)射频芯片CC1101,相较于nRF系列的无线数传芯片,CC1101提供了更加丰富的功能。支持ASK、OOK、GFSK、2-FSK、4-FSK和MSK调制模式,支持通讯速率0.6kbps500kbps,最高发射功率+10dBm。64-Byte的数据缓冲区,支持数据白化、支持前向交错及曼彻斯特编码。它们会增加数据在传输时的可靠性和出现错误编码时的纠错功能。但开启这两个功能的同时也会使通讯速率增加一倍,这也在一定程度上降低了接收灵敏度(速率越高接收灵敏度越低)。综上所述,考虑到芯片性价比和系统功能实现难易程度,本设计选用方案二中TI的射频芯片CC
21、1101作为无线通信系统的数据传输模块。2.2 单片机最小系统选择方案一: STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM 内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。方案二:STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash
22、,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。经比较,考虑到在课程学习的进度和深度方面,方案二STC89C52的使用可以巩固课内知识的同时也提高可课外动手实践能力,可以在基本不增加硬件复杂性的情况下,大大降低了软件的复杂性,且硬件调节较软件调节具有更高的可操作性,故选择方案二。2.3整体方案设计本系统使用无线传输模块CC1101作为数据通信节点,STC89C52单片机作为微控制器核心,将程序下载到2个单片机中,然后按KEY后发送信息,发送信息完毕后,发送方单片机控制LED闪烁,如果接收方接受到发送方数据,且经验证接收数据信息的正确性和无丢包后,控制接收端LED闪烁。
23、而且两个STC89C52均可做为发送端和接收端,一个做为发送,对应另一端即为接收,实现及时双向通信。系统结构框图如图2.1所示图2.1 433M无线通信系统结构框图3 硬件电路设计3.1 STC89C52单片机最小系统对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。在制作51单片机最小系统时需注意以下几点:(1)复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用1030uF,51单片机最小系统容值越大需要的复位时间越短;(2)晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响
24、单片机的处理速度,频率越大,处理速度越快;(3)起振电容C2、C3一般采用1533pF,并且电容距离晶振越近越好,晶振距离单片机越近越好;(4)P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k;STC89C52单片机最小系统的电路设计图如图3.1所示。图3.1 STC89C52单片机最小系统电路设计图3.2 无线通信模块CC1101 射频模块布线是整个系统PCB板设计中的核心。外围器件最好选用体积小的贴片元件,滤波电容尽可能接近器件引脚布置,这样滤波效果会更好。尽可能将数字电路远离射频电路因为数字电路存在陡峭的上升下降沿,所以MCU是射频电路的巨大噪声源,也可以考虑使用金属屏蔽罩,
25、虽然该办法存在很多缺点,但仍然非常有效,而且在很多时候是隔离关键电路的唯一办法。虽然CC1101的使用手册给出了外围器件的详细参数,但实际应用中,很多时候阻抗匹配仍然需要重新测量计算,也要调整相应器件的参数。比如接地电容,由于板存在分布电容,实际使用的电容要比推荐的略小一些。整个PCB板最好采用统一接地方式。虽然数字地会干扰射频地和模拟地,但是若分开成3部分,最终总是有些高速信号线要穿过这些分开的接地点。在CC1101无线通信模块的设计过程中要注意以下问题:(1)VCC(5V)脚接电压范围为 4.5V到5.5V之间,推荐电压5V,不能在这个电压区间之外。(2)VCC(3.3V)脚接电压范围为
26、1.8V-3.5V之间,不能在这个区间之外,超过3.6V将会烧毁模块。这里使用LM1117-3.3V芯片转换得到。(3)硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO口模拟SPI不需要单片机SPI模块介入,只需添加代码模拟SPI时序即可。(4)17脚、18脚为接地脚, 需要和母板的逻辑地连接起来。CC1101模块的电路设计图如图3.2所示。图3.2 CC1101模块的电路设计图4软件程序设计4.1发送端编程STC89C52控制CC1101作为发射端的编程流程主要包括以下4部分。(1)数据编码:计算待发送数据的字节和数据包的编码;(2)发射模式初始化:上载数据到TX、FIFO,使能
27、TX;(3)激活TX状态:如果所有字节没有完全写到TX 、FIFO,MCU将设置为低功耗模式;(4)TX、FIFO阈值中断:填充TX、FIFO,当数据字节低于256时设置为固定长度模式,所有字节全部写完则完全发送。STC89C52控制CC1101作为发射端的编程流程图如图4.1所示。图4.1 CC1101发送模式流程图4.2接收端编程STC89C52控制CC1101作为接收端的编程流程主要包括以下5部分。(1)初始化RX:设置无线长度模式并设置FIFO阈值;(2)激活RX状态:如果所有字节没有完全读到RX FIFO,MCU将设置为低功耗模式;(3)RX FIFO阈值中断:从RX FIFO读取长
28、度字段,计算接收数据字节的总长度,数据字节低于255时设置为固定长度模式,计算并设置PKTLEN;(4)RX数据包的接收:读出剩余字节,读完所有字节则完全接收;(5)数据包解码,循环冗余码校验;STC89C52控制CC1101作为接收端的编程流程图如图4.2所示。图4.2 CC1101发送模式流程图4.3程序调试与下载本次单片机课程设计使用C语言进行目标程序的撰写,并利用keil软件来对程序进行调试。在“433M无线通信系统”课题中将整个系统的软件编程放在一个工程中,然后分别对各个功能程序单独编译调试,在单元的调试没有问题之后便对整个工程总体调试运行,在确认完成了所有的功能后便将对应程序生成.
29、hex文件准备烧入单片机芯片中去。.hex文件的烧入这次我们使用了USB转TTL的接口来实现。keil软件调试界面如图4.3所示。stc-isp的在系统编程与下载界面如图4.4所示。图4.3 keil软件调试界面图4.4 stc-isp的在系统编程与下载界面5硬件仿真STC89C52单片机最小系统仿真电路图如图5.1所示。图5.1 STC89C52单片机最小系统仿真电路图6实物制作与调试6.1 STC89C52单片机最小系统STC89C52单片机最小系统电路设计图如图6.1所示。 图6.1 单片机最小系统电路设计图6.2无线通信模块CC1101无线通信模块CC1101电路设计图如图6.2所示。
30、 图6.2 无线通信模块CC1101电路设计图6.3稳压电路模块3.3V稳压电路设计图如图6.3所示。其是利用LM1117-3.3芯片将输入的5V电压输出为3.3的电压,并且实现了较小纹波的电压稳定输出。 图6.3 3.3V稳压电路设计图6.4 433M无线通信系统整体电路433M无线通信系统整体电路图如图6.4所示。图6.4 433M无线通信系统整体电路图本系统使用无线传输模块CC1101作为数据通信节点,STC89C52单片机作为微控制器核心,将程序下载到2个单片机中,然后按KEY后发送信息,发送信息完毕后,发送方单片机控制LED闪烁,如果接收方接受到发送方数据,且经验证接收数据信息的正确
31、性和无丢包后,控制接收端LED闪烁。而且两个STC89C52均可做为发送端和接收端,一个做为发送,对应另一端即为接收,实现及时双向通信。7心得体会这次的课程设计实践时间虽然短暂,但却使我受益匪浅。在书本上的知识实现到现实中的同时,也学到了很多书本中学不到的知识。让我感受到理论付诸于实践的重要性,这对知识的理解有很大的帮助。对于这次课程设计,我花费了比较多的心思,这既是对课程理论内容的一次复习和巩固,同时也让我们丰富了更多与该专业相关的其他知识,比如软件应用等,在摸索中学习,在摸索中成长,在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获,在真正设计之前我们做了相当丰富的准
32、备,首先巩固一下课程理论,再一遍熟悉课程知识的构架,然后结合加以理论分析、总结,有了一个清晰的思路和一个完整的的软件流程图之后才着手设计。在设计程序时,我们不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;养成注释程序的好习惯是非常必要的,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也能为资料的保存和交流提供了方便;我觉得在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计又出错了。刚开始的时候,由于对无线通信模块CC1101的知识不熟悉,所以做起来比较困难。我大量查阅图书馆和网上
33、的资料,希望能尽量在较短的时间内了解关于无线通信模块CC1101在通信系统上的应用,和有关射频模块的理解与应用及使用方法。在PROTUES仿真STC89C52单片机最小系统过程中,真真切切地感受到了仿真工具的重要性,如果能够熟练灵活运用仿真工具可大大的减短数学设计的周期。最后在实际中,先分开调试子模块STC89C52最小系统和无线通信模块CC1101,再对整体基于单片机433M无线通信系统实物进行软件调试和硬件方面功能测试。此次的设计,其实也是我们所学知识的一次综合运用,让我深深的认识到了学习单片机要有一定的基础,要有电子技术方面的数字电路和模拟电路等方面的理论基础,特别是数字电路;也要有编程
34、语言的汇编语言或C语言。要想成为单片机高手,我们首先要学好汇编语言,然后转入C语言学习,所以我们不能学到后面就忘了前面的知识,更应该将所学的知识紧紧的结合在一起,综合运用,所谓设计,就是要求创新,只有将知识综合运用起来才能真正的设计好。通过这次单片机专业课程实践设计,我觉得收获了很多,无论是理论知识的学习,还是实践部分的运用。在课程设计之前,虽然自己已经接触过一些有关于单片机的知识,比如51系列、430超低功耗系列、STM32系列等等,但是跟射频相关的部分还是很生疏,在本次单片机专业课程实践设计中第一次接触无线射频模块CC1101,了解其在无线通信、射频、信号调制解调等方面强大的功能,希望以后
35、能够有机会,能对有关于CC1101无线通信系统的功能进行深一层次的了解。8参考文献1 刘岚 尹勇等,单片计算机基础及应用(第1版),武汉理工大学出版社,2016年2 尹勇 撒继铭等,单片计算机原理及应用(第1版),科学出版社,2013年3 谢自美.电子线路设计·实验·测试(第3版),华中科技大学出版社,2014年4 刘教瑜. 单片机原理及应用.武汉理工大学出版社,2011年5 张东亮.单片机原理与应用.人民邮电出版社,20096 李群芳.单片微型计算机与接口技术(第3版).电子工业出版社,2008附录 部分源程序:1.main.c #include "main.h
36、"/main.h 中含有TX/RX选择配置选项const char *g_Ashining = "ashining"uint8_t g_TxMode = 0, g_UartRxFlag = 0;uint8_t g_UartRxBuffer 100 = 0 ;uint8_t g_RF24L01RxBuffer 32 = 0 ; /* * brief :主函数 * param :无 * note :无 * retval:无 */int main( void )uint8_t i = 0;/串口初始化drv_uart_init( );/LED初始化drv_led_ini
37、t( );/SPI初始化drv_spi_init( );/CC1101初始化CC1101_Init( );for( i = 0; i < 6; i+ )led_red_flashing( );led_green_flashing( );drv_delay_ms( 500 );#ifdef_CC1101_TX_TEST_/*发送*/按键初始化drv_button_init( );while( 1 )/模式切换/Demo程序默认为发送模式1,即发送固定字符串“ashining”,可以通过按键切换到发送模式2,即通过串口发送数据,按键的作用就是切换发送模式1 2/如果在程序移植过程中不需要两种
38、发送模式,删除下面 if 语句程序块和按键初始化程序即可if( BUTOTN_PRESS_DOWN = drv_button_check( )g_TxMode = 1 - g_TxMode;/模式会在 TX_MODE_1( 0 ),TX_MODE_2( 1 )之间切换/状态显示清零led_green_off( );led_red_off( );if( TX_MODE_1 = g_TxMode )for( i = 0; i < 6; i+ )led_red_flashing( );/固定发送模式,红灯闪烁3次drv_delay_ms( 500 );elsefor( i = 0; i <
39、; 6; i+ )led_green_flashing( );/串口发送模式,绿灯闪烁3次drv_delay_ms( 500 );/如果在程序移植过程中不需要两种发送模式,删除上面 if 语句程序块和按键初始化程序即可/模式切换/发送if( TX_MODE_1 = g_TxMode )CC1101_Tx_Packet( (uint8_t *)g_Ashining, 8 , ADDRESS_CHECK );/模式1发送固定字符,1S一包drv_delay_ms( 1000 );led_red_flashing( );else/查询串口数据i = drv_uart_rx_bytes( g_Uart
40、RxBuffer );if( 0 != i )CC1101_Tx_Packet( g_UartRxBuffer, i , ADDRESS_CHECK );led_red_flashing( );#else/*接收*/while( 1 )CC1101_Clear_RxBuffer( );CC1101_Set_Mode( RX_MODE );while( 0 != CC1101_GET_GDO0_STATUS( );while( 0 = CC1101_GET_GDO0_STATUS( );i = CC1101_Rx_Packet( g_RF24L01RxBuffer );/接收字节if( 0 !=
41、 i )led_green_flashing( );drv_uart_tx_bytes( g_RF24L01RxBuffer, i );/输出接收到的字节#endif2. drv_button.c#include "drv_button.h"#include "drv_delay.h"/* * brief :按键初始化 * param :无 * note :无 * retval:无 */ void drv_button_init( void )/引脚配置 部分51单片机不需要/BUTTON引脚配置为输入BUTTON_PxM0 = IO_IN_PUT_ON
42、LY_M0 << BUTTON_PIN_BIT;BUTTON_PxM1 = IO_IN_PUT_ONLY_M1 << BUTTON_PIN_BIT;BUTTON_PIN = 1;/默认状态置高/* * brief :按键查询 * param :无 * note :无 * retval: *0:按键没有按下 *1:检测到按键动作 */uint8_t drv_button_check( void )if( 1 != BUTTON_PIN )/检测按键输入状态drv_delay_ms( 45 );/消抖if( 1 != BUTTON_PIN )return 1;/按键按下,返
43、回按键状态return 0;3. drv_delay.c#include "drv_delay.h"/* * brief :1MS延时函数 * param : * note :12MHz 下1MS延时 * retval:无 */static void drv_delay_1ms( )uint16_t Ms = 1;uint32_t j = 80;while( Ms- )while( j- );/* * brief :MS延时函数 * param : *Ms:延时的MS数 * note :无 * retval:无 */void drv_delay_ms( uint16_t M
44、s )while( Ms- )drv_delay_1ms( );4. drv_led.c#include "drv_led.h"/* * brief :LED初始化 * param :无 * note :无 * retval:无 */ void drv_led_init( void )/引脚配置 部分51单片机不需要/LED引脚配置为推挽输出LED_RED_PxM0 |= IO_OUT_PUT_PP_M0 << LED_RED_PIN_BIT;LED_RED_PxM1 |= IO_OUT_PUT_PP_M1 << LED_RED_PIN_BIT;LE
45、D_RED_PIN = 1;/IO初始化状态置高,LED灭LED_GREEN_PIN = 1;/* * brief :LED亮 * param : *LedPort:LED选择 * note :无 * retval:无 */void drv_led_on( LedPortType LedPort )/IO电平置低,LED亮if( LED_RED = LedPort )LED_RED_PIN = 0;elseLED_GREEN_PIN = 0;/* * brief :LED灭 * param : *LedPort:LED选择 * note :无 * retval:无 */void drv_led
46、_off( LedPortType LedPort )/IO电平置高,LED灭if( LED_RED = LedPort )LED_RED_PIN = 1;elseLED_GREEN_PIN = 1;/* * brief :LED闪烁 * param : *LedPort:LED选择 * note :无 * retval:无 */void drv_led_flashing( LedPortType LedPort )if( LED_RED = LedPort )if( 1 = LED_RED_PIN )LED_RED_PIN = 0;elseLED_RED_PIN = 1;elseif( 1
47、= LED_GREEN_PIN )LED_GREEN_PIN = 0;elseLED_GREEN_PIN = 1;5. drv_spi.c#include "drv_spi.h"/* * brief :SPI初始化(软件) * param :无 * note :无 * retval:无 */void drv_spi_init( void )/引脚配置 部分51单片机不需要/SCK MOSI NSS 配置为推挽输出SPI_SCK_PxM0 = IO_OUT_PUT_PP_M0 << SPI_SCK_PIN_BIT;SPI_SCK_PxM1 = IO_OUT_PUT
48、_PP_M1 << SPI_SCK_PIN_BIT;SPI_MOSI_PxM0 = IO_OUT_PUT_PP_M0 << SPI_MOSI_PIN_BIT;SPI_MOSI_PxM1 = IO_OUT_PUT_PP_M1 << SPI_MOSI_PIN_BIT;SPI_NSS_PxM0 = IO_OUT_PUT_PP_M0 << SPI_NSS_PIN_BIT;SPI_NSS_PxM1 = IO_OUT_PUT_PP_M1 << SPI_NSS_PIN_BIT;/MISO 配置为输入SPI_MISO_PxM0 = IO_IN_PUT
49、_ONLY_M0 << SPI_MISO_PIN_BIT;SPI_MISO_PxM1 = IO_IN_PUT_ONLY_M1 << SPI_MISO_PIN_BIT;/时钟置低SPI_SCK = 0;/MOSI MISO NSS置高SPI_MOSI = 1;SPI_MISO = 1;SPI_NSS = 1;/* * brief :SPI收发一个字节 * param : *TxByte: 发送的数据字节 * note :非堵塞式,一旦等待超时,函数会自动退出 * retval:接收到的字节 */uint8_t drv_spi_read_write_byte( uint8_
50、t TxByte )uint8_t i = 0, Data = 0;spi_set_clk_low( );for( i = 0; i < 8; i+ )/一个字节8byte需要循环8次/* 发送 */if( 0x80 = ( TxByte & 0x80 )spi_set_mosi_hight( );/如果即将要发送的位为 1 则置高IO引脚elsespi_set_mosi_low( );/如果即将要发送的位为 0 则置低IO引脚TxByte <<= 1;/数据左移一位,先发送的是最高位spi_set_clk_high( );/时钟线置高_nop_( );/* 接收 *
51、/Data <<= 1;/接收数据左移一位,先接收到的是最高位if( 1 = spi_get_miso( )Data |= 0x01;/如果接收时IO引脚为高则认为接收到 1spi_set_clk_low( );/时钟线置低_nop_( );return Data;/返回接收到的字节/* * brief :SPI收发字符串 * param : *ReadBuffer: 接收数据缓冲区地址 *WriteBuffer:发送字节缓冲区地址 *Length:字节长度 * note :非堵塞式,一旦等待超时,函数会自动退出 * retval:无 */void drv_spi_read_write_string( uint8_t* ReadBuffer, uint8_t* WriteBuffer, uint16_t Length )spi_set_nss_low( );/片选拉低while( Length- )*ReadBuffer = drv_spi_read_write_byte( *WriteBuffer );/收发数据ReadBuffer+;Writ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗事故协商合同范例
- 代理投资协议合同范本
- 导流墙施工方案 可复制
- 农业投资合同范例
- 函授 合同范例
- 医院资产回购合同范例
- 净水订购合同范例
- 人才转让合同范例范例
- 农田覆土合同范例
- 入职合同范例范例
- 多器官功能衰竭病人的护理
- 江苏某高速公路服务区设施施工组织设计
- 复方雷尼替丁
- 走近心理学智慧树知到答案章节测试2023年西北师范大学
- 初中学生综合素质发展性评价标准
- 五金采购合同及价格清单
- 正常抽样标准(AQL)
- 25吨汽车吊吊装施工方案
- HY/T 240.3-2018海水循环冷却系统设计规范第3部分:海水预处理
- GB/T 3625-2007换热器及冷凝器用钛及钛合金管
- GB/T 22465-2008红花籽油
评论
0/150
提交评论