无线遥控智能环境监测车Word文件下载.docx
- 文档编号:20830633
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:25
- 大小:91.71KB
无线遥控智能环境监测车Word文件下载.docx
《无线遥控智能环境监测车Word文件下载.docx》由会员分享,可在线阅读,更多相关《无线遥控智能环境监测车Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。
无线接收系统采用LCD1602与单片机连接,控制LCD的字符显示,8位数据线分别连接到51单片机的P0口,并且利用I/O口的P2.0~P2.2作为LCD的控制线。
3.1.1LCD1602基本原理
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
3.2电机驱动控制电路
3.2.1键盘电路原理
根据需求,本系统设计使用了标准的3×
3键盘,用P1.3~P1.5连接键盘的列信号,用P1.0~P1.2连接键盘的行信号。
采用低电平逐行扫描的方式,判断按键的状态。
3.2.2电机驱动电路的设计及使用方法
L298N是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二组和四相电机的专用驱动器,即内含两个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V,2A以下的电机。
3.3无线发送接收电路
3.3.1射频收发器nRF905
nRF905内部寄存器
射频寄存器的各位的长度是固定的。
然而,在ShockBurstTM收发过程中,TX_PAYLOAD、RX_PAYLOAD、TX_ADDRESS和RX_ADDRESS4个寄存器使用字节数由配置字决定。
nRF905进入关机模式或空闲模式时,寄存器中的内容保持不变。
RF905在使用中,根据不同需要,其电路图不尽相同。
3.3.2nRF90运行过程
收发端程序流程图:
单片机串口对无线收发模块收发状态转换的控制,可通过设置控件的属性来实
现。
图4-3为发送端程序流程图,图4-4为接收端程序流程图。
是否
图1发送端的程序流程图
程序:
无线控制发送
#include<
reg52.h>
ABSACC.h>
intrins.h>
stdio.h>
#defineuintunsignedint
#defineucharunsignedchar
voidDelay1(unsignedintnum);
#defineBYTE_BIT00x01
#defineBYTE_BIT10x02
#defineBYTE_BIT20x04
#defineBYTE_BIT30x08
#defineBYTE_BIT40x10
#defineBYTE_BIT50x20
#defineBYTE_BIT60x40
#defineBYTE_BIT70x80
////////////SPI指令
#defineWC0x00
#defineRC0x10
#defineWTP0x20
#defineRTP0x21
#defineWTA0x22
#defineRTA0x23
#defineRRP0x24
bdataunsignedcharDATA_BUF;
#defineDATA7((DATA_BUF&
BYTE_BIT7)!
=0)
#defineDATA0((DATA_BUF&
BYTE_BIT0)!
sbitflag=DATA_BUF^7;
sbitflag1=DATA_BUF^0;
ucharTxRxBuf[4]={0x00,0x00,0x00,0x00};
//配置口定义//
sbitTXEN=P2^3;
sbitTRX_CE=P3^3;
sbitPWR=P2^4;
//SPI口定义//
sbitMISO=P3^5;
sbitMOSI=P2^7;
sbitSCK=P3^4;
sbitCSN=P3^0;
sbitAM=P2^1;
//状态输出口//
sbitDR=P2^6;
sbitCD=P2^5;
//////////////////////////////////////////////////////
voiddelay1(uinti);
//RF寄存器配置//
//--------------------------------------------NRF905寄存器配置--------------------------------------------------
unsignedcharidataRFConf[11]=
{
0x00,//配置命令//
0x9f,
0x0c,
0x44,
0x01,0x01,
0xe7,0xe7,0xe7,0xe7,
0x58,//CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
};
codeTxAddress[4]={0xe7,0xe7,0xe7,0xe7};
///////////延时/////////////////
staticvoiddelay(uchara)
{uintb,c;
for(b=a;
b>
0;
b--)
for(c=120;
c>
c--);
}
voidSpiWrite(unsignedcharsend)
{
unsignedchari;
DATA_BUF=send;
for(i=0;
i<
8;
i++)
{
if(DATA7)//总是发送最高位
{
MOSI=1;
}
else
MOSI=0;
SCK=1;
DATA_BUF=DATA_BUF<
<
1;
SCK=0;
}
////////////////初始化nRF905///////////////////
voidnRF905Init(void)
CSN=1;
//Spidisable
SCK=0;
//Spiclocklineinitlow
DR=0;
//InitDRforinput
AM=0;
//InitAMforinput
CD=0;
//InitCDforinput
PWR=1;
//nRF905poweron
TRX_CE=0;
//SetnRF905instandbymode
TXEN=0;
//setradioinRxmode
////////初始化寄存器
voidConfig905(void)
uchari;
CSN=0;
//Spienableforwriteaspicommand
//SpiWrite(WC);
//Writeconfigcommand写放配置命令
11;
i++)//Writeconfigrationwords写放配置字
SpiWrite(RFConf[i]);
//DisableSpi
/////////////发送数据
voidTxPacket(uchar*TxRxBuf)
{
//Config905();
SpiWrite(WTP);
//Writepayloadcommand
SpiWrite(TxRxBuf[i]);
//Write32bytesTxdata
}//Spienableforwriteaspicommand
delay
(1);
//Spidisable
SpiWrite(WTA);
//Writeaddresscommand
4;
i++)//Write4bytesaddress
SpiWrite(TxAddress[i]);
TRX_CE=1;
//SetTRX_CEhigh,startTxdatatransmission
//while(DR!
=1);
//SetTRX_CElow
////////////////////////////////////////////////////
voidSetTxMode(void)
TXEN=1;
//delay1formodechange(>
=650us)
voidTX(void)
SetTxMode();
//SetnRF905inTxmode
//SetRF_PA_PWR(unsignedchari);
//设置发射功率
voidDelay1(unsignedintnum)
while(--num);
}
ucharkeyscan()
{uchartemp,a;
while
(1)
{P1=0xdf;
temp=P1;
temp=temp&
&
0x0f;
if(temp!
=0x0f)
delay(10);
=0x07)
switch(temp)
{case0xde:
a=1;
break;
case0xdd:
a=2;
case0xdb:
a=3;
P1=0xef;
0x07;
{case0xee:
a=4;
case0xed:
a=5;
case0xeb:
a=6;
}
P1=0x37;
{case0x3e:
a=7;
case0x3d:
a=8;
case0x3b:
a=9;
returna;
voidmain(void)
{ucharb;
nRF905Init();
Config905();
Delay1(500);
while
(1)
b=keyscan();
TxRxBuf[0]=b;
TX();
TxPacket(TxRxBuf);
否
是
图2接收端程序流程图
ucharcodetable0[]="
TheTEMPis:
"
;
ucharcodetable1[]="
.c"
ucharnum;
sbitlcden=P1^0;
sbitlcdrs=P1^1;
#defineBYTE_BIT00x01
#defineBYTE_BIT10x02
#defineBYTE_BIT20x04
#defineBYTE_BIT30x08
#defineBYTE_BIT40x10
#defineBYTE_BIT50x20
#defineBYTE_BIT60x40
#defineBYTE_BIT70x80
bdataucharDATA_BUF;
=0)
//--------------------------------------------------------------------------------------------------------------
#defineTxRxBuf_Len4
ucharTxRxBuffer[TxRxBuf_Len];
#defineWC0x00
#defineRC0x10
#defineWTP0x20
#defineRTP0x21
#defineWTA0x22
#defineRTA0x23
#defineRRP0x24
0x44,0x01,0x01,
sbitTXEN=P1^7;
sbitTRX_CE=P3^5;
sbitPWR=P1^6;
sbitMISO=P3^2;
sbitMOSI=P1^3;
sbitSCK=P3^1;
sbitCSN=P1^2;
sbitAM=P3^3;
sbitDR=P1^4;
sbitCD=P1^5;
voidDelay(uinta)
for(c=1;
voiddelay1(uinta)
for(c=110;
//---------------------------------------------------SPI读函数-----------------------------------------------------
unsignedcharSpiRead(void)
unsignedcharj;
for(j=0;
j<
j++)
{
DATA_BUF=DATA_BUF<
SCK=1;
if(MISO)//读取最高位,保存至最末尾,通过左移位完成整个字节
DATA_BUF|=BYTE_BIT0;
else
DATA_BUF&
=~BYTE_BIT0;
returnDATA_BUF;
//---------------------------------------------------SPI写函数----------------------------------------------------
voidSpiWrite(ucharsend)
i++)
if(DATA7)//总是发送最高位
MOSI=1;
MOSI=0;
//-----------------------------------------------初始化nRF905-----------------------------------------------------
voidnRF905Init(void)
//Spidisable
//Spiclocklineinitlow
//InitDRforinput
//InitAMforinput
//InitCDforinput
//nRF905poweron
//SetnRF905instandbymode
//setradioinRxmode
//-----------------------------------------------NRF905初始化寄存器-----------------------------------------------------
voidConfig905(void)
//Spienableforwriteaspicommand
i++)//Writeconfigrationwords写放配置字
//DisableSpi
//-----------------------------------------------设置发送状态---------------------------------------------------
voidSetRxMode(void)
Delay
(1);
//delayformodechange(>
=650us)
//-------------------------------------------------判断数据接收状态-----------------------------------------------------
unsignedcharCheckDR(void)//检查是否有新数据传入DataReady
if(DR=1&
TRX_CE==1&
TXE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 无线 遥控 智能 环境监测
![提示](https://static.bdocx.com/images/bang_tan.gif)