




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于51单片机无线遥控智能环境监测车摘要:我们制作无线遥控智能环境监测车,用于火场和救援人员无法进入的环境中进行探测,能够及时的将内部信息传递给救援人员,以便及时的做出营救方案,能够为为救援节省时间。整机分为两部分,第一部分为控制显示部分,主要是现实无线遥控小车的行驶和接收车子发送的温度和显示环境中的一些基本情况,第二部分为检测部分,主要设在小车上,小车进入后,检测到温度后,通过射频模块无线发送,发射距离大于200米。并且车子上装有全方位摄像头,外部人员可以通过摄像头观察到内部的基本情况。 本设计主要创新点在于成本低,功耗小,操作方便,体型小巧,携带方便,对于出现灾害人暂时无法进入的环境中有明
2、显作用。关键词:单片机;射频模块;温度显示;摄像头;无线遥控;救难;目录摘要1目录2一、概述41.1课题的背景意义41.2无线遥控智能环境监测车的整体结构介绍4二、主芯片控制模块62.1控制模块的方案选择62.2 AT89S52单片机6三、控制显示电路电路设计93.1显示电路93.1.1 方案比较选择93.1.2 显示电路的具体设计及优化103.1.3 LCD1602基本原理103.2 电机驱动控制电路133.2.1 键盘电路原理133.2.2 电机驱动电路的设计及使用方法14四、无线发送接收电路设计154.1 无线发送接收模块选择154.2射频收发器nRF905164.2.1 nRF905内
3、部寄存器及应用电路164.2.2 nRF90运行过程17五、温度传感电路设计185.1温度传感的选择185.2 DS18B20工作原理和电路设计19六、摄像头显示23七、其它硬件控制电路设计247.1 电源电路24八、结论25参考文献26致谢.27附录2851单片机无线遥控智能环境监测车一、概述1.1课题的背景意义随着生产自动化的发展,机器人已经越来越广泛地应用到生产自动化上,随着科学技术的发展,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。视觉的典型应用领域为自主式智能导航系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉
4、需要通过大量的运算也只能识别一些结构化环境简单的目标。本设计采用的有线摄像头监控,机器车可以很好的在预定环境中进行检测,并且可以了解内部环境,以便控制机器车执行一步步的任务智能救援小车实现无线遥控寻迹功能、温度检测和无线收发功能,这对一些检测人类无法进入的环境中有很大的作用。1.2无线遥控智能环境监测车的整体结构介绍显示控制硬件部分:显示控制部分,采用51单片机作为系统的控制中心,进行数学运算、对无线发送接收模块送来的信号进行处理,通过LCD显示实时温度、并且在外接电脑上显示摄像头传来的内部情况、键盘控制、无线发送接收模块。图一机器车硬件部分:机器车硬件部分,采用51单片机作为系统的控制中心,
5、进行数学运算、对温度传感器和无线发送接收模块送来的信号进行处理,接收到操作人员的指令,驱动机器车运动到指定地点,测量实时温度、无线发送接收模块发送给显示器。 图二二、主芯片控制模块2.1控制模块的方案选择方案一:采用Atmel公司推出的AVR新型单片机ATM8515作为系统控制器,ATM8515支持在线编程,无需任何外加编程器,内部有32个8位通用工作寄存器,16个中断源它是一款基于RISC精简指令集架构的新型系列的单片机,避免了传统的基于累加器和存储器之间的数据传输带来的瓶颈效应,虽有以上优点,但由于我们掌握不熟练。方案二:采用AT89s52单片机进行控制。本设计需要使用的软件资源比较多,需
6、完成传感器信息处理、键盘输入、输出控制、无线发射等功能。采用AT89s52进行控制比较方便,对于实现本系统的的基本要求外,还可以扩展更宽广的功能。基于以上分析,结合实际情况,我们对AVR单片机的控制不太熟悉,因此:设计中选择方案二AT89s52的单片机控制,完成系统控制。2.2 AT89S52单片机At89s52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片
7、内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。 在fla
8、sh编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。 在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能 P1.0 T2(定时
9、器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种
10、应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。 端口引脚 第二功能
11、 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时/计数器0) P3.5 T1(定时/计数器1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) 此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号
12、,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。 对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PS
13、EN信号。 EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。 FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。三、控制显示电路电路设计3.1显示电路 方案比较选择方案一 :采用LED数码显示,用动态扫描的方式点亮,LED数码显示工作电流较小易于驱动,但LED数码显示显示位数少,占用资源较多且只能在一个界面上显示一组数据,无法实现温度
14、显示与设置同时进行,而且技术含量不太高,故本次设计未采用这种显示方法显示。方案二 :采用LCD液晶显示器,LCD有明显的优点:微功耗、尺寸小,超薄轻巧、显示信息量大、字迹清晰、美观、视觉舒适,人机交换界面简单,可以用LCD液晶进行菜单显示,使整个控制系统更加人性化。 显示电路的具体设计及优化无线接收系统采用LCD1602与单片机连接,控制 LCD的字符显示,其电路接口图如附图3所示。8位数据线分别连接到51单片机的P0口,并且利用I/O口的P2.0P2.2作为LCD的控制线。 LCD1602基本原理1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表编号符号引脚说
15、明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R
16、/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。基本操作时序表读写操作时序如图所示读操作时序
17、0; 写操作时序读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无3.2 电机驱动控制电路3.2.1 键盘电路原理根据需求,本系统设计使用了标准的3×3键盘,图所示。图中s7,s2,s6为3×3键盘的列信号,s7,s4,s9为3×3键盘的行信号。在本系统中,用P1.3P1.5连接键盘的列信号s7,s4,s
18、9;用P1.0P1.2连接键盘的行信号s7,s2,s6。采用低电平逐行扫描的方式,判断按键的状态。3.2.2 电机驱动电路的设计及使用方法L298N是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二组和四相电机的专用驱动器,即内含两个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V,2A以下的电机,其引脚排列如下图所示OUT1、OUT2和OUT3、OUT4之间分别接了2个电动机。IN1、IN2、IN3、IN4引脚从单片机接输入控制电平,控制电机的正反转,ENA、 ENB接控制使能端,控制电机的停转。L298的逻辑功能表如下所示:本设计通过控制面板的按键,来控制机
19、器车实行相应的动作。S2、S3、S4、S5分别代表上下左右走,S6、S7分别代表右转左转45°。S8、S9分别代表右后转和左后转135°。本设计具有操作简单,整个控制系统人性化。四、无线发送接收电路设计4.1 无线发送接收模块选择设计初期,无线传输模块主要考虑两个方案:方案一:利用PTR2000无线数传模块,它是一种超小型、低工耗、高速率的无线收发数传模块。PTR2000的通信速率最高为20kbit/s,具有接收发射合一、体积小、外围器件少等优点,可直接与MCU串口相接,也可以接计算机RS232接口,软件编程非常方便。主要缺点:收发距离较近,我们未采用此方案。方案二:采用单
20、片射频收发器nRF905,其工作电压为1.93.6V,32引脚QFN封装(5×5mm),工作于433/868/915MHz三个ISM频道,频道之间的转换时间小于650us。nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加声表滤波器,使用SPI接口与微控制器通信,配置非常方便。此外,其功耗非常低,工作于接收模式时的电流为12.5mA,内建空闲模式与关机模式,易于实现节能。综上所述,本设计采用方案二,经过多次调试,完成温度的远距离无线传输,发射接收距离大于200米。4.2射频收发器nRF905 nRF905内部寄存器及应用电路射频配置射频寄存器的各位的长
21、度是固定的。然而,在ShockBurstTM收发过程中,TX_PAYLOAD、RX_PAYLOAD、 TX_ADDRESS和RX_ADDRESS 4个寄存器使用字节数由配置字决定。nRF905进入关机模式或空闲模式时,寄存器中的内容保持不变。应用电路nRF905在使用中,根据不同需要,其电路图不尽相同,图2所示为典型的应用原理图,该电路天线部分使用的是50单端天线。 nRF90运行过程收发端程序流程图:单片机串口对无线收发模块收发状态转换的控制,可通过设置控件的属性来实现。图4-3为发送端程序流程图,图4-4为接收端程序流程图。外部中断二 外部中断一 外部中断三 初始化单片机开外部中断FLAG
22、=1?中断到齐?是否读取发送数据发 送FLAG=1FLAG=0图4-3 发送端的程序流程图串口初始化等待控制命令数据编码CRC校验打开串口发送数据有数据返回?否是返回正确信息否是图4-4 接收端程序流程图五、温度传感电路设计5.1温度传感的选择方案一:采用AD590作为温度传感器,把变化的温度信号转换为变化微弱的电压信号,微弱的电压信号经放大器放大后转换为变化较大的电压信号,再经A/D转换后得到二进制数再送给单片机处理得到我们所需要的温度值,用此方法程序结构简单处理速度教快,但该方法所需要的硬件电路非常多,温度误差较大,无法达到本题目的要求,故没选取此方法。方案二:采用DS18B20作为温度传
23、感器,DS18B20为一线总线型温度传感器可程序设定9-12位的分辨率,精确度为0.5度,可选取跟小的封装方式,更宽的电压适应范围,用户设定的报警温度存储在EEPROM中,掉电后依然保存。测温范围可达-55125摄氏度,支持一根线上挂多个DS18B20实现多点温度显示,采用DS18B20完全超出了设计要求。综合上述两种方案本设计选择了方案二种温度采样方式。5.2 DS18B20工作原理和电路设计DS18B20工作原理 DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20测温原理如下图所示。
24、图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。高速暂存存储器
25、高速暂存存储器由9个字节组成,其分配下表所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。对应的温度计算: 当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。DS18B20暂存寄存器分布 寄存器内容 字节地址温度值低位 (LS Byte)0温度值高位 (MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值8根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每
26、一次读写之前都要对DS18B20进行 复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后 释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。 ROM指令表 指 令 约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址) 符合 ROM 55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。 搜索 ROM 0
27、FOH用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。 跳过 ROM 0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。 告警搜索命令 0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。 RAM指令表 指 令 约定代码功 能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。 读暂存器 0BEH 读内部RAM中9字节的内容 写暂存器 4EH 发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字
28、节的数据。 复制暂存器 48H 将RAM中第3 、4字节的内容复制到EEPROM中。 重调 EEPROM 0B8H 将EEPROM中内容恢复到RAM中的第3 、4字节。 读供电方式 0B4H 读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。 DS18B20的工作严格遵守单总线器件的通信协议,以保证数据的完整性。单总线协议定义了复位脉冲、应答脉冲、写0、写1、读0和读1等几种类型的信号,所有的单总线命令序列都是由这些基本的信号类型组成。在这些信号中,除了应答脉冲外,其他均由主机发出同步信号,并且发送的所有命令和数据都是字节的低位在前。在本
29、设计中,总线上只有一个温度传感器,转换精度为12位。读温度的流程如图5-2所示。复位发跳过ROM命令发跳过ROM命令发读存储器命令发温度转换命令连续读字节温度值延时复位复位图5-2 读温度流程六、摄像头显示小车前端固定有防水全方位摄像头,图像信号可通过连接线传至外部笔记本,方便外部人员根据内部情况进行操作。七、其它硬件控制电路设计7.1 电源电路电源电路采用交流220V转12V、5V直流,特殊情况下,还可以使用外接电源以便碰到紧急情况下使用。八、结论本设计主要用到了单片机的通用IO口的读写,定时器,中断等基本功能,通过实际操作进一步掌握了51单片机的使用。同时,通过单片机外围电路的设计,更深入
30、学习了51单片机在嵌入式系统中的应用。通过实际焊接电路,编写程序,也进一步提高了我的动手能力以及分析解决错误的能力,是我能够更好的将所学知识应用到实际中来。本系统能够基本满足设计要求,能够较平稳的控制小车行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。参考文献1袁杰,张伟豪等. 单片机原理及接口技术. 上海交通大学出版社,2007. 8.2刘润华,刘立山. 模拟电子技术. 石油大学出版社,2003. 250-254.3 楼然苗,李光飞,单片机课程设计指导,北京航空航天大学出版社,2007.74 段颖,杨帮文 实用电池充电器与保护器电路集锦, 电子工业出版社,
31、2001,45 谭晖,nRF无线SOC单片机原理与高级应用(无线单片机技术丛书),北京航空航天大学出版社6 刘同法,单片机基础与最小系统,北京航空航天大学出版社,2007.6附录机器车部分:控制器部分:源程序:无线控制发送#include <reg52.h>#include <ABSACC.h>#include <intrins.h>#include <stdio.h>#define uint unsigned int#define uchar unsigned charvoid Delay1(unsigned int num);#define
32、BYTE_BIT00x01#define BYTE_BIT10x02#define BYTE_BIT20x04#define BYTE_BIT30x08#define BYTE_BIT40x10#define BYTE_BIT50x20#define BYTE_BIT60x40#define BYTE_BIT70x80/SPI指令#define WC0x00#define RC0x10#define WTP0x20#define RTP0x21#define WTA0x22#define RTA0x23#define RRP0x24bdata unsigned char DATA_BUF;#d
33、efine DATA7(DATA_BUF&BYTE_BIT7) != 0)#define DATA0 (DATA_BUF&BYTE_BIT0) != 0)sbitflag=DATA_BUF7;sbitflag1=DATA_BUF0;uchar TxRxBuf4=0x00,0x00,0x00,0x00;/配置口定义/sbit TXEN = P23; sbit TRX_CE = P33;sbit PWR = P24;/SPI口定义/sbit MISO = P35;sbit MOSI = P27;sbit SCK = P34;sbit CSN = P30;sbit AM=P21;/状
34、态输出口/sbit DR = P26;sbit CD = P25;/void delay1(uint i);/RF寄存器配置/-NRF905寄存器配置- unsigned char idata RFConf11= 0x00, /配置命令/ 0x9f, 0x0c, 0x44,0x01,0x01, 0xe7,0xe7,0xe7,0xe7, 0x58, /CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振 ; code TxAddress4=0xe7,0xe7,0xe7,0xe7;/延时/static void delay(uchar a) uint b,c; for(b=a;b>0;
35、b-) for(c=120;c>0;c-);void SpiWrite(unsigned char send)unsigned char i;DATA_BUF=send;for (i=0;i<8;i+)if (DATA7)/总是发送最高位MOSI=1;elseMOSI=0;SCK=1;DATA_BUF=DATA_BUF<<1;SCK=0;/初始化nRF905/void nRF905Init(void) CSN=1;/ Spi disableSCK=0;/ Spi clock line init lowDR=0;/ Init DR for inputAM=0;/ Init
36、 AM for inputCD=0;/ Init CD for inputPWR=1;/ nRF905 power onTRX_CE=0;/ Set nRF905 in standby modeTXEN=0;/ set radio in Rx mode/初始化寄存器void Config905(void)uchar i;CSN=0;/ Spi enable for write a spi command/SpiWrite(WC);/ Write config command写放配置命令for (i=0;i<11;i+)/ Write configration words 写放配置字 Sp
37、iWrite(RFConfi);CSN=1;/ Disable Spi/发送数据void TxPacket(uchar *TxRxBuf) uchar i;/Config905();CSN=0;SpiWrite(WTP);/ Write payload commandfor (i=0;i<1;i+)SpiWrite(TxRxBufi);/ Write 32 bytes Tx data/ Spi enable for write a spi commandCSN=1;delay(1);/ Spi disableCSN=0;/ Spi enable for write a spi comma
38、ndSpiWrite(WTA);/ Write address commandfor (i=0;i<4;i+)/ Write 4 bytes addressSpiWrite(TxAddressi);CSN=1;/ Spi disableTRX_CE=1;/ Set TRX_CE high,start Tx data transmissiondelay(1);/ while (DR!=1);TRX_CE=0;/ Set TRX_CE low/void SetTxMode(void)TRX_CE=0;TXEN=1;delay(1); / delay1 for mode change(>
39、=650us)void TX(void) SetTxMode();/ Set nRF905 in Tx mode/ SetRF_PA_PWR(unsigned char i);/设置发射功率void Delay1(unsigned int num) while( -num ) ; uchar keyscan()uchar temp,a; while(1) P1=0xdf; temp=P1; temp=temp&&0x0f; if(temp!=0x0f) delay(10); if(temp!=0x07) temp=P1; switch(temp) case 0xde:a=1;b
40、reak; case 0xdd:a=2;break; case 0xdb:a=3;break; P1=0xef; temp=P1; temp=temp&&0x07; if(temp!=0x0f) delay(10); if(temp!=0x0f) temp=P1; switch(temp) case 0xee:a=4;break; case 0xed:a=5;break; case 0xeb:a=6;break; P1=0x37; temp=P1; temp=temp&&0x07; if(temp!=0x07) delay(10); if(temp!=0x07)
41、 temp=P1; switch(temp) case 0x3e:a=7;break; case 0x3d:a=8;break; case 0x3b:a=9;break; return a; void main(void) uchar b; nRF905Init(); Config905();Delay1(500); while(1)b=keyscan();TxRxBuf0=b; TX();TxPacket(TxRxBuf);电机驱动#include <reg52.h>#include <ABSACC.h>#include <intrins.h>#inclu
42、de <stdio.h>#include"motor.h"#define uint unsigned int /0 255#define uchar unsigned charuchar num;/#define BYTE_BIT00x01#define BYTE_BIT10x02#define BYTE_BIT20x04#define BYTE_BIT30x08#define BYTE_BIT40x10#define BYTE_BIT50x20#define BYTE_BIT60x40#define BYTE_BIT70x80/#define WC0x00#d
43、efine RC0x10#define WTP0x20#define RTP0x21#define WTA0x22#define RTA0x23#define RRP0x24bdata unsigned char DATA_BUF;#define DATA7(DATA_BUF&BYTE_BIT7) != 0)#define DATA0 (DATA_BUF&BYTE_BIT0) != 0)sbitflag=DATA_BUF7;sbitflag1=DATA_BUF0;#define TxRxBuf_Len 4unsigned char TxRxBufferTxRxBuf_Len;s
44、bit TXEN=P23;sbit TRX_CE=P33;sbit PWR=P24;/SPI口定义/sbit MISO=P35;sbit MOSI = P27;sbit SCK = P34;sbit CSN = P30;sbit AM = P33;/状态输出口/sbit DR = P26;sbit CD = P25;unsigned char idata RFConf11= 0x00, /配置命令/ 0x9f, 0x0c, 0x44, 0x01,0x01, 0xe7,0xe7,0xe7,0xe7, 0x58, /CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振;bit lcdbit;
45、/80us延时/void Delay(uint a) uint b,c; for(b=a;b>0;b-) for(c=1;c>0;c-);void delay1(uint a) uint b,c; for(b=a;b>0;b-) for(c=110;c>0;c-);unsigned char SpiRead(void)unsigned char j;for (j=0;j<8;j+) DATA_BUF=DATA_BUF<<1;SCK=1;if (MISO)/读取最高位,保存至最末尾,通过左移位完成整个字节DATA_BUF|=BYTE_BIT0;elseD
46、ATA_BUF&=BYTE_BIT0;SCK=0; return DATA_BUF;void SpiWrite(unsigned char send)unsigned char i;DATA_BUF=send;for (i=0;i<8;i+)if (DATA7)/总是发送最高位MOSI=1;elseMOSI=0;SCK=1;DATA_BUF=DATA_BUF<<1;SCK=0;/初始化nRF905/void nRF905Init(void) CSN=1;/ Spi disableSCK=0;/ Spi clock line init lowDR=0;/ Init DR
47、 for inputAM=0;/ Init AM for inputCD=0;/ Init CD for inputPWR=1;/ nRF905 power onTRX_CE=0;/ Set nRF905 in standby modeTXEN=0;/ set radio in Rx mode/初始化寄存器void Config905(void)uchar i;CSN=0;/ Spi enable for write a spi command/SpiWrite(WC);/ Write config command写放配置命令for (i=0;i<11;i+)/ Write config
48、ration words 写放配置字 SpiWrite(RFConfi);CSN=1;/ Disable Spivoid SetRxMode(void)TXEN=0;TRX_CE=1;Delay(10); / delay for mode change(>=650us)unsigned char CheckDR(void)/检查是否有新数据传入 Data Readyif (DR=1&&TRX_CE=1 && TXEN=0)return 1;elsereturn 0;void RxPacket(void)/读数据uchar i; Delay(1);/ Set nRF905
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输尿管镜的护理
- 秦腔弦乐欣赏
- 财务情况年终总结
- 怎样搭配服装创业分享
- 财务经理工作总结及规划
- 车展场地出租协议
- 创业机会的来源与探索
- 车间班组安全文化建设
- 父母买车赠与合同
- 汽车吊安全培训知识
- WPSOffice办公软件实例教程PPT完整全套教学课件
- 四年级数学下册-小数加减法的简便运算课件
- igcse英语第一语言15年前真题0500 wqp
- 2023年河北省邯郸市统招专升本生理学病理解剖学历年真题汇总及答案
- 女性生殖器检查相关知识PPT
- keba教程科控编程手册
- 高强螺栓检测报告3
- 广东英语中考必背1600词
- 海南码头防波堤工程施工组织设计图文并茂
- 小学“新时代好少年”推荐表
- GB 7101-2022食品安全国家标准饮料
评论
0/150
提交评论