无线遥控智能环境监测车设计毕业论文.doc

上传人:仙人指路1688 文档编号:3945021 上传时间:2023-03-28 格式:DOC 页数:32 大小:118KB
返回 下载 相关 举报
无线遥控智能环境监测车设计毕业论文.doc_第1页
第1页 / 共32页
无线遥控智能环境监测车设计毕业论文.doc_第2页
第2页 / 共32页
无线遥控智能环境监测车设计毕业论文.doc_第3页
第3页 / 共32页
无线遥控智能环境监测车设计毕业论文.doc_第4页
第4页 / 共32页
无线遥控智能环境监测车设计毕业论文.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《无线遥控智能环境监测车设计毕业论文.doc》由会员分享,可在线阅读,更多相关《无线遥控智能环境监测车设计毕业论文.doc(32页珍藏版)》请在三一办公上搜索。

1、摘要 我们制作无线遥控智能环境监测车,用于火场和救援人员无法进入的环境中进行探测,能够及时的将内部信息传递给救援人员,以便及时的做出营救方案,能够为为救援节省时间。整机分为两部分,第一部分为控制显示部分,主要是实现无线遥控小车的行驶和接收车子发送的温度和显示环境中的一些基本情况,第二部分为检测部分,主要设在小车上,小车进入后,检测到温度后,通过射频模块无线发送,发射距离大于200米。并且车子上装有全方位摄像头,外部人员可以通过摄像头观察到内部的基本情况。 本设计主要创新点在于成本低,功耗小,操作方便,体型小巧,携带方便,对于出现灾害人暂时无法进入的环境中有明显作用。关键词:单片机;射频模块;温

2、度显示;摄像头;无线遥控;救难;目录摘要I一、 背景意义2二、概要设计32.1显示控制硬件部分:32.2机器车硬件部分:3三、详细设计43.1显示电路43.2 电机驱动控制电路43.2.1 键盘电路原理43.2.2 电机驱动电路的设计及使用方法53.3无线发送接收电路53.3.1射频收发器nRF90553.3.2nRF90运行过程63.4温度传感电路263.4.1DS18B20工作原理和电路设计263.5摄像头显示293.6其它硬件控制电路设计293.6.1电源电路29四、总结30五、 参考文献31一、 背景意义 随着电子技术、计算机技术和制造技术的飞速发展,数码相机、DVD、洗衣机、汽车等消

3、费类产品越来越呈现光机电一体化、智能化、小型化等趋势。各种智能化小车在市场玩具中也占一个很大的比例。根据美国玩具协会的调查统计,近年来全球玩具销量增幅与全球平均GDP增幅大致相当。而全球玩具市场的内在结构比重却发生了重大改变:传统玩具的市场比重正在逐步缩水,高科技含量的电子玩具则蒸蒸日上。美国玩具市场的高科技电子玩具的年销售额2004年交2003年增长52%,而传统玩具的年销售额仅增长3%。英国玩具零售商协会选出的2001圣诞节最受欢迎的十大玩具中,有7款玩具配有电子元件。从这些数字可以看出,高科技含量的电子互动式玩具已经成为玩家行业发展的主流。 如今知识工程、计算机科学、机电一体化和工业一体

4、化等许多领域都在讨论智能系统,人们要求系统变得越来越智能化。显然传统的控制观念是无法满足人们的需求,而智能控制与这些传统的控制有机的结合起来取长补短,提高整体的优势更好的满足人们的需求。随着人工智能技术、计算机技术、自动控制技术的迅速发展,智能控制必将迎来它的发展新时代。计算机控制与电子技术融合为电子设备智能化开辟了广阔前景。因此,遥控加智能的技术研究、应用都是非常有意义而且有很高市场价值的。 本设计采用的有线摄像头监控,机器车可以很好的在预定环境中进行检测,并且可以了解内部环境,以便控制机器车执行一步步的任务。智能救援小车实现无线遥控寻迹功能、温度检测和无线收发功能,这对一些检测人类无法进入

5、的环境中有很大的作用。二、概要设计2.1显示控制硬件部分: 显示控制部分,采用51单片机作为系统的控制中心,进行数学运算、对无线发送接收模块送来的信号进行处理,通过LCD显示实时温度、并且在外接电脑上显示摄像头传来的内部情况、键盘控制、无线发送接收模块。2.2机器车硬件部分: 机器车硬件部分,采用51单片机作为系统的控制中心,进行数学运算、对温度传感器和无线发送接收模块送来的信号进行处理,接收到操作人员的指令,驱动机器车运动到指定地点,测量实时温度、无线发送接收模块发送给显示器。三、详细设计 3.1显示电路无线接收系统采用LCD1602与单片机连接,控制 LCD的字符显示,8位数据线分别连接到

6、51单片机的P0口,并且利用I/O口的P2.0P2.2作为LCD的控制线。3.1.1 LCD1602基本原理1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平

7、R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.2 电机驱动控制电路 3.2.1 键盘电路原理 根据需求,本系统设计使用了标准的33键盘,用P1.3P1.5连接键盘的列信号,用P1.0P1.2连接键盘的行信号。采用低电平逐行扫描的方式,判断按键的状态。 3.2.2 电机驱动电路的设计及使用方法L298N是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二组和四相电机的专用驱动器,即内含两个H桥的高电压大电流双全

8、桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V,2A以下的电机。3.3无线发送接收电路3.3.1射频收发器nRF905nRF905内部寄存器射频寄存器的各位的长度是固定的。然而,在ShockBurstTM收发过程中,TX_PAYLOAD、RX_PAYLOAD、 TX_ADDRESS和RX_ADDRESS 4个寄存器使用字节数由配置字决定。nRF905进入关机模式或空闲模式时,寄存器中的内容保持不变。RF905在使用中,根据不同需要,其电路图不尽相同。3.3.2nRF90运行过程 收发端程序流程图:单片机串口对无线收发模块收发状态转换的控制,可通过设置控件的属性来实现。图4-3为发送端程序

9、流程图,图4-4为接收端程序流程图。外部中断二 外部中断一 外部中断三 初始化单片机开外部中断FLAG=1?中断到齐?是否读取发送数据发 送FLAG=1FLAG=0图1 发送端的程序流程图程序:无线控制发送#include #include #include #include #define uint unsigned int#define uchar unsigned charvoid Delay1(unsigned int num);#define BYTE_BIT00x01#define BYTE_BIT10x02#define BYTE_BIT20x04#define BYTE_BIT

10、30x08#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;#define DATA7(DATA_BUF&BYTE_BIT7) != 0)#define DATA0 (DATA_BUF&BYTE_BIT0)

11、 != 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;/状态输出口/sbit DR = P26;sbit CD = P25;/void delay1(uint i);/RF寄存器配置/-NRF905寄存器配置- un

12、signed 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;b0;b-) for(c=120;c0;c-);void SpiWrite(unsigned char send)unsigned char i;DATA_BUF=send

13、;for (i=0;i8;i+)if (DATA7)/总是发送最高位MOSI=1;elseMOSI=0;SCK=1;DATA_BUF=DATA_BUF1;SCK=0;/初始化nRF905/void nRF905Init(void) CSN=1;/ Spi disableSCK=0;/ Spi clock line init lowDR=0;/ Init DR for inputAM=0;/ Init AM for inputCD=0;/ Init CD for inputPWR=1;/ nRF905 power onTRX_CE=0;/ Set nRF905 in standby modeTX

14、EN=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;i11;i+)/ Write configration words 写放配置字 SpiWrite(RFConfi);CSN=1;/ Disable Spi/发送数据void TxPacket(uchar *TxRxBuf) uchar i;/Config905();CSN=0;SpiWri

15、te(WTP);/ Write payload commandfor (i=0;i1;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 commandSpiWrite(WTA);/ Write address commandfor (i=0;i=650us)void TX(void) SetTxMode();/ Set nRF905 in Tx mode /

16、 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;break; case 0xdd:a=2;break; case 0xdb:a=3;break; P1=0xef; temp=P1;

17、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) temp=P1; switch(temp) case 0x3e:a=7;break; case 0x3d:a=8;break; case 0x3b:a=9;break

18、; return a; void main(void) uchar b; nRF905Init(); Config905();Delay1(500); while(1)b=keyscan();TxRxBuf0=b; TX();TxPacket(TxRxBuf);串口初始化等待控制命令数据编码CRC校验打开串口发送数据有数据返回?否是返回正确信息否是图2 接收端程序流程图程序:#include #include #include #include #define uint unsigned int#define uchar unsigned char/配置口定义/uchar code table

19、0= The TEMP is:;uchar code table1= . c;uchar num;sbit lcden=P10;sbit lcdrs=P11;#define BYTE_BIT0 0x01 #define BYTE_BIT1 0x02 #define BYTE_BIT2 0x04 #define BYTE_BIT3 0x08 #define BYTE_BIT4 0x10 #define BYTE_BIT5 0x20 #define BYTE_BIT6 0x40 #define BYTE_BIT7 0x80 bdata uchar DATA_BUF; #define DATA7 (

20、DATA_BUF&BYTE_BIT7) != 0) #define DATA0 (DATA_BUF&BYTE_BIT0) != 0) sbit flag =DATA_BUF7; sbit flag1 =DATA_BUF0; /- #define TxRxBuf_Len 4 uchar TxRxBufferTxRxBuf_Len; #define WC 0x00 #define RC 0x10 #define WTP 0x20 #define RTP 0x21 #define WTA 0x22 #define RTA 0x23 #define RRP 0x24 /-NRF905寄存器配置- un

21、signed char idata RFConf11= 0x00, /配置命令/ 0x9f, 0x0c, 0x44,0x01,0x01, 0xe7,0xe7,0xe7,0xe7, 0x58, /CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振 ; uchar num;sbit TXEN=P17;sbit TRX_CE=P35;sbit PWR=P16;/SPI口定义/sbit MISO=P32;sbit MOSI = P13;sbit SCK = P31;sbit CSN = P12;sbit AM = P33;/状态输出口/sbit DR = P14;sbit CD = P15;/

22、RF寄存器配置/void Delay(uint a) uint b,c; for(b=a;b0;b-) for(c=1;c0;c-);void delay1(uint a) uint b,c; for(b=a;b0;b-) for(c=110;c0;c-);/-SPI读函数- unsigned char SpiRead(void) unsigned char j; for (j=0;j8;j+) DATA_BUF=DATA_BUF1; SCK=1; if (MISO) /读取最高位,保存至最末尾,通过左移位完成整个字节 DATA_BUF|=BYTE_BIT0; else DATA_BUF&=B

23、YTE_BIT0; SCK=0; return DATA_BUF; /-SPI写函数- void SpiWrite(uchar send) unsigned char i; DATA_BUF=send; for (i=0;i8;i+) if (DATA7) /总是发送最高位 MOSI=1; else MOSI=0; SCK=1; DATA_BUF=DATA_BUF1; SCK=0; /-初始化nRF905- void nRF905Init(void) CSN=1; / Spi disable SCK=0; / Spi clock line init low DR=0; / Init DR fo

24、r input AM=0; / Init AM for input CD=0; / Init CD for input PWR=1; / nRF905 power on TRX_CE=0; / Set nRF905 in standby mode TXEN=0; / set radio in Rx mode /-NRF905初始化寄存器- void Config905(void) uchar i; CSN=0; / Spi enable for write a spi command for (i=0;i=650us) /-判断数据接收状态- unsigned char CheckDR(voi

25、d) /检查是否有新数据传入 Data Ready if (DR=1&TRX_CE=1 & TXEN=0) return 1; else return 0; /-读NRF905接收数据- void RxPacket(void) uchar i; Delay(1); Delay(100); TRX_CE=0; CSN=0; / Spi enable for write a spi command Delay(1); SpiWrite(RRP); for (i = 0 ;i 4 ;i+) TxRxBufferi=SpiRead(); / Read data and save to buffer C

26、SN=1; Delay(10); TRX_CE=1; /-数据接收- void RX(void) SetRxMode(); / Set nRF905 in Rx mode while (CheckDR()=0); Delay(10); RxPacket(); Delay(10); void write_com(uchar com)lcdrs=0;P0=com;Delay(550);lcden=1;Delay(550);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;Delay(550);lcden=1;Delay(550);lcden=0;

27、void init()lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x80);for(num=0;num14;num+) write_data(table0num);delay1(5);write_com(0x80+0x40);for(num=0;numcount1) write_sfm(6,count0);write_com(0x80+0x40+9);write_data(count1+0x30); if(count0count1) write_sfm(6,count1); write_com(0x80+0x40+9); write_data(count0+0x30); m=0; 3.4温度传感电路

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号