基于WIFI模块和单片机的无线数据传输(附代码)_第1页
基于WIFI模块和单片机的无线数据传输(附代码)_第2页
基于WIFI模块和单片机的无线数据传输(附代码)_第3页
基于WIFI模块和单片机的无线数据传输(附代码)_第4页
基于WIFI模块和单片机的无线数据传输(附代码)_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 南京工业大学南京工业大学 计算机科学与技术学院计算机科学与技术学院 Project3 课程设计 2014 2015 学年第二学期 班 级 浦电子 1203 组员姓名 组员学号 指导老师 武晓光 胡方强 包亚萍 袁建华 毛钱萍 2015 年 7 月 8 日 2 目 录 第 1 章 阶段任务 第二章 基于 WIFI 模块的无线数据传输的原理 1 1 时钟模块 1 2 最小单片机系统的原理 1 3 温度传感器 DS18B20 1 4 串口 1 5 WIFI 模块 第三章 基于 WIFI 模块的无线数据传输的实现 2 1 WIFI 模块设置 2 2 串口部分设置 2 3 调试与运行过程 第四章 程序与框图 第五章 小结 3 第一章 阶段任务 1 天 1 了解课程所给的 WIFI 模块 并详细研读其说明书 2 复习单片机知识 2 天 1 了解温湿度传感器模块 并设计其硬件模块 2 了解 lcd1602 显示模块 并设计其硬件模块 第一阶段 2 天 1 设计整合电路 5v 转 3 3v 电路 2 串口通讯电路 第二阶段 4 天 1 链接并完成整体电路图的设计 并检查 2 焊接电路并调试 第三阶段 3 天 1 根据设计的硬件模块设计程序 1 温湿度传感器模块 2 串口通讯模块 3 WIFI 传输与接收模块 4 显示电路模块 3 天 2 将设计好的模块程序烧录到单片机内 调试 第四阶段 2 天 2 天 写报告 4 第二章 基于 WIFI 模块的无线数据传输的原理 时钟 DS1302 模块 电路原理图 DS1302 与单片机的连接也仅需要 3 条线 CE 引脚 SCLK 串行时钟引脚 I O 串行数据引脚 Vcc2 为备用电源 外接 32 768kHz 晶振 为芯片提供计时脉冲 读写时序说明 DS1302 是 SPI 总线驱动方式 它不仅要向寄存器写入控制字 还需要读取 相应寄存器的数据 控制字总是从最低位开始输出 在控制字指令输入后的下一个 SCLK 时 钟的上升沿时 数据被写入 DS1302 数据输入从最低位 0 位 开始 同样 在紧跟 8 位的控制字指令后的下一个 SCLK 脉冲的下降沿 读出 DS1302 的数据 读出的数据也是从最低位到最高位 数据读写时序如图 5 6 单片机最小系统的原理 说明 复位电路 由电容串联电阻构成 由图并结合 电容电压不能突变 的性质 可以知道 当系统一 上电 RST 脚将会出现高电平 并且 这个高电平持续的时间由电路的 RC 值来决定 典型的 51 单片机当 RST 脚的高电平持续两个机器周期以上就将复位 所以 适当组合 RC 的取值 就可以保证可靠的复位 晶振电路 典型的晶振取 11 0592MHz 因为可以准确地得到 9600 波特率和 19200 波特 率 用于有串口通讯的场合 12MHz 产生精确的 uS 级时歇 方便定时操作 单片机 一片 AT89S51 52 或其他 51 系列兼容单片机 特别注意 对于 31 脚 EA Vpp 当接高电平时 单片机在复位后从内部 ROM 的 0000H 开 始执行 当接低电平时 复位后直接从外部 ROM 的 0000H 开始执行 温度传感器 DS18B20 的原理 连接到单片机最小系统 并将温度发送给 WIFI 模块 3 1 1 DS18B20 性能特点 1 独特的单线接口方式 只需一个接口引脚即可通信 7 2 每一个 DS18B20 都有一个唯一的 64 位 ROM 序列码 3 在使用中不需要任何外围元件 4 可用数据线供电 电压范围 3 0V 5 5 V 5 测温范围 55 125 在 10 85 范围内精度为 0 5 分辨率为 0 0625 6 通过编程可实现 9 12 位的数字读数方式 温度转换成 12 位数字信号所需时间最长为 750ms 而在 9 位分辩模式工作时仅需 93 75ms 7 用户可自设定非易失性的报警上下限值 8 告警搜索命令可识别和定位那些超过报警限值的 DS18B20 9 多个 DS18B20 可以并联在惟一的三线上 实现多点测温 10 电源极性接反时 DS18B20 不会因发热而烧毁 但不能正常工作 3 1 2 DS18B20 内部存储器及温度数据格式 对于 DS18B20 内部存储器结构 如图 3 1 它包括一个暂存 RAM 和一个非易失性电 可擦除 EERAM 后者存放报警上下限 TH TL 当改变 TH T L 中的值时 数据首先被写进暂 存器的第二 三字节中 主机可再读出其中内容进行验证 如果正确 当主机发送复制暂 存器命令 暂存器的第二 三字节将被复制到 TH TL 中 这样处理有利于确保该数据在单 总线上传输的完整性 7 暂存器结构 EERAM 结构 TH TL 结构寄存器 图 3 1 DS18B20 结构框图 温度低字节 BYTE0 温度高字节 BYTE1 上限报警温度 TH BYTE2 下限报警温度 TL BYTE3 结构寄存器 BYTE4 保留 BYTE5 保留 BYTE6 保留 BYTE7 CRC BYTE8 8 暂存存储器作用是在单线通信时确保数据的完整性 它由 8 字节组成 头两个字节表 示测得的温度读数 以 12 位转化为例说明温度高低字节存放形式 温度的存储形式如表 3 1 及计算 12 位转化后得到的 12 位数据 存储在 18B20 的两个高低 8 位的 RAM 中 二 进制中的前面 5 位是符号位 如果测得的温度大于 0 这 5 位为 0 只要将测到的数值乘于 0 0625 即可得到实际温度 如果温度小于 0 这 5 位为 1 测到的数值需要取反加 1 再乘 于 0 0625 才能得到实际温度 8 表 3 1 温度的存储形式 高 8 位 SSSSS262524 低 8 位 232221202 12 22 32 4 S 1 时表示温度为负 S 0 时表示温度为正 其余低位以二进制补码形式表示 最低位 为 1 时表示 0 0625 温度 数字对应关系如表 3 2 所示 表 3 2 DS18B20 温度 数字对应关系表 温度 输出的二进制码对应的十六进制码 1250000 0111 1101 000007D0H 850000 0101 0101 00000550H 25 06250000 0001 1001 00010191H 10 1250000 0000 1010 001000A2H 0 50000 0000 0000 10000008H 00000 0000 0000 00000000H 0 51111 1111 1111 1000FFF8H 10 1251111 1111 0110 1110FF5EH 25 06251111 1110 0110 1111FF6FH 551111 1100 1001 0000FC90H DS18B20 有六条控制命令 如表 3 3 所示 表 3 3 控制命令 指 令约定代码操 作 说 明 温度转换44H启动 DS18B20 进行温度转换 读暂存器BEH读暂存器 9 个字节内容 写暂存器4EH将数据写入暂存器的 TH TL 字节 9 复制暂存器48H把暂存器的 TH TL 字节写到 E2RAM 中 重新调 E2RAMB8H把 E2RAM 中的 TH TL 字节写到暂存器 TH TL 字节 读电源供电方式B4H启动 DS18B20 发送电源供电方式的信号给主 CPU 3 1 3 DS18B20 操作命令及时序特性 DS18B20 对读写的数据位有着严格的时序要求 它是在一根 I O 线上读写数据的 同 时 DS18B20 为了保证各位数据传输的正确性和完整性 它有着严格的通信协议 DS18B20 每一步操作都要遵循严格的工作时序和通信协议 如主机控制 DS18B20 完成温度 转换这一过程 根据 DS18B20 的通讯协议 须经三个步骤 每一次读写之前都要对 DS18B20 进行复位 复位成功后发送一条 ROM 指令 最后发送 RAM 指令 这样才能对 DS18B20 进行预定的操作 该协议定义了几种信号的时序 初始化时序 读时序 写时序 所有时序都是将主机作为主设备 单总线器件作为从设备 而每一次命令和数据的传输都 是从主机主动启动写时序开始的 如果要单总线器件送回数据 在进行写命令后 主机需 启动读时序完成数据的接收 另外 数据和命令的传输都是低位在先 9 1 DS18B20 的复位时序 主机控制 DS18B20 完成任何操作之前必须先初始化 即主机发一复位脉冲 最短为 480 s 的低电平 接着主机释放总线进入接收状态 DS18B20 在检测到 I 0 引脚上的上升 沿之后 等待 15 60 s 然后发出存在脉冲 60 240 s 的低电平 如图 3 2 所示 2 DS18B20 的读时序 DS18B20 的读时序分为读 0 时序和读 1 时序两个过程 DS18B20 的读时序是从主机把 单总线拉低后 在 15 秒之内就得释放单总线 从而让 DS18B20 把数据传输到单总线上 DS18B20 完成一个读时序的过程 至少需要 60 s 如图 3 3 所示 图 3 2 DS18B20 的复位时序 10 图 3 3 DS18B20 的读时序 3 DS18B20 的写时序 DS18B20 的写时序同读时序一样 仍然分为写 0 时序和写 1 时序两个过程 DS18B20 写 0 时序和写 1 时序的要求不同 当要写 0 时序时 单总线要被拉低至少 60 s 保证 DS18B20 能够在 15 s 到 45 s 之间能正确地采样 I O 总线上的 0 电平 当要 写 1 时序时 单总线被拉低之后 在 15 s 之内就得释放单总线 如图 3 4 所示 图 3 4 DS18B20 的写时序 由 DS18B20 的通讯协议得知 主机控制 DS18B20 完成温度转换的过程必须经过三个 步骤 每一次读写之前都要对 DS18B20 进行复位 复位成功后发送一条 ROM 指令 最后 发送 RAM 指令 从而对 DS18B20 进行预定的操作 复位要求主 CPU 将数据线下拉 500 s 然后释放 DS18B20 收到信号后等待 16 60 s 左右 然后发出 60 240 s 的存在 低脉冲 主 CPU 收到此信号表示复位成功 11 串口部分 让 让 WIFI 与电脑 单片机进行通讯 与电脑 单片机进行通讯 串口原理图 80C51 串行口的结构图 12 1 SBUF 发送控制器 接收控制器 移位寄存器 控制门 TI RI A TXD RXD 去串口中断 SMOD 0 1 TH1TL1 2 16 SBUF T1溢出率 80C51 串行口的工作方式 方式 1 方式 1 是 10 位数据的异步通信口 TXD 为数据发送引脚 RXD 为数据接收引脚 传 送一帧数据的格式如图所示 其中 1 位起始位 8 位数据位 1 位停止位 停 止 位数据位8位 起 始 位 LSBMSB 空 闲 空 闲 D0 D7 1帧共10位 1 方式 1 输出 D0 D1 D2 D3 D4 D5 D6 D7 写入SBUF 停止位 TXD TI 中断标志 起始 方式 1 输入 D0 D1 D2 D3 D4 D5 D6 D7 停止位 RXD RI 中断标志 起始 位采样脉冲 用软件置 REN 为 1 时 接收器以所选择波特率的 16 倍速率采样 RXD 引脚电平 检测到 RXD 引脚输入电平发生负跳变时 则说明起始位有效 将其移入输入移位寄存器 并开始 接收这一帧信息的其余位 接收过程中 数据从输入移位寄存器右边移入 起始位移至输 入移位寄存器最左边时 控制电路进行最后一次移位 当 RI 0 且 SM2 0 或接收到的 停止位为 1 时 将接收到的 9 位数据的前 8 位数据装入接收 SBUF 第 9 位 停止位 进 入 RB8 并置 RI 1 向 CPU 请求中断 13 始位 1 位 数据 9 位 含 1 位附加的第 9 位 发送时为 SCON 中的 TB8 接收时为 RB8 停止位 1 位 一帧数据为 11 位 方式 2 的波特率固定为晶振频率的 1 64 或 1 32 方式 3 的波特率由定时器 T1 的溢出率决定 WIFI 模块 使用接口 1 电源接口 系统采用标准电源插座 外径 5 5mm 内径 2 1mm 的标准尺寸 内正外负 输入电压范围 5 48V 电流 350mA 2 指示灯 ID 名称 描述 1 Power 设备供电后亮 2 Ready 内部 Linux 系统启动完成后亮 3 Link 网络连接建立后亮 4 RXD 本设备的串口收到数据闪烁 5 TXD 本设备通过串口向外发送数据时闪烁 2 32 3 RS232RS232 接口 设备的串口为公口 针 RS232 电平 可以直接连电脑串口的电平 引脚顺序与计算机的 COM 口保持一致 与电脑连接时需要用交叉线 2 3 交叉 7 8 交叉 5 5 直连 7 8 可以 不接但是一定不能直连电脑 否则可能导致工作不正常 一共有 6 根线有定义 其余悬 空 序号 名称 描述 2 RXD 设备数据接收引脚 3 TXD 设备数据发送引脚 GND 信号地 RTS 请求发送 CTS 清除发送 VCC 默认未使用 PCB 上有个焊盘跳线 需要 时可以将它与设备的电源输入正极连接 用于给串口传感器供电或者外部通过串口 14 线给设备供电 第三章 基于 WiFi 模块的无线传输的实现 2 1 WIFI 模块的设置 15 16 2 2 串口部分设置 17 2 3 调试 18 运行过程 单片机首先运行 然后对 DS18B20 和 DS1302 LCD1602 进行初始化 接着对 DS18B20 和 DS1302 进行写设置 读取温度和时间 单片机处理数据 将其在 LCD1602 上显示 单 片机进行串口初始化并通过串口程序将温度和时间准备好 等到串口接收到相应的信号 在发送数据 在程序内检测温度 若温度超过设定的值 值可通过终端修改 将发出报警 信号 蜂鸣器报警 待温度下降后 可通过终端打开降温系统 蜂鸣器关闭 第五章 程序与框图 程序 include include include define uchar unsigned char define uint unsigned int sbit DQ P2 0 sbit lcden P3 4 sbit lcdrs P3 5 sbit dula P2 6 sbit wela P2 7 sbit led P1 0 sbit sclk P1 4 时钟信号线 sbit io P1 5 信号线 sbit ce P1 6 片选 也是 RST 19 sbit buzz P2 3 sbit ledle P2 5 unsigned int temp temp1 temp2 temper xs flag a s cc unsigned char j uchar code day uchar shi fen miao nian yue ri uchar cdflag uchar code number sbit ACC0 ACC 0 定义寄存器 ACC 的零位 sbit ACC7 ACC 7 void delay1 unsigned int m unsigned int i j for i m i 0 i for j 110 j 0 j void delay unsigned int m while m DS18B20 程序 void Init DS18B20 unsigned char x 0 DQ 1 delay 8 DQ 0 delay 80 DQ 1 delay 4 x DQ delay 20 uchar ReadOneChar unsigned char i 0 20 unsigned char dat 0 for i 8 i 0 i DQ 0 dat 1 DQ 1 if DQ dat 0 x80 delay 4 return dat void WriteOneChar unsigned char dat unsigned char i 0 for i 8 i 0 i DQ 0 DQ dat delay 5 DQ 1 dat 1 void duwendu unsigned char a 0 unsigned char b 0 Init DS18B20 WriteOneChar 0 xcc WriteOneChar 0 x44 delay 5 Init DS18B20 WriteOneChar 0 xcc WriteOneChar 0 xbe delay 5 a ReadOneChar b ReadOneChar temp1 b 4 个位 temp2 a 小数 temp b 256 a 4 整数 21 xs temp2 0 0625 10 temper temp xs lcd 程序 void write com uchar com lcdrs 0 P0 com delay 5 lcden 1 delay 5 lcden 0 void write data uchar date lcdrs 1 P0 date delay 5 lcden 1 delay 5 lcden 0 串口 初始化 void ckinit TMOD 0 x20 设置定时器 1 为工作方式 2 TH1 0 xfa TL1 0 xfa TR1 1 REN 1 允许串行接收 SM0 0 SM1 1 工作方式 1 SCON 0 x50 PCON 0 x80 波特率加倍 EA 1 ES 1 22 LCD1602 初始化 void lcdinit dula 0 wela 0 ledle 0 lcden 0 write com 0 x38 write com 0 x0e write com 0 x06 write com 0 x01 write com 0 x80 0 x10 温度显示 void display write com 0 x80 0 x40 write data number temper 100 write data number temp 10 write data number temp 10 write data write data number xs 10 write data C void fas unsigned char dat ES 0 串口中断允许位 SBUF dat while TI TI 0 ES 1 23 发送字符串函数 void fss unsigned char str uchar b i b strlen str for i 0 i0 i io ACC0 就是把最低位的数据传输给 IO sclk 1 时钟拉高读走数据 sclk 0 时钟拉低允许数据变化 ACC ACC 1 把 ACC 右移一位 然后又把最低的一位传送过去 DS1302 读字节 uchar read ds1302 byte 读 DS1302 一个字节 uchar i for i 8 i 0 i ACC ACC 1 特别说明 读回来的数据是从最低位到最高位 ACC7 io 把读回来的数据存到 ACC 寄存器的最高位 然后在移到最低位 sclk 1 sclk 0 24 return ACC DS1302 写地址数据 void write ds1302 uchar add uchar dat 写任意地址 任意数据 ce 0 根据时序图编写 sclk 0 ce 1 片选打开 write ds1302 byte add write ds1302 byte dat io 0 释放总线 sclk 0 时钟释放 ce 0 片选关闭 DS1302 读地址数据 返回值 时间 uchar read ds1302 uchar add 读任意地址数据 uchar temp ce 0 sclk 0 ce 1 片选打开 write ds1302 byte add temp read ds1302 byte sclk 0 时钟释放 io 0 释放总线 ce 0 片选关闭 return temp 25 时间显示函数 void dis sj uchar th tl nian read ds1302 0 x8d 年寄存器 yue read ds1302 0 x89 月寄存器 ri read ds1302 0 x87 日寄存器 write com 0 x80 0 x08 设置时位置 th nian 4 write data number th 刷新年高位 tl nian write data number tl 刷新年低位 write data th yue 4 write data number th tl yue write data number tl write data th ri 4 write data number th tl ri write data number tl shi read ds1302 0 x85 时寄存器 fen read ds1302 0 x83 分寄存器 miao read ds1302 0 x81 秒寄存器 write com 0 x80 0 x48 th shi 4 write data number th 刷新时高位 tl shi write data number tl 刷新时低位 26 write data th fen 4 write data number th tl fen write data number tl write data th miao 4 write data number th tl miao write data number tl void fssj uchar th tl th nian 4 fas number th tl nian fas number tl fas th yue 4 fas number th tl yue fas number tl fas th ri 4 fas number th tl ri fas number tl fss th shi 4 fas number th tl shi fas number tl fas th fen 4 fas number th tl fen fas number tl fas th miao 4 27 fas number th tl miao fas number

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论