基于gprs数据监控采集终端的实现毕业论文(编辑修改稿)内容摘要:

ART_DSR0 数据设备准备就绪 36 EAR 第一路音频输出信号- 17 UART_RI0 振铃指示 37 MIC+ 第一路音频输入信号+ 18 UART_RXD0 接收数据 38 MIC 第一路音频输入信号- 19 UART_TXD0 发送数据 39 AUXI+ 第二路音频输入信号+ 20 UART_CTS0 清除发送 40 AUXI 第二路音频输入信号- 根据表 31中每个信号的功能,设计出 GPRS 模块的电路,其电路图如图 314所示。 VBATT1VBATT2VBATT3VBATT4VBATT5GND6GND7GND8GND9GND10POWER11POWER12VDD13AKKU_TEMP14IGT15DSR0_RXD116RING0_TXD117RXD018TXD019CTS020RTS021DTR0_SB22DCD023CCIN24CCRST25CCIO26CCCLK27CCVCC28CCGND29LOW_BATTERY30PD31SYNC32EPP233EPN234EPP135EPN136MICP137MICN138MICP239MICN240GTM900CU7VCC220nFC16100uF\10VC17GNDVCC1KR2247KR2347KR25R241KR271KR26LED2LED3Q18050Q28550GNDGNDRINGVCCRXDTXDGNDRINGCCRSTCCINCCCLKCCGNDCCVCCVCC100KR28330uF\16VC28D81N4007GND 图 37 GTM900C 的外围电路电路图 其中需要说明的有以下几点:( 1)触发点火信号端 IGT, 用 OC 门或者一个简单的开关拉低该端电平来开启模块,低电平有效。 在空闲 /通话 /关机模式: Vout = , Vlow,max = @ Iout = 10 礎, tlow ≥ 100ms。 对于点火信号 IGT的处理,需要首先拉低该引脚的电平到地,并至少维持 100ms。 注意,如果通过充电回路(接到 POWER 引脚)供电,或者通过电 池供电(接到 VBATT+引脚),那么 IGT 信号必须维持至少 1 秒。 ( 2) SYNC 引脚可以用来输出一个同步信号( synchronization signal),也可以在应用使来控制一个 LED2 灯的输出状态。 SYNC 端通过一个三极管或门电路来控制 LED2。 一个简单的电路接法是: SYNC 端 11 通过电阻接到 NPN 三极管(如 9013)的基极,射极接地,集电极通过一个限流电阻接到 LED2 的负端, LED2 的正端接 VCC。 LED2 的工作模式完全类同于同步信号,显示的是 GTM900C 的工作状态: ( 1) LED2 灯灭,表示 GTM900C电源关闭,处于休眠、报警或单纯的充电模式 (2) 600 ms 亮 / 600ms 灭,表示未插入 SIM 卡,或者个人身份未登记 /已注销,或者网络正在搜寻中,或者正在进行用户身份鉴定,或者网络注册正在进行中 ( 3) 75ms 亮 / 3s 灭,表示网络注册成功(控制通道和用户交换信息完成),无来电 (4) LED2 灯亮,依据不同的呼叫类型:声音呼叫,数据呼叫,在建立或者完毕时的状态。 4 系统软件设计 系统软件部分的设计包括基于单片机的程序设计和基于 LabVIEW 的上位机软件设计。 基于单片机的程序设计又包括数据采集部分和 GPRS 数据传输两个部分。 所以系统软件设计包括数据采集部分程序设计、 GPRS 数据传输部分程序设计和上位机软件程序设计三个部分。 主程序流程图 图 41 是主程序的程序流程图。 12 图 41 主程序流程图 主程序决定了系统的框架,系统所要实现的各种功能都需要通过主程序实现。 本系统的主程序包括了系统初始化、数据采集和传输等系统功能。 系统 的初始化设置系统各组建的工作方式,包含 UART0 初始化、 ADC0 初始化、定时器初始化、温度传感器初始化等。 数据采集和传输包括温度和电压数据的采集和传输 数据采集部分程序设计 本系统中,数据采集包括两路温度数据和八路电压数据的采集。 温度数据的采集是通过支持单线总线协议的数字温度传感器 DS18B20 来实现的,八路电压数据的采集则是通过 C8051F120 集成的 8 路 12 位精度 A/D 转换器实现的。 这一部分主要对这两类数据采集的程序设计做出相应的介绍。 温度数据采集的程序设计 DS18B20 是基于单 线总线的数字温度传感器,总线控制器连接在 DS18B20 的开始 关闭看门狗 系统时钟初始化 UART0 初始化 ADC0 初始化 DS18B20 初始化 GPRS 模块初始化 两路温度数据采集 两 路温度数据传送 八路电压数据采集 八路电压数据传送 13 DQ 管脚上,控制器所有的读写操作都是通过该管脚实现的。 DS18B20 还有一个 64位的光刻 ROM,每一个 DS18B20 出厂时都有一个唯一的序列号,这个唯一的序列号就存储于这个 64位的 ROM 存储器中。 在实现多路温度采集的系统中,可以把所有的 DS18B20 挂在同一条线上。 总线控制器就是通过它们的 ROM 中存储的唯一的序列号来识别每一个器件的。 总线控制器就是通过它们的 ROM 中存储的唯一的序列号来识别每一个器件的。 由于该器件是基于单线总线的,所有的读写操作都有一条 数据线来完成,所以在使用过程中总线控制器必须要严格的遵守给定的时序。 在这部分程序设计中最重要的就是读写和复位操作,下面分别对其进行介绍 由于该器件是基于单线总线的,所有的读写操作都有一条数据线来完成,所以在使用过程中总线控制器必须要严格的遵守给定的时序。 在这部分程序设计中最重要的就是读写和复位操作,下面分别对其进行介绍。 由于 DS18B20 只有一根数据线与总线控制器相连接,当总线控制器需要对进行读写字节操作时必须对其逐位的读取或写入。 根有的 DS18B20 挂在同一条线上。 总线控制器就是通过它们的 ROM 中存储的唯 一的序可以把所有的 DS18B20 挂在同一条线上。 总线控制器就是通过它们的 ROM 中存储的唯一的序列号来识别每一个器件的。 总线控制器就是通过它们的 ROM 中存储的唯一的序列号来识别每一个器件的。 由于该器件是基于单线总线的,所有的读写操作都有一条数据线来完成,所以在使用过程中总线控制器必须要严格的遵守给定的时序。 总线控制器就是通过它们的 ROM 中存储的唯一的序列号来识别每一个器件的。 由于该器件是基于单线总线的,所有的读写操作都有一条数据线来完成,所以在使用过程中总线控制器必须要严格的遵守给定的时序。 在这部分程序设计中 最重要的就是读写和复位操作,下面分别对其进行介绍在这部分程序设计中最重要的就是读写和复位操作,下面分别对其进行介绍 由于该器件是基于单线总线的,所有的读列号来识别每一个器件的。 由于该器件是基于单线总线的,所有的读写操作都有一条数据线来完成,所以在使用过程中总线控制器必须要严格的遵据其芯片手册,器件的读和写都是从低位到高位逐位进行的。 由于读字节的时序和写字节的相似,限于篇幅这里只给出读字节的程序流程图。 读字节的程序流程图如图 42 所示。 14 i= 0 开始 i 8。 拉高 DQ 延时 2 u s 读取数据右移一位 拉低 DQ 延时 4 u s 拉高 DQ i ++ 读出数据送至读取数据最高位 返回读取数据 N Y 图 42 读字节 子程序的程序流程图 在多路温度采集系统中,一条总线控制器上可以挂上无数的 DS18B20 器件。 单线总线控制器要依靠器件的唯一序列号才能识别出特定的器件。 所以,读取器件序列号必须在温度采集之前进行。 读取器件序列号有两种方法:( 1)在总线控制器上逐个的挂上 DS18B20 器件,然后读取并记录其 ROM 信息。 ( 2)同时挂上所有的器件,通过广播和排除的方法读取器件的序列号。 考虑到第二种方案程序的复杂性,本课题采用了第一种方案。 图 43 给出了读取 DS18B20 序列号的程序流程图。 15 开始 复位 DS1 8 B 2 0 发出读 R OM 指令 i 8。 i =0 读一个字节数据并存储 i ++ Y N 返回 图 43 两路温度采集的程序流程图 读出 DS18B20 的序列号之后就可以利用读得的序列号逐一的进行温度采集了。 要采集制定地点的温度,只要通过总线控制器将指定地点温度传感器件的序列号写入单线总线等待指定器件的响应然后再做其他相关操作就可以了。 基于单线总线的数据采集的一般工作过程如下,首先对在挂在总线控制器上的所有温度传感器件进行复位操作,等待器件响应。 如果器件复位成功,就可以发出匹配 ROM 指令( 0x55),该指令发出后总线控制器上的 DS18B20 就处于等待匹配序列号的状态。 这时总线控制器就可以 发送 64 位序列号。 挂在总线上的温度传感器件就会把收到的序列号与自己的序列号相匹配,如果匹配成功该器件就可以继续响应总线控制器的指令。 然后总线控制器就可以发送启动温度转换或 者 读取温度的指令。 然后把所读得的数据通过数据转换就可以得到该地点的环境温度。 该系统的温度采集系统是两路的,图 44就给出温度采集的程序流程图。 16 开始 复位总线上的 D S 1 8 B 2 0 K= 0 K 2。 匹配第 K 路 DS1 8 B 2 0 启动第 K 路温度转换 读取暂存器的数据 将暂存器数据转化为十进制数据并存储 返回 Y N 图 44 温度采集的程序流程图 电压数据的采集的程序设计 C8051F120 片内集成了 8 路 12位精度的 A/D 转换器,其入口在 1825 管脚。 对于 A/D 转换的工作流程在 已经做过详细的介绍。 下面主要介绍 A/D 转换的程序设计。 对于片内集成的 A/D 转换器,只需要对单片机相关的寄存器做出合理的配置就可以了。 字符串处理子函数主要功能是处理串行口接收到的字符串,使接收到的字符串更容易辨别。 由于 GPRS 模块返回到单片机串口的数据含有一些不可显示字符,如果想从接收的字符串中提取出有用信息就要对接收到的 字符 串做一定的处理。 字符串处理子函数的程序流程图如图 49所示。 由于 GPRS 模块返回的数据总是以回车符和换行符结束,所以在字符串处理模块中就要 以回车符和换行符为界限,把 GPRS 模块的返回数据分为几个字符串分别 17 存放在不同的数组里,在需要使用时直接从相应的字符串数组中取出需要的数据即可。 根据 GPRS 模块 AT 指令手册, GPRS 模块返回的数据最多有两个换行符,所以在字符串处理子函数中只需要两个存储字符串的数组 Rec_temp1 和 Rec_temp2就行了。 在本课题中, ADC0 是通过向 ADC0BUSY 位写 1 触发的。 在 A/D 转换过程中,先选定一个通道设置好 AD 转换的数据存储方式,然后在需要的时候想ADC0BUSY 位写入 1 触发 ADC0 进行 A/D 转换然后等待 AD0INT 位(数据转换结束标志位)置 1。 AD0INT 置 1 后进行数据处理,输出电压数据然后改变 A/D转换的通道进行下一路的电压数据采集。 还有一点需要说明的是,电压数据转换结束后 ADC0 存储的电压数据有左对齐和右对齐两种格式。 这两种格式是通过ADC0 控制寄存器 ADC0CN 的最低位 AD0LJST 设置的。 当 ADC0LJST 为 1 时,ADC0H:ADC0L 寄存器数据左对齐。 当 ADC0LJST 为 0 时, ADC0H:ADC0L 寄存器数据右对齐。 字符串处理子函数主要功能是处理串行口接收到的字符串,使接收到的字符串更容易辨别。 由于 GPRS 模块返回到单片机串口的数据含有一些不可显示字符,如果想从接收的字符串中提取出有用信息就要对接收到的字符串做一定的处理。 字符串处理子函数。 还有一点需要说明的是,电压数据转换结束后 ADC0 存储的电压数据有左对齐和右对齐两种格式。 这两种格式是通过 由于 GPRS 模块返回的数据总是以回车符和换行符结束,所以在字符串处理模块中就要以回车符和换行符为界限,把 GPRS 模块的返回数据分为几个字符串分别存放在不同的数组里,在需要使用时直接从相应的字符串数组中取出需要的数据即可。 于 GPRS 模块返回到单片机串口的数据 含有一些不可显示字符根据 GPRS 模块 AT 指令手册, GPRS 模块返回的数据最多有两个换行符,所以在字符串处理子函数中只需要两个。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。