论文案例分享-基于单片机的数据采集与无线传输-CNKI知网查重网站

论文案例分享-基于单片机的数据采集与无线传输

2021-06-22 10:05:38
作者:杭州千明

论文案例大全-基于单片机的数据采集与无线传输

  世界在进步,其中无线传输在我们生活中的地位越来越重要。如果说要准确获得这些目标参数就必须有一套精确的数据采集以及数据的传输的设备系统。其中温度传感器就在我们日常生活中极为的普遍,新型DS18B20温度传感器就摆脱了以传统的热敏电阻为传感器的温度测量的方法,他是一种与以往不同的,全新的的数字式的温度传感器,他可以解决以往可靠性差、温度测量的准确度低的缺点,它以单总线的方式连接,这样就有了一个非常简洁的设计电路,搭载起来更加的便捷。本次的实验设计便是希望设计出一种基于单片机的信号采集与无线传输系统,能够满足人们在现代社会中的使用需求。

  本次的设计以具体实验为主,给出具体的设计电路原理图,并用C语言程序进行软件编译,设计模块尽可能的保持简洁,设计模块的测量准确度尽可能高,扩展尽可能便捷,从而使它有一定的参考的价值。电路的设计简单,线路明确,元器件距离近但不过分紧凑,体积小,连接电路方便,可以进行一定范围内的无线检测,也可以在比较大型的场所进行无线的温度检测。在生活中有广阔的应用前景。

  数据采集系统通常由这两种解释:其中一种是从数据源进行收集、识别和选取数据的过程。另外一种则是数字化、电子扫描系统的计入过程以及内容和属性的编码过程。数据采集最早于20世纪50年代出现,后来在1956年美国在军事方面有了很大的突破,研究出了可以用在军事方面的数据采集系统,并且该系统的优势很明显,首先它可以不使用有关的检测文件就可以进行检测,另外一点它的操作相当简单,使用者可以不用通过一定的专业培训就可以操作。再者它的灵活度非常高,他的速度也很快,从而深受美国军方赏识。紧随着微型计算机的飞速发展,到了20世纪70年代的中后期出现了一种相比于传统的数据采集系统更加强大的数据采集设备,组成他的部分有采集器,数字仪表以及微型计算机。很快的就被推广开来。到了20世纪80年代随着计算机技术的飞速发展,数据采集系统也摆脱了最初的样子,开始向着通用性发展,也可以根据自己的需求的不同去增加或者减少所需的设备。到了80年代后期数据采集的结构也发生了很大变化,成本开始降低,体积开始减小,效率越来越高。20世纪90年代直至今日数据采集已经发展为了专门的技术,有着越来越高的精确度,越来越高的便捷性,可靠性,也广泛地应用到了生活的各个领域。

  1.2研究目的及应用

  现实中如果温度控制不好便极容易产生发霉的现象,在工厂中,仓库中,这些事情更为常见,从而控制好发霉腐烂问题,便是迫在眉睫的问题,他直接影响着工厂的发展,为了工厂的更好发展,便要随时的去注意温度的情况。传统的温度实时实地的测量反而格外麻烦,本次便是设计一种可以再远程便能测得其工厂或仓库温度的设备。相比于传统的用温度计去测量温度,这种设备的设计与推出显得就格外重要。

  1.3设计的内容与要求

  本次的实验设计思路是通过stc89c52单片机去接收在ds18b20温度传感器所采集到的室内温度,并将该温度处理发送给nrf905去进行无线传输,进而可以通过另外的一块stc89c52单片机接收到该数值,并且可以通过lcd显示屏将数值显示出来。从而实现在一定距离内实现温度的数据采集与无线输出系统设计。

  第二章系统方案的论证与硬件选择

  2.1总体方案的描述

  此系统由两个框架组成,其中的一个框架为数据采集部分,也称为上位机;另外一个框架则是无线接收并将其显示出来的框架,也成为下位机。第一个部分是ds18b20将采集到的数据发送给stc89c52单片机再通过单片机的控制进行一定的数据转换与处理。最后通过nrf905去进行打包发送。第二个部分则是通过nrf905去接收第一部分发送过来的打包数据进行解读,并用lcd液晶显示屏去显示数值。

  2.2系统的设计框架

  第一部分

  第二部分

  图.1系统框架

  2.3硬件组成

  硬件由最小单片机结构,无线收发模块nrf905,液晶显示部分lcd1602和温度采集部分ds18b20组成,目的是为了实现温度的准确检测和无线收发的可靠性。

  第三章系统硬件的电路设计

  3.1单片机的最小系统设计

  单片机是这次设计的核心,单片机由中央处理器、内部RAM、程序存储器、各种外设(IO端口、定时器、串行接口、中断处理电路等等)及对应控制寄存器、时钟电路、复位电路等几部分组成。单片机最小系统则是由芯片外部接上时钟电路、复位电路和电源构成的一个基本应用系统。

  电源电路是一个设备必不可少的部分,主流的单片机的电源接入有3.3V与5V两种,我们所用的stc89c52单片机则是5V的,组成该电路所需要的器件有按键开关,在这里选用6脚的,其次构成电路的电阻,电容也必不可少,在这选择1K欧和10uF的器件,开关的作用是为了更好的控制电流的流入流出,从而就可以在开关的另一端连接上一个5V的电源接口,为了方便写入程序又接入了一个USB接口。这样电源部分便设计好了。具体电路图如图2所示。

  图.2电源电路

  复位电路顾名思义就是具有恢复功能电路,他具体可以有这三种复位的方式:上电复位、手动复位、程序自动复位,要想实现手动的复位就需要物理按键,这里与上面不同选用的是四脚的按键,同样也需要电阻和电容,这里电阻选用1K和10K,电容选用10uF,该电路和单片机上的RST端口相连接,这样当单片机的电源电路通电后按下复位按键比那可以将系统进行复位,具体电路如图3所示:

  图.3复位电路

  晶振电路更为重要,它的核心就是晶振,全名为晶体振荡器,它的作用是结合电源电路产生单片机所需要的时钟频率,频率越快单片机反应也就越快,因此其电路设计就很简单,首先需要一个晶振,然后在就是两个电容大小为30PF。连接电路分别是晶振的一端与单片机的XTAL1相连另外一端与单片机的XTAL2相连。电路如图4所示:

  图.4晶振电路

  现在晶振电路,电源电路还有复位电路都已经实现了,那现在就应该考虑烧入问题了,这就需要一个串口电路,串口电路的核心是MAX232,它由美国美国美信公司设计并制作,他的电路连接方式为在该芯片的管脚之间加入一个电容大小为0.1uF,其管脚为4和5、2和16、6和15、11和12,剩余的7和8的管脚为芯片的串口输入端,然后再从外面接一个标准的9孔串口母头,最后的9孔和10孔为芯片的输出故那叫,分别连接单片机的P3.0和P3.1.这样便组成了串口电路。具体电路图5所示:

  图.5串口电路

  单片机的外界电路部分已经连接完毕,剩下的便是作为单片机系统的整体核心的单片机STC89C52芯片,它是一种低电压高性能的8位单片机芯片,由美国的ATMEL公司生产,芯片内部的8位寄存器可以进行反复的擦拭和写入。芯片上存在32个可以用来编写程序的I/O口,有3个16位的定时器兼计数器,最后还有着8个中断源。单片机的内部存在ROM同时也可以接外部ROM,当单片机的EA口接入的为高电平时系统会优先的去读取内部ROM,当内部ROM读取完之后才会去读取外部ROM,该实验中便是需要读取内部ROM,从而应使EA管口始终与高电平相连,正常在设计单片机系统时会加入一些led灯和独立按键或者是键盘,但这次的设计为了更加的方便简洁,一切以最简单设计所以并未加入,但为了有着更好的扩展保留了两排20脚的外接插针口,以方便以后的使用。

  最小系统的主体STC89C52如图6所示:

  图.6 stc89c52管脚电路

  3.2温度采集模块设计

  单片机的模块连接好后开始链接温度传感模块,因此该部分的核心是DS18B20

  1.DS1820温度传感器它的管脚和样貌如图7所示,它拥有三个管脚其定义分别如下:

  图.7 ds18b20外观及引脚

  ①引脚1接地;

  ②引脚2数字信号输入/输出;

  ③引脚3接高电平5V高电平。

  2.DS18B20温度采集模块设计[10]

  这个模块在设计中的功能便是通过STC89C52去控制温度传感器DS18B20去进行室内温度的收集测量

  温度传感器DS18B20作为单线接口传感器的一种,因此电路的链接便相当简单,我们只需要将它中间的管脚与单片机的P3.7端口连接以进行温度采集,而剩下的VDD和GND分别于5V电源和单片机上的GND连接一块即可。

  我们可以根据DS18B20的结构等,还有它的ROM操作码,去编写DS18B20的操作程序,从而去采集室内的温度,并且将采集到的样本数值放入单片机的寄存器中等待操作。

  3.3无线收发模块设计

  在无线收发部分我们可以用nrf24L01模块或者是nrf905模块,该实验中采用的是nrf905模块

  1.nRF905接口电路和管脚说明

  图.8 nrf905接口图

  (1)VCC是电源的接入口,nrf905的输入电压为3.3V左右,最高不能高于3.6V,为了芯片安全,推荐3.3V

  (2)TX_EN为数字输入的端口,控制着两种输入模式,当为1时为TX的输入,当为0时为RX输入

  (3)TRX_CE也是数字输入端,作用为控制芯片的接收与发送

  (4)PWR_UP是给芯片上电的数字输入端口

  (5)uCLK时钟端口

  (6)CD数字输出端进行载波检测

  (7)AM数字输出端进行地址匹配

  (8)DR数字输出端

  (9)MISO和MOSI分别为SPI输出输入端口

  (10)SCK和CSN分别为SPI的时钟和使能端口

  (11)13和14管脚为相同的二个接地端口.

  2.nRF905无线收发模块设计

  为了保证NRF905芯片的安全使用,防止电路的烧毁,我们可以在中间加入一个AMS1117芯片,它的作用是起到变压稳定电路的作用,它可以将5V的输入电压转化为适合NRF905的3.3V电压,具体电路设计如图9所示:

  图.9 ams1117变压电路

  因此我们的NRF905芯片的VCC接口去连接AMS1117芯片的输出端口,PWR_UP,TX_EN,TRX_CE,MISO,MOSI,SCK,CSN分别对应单片机的P1.0,P1.1,P1.2,P1.4,P1.5,P1.6,P1.7端口,AM,DR,CD分别与单片机上的P3.2,P3.3,P3.4端口相连接,uCLK不做操作,剩余的两个GND便接地即可,从而我们便将无线模块连接好了。可以进行程序的调控使用了。

  3.4LCD液晶显示模块

  液晶显示模块是用lcd1602来实现的,其管脚如图10所示

  图.10 lcd1602管脚图

  (1)VSS为电源地

  (2)VDD为电源正极

  (3)VL液晶显示偏压信号

  (4)RS数据/命令选择端

  (5)R/W读/写选择端

  (6)E使能信号

  (7)D0 Data I/O

  (8)D1 Data I/O

  (9)D2 Data I/O

  (10)D3 Data I/O

  (11)D4 Data I/O

  (12)D5 Data I/O

  (13)D6 Data I/O

  (14)D7 Data I/O

  (15)BLA背光源负极

  (16)BLK背光源正极

  芯片的RS和单片机的P26相连R/W和单片机的P25相连E和单片机的P27相连D0 D1 D2 D3 D4 D5 D6 D7分贝和单片机的P01 P02 P03 P04 P05 P06 P07 P08 P09相连,这便组成了显示电路部分。当nrf905将接受的数据解读发送过来是进行数值的显示。

  第四章系统软件的设计

  4.1程序设计思路

  程序设计采用的是由美国KEIL SOFTWARE公司推出的单片机c语言开发软件KEIL C51。

  与汇编语言相比较起来说,我们或许更习惯性用C语言,因为它在结构还是功能上都有很大的优势,对于我们来说,C更容易明白。KEIL便是这么一个包括了C语言程序的编译,宏汇编、库管理等功能于一身的功能完善的开发软件,,并且它还可以通过uVision将各个部分结合到一块。

  程序设计中我们需要熟练地掌握C语言的用法,了解电路中各部分管角的作用构造以及其的工作原理。其次能够去编写温度采集,lcd显示,以及无线传输部分独立的代码,进而去将他们整合使他们彼此间相互联系。

  首先在编写温度采集部分代码时我峨嵋你要做的第一步是将传感器初始化,然后去读取出它的位和比特,紧接着便是进行编写比特,再者就是去设计它的数据转换程序,在转换时去判断他的正负值,正值的话直接进行计入,如果监测及结果为负值,那就应该取反加一添负号,下一步就是设计通过单片机去读取数据的程序。

  设计完采集之后下一步便是要设计NRF905的无线传输电路,同样的首先我们需要了解nRF905的结构,以及它的寄存器工作原理外加他的时序图,还有SPI的设置。在程序设计的过程中,我们通常是新进行寄存器的参数进行配置,进而去通过SPI端读取该配置。下一步就是编写读写的代码,然后再通过主机去向各个寄存器写入信息。最后就是发送指令代码。

  4.2程序设计流程图

  主要负责温度采集模块代码编译的是温度传感器DS18B20,这样我们就要充分了解到他的指令码以及寄存器的读写指令,再就是温度处理转换代码,他们便形成了程序流程。KEIL C51这个软件就提供给莪我们强大的功能,是一个非常便捷的工具,简洁的界面,我们可以在其中完成编译,调试仿真等多个流程。使用起来非常的方便。

  温度的数据采集部分具体流程图11所示:

  负值

  正值

  图.11温度数据采集模块

  我们使用传感器但不限于温度传感器时,首先要做的第一步就是进行初始化设置,也只有这样我们才可以进行下一步的操作,再就是根据之前所编译的DS18B20的程序读取所收集到的数据,进行存储和数据转换。最终通过无线模块发送出去。

  无线发送流程图如图12所示

  NO

  NO

  NO

  图.12无线发送流程图

  首先我们初始化无线模块NRF905,然后再通过SPI口将所需要发送的有效的数据和接收地址传给NRF905,再将TRX-CE、TX-EN至于高电平来激活位发送模式。最终完成数据包的发送操作,并且DR置为高电平。

  下一步便是去判断TRX-CE的电平高低,如果为高电平则进行以下的操作,如果为低电平则放弃,那么高电平的话AUTO-RETRAN也会被设为高电平,这样NRF905就会不断地发出数据包,一直到电平变低为止,当电平变低,那DR就会等于0,也就结束了数据的传输,从而进入到空闲的状态。

  如果进入到了ShockBurst模式,那么只要开始了数据发送,那发送过程就都会保证处理完毕。

  无线接收流程图如图13所示:

  图.13无线接收流程图

  与上面不同,首先的是我们要将NRF905芯片的TRX-CE端口设置为高电平,再将TX-EN端口设置为低电平,这样NRF905就进入到了接收信息的状态,就不不停的去检测信号,等待着接收;当其检测到了有着相同频率的载波时,其CD的管脚就会变为高电平,在此之后每当接收到可以与之匹配的地址时AM管脚就会变为高电平,然后,每当接受完一个有效的数据时,NRF905芯片便会将其前面的导码、地址还有CRc位去掉并且将DR管脚变为高电平,并且单片机将TRX-CN引脚变为低电平,进入到空闲的模式,然后单片机可以通过SPI去读取到有效的数据。