网站首页 公文大全 个人文档 实用范文 讲话致辞 实用工具 心得体会 哲学范文 总结范文 范文大全 报告 合同 文书 信函 实用
  • 经典阅读
  • 学习工具
  • 成语大全
  • 歇后语
  • 周公解梦
  • 名人名言
  • 格言
  • 经典语句
  • 百花范文网 > 实用工具 > 格言 > 51单片机无线通讯_基于AT89S51单片机无线传输系统设计毕业设计

    51单片机无线通讯_基于AT89S51单片机无线传输系统设计毕业设计

    时间:2020-09-03 08:02:51来源:百花范文网本文已影响

    毕业论文(设计) 题 目:
    单片机无线传输系统设计 完 成 人:
    班 级:
    学 制:
    专 业:
    指导教师:
    完成日期:
    目 录 摘要 (1) 引 言 (1) 1总体设计 (2) 1.1设计技术背景 (2) 1.1.1 AT89S51单片机简介 (2) 1.1.2 AT89S51主要功能特点 (2) 1.2单片机无线数据传输原理 (3) 1.2.1 单片机无线数据传输原理概述 (3) 1.2.2 无线数据传输常用编码方式 (3) 1.2.3 无线数据传输解码 (5) 1.2.4 无线数据传输调制和解调 (6) 2无线数据收发模块 (7) 2.1无线收发模块nRF905简介 (7) 2.2 nRF905无线模块特点 (7) 2.3 工作模式及芯片结构 (7) 3系统软硬件设计 (8) 3.1 硬件设计 (8) 3.1.1 概述 (8) 3.1.2 电路原理 (9) 3.1.3 SPI接口配置 (9) 3.2 软件设计 (12) 3.2.1 概述 (12) 3.2.2 发射程序 (13) 3.2.3 接收程序 (17) 4结束语 (21) 参 考 文 献 (22) Abstract (23) 单片机无线传输系统设计 作 者:
    指导教师:
    摘要:当今社会发展迅速,人们迫切的期望能随时随地、不受时空限制地进行信息交互。当今的各种智能化控制系统也离不开数据信息的传输。其中,无线数据传输是区别于传统的有线传输的新型传输方式,系统不需要传输线缆、成本低廉、施工简单。现在,有很多的电器产品(如一些家用电器)的操作控制也都采用了无线数据传输方式,一些无线数据传输功能相对简单的电器产品,无线数据传输信号的接收识别往往采用与编码调制芯片配套的译码芯片。而无线数据传输功能比较复杂的一些电器产品,无线数据传输信号的识别与译码多采用单片机,其编码调制方法也有多种。本文介绍一种基于AT89S51单片机以及无线收发模块nRF905的无线数据传输方案,以及用单片机对其进行识别的程序设计方法,以供参考。

    关键词:AT89S51单片机,nRF905模块,无线数据传输;

    引 言 当今的各种智能化控制系统 ,比如智能化小区内部的无线抄表系统、门禁系统、防盗报警系统和安全防火系统等 ,工业数据采集系统 ,水文气象控制系统,机器人控制系统、数字图像传输系统等等 ,都离不开数据信息的传输。可以说 ,数据信息传输系统是各种智能化控制系统的重要组成部分。[1]在有线数据传输方式当中,数据的传输载体是双绞线、同轴电缆或光纤。在一些单片机监测系统中,数据采集装置是安装在环境条件恶劣的现场或野外。采集到的数据通信传输到手持终端, 然后通过手持终端送到后台机(PC机) 进行数据分析、处理。这样,数据采集装置与手持终端之间的数据传输需解决通信问题。若采用有线数据传输方式显然是不合适的。相比于传统的有线数据传输方式,无线数据传输方式可以不考虑传输线缆的安装问题,从而节省大量电线电缆,并且降低施工难度和系统成本,是一个很有发展潜力的研究课题。无线数据传输因其传输距离远和受障碍影响小而得到广泛应用,随着各种专用无线数据传输集成电路和无线数据传输发射和接收专用集成电路的不断涌现,使许多复杂的无线数据传输系统的设计变得愈来愈简单,而且工作稳定性可靠。本文介绍利用单片机以及发射/接收模块电路实现的一种无线数据传输系统的设计思想。给出了无线数据传输系统的工作原理、硬件设计方案和软件设计方案。

    1总体设计 1.1设计技术背景 1.1.1 AT89S51单片机简介 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器[2],器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,其DIP封装的引脚图如图1所示,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。   图1 AT89S51芯片 DIP封装引脚 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

    1.1.2 AT89S51主要功能特点 1、为一般控制应用的 8 位单芯片 2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz) 3、内部程式存储器(ROM)为 4KB 4、内部数据存储器(RAM)为 128B 5、外部程序存储器可扩充至 64KB 6、外部数据存储器可扩充至 64KB 7、32 条双向输入输出线,且每条均可以单独做 I/O 的控制 8、5 个中断向量源 9、2 组独立的 16 位定时器 10、1 个全多工串行通信端口 11、8751 及 8752 单芯片具有数据保密的功能 图1 12、单芯片提供位逻辑运算指令 13、看门狗(WDT)电路 1.2单片机无线数据传输原理 1.2.1 单片机无线数据传输原理概述 无线数据传输有发送和接收两个组成部分。[3]发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过无线数据传输模块中的发射模块发射信号。无线数据传输接收端普遍采用价格便宜,性能可靠的一体化无线数据传输接收模块、接收无线数据传输信号,它同时对信号进行放大、检波、整形,得到TTL 电平的编码信号,再送给单片机,经单片机解码并执行,去控制相关对象,其原理如图2所示。

    图2 无线数据传输原理 1.2.2 无线数据传输常用编码方式 第一种:FSK式(移频键控方式Frequency Shift Keying), 又称数字调频。[4]如果用改变载波频率的方法来传送二进制符号,就是移频键控(FSK)的方法。这时其频谱可以看成码列对低频载波的开关键控加上码列的反码对高频载波的开关键控。移频键控方式用两种不同的脉冲频率分别表示二进制数的“0”和“1”。用2个频率传输1“位”二进制 ,这是最安全的方法,缺点是成本高、功耗大。所以 ,在电器的遥控器中极少应用。图3是表示用2个频率对“二进制位”的“0”和“1”进行编码的示意图。在FSK方式中,相邻码元的频率不变或者跳变一个固定值。在两个相邻的频率跳变的码元之间,其相位通常是不连续的。

    图3 FSK编码方式 第二种:曼彻斯特编码方式 又称双相调制编码方式 ,常用于局域网传输。在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;
    从高到低跳变表示“1“,从低到高跳变表示“0“。,在长虹、创维等彩电的控制器中,就采用了这种双相调制方式。还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示“0“或“1“,有跳变为“0“,无跳变为“1“。两种曼彻斯特编码是将时钟和数据包含在数据流中,在传输代码信息的同时,也将时钟同步信号一起传输到对方,每位编码中有一跳变,不存在直流分量,因此具有自同步能 无线数据传输发射部分,一般由一个能产生等幅振荡的高频载频振荡器和一个产生低频调制信号的低频振荡器组成。用来产生载频振荡的电路一般有多谐振荡器、互补振荡器和石英晶体振荡器等由低频振荡器产生的低频调制波,一般为宽度一定的方法。如果是多路控制可以采用每一路宽度不同的方波,或是频率不同的方法去调制高频载波,组成一组组的已调制波,作为控制信号向空中发射。但每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。曼彻斯特编码“二进制位”的表示方法如图4所示。

    图4曼彻斯特编码方式 第三种:脉宽调制编码方式 ,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。这种编码方式根据脉冲上升沿之间的距离决定“二进制位”是“0”还是“1”,两脉冲上升沿之间距离短为“0”,距离长为“1”。如图5所示 ,脉宽编码用在载波或脉冲调制方式中.家用录像机 ,VCD,DVD的遥控器多采用脉宽编码方式。

    图5脉宽调制编码方式 1.2.3 无线数据传输解码 无线数据传输信号的解码 硬件解码可分为专用解码集成电路和自行设计的解码电路两种。专用解码芯片一般与专用编码芯片配对设计制造。[5]按其编码与解码功能可分为以下三类: (1) 控制数据的地址加密编码与解码器: 这类电路的特点是在地址加密编码的同时还可以进行控制数据的编解码。其编码容量大,保密性好。适用于安防、工业控制等对可靠性要求较高的场合。

    (2) 地址加密编码与解码器: 这一类电路无控制数据编码仅有加密地址编解码功能。适用于可靠性要求较高,但只进行简单的开关或增减控制的场合。

    (3) 控制数据编码与解码器: 这类电路无加密地址编码仅有控制数据的编解码。适用于群控或者应用环境本身就保证了其他信号发射源不会同时出现的场合,如在一个密闭的设备内部。使用专用的硬件编码解码对芯片,简便可靠,使用广泛,不再多述。

    一般来说硬件解码相对软件解码成本较高,并且当系统因更改或升级改变了编码方式时, 接收的硬件就要做相应的更改,缺乏一定的灵活性。当MCU 的任务不是很繁重时,可以考虑使用软件解码。对于频率调制方式, 只要测出每次脉冲的周期就可以解码出对应的二进制信息。方法有很多种,中断、查询都可以实现,具体方法因实际情况而定。对于脉宽调制(PWM),只要识别出每个脉冲的高(或低)电平宽度即可完成解码。对于2 脉位调制(2PPM),需要判断出每个周期内高低电平出现的先后次序,从而实现解码。单片机无线数据传输软件解码要保证正确无误地还原无线数据传输信息码,其主要功能包括以下几部分: (1)过滤附加信息,得到有效信息位。

    (2)排除系统内外各种干扰信号。

    (3)丢弃接收到的不完整信息帧。

    (4)检验接收信息的正确性。

    为了能够达到上述要求,解码方式采用无线数据传输信号的解码由接收单片机来完成,它把无线数据传输接收模块送来的无线数据传输编码波形通过解码,还原出发送端发送的数据。当接收到起始帧后,进入解码部分,接收完一帧后,处理收到的数据并进入下一次接收。解码采用软件解码, 如果从一个脉冲的高电平和一个脉冲的低电平过后, 若读到的电平为低, 说明该位为“0”, 反之即可判定为编码“1”。解码一位后,需等到下一位的高电平到来,再读到一个低电平后,判断读得的电平是高还是低,进行解码。按照这种方法判断八次,从而还原出发送端发送的信号。这样,根据事先约定代码所代表的功能,单片机就可以去执行各种控制动作,从而达到无线数据传输的目的。

    1.2.4 无线数据传输调制和解调 无线数据传输系统的调制和解调 为了使数据传送的距离较长,在发射信号前要对信号进行调制,调制的方法是将原信号与一个载波相与。射频接收模块接收发射的已调制信号,并对信号进行解调恢复原来的调制信号。解调过的信号经过放大后送入单片机中进行解码。[6]对移动通信的数字调制和解调器技术的要求如下:
    (1)在信道衰落条件下,误码率要尽可能低;

    (2)发射频谱窄,对相邻信道干扰小;

    (3)高效率的解调,以降低移动台功耗,进一步缩小体积和成本;

    (4)能提供较高的传输速率;

    (5)易于集成。

    2无线数据收发模块 2.1无线收发模块nRF905简介 nRF905是挪威Nordic VLSI公司推出的单片射频收发器,工作电压为1.9~3.6 V,32引脚QFN封装(5×5 mm),工作于433/868/915 MHz三个ISM(工业、科学和医学)频道,频道之间的转换时间小于650μs。nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加声表滤波器,ShockBurstTM工作模式,自动处理字头和CRC(循环冗余码校验),使用SPI接口与微控制器通信,配置非常方便。此外,其功耗非常低,以-10 dBm的输出功率发射时电流只有11 mA,工作于接收模式时的电流为12.5 mA,内建空闲模式与关机模式,易于实现节能。nRF905适用于无线数据通信、无线报警及安全系统、无线探测、无线监测、家庭自动化和玩具等诸多领域。

    2.2 nRF905无线模块特点 (1) 433Mhz开放ISM 频段免许可证使用 (2) 最高工作速率50kbps,高效GFSK调制,抗干扰能力强,特别适合工业控制 场合 (3) 125 频道,满足多点通信和跳频通信需要 (4) 内置硬件CRC 检错和点对多点通信地址控制 (5) 低功耗1.9 - 3.6V 工作,待机模式下状态仅为2.5uA  (6) 收发模式切换时间< 650us  (7) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指 示),可直接接各种单片机使用,软件编程非常方便 (8) TX Mode: 在+10dBm情况下,电流为30mA; RX Mode: 12.2mA  (9) 标准DIP间距接口,便于嵌入式应用 (10) RFModule-Quick-DEV 快速开发系统,含开发板 2.3 工作模式及芯片结构 nRF905有两种工作模式和两种节能模式。两种工作模式分别是ShockBurstTM接收模式和ShockBurstTM发送模式,两种节能模式分别是关机模式和空闲模式。[7]nRF905的工作模式由TRX_CE、TX_EN和PWR_UP三个引脚决定,如表1所示:
    表1 nRF905的工作模式与引脚关系 PWR_UP TRX_CE TX_EN 工作模式 0 X X 掉电和SPI编程 1 0 X Standby 和SPI编程 1 1 0 ShockBurst RX 1 1 1 ShockBurst TX 与射频数据包有关的高速信号处理都在nRF905片内进行,数据速率由微控制器配置的SPI接口决定,数据在微控制器中低速处理,但在nRF905中高速发送因此中间有很长时间的空闲,这很有利于节能。[8]由于nRF905工作于ShockBurstTM模式,因此使用低速的微控制器也能得到很高的射频数据发射速率。在ShockBurstTM接收模式下,当一个包含正确地址和数据的数据包被接收到后,地址匹配(AM)和数据准备好(DR)两引脚通知微控制器。在ShockBurstTM发送模式,nRF905自动产生字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。由以上分析可知,nRF905的ShockBurstTM收发模式有利于节约存储器和微控制器资源,同时也减小了编写程序的时间。下面具体详细分析nRF905的发送流程和接收流程。

    nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器、功率放大器等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,使用非常方便。

    3系统软硬件设计 3.1 硬件设计 3.1.1 概述 无线数据传输系统一般由无线数据传输的发射系统、无线数据传输接收系统、处理系统、执行机构构成。其发射系统由可编程的集成芯片及外围电路构成;接收系统由检波放大整形电路及无线数据传输接收芯片构成;处理系统由单片微处理机芯片及外围电路构成。[9]主要芯片均系无线数据传输专用集成芯片。由无线数据传输发射系统输出的信号是经高频调制后的二进制高频编码脉冲串,它由起始码及信息码构成。这种发送方式具有下述优点: 无线数据传输脉冲宽度稳定且不会由于数据的内容而改变功率消耗;采用高频调制的无线数据传输信号抗干扰能力强,使无线数据传输信号易于分离和区别;已调脉冲列可用一个窄带接收器进行接收,可提高无线数据传输系统的抗干扰能力;在高频下间隔进行开关,可减小消耗功率,单片机与模块连接设计如图6所示。

    图6 单片机与模块连接设计 3.1.2 电路原理 nRF905 在使用中,根据不同需要,其电路图不尽相同,图7所示为典型的应用原理图,该电路天线部分使用的是50Ω单端天线。[10]在nRF905 的电路板设计中,也可以使用环形天线,把天线布在PCB 板上,这可减小系统的体积。

    图7 nRF905典型应用电路图 3.1.3 SPI接口配置 所有配置字都是通过SPI 接口送给nRF905。[11]SPI 接口的工作方式可通过SPI 指令进行设置。当nRF905 处于空闲模式或关机模式时,SPI 接口可以保持在工作状态。SPI 读操作如图8,写操作如图9 图8 SPI 读操作 图9 SPI 写操作 SPI 接口由状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄存器5 个寄存器组成。状态寄存器包含数据准备好引脚状态信息和地址匹配引脚状态信息;
    射频配置寄存器包含收发器配置信息,如频率和输出功能等;
    [12]发送地址寄存器包含接收机的地址和数据的字节数;
    发送数据寄存器包含待发送的数据包的信息,如字节数等;
    接收数据寄存器包含要接收的数据的字节数等信息,串行接口指令如表2。

    表2 串行接口指令 SPI串行接口指令 指令名称 指令格式 操作 W_CONFIG (WC) 0000AAAA 写配置寄存器。AAAA指出写操作的开始字节,字节数量取决于AAAA指出的开始地址。

    R_CONFIG (RC) 0001AAAA 读配置寄存器。AAAA指出读操作的开始字节,字节数量取决于AAAA指出的开始地址 W_TX_PLAYLOAD (WTP) 00100000 写TX有效数据:1-32字节。写操作全部从字节0开始。

    R_TX_PLAYLOAD (RTP) 00100001 读TX有效数据:1-32字节。读操作全部从字节0开始。

    W_TX_ADDRESS (WTA) 00100010 写TX地址:1-4字节。写操作全部从字节0开始。

    R_TX_ADDRESS (RTA) 00100011 读TX地址:1-4字节。读操作全部从字节0开始。

    R_RX_PLAYLOAD (RRP) 00100100 读RX有效数据:1-32字节。读操作全部从字节0开始 CHANNEL_CONFIG (CC) 1000pphccccccccc 快速设计配置寄存器中CH_NO,HFREQ_PLL和PA_PWR的专用命令。

    CH_NO=ccccccccc;HFREQ_PLL=h;PA_PWR=pp 射频配置寄存器和内容如表3 表3 射频配置寄存器和内容 参数 位宽 说明 CH_NO 9 同HFREQ_PLL 一起设置中心频率默认值=001101100b=180d FRF= 422.4+ CH_NOd/10 *(1+ HFREQ_PLLd)MHZ HFREQ_ PLL 1 设置 PLL 在 433或868/915MHZ 模式 默认值=0。

    0 ‐器件工作在 433MHZ 频段 1 ‐器件工作在 868/915MHZ 频段 PA_PWR 2 输出功率 默认值=00 00 ‐10dBm 01 ‐2dBm 10 +6dBm 11 +10dBm RX_RED_PWR 1 降低接收模式电流消耗至 1.6mA 灵敏度降低 默认值=0。

    0 ‐正常模式;
    1 ‐低功耗模式 AUTO_RETRAN 1 重发数据 如果 TX 寄存器的 TRX_CE和 TX_EN被设置为高 默认值=0。

    0‐不重发数据;
    1 ‐重发数据包 RX_AWF 3 RX 地址宽度 默认值=100 001‐1字节 RX 地址宽度;
    100‐4字节 RX 地址宽度 TX_AWF 3 TX 地址宽度 默认值=100 001‐1字节 TX 地址宽度;
    100‐4字节 TX 地址宽度 RX_PW 6 RX 接收有效数据宽度 默认值=100000 000001 ‐1字节 RX 有效数据宽度 000010 ‐2字节 RX 有效数据宽度 100000 ‐32字节 RX 有效数据宽度 TX_PW 6 TX 有效数据宽度 默认值=100000 000001 ‐1字节 TX 有效数据宽度 000010 ‐2字节 TX 有效数据宽度 100000 ‐32字节 TX 有效数据宽度 3.2 软件设计 3.2.1 概述 硬件解码电路较复杂,外围器件过多,且当发射模块的类型不同时不易改动,不利于模块化,而软件解码就克服了这些缺点。在软件解码无线数据传输系统中,解码的核心是单片机,电路极为简单,无须外围器件。[13]它接收解调出的串行二进制码,在内部根据本系统的无线数据传输信号编码格式将串行码对应成发射电路上的按键,便于利用,易于兼容,当发射模块的类型不同时只需对程序稍加改动即可。本软件的主要任务是在单片机AT89S51的控制之下完成数据的正确传输。

    3.2.2 发射程序 #include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit TX_EN= P3^5; sbit TRX_CE=P1^1; sbit PWR_UP=P3^4; sbit CD=P3^3; sbit AM=P1^3; sbit DR=P3^2; sbit MISO=P1^6; sbit MOSI=P1^4; sbit SCK=P1^7; sbit CSN=P1^5; sbit led=P3^0; sbit key1=P1^2; sbit key2=P1^0; sbit key3=P3^7; uchar key_value=0; void Delay(uint x) { uint i; for(i=0;i<x;i++) { _nop_(); } } void SpiWrite(uchar date) { uchar i=8; while (i--) { Delay(10); MOSI=(bit)(date&0x80); date<<=1 ; Delay(10); SCK=1; Delay(10); SCK=0; } } void TxPacket(void) { PWR_UP=1; TX_EN=1; TRX_CE=0; Delay(2); CSN=0; SpiWrite(0x22); //写发送地址,后面跟4字节地址// SpiWrite(0xE7); SpiWrite(0xE7); SpiWrite(0xE7); SpiWrite(0xE7); CSN=1; Delay(2); CSN=0; SpiWrite(0x20); //写发送数据命令,后面跟三字节数据// SpiWrite(0x01); SpiWrite(0x02); SpiWrite(key_value); CSN=1; Delay(5); TRX_CE=1; //使能发射模式// Delay(500); //等带发送完成// TRX_CE=0; while(!DR); } ////////////初始化配置寄存器//////////////// void Ini_System(void) { CSN=1; SCK=0; PWR_UP=1; TRX_CE=0; TX_EN=0; Delay(2); CSN=0; SpiWrite( 0x00); //配置命令// SpiWrite( 0x6C); //CH_NO,配置频段在433.2MHZ SpiWrite( 0x0C); //输出功率为10db,不重发,节电为正常模式 SpiWrite( 0x44); //地址宽度设置,为4字节 SpiWrite( 0x03);SpiWrite( 0x03); //接收发送有效数据长度为3字节 SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7); //接收地址 SpiWrite( 0xDE); CSN=1; PWR_UP=1; TRX_CE=1; TX_EN=0; Delay(1000); } void main(void) { Ini_System(); DR=1; TRX_CE=0; Delay(1000); TX_EN=0; TRX_CE=1; PWR_UP=1; key_value=0x00; while(1) { if(!key1) //senfing key1 { Delay(5); if(!key1) { Delay(3); while(!key1); key_value=0xa0; } } else if(!key2) //senfing key2 { Delay(5); if(!key2) { Delay(3); while(!key2); key_value=0xa1; } } if(!key3) //senfing key3 { Delay(5); if(!key3) { Delay(3); while(!key3); key_value=0xa2; } } if(key_value!=0x00) { led=0; TxPacket(); key_value=0x00; TX_EN=0; TRX_CE=1; PWR_UP=1; Delay(6000); led=1; } } } 3.2.3 接收程序 #include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char sbit TX_EN= P0^0; sbit TRX_CE=P0^1; sbit PWR_UP=P0^2; sbit CD=P0^3; sbit AM=P0^4; sbit DR=P0^5; sbit MISO=P0^6; sbit MOSI=P0^7; sbit SCK=P2^0; sbit CSN=P2^1; sbit led1=P1^1; sbit led2=P1^2; sbit led3=P1^3; uchar TxRxBuffer[3]; bit success_flag=0; void Delay(uint x) { uint i; for(i=0;i<x;i++) _nop_(); } void SpiWrite(uchar date) { uchar i=8; while (i--) { Delay(10); MOSI=(bit)(date&0x80); date<<=1 ; Delay(10); SCK=1; Delay(10); SCK=0; } } uchar SpiRead() //from 905 read data { uchar i=8,date1=0;; while (i--) { date1<<=1 ; date1|=MISO; SCK=1 ; Delay(10); SCK=0 ; Delay(10); } return date1; } void Ini_System(void) /*初始化配置寄存器*/ { CSN=1; SCK=0; PWR_UP=1; TRX_CE=0; TX_EN=0; Delay(2); CSN=0; SpiWrite(0x00); //配置命令// SpiWrite(0x6C); //CH_NO,配置频段在433.2MHZ SpiWrite(0x0C); //输出功率为10db,不重发,节电为正常模式 SpiWrite(0x44); //地址宽度设置,为4字节 SpiWrite(0x03);SpiWrite(0x03); //接收发送有效数据长度为3字节 SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xE7); //接收地址 SpiWrite(0xDE); CSN=1; PWR_UP=1; TRX_CE=1; TX_EN=0; Delay(1000); } void Wait_Rec_Packet(void) { if(DR) { TRX_CE=0;//如果数据准备好,则进入待机模式,以便SPI口操作 CSN=0; SpiWrite(0x24);//接收数据包 TxRxBuffer[0] = SpiRead(); TxRxBuffer[1] = SpiRead(); TxRxBuffer[2] = SpiRead(); CSN=1; while(DR); TRX_CE=1; if((TxRxBuffer[0]==0x01)&&(TxRxBuffer[1]==0x02)) { TxRxBuffer[0]=0xff; TxRxBuffer[1]=0xff; success_flag=1; if(TxRxBuffer[2]==0xa0) { led1=~led1; } else if(TxRxBuffer[2]==0xa1) { led2=~led2; } else if(TxRxBuffer[2]==0xa2) { led3=~led3; } Ini_System(); } } } void main(void) { Ini_System(); PWR_UP=0; DR=1; led1=0; led2=0; led3=0; success_flag=0; TRX_CE=0; Delay(1000); TX_EN=0; TRX_CE=1; PWR_UP=1; while(1) { Wait_Rec_Packet(); //等待接收完成 if(success_flag) { TX_EN=0; TRX_CE=1; PWR_UP=1; Delay(5000); Delay(5000); success_flag=0; Delay(10000); } } } 4结束语 本文着重介绍了无线数据传输系统的基本原理及无线数据传输的编码解码设计。这种编码方法在基于AT89S51单片机的无线数据传输设计中得到了应用。本设计非常简便可靠地实现了单片机编码、发送、接收、解码的任务,完成了无线数据传输的功能,取得了良好的效果,应用前景广阔。该系统适用于短距离的无线数据传输,也可以通过增加发射功率或中继的方式实现远距离传输,可用于需要较长时间内对目标进行连续监控的场合。当发射器的类型不同时只需对中断处理程序的部分参数稍加改动即可,就可以适用于多种红外遥控器信号的接收和解码 ,极大地节约了硬件实现的资源开销。所开发的系统具有较强的灵活性和实用性 ,为新型遥控器材的研制做了有益的探索,具有一定的参考和借鉴作用。本文所用的方法可以举一反三,对不同类型的发射器的基本思路和方法是相同的,只需要根据具体波形修改其参数和表达式即可,能灵活应用。对其他型号的遥控编码器及不同的硬件时钟,只需修改部分参数,即可适用。程序如果改为汇编语言编写占用空间会比使用C语言编写更小,完全可应用于各类单片机。它不仅降低了成本,同时也增加了无线数据传输接收的灵活性,对不同的无线数据传输模块,不用更换系统硬件电路,只需要修改程序即可。经实验测试,上述无线数据传输的信号的发送和接收方法没有出现传输误码,可靠实用,在编码解码方面降低了硬件成本。按上述编码方法,信号的传输速度可达20kbps。若在数据传输协议中,加上地址帧(设备号识别) 和校验帧,该方法在计算机系统中将有更广泛的应用。

    参 考 文 献 [1] 张毅刚.新编MCS-51单片机应用设计(第三版)[M].哈尔滨:工业大学出版社,2008 :231-255 [2] 董巍巍,李钊,李建军.基于单片机的数据采集系统设计[J].计算机与网络,2009(5):3-6. [3] 马青,童子权.基于单片机的数据采集与近距离无线传输系统[J].中国科技信息,2009(10):101-103 [4] 清华大学通信教材编写小组.数据传输原理[M].北京:人民邮电出版社,1995:48-50. [5] 刘育峰,赵予铨,赵孟强,尹继武. 基于AT89S51的无线收发系统设计[J].电子设计工程. 2010(1):15-18. [6] 侯婷,杨宏业,李俊芬,孙作雷. 无线数据传输终端的设计和实现[J].微计算机信息.2006 (23):34 . [7]李洪涛,皇甫堪,王展,闫吉杰 . AT89S51单片机在无线数据传输中的应用[J].单片机与嵌入式系统应用. 2003(6):21-22. [8]金保华,张勇,崔光照. 基于nRF905的无线数据多点跳传通信系统[J].仪表技术与传感器.2004年(9):41-43. [9] 刁雪慧,徐德民,张福斌,高剑. 无线传感器网络节点的设计[J].机械与电子.2008(5):22-25 [10] 马淑华,王凤文,张美金.单片机原理与接口技术[M].北京:邮电大学出版社,2005:164-170. [11] 李群芳,张士军,黄建.单片微型计算机与接口技术(第2版)[M].北京:电子工业出版社,2004:216-221. [12] 蒋博. nRF905的无线数据传输系统[J].工业仪表与自动化装置.2006年(3):59-60. [13] 郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2008:55-96. Wireless system design base on MCU Abstract: With the rapid development of today's society, People urgently hope exchange information anytime, anywhere without constraints of time. A variety of intelligent control system is also inseparable from the transmission of the data today.The wireless data transmission is new transmission,and its different from the traditional wired transmission, the system does not require transmission cable and it cheap, simple be construction. Now, there are a lot of electrical products (such as domestic appliances) control are also using wireless data transmission,some electrical products function with wireless data transmission relatively simple, wireless data transmission signal receiving recognition are often used coding modulation matching decode chips.The electrical products with more of complex functions wireless data transmission, which wireless data transmission signal recognition and decoding with MCU, and its also use a variety of coding modulation. This project describes a wireless data transmission program base on AT89S51 MCU and nRF905 modules, and identification programming method MCU for reference. Keywords:AT89S51 Micro Controller Unit, nRF905 module, Wireless data transmission;

    相关热词搜索:毕业设计 单片机 无线传输 基于AT89S51单片机无线传输系统设计毕业设计 51单片机无线通讯 单片机毕设题目

    • 范文大全
    • 说说大全
    • 学习资料
    • 语录
    • 生肖
    • 解梦
    • 十二星座

    推荐访问