基于单片机的家用温湿度传感器设计_第1页
基于单片机的家用温湿度传感器设计_第2页
基于单片机的家用温湿度传感器设计_第3页
基于单片机的家用温湿度传感器设计_第4页
基于单片机的家用温湿度传感器设计_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

滨江学院滨江学院 毕业论文毕业论文 题目题目 基于单片机的家用气象系统设计 院系院系滨江学院自动控制系 专业专业自动化 学生姓名学生姓名 学号学号 指导教师指导教师 职称职称 二二一二一二 年五年五 月三十一月三十一 日日 1 目 录 1、绪论 .1 1.1 研究目的目的与意义 .1 1.2 研究的任务要求与具体功能操作 .1 1.3 本文指导思想 .2 2、主要芯片的选择与论证 .2 2.1 单片机的选择方案 .2 2.2 显示器的选择方案 .2 2.3 温湿度传感器的选择方案 .2 3、硬件介绍及局部系统设计 .3 3.1 系统结构 .3 3.2 主要芯片及功能介绍 .3 3.2.1 单片机芯片及功能介绍.3 3.2.2 数字湿度传感器 SHT11.4 3.2.3 温度传感器 DS18B20 .8 3.2.4 LMO16 液晶显示器和外围电路.12 3.2.5 蜂鸣器应用 .15 3.3 最小系统设计 .17 3.3.1 振荡器、时钟电路及时序 .17 3.3.2 复位功能 .17 3.4 矩阵式键盘系统设计 .18 2 3.4.1 矩阵式键盘的结构原理 .18 3.4.2 键盘工作方式 .18 3.4.3 键盘扫描识别及消抖措施 .19 4、软件设计流程图 .20 4.1 矩阵式扫描键盘功能的实现 .20 4.2 按键声音功能的实现 .20 4.3 液晶显示功能的实现 .21 4.4 DS18B20 温度测量功能的实现 .23 4.5 SHT11 湿度测量功能实现 .24 4.6 电子时钟功能的实现 .26 5、应用软件 .28 5.1 KEIL软件的使用 .28 5.1.1 Keil 软件的简介.28 5.1.2 Keil 软件调试运行流程.28 5.2 PROTEUS软件的使用.31 5.2.1 Proteus 的简介.31 5.2.2 Proteus 仿真流程.31 附表 1 系统元器件表和原理图 .35 附表 2 系统仿真效果图 .37 附表 3 系统源程序 .39 1 基于单片机的家用气象系统设计 摘要摘要:一个好的气象系统能够为人们及时准确的的提供当天的气象信息。本文主要针对室内温度和湿度,外加一个电子时 钟展开思考设计的。本设计由单片机 AT89C51,LM016L 显示器,温湿度传感器 SHT11 和温度传感器 DS18B20 为核心,辅以必 要的电路,构成一个家用气象系统,其具有测量准确,显示直观等特点,适合家用。 关键词关键词:电子时钟,单片机,温湿度传感器 SHT11,温度传感器 DS18B20, 显示器 LM016L 等。 1、绪论 1.1 研究目的目的与意义 随着科技的飞速发展,人们对生活质量要求也随之提高,生活中人体舒适度高低成了人们重要的幸福指 数之一。适宜的室内气象条件,如温度、湿度、空气流速、气味等,是人们达到满意舒适度的重要因素, 这些气象信息需要仪器的测量来获得,但目前市场单一的湿度或温度等测量仪器已经无法满足人们生活 的实际需求,因此,需要集成度更好、测量精确度更高的测量仪器来代替它们。所以如果开发出一种基 于单片机的家用气象系统,将温度、湿度、时钟等测量功能集于一体,其将很好的契合人们的日常生活 要求。这对于设计者来说也是一次能力的考察,强调了对单片机扩展的应用。 1.2 研究的任务要求与具体功能操作 本文任务是基于对单片机的使用,对部分家用气象信息系统简单设计,主要包含温湿度。设计任务与主 要功能包括: (1)电子时钟的设计,并用矩阵式键盘对时间进行校正,闹铃操作; (2)温度测量显示系统设计,要求测量范围-1045、精确度(0.1); (3)湿度测量显示系统设计,要求测量范围 0100RH%、精确度(3%RH); (4)用显示器显示相应的时间,温度及湿度,要求形象直观; (5)能够在闹铃时间到或有按键按下时,蜂鸣器发出响声; 具体按键功能如下: (1) 当仿真按钮按下时,LCD 显示器进入欢迎界面; (2) 当“开始”键按下时,LCD 显示器进入正常时钟计数界面 (3) 当“闹铃设置”键按下时,LCD 显示器进入闹铃时间设置界面; (4) 当“年、月、日、时、分、秒”键按下时,想要设置的时间处(包括闹铃)光标不断闪烁; (5) 当“加” , “减”键按下时,上述光标闪烁处的数值进行加 1 或减 1; (6) 当“退出”键按下时,LCD 显示器返回到时间设置后的正常计数界面; 2 (7) 当“闹铃启/停”键按下时,启动或停止闹铃功能; 1.3 本文指导思想 本文是对部分家用气象信息测量系统的简单设计,首先对设计所需要用到的主要芯片进行选择和论证, 确定了选用单片机AT89C51作为系统的主要控制芯片,温度传感器DS18B20实现温度测量,SHT11实现湿度 测量,显示部分采用的是液晶显示器LM016L。本论文重点部分是对模块的硬件和软件时序进行详解。比 如AT89C51、SHT11、DS18B20和LM016L等芯片的引脚功能和工作原理,有便于更好理解。在最后给出系统 程序和电路原理仿真图,让设计成果更加清晰呈现。 2、主要芯片的选择与论证 2.1 单片机的选择方案 方案一:XC9000 系列有并行处理数据的能力,能快速响应,但处理数据复杂,价格昂贵。 方案二:采用单片机作为控制芯片,运算功能强,处理方便灵活,性能比较稳定,价格也比较便宜,接 近自身专业。 综上所述,方案二为最佳方案。 2.2 显示器的选择方案 方案一:12864 液晶显示器可实现多组数据的显示,字体比较大,比较清晰,但价格昂贵,接线复杂,性 价比不高。 方案二:LM016L 液晶显示器简单方便,价格便宜,也能满足显示要求。 方案三:七段数码管显示内容有限,控制程序复杂,面积较大; 综上所示,方案二为最佳方案。 2.3 温湿度传感器的选择方案 方案一:DHT11 是一款复合传感器,测湿范围在 20%90%RH,误差5%RH;测温范围 050,误差2。 方案二:SHTXX 系列是一款温湿度复合传感器,可测量湿度范围在 0%100%RH,误差范围在(1.8%3%) RH。 方案三:HS101 是电容式湿度传感器,测量范围 0%100%RH,误差范围2%RH。 方案四:DS18B20 温度传感器,具有独特的单线总线传输,接线方便,温测范围在-55125,误差范 围0.5,精确度可达 0.0625。 综上所述,根据设计任务要求,温测范围为-1045、误差0.1,湿度测量范围为 0100RH%、误 差3%RH 可知,方案二,方案四是最佳方案。 3 3、硬件介绍及局部系统设计 3.1 系统结构 此系统主要由晶振电路,测量电路,校正电路,显示电路和发声电路构成,如图所示: AT89c51 晶振电路 测量电路 校正电路 显示电路 发声电路 图 3-1 AT89C51 系统结构图 3.2 主要芯片及功能介绍 3.2.1 单片机芯片及功能介绍 单片机微处理器是在一块芯片上集成了 CPU、时钟和振荡器电路、ROM 和 RAM 存储器、定时器、计数器和 并串行 I/O 接口等功能部件的一台具有一定功能的计算机。具有体积小、重量轻、单一电源,低功耗, 功能强,价格低廉,运算速度快、抗干扰能力强、可靠性高,具有较强功能的位处理能力等。引脚功能如 下: VCC:供电电压;GND:接地。 P0 :P0 引脚为一个 8 位漏级开路双向 I/O 口,具有驱动 8 个 TTL 门电路的负载能力。当访问外存时,它 是地址(低 8 位)/数据总线复用;当外部不扩展而单片应用时,作双向 I/O 口用,是一个准双向 I/0 口;在进行片内程序检验期间,作指令代码输出用。 P1 :P1 引脚是一个标准的内部提供上拉电阻的 8 位准双向并行 I/O 口,具有驱动 4 个 TTL 门电路的负载 能力。它通常用 I/O 口使用,输出时具有锁存功能,输入时具有缓冲功能。 P2 :与 P1 引脚功能相似,其区别在于 P2 引脚访问外存时只能作高 8 位地址总线。 P3 :具有上拉电阻的 8 位准双向并行 I/O 端口;当系统复位或上电时,P3 口处于第二功能状态。 RST:复位输入端。若在该引脚上输入持续 2 个机器周期的高电平将使单片机复位。 ALE:允许地址锁存信号输出。 PSEN:访问外部程序存储器的选通信号,低电平有效。 EA :此引脚为访问内部或外部程序存储器的选择信号。 XTAL1:此引脚接外部晶振一端。 4 XTAL2:此引脚接外部晶振另一端。 3.2.2 数字湿度传感器 SHT11 (1)Sht11 的特点 Sht11 是一款数字湿度传感器芯片。该芯片广泛应用于暖通空调、汽车、家电等领域,其特点如下: 1)高度集成,将温度测量,湿度测量,信号变换,A/D 转换和加热等功能集成到一个芯片上; 2)提供二线串行数字接口 sck 和 data,接口接单,支持 crc 校验传输,其可靠性较高; 3)可以编程调节测量精度,内置 A/D 转换器(分辨率为 812 位,可以通过对芯片内部寄存器进行设置) ; 4)测量精度高,又集温度传感器和湿度传感器,所以能提供温度和线性补偿的湿度测量和露点计算功能; (2)sht11 的引脚功能 DATA SCK SHT11 图 3-2 SHT11 引脚图 主要引脚功能如下: 1)sck 为时钟线,用于微处理器与 SHT11 之间的同步通讯,内含完全静态逻辑,所以不存在最小 sck 频率。 2)DATA 为数据线,用于数据的读取。DATA 在 sck 时钟的下降沿改变状态,并仅在 sck 时钟的上升沿有效。 在数据传输期间,在 sck 时钟高电平时 DATA 必须保持稳定。 (3)sht11 内部结构 湿度传感器 SHT11 将温湿度测量、模数转换、信号变换和加热器等功能集成到一个芯片上,内含湿度敏 感元件和温度敏感元件。它们分别将温湿度转换成电信号,在进入运算放大器,使其微弱信号进行放大; 然后进入一个 14 位的模数转换器;最后测量值由二线数字串行接口输出。其内部结构如图 3-3 所示。 5 湿度传感器 运算放大器 器 温度传感器 A/D 转换 器 二线串行数 字接口和 CRC 校验 校准寄存器 SCK DATA VCC GND 图 3-3 SHT11 内部结构图 主机是通过二线数字串行接口与 SHT11 进行数据传输的。其通信协议不能兼容 I2C 总线协议,因此需要 用单片机 IO 接口模拟该数据传输时序。其对 SHT11 的控制是通过几个命令字来实现的,命令字的定义 如下表 3-1 所示: 表 3-1 SHT11 命令代码 (4)sht11 状态寄存器 Sht11 的某些高级功能可以通过状态寄存器来实现。在这里主要介绍通过设置状态寄存器的相关位来设定 传感器的测量分辨率。默认的分辨率是 14bit(温度),8bit(湿度),通常情况下使用 12bit(温度)和 8bit(湿 度)。状态寄存位如下表所示: 表 3-2 SHT11 状态寄存位 Bit 说明默认值备注 01=8bitRH/12bitT 0=12bitRH/14bitT 0 1 不从 opt 加载 0 2 加热 0 3 仅供测试不使用 0 4 预留 0 5 预留 0 60=vdd2.47 X 无结束后更新 命令字含义 0 x03 测量温度 0 x05 测量湿度 0 x07 对内部状态寄存器读 0 x06 对内部状态寄存器写 0 x1E 复位命令 6 1=vdd /Q P0.n 内部总线 写锁存器 读锁存器 图 3-8 P0 口一位引脚等效结构图 (4)LM016 指令介绍 LMO16 液晶模块内部的控制器共有 11 条控制这令,如表 3-13 所示: 表 3-13 LMO16 控制命令表 序号指令 RSRWD7D6D5D4D3D2D1D0 1 清显示 0000000001 2 光标返回 000000001* 15 3 输入模式 00000001 I/D S 4 显示控制 0000001DCB 5 移位控制 000001 S/CR/L * 6 置功能 00001 DL NF* 7 字符贮存地址 0001 字符发生贮存器 8 数据贮存地址 001 显示数据贮存器 9 忙标志或地址 01 BF 计数地址 10 写数到 DDRAM 10 要写的数据内容 11 从 DDRAM 读数 11 要读的数据内容 1)各指令功能 指令 1:清除液晶显示器;光标归位,即将光标撤回液晶显示器的左上方;将地址计数器(AC)的值设为 0。 指令 2:把光标撤回到显示器的左上方;把地址计数器(AC)的值设置为 0;保持 DDRAM 的内容不变。 指令 3:I/D=1,表示写入数据后光标右移,反之左移;S=0,表示写入数据后显示屏不移动,反之右移。 指令 4:D=0,表示显示功能关,反之开;C=0,表示无光标,反之有光标;B=0,表示光标闪烁,反之光标不 闪烁。 指令 5: S/C=0,R/L=0,表示光标左移一格且 AC 值减 1;S/C=0,R/L=1,表示光标右移一格且 AC 值加 1S/C=1,R/L=0,表示显示器上字符全部左移一格,但光标不动;S/C=1,R/L=1,表示显示器上字符全部右移一 格,但光标不动。 指令 6:DL=0,表示数据总线为 4 位,反之为 8 位;N=0,表示显示 1 行,反之显示 2 行;F=0,表示 5x7 点阵/每 字符,反之 5x10 点阵/每字符。 指令 7:DB5-BD3 为字符号,表示你将要显示该字符时要用到的字符地址;DB2-DB1 为行号。 指令 8:设定下一个要存入数据的 DDRAM 地址。 指令 9:BF=1,表示液晶显示器忙,暂时无法接受单片机送来的数据或命令,反之不忙;读取地址计数器 (AC)的值。 指令 10:将字符码写入 DDRAM,以使液晶显示屏显示出相对应的字符;使用自己设计的图形存入 CGRAM,DBA-DB5 一般取“000” 。 指令 11:读取 DDRAM/CGRAM 的内容。 2)基本时序 RS=L,RW=H,E=H,表示读状态;RS=L,RW=L,E=下降沿,表示写指令;RS=H,RW=H,E=H,表示读数据; RS=H,RW=L,E=下降沿,表示写数据。 16 3)显示字符地址 要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,如表 3-14 所示,是液晶模块的 内部显示地址,但因为写入显示地址时要求最高位 D7 为高电平,所以实际写入的数据应该是下表所示地 址加上 80H。 表 3-14 模块内部地址 000102030405060708090A0B0C0D0E0F 404142434445464748494A4B4C4D4E4F 3.2.5 蜂鸣器应用 (1)蜂鸣器的分类及原理 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛用于计算机、打印/复印机、报警器, 电子玩具、汽车相关的电子设备等电子产品中作发声元器件;蜂鸣器主要可分为压电式和电磁式蜂或有 源蜂、无源。 压电式蜂鸣器主要包含多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等器件。多谐振荡器由晶 体管或集成电路组成,上电后,内部振荡器起振,输出 1.55KHZ 的音频信号,压电蜂鸣片被阻抗匹配器 推动发声。 电磁式蜂鸣器主要包含振荡器、电磁线圈、磁铁、振荡膜片等器件。上电后,振荡器产生的音频信号电 流作用于电磁线圈,使其产生磁场,在电磁线圈和磁铁的作用下,振动膜片周期性的振动发声。 有“源”或无“源”是指蜂鸣器内部是否有振荡源,有源蜂鸣器内部带有振荡源,所以只要一通电就会 发出声音;而无源蜂鸣器内部不带振荡源,所以用直流信号无法驱动它,必须用方波驱动。 (2)SOUNDER 蜂鸣器引脚及驱动电路 1 2 图 3-9 sounder 引脚图 在 proteus 仿真中引脚 1 可以直接接 I/O 接口,引脚 2 接地,主机从接口输出不同频率的方波使 sounder 发出不同的声音。但实际电路中单片机输出的 TTL 电平基本上驱动不了蜂鸣器,因此需要增加一个电流放 大电路来驱动蜂鸣器,如图 3-10 所示。当 I/O 接口输出高电平,三极管截止,没有电流流过线圈,蜂鸣 器不发出;当接口输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,可以通 17 过程序控制接口电平来使蜂鸣器发出声音和关闭。 VCC + 10K T1 _ I/O 图 3-10 蜂鸣器驱动电路 3.3 最小系统设计 单片机最小系统由振荡电路、复位电路和 51 单片机组成,如图 3-11 所示。 3.3.1 振荡器、时钟电路及时序 振荡器:8051 的 XTAL1 和 XTAL2 引脚分别为单极片内反相放大器的输入/输出端,XTAL2 又是内部时钟发 生器的输入端,这个内部反相器可与外部元件组成皮尔斯振荡器。当采用石英晶体振荡器时,C=(3010) PF;当采用陶瓷谐振振荡器时,C=(4010)PF。 时钟:单片机执行指令的过程可分为取指令、分析指令和执行指令三个步骤,每个步骤又有许多微操作 所组成,这些微操作必须在一个统一的时钟控制下才能按正确的顺序执行。 单片机的时钟信号可以由两种方式产生,即内部时钟方式和外部时钟方式。内部时钟方式是利用单片机 芯片的内部振荡电路实现的,此时需要通过单片机的 XTAL1 和 XTAL2 引脚外接定时元件。定时元件一般 用晶体振荡器和电容组成并联谐振回路,如图 2-12 所示。电容一般取 30pF 左右,主要作用是帮助振荡 器起振,晶体的振荡频率范围在 1.213HZ。晶体振荡频率越高,则系统的时钟频率就越高,单片机运行 速度也越快。C51 在通常情况下,时钟振荡频率为 612HZ。 18 在由多片单片机组成的系统中,为使各单片机之间的时钟信号严格同步,应当采用公用外部脉冲信号作 为各单片机振荡脉冲。这时外部方波脉冲信号经 XTAL2 引脚注入。 CPU 时序的:时序是计算机指令执行时各种微操作在时间上的顺序关系,其作用是保证 CPU 中各种微操作 有序运行。单片机时序定时单位共有 4 个,分别为:拍、状态、机器周期、指令周期。振荡器输出的脉 冲经 2 分频成为内部时钟信号,其周期为时钟周期,6 个时钟周期构成一个机器周期,执行一条指令的周 期为指令周期,其以机器周期为单位,分为单周期、双周期和 4 周期指令。若选用 12M 晶振,则振荡周 期为 1/12us,则机器周期为 1us。所以单周期指令执行时间为 1us,双周期指令执行时间为 2us,乘除法 指令为 4us。 3.3.2 复位功能 复位即使 CPU 及其它功能部件处于一个确定的初始状态,并从这个状态开始工作。RST 引脚为单片机提供 一个复位信号输入外部的端口,在振荡电路正常工作时,RST 引脚上出现保持两个机器周期以上的高电平 (复位信号) ,以实现一次复位操作。CPU 进行内部复位以响应此信号,并置引脚 ALE 和 PSEN 为输入方式。 单片机在复位信号的第二个机器周期开始进行复位操作,并在 RST 变为低电平前的每个机器周期均重复 执行。内部 RAM 不受复位影响,复位后的程序计数器 PC=0000H,即指向程序存储器 0000HD 单元,使 CPU 从首地址重新开始执行程序。 外接复位信号可上电复位或按键复位,一般使用两者组合的方式。图 3-11 是上电复位电路,其利用阻容 充电电路实现的,在单片机上电瞬间,因为电容上电压突变不了,而 RST 电压是 VCC 和电容器电压之差, 所以 RST 引脚的电压与 VCC 电压相同。随着充电电流的减小,RST 端的电位逐渐下降。电容容量越大,它 的充电时间就越长,即 RST 引脚上的电压下降越慢,这就可使 RST 引脚上的电压保持超过斯密特触发器 的触发门槛电压充足的时间,因而所选电容应该足够大。如果 VCC 上升时间不超过 1ms,一般 10uF 的电 容就可以提供可靠的复位,只要电源上升时间低于 1ms,振荡器启动时间低于 10ms.。 手动复位是利用电阻分压电路实现的。可在上电复位电路基础上并接一个复位开关,这样就保证上电复 位,又可手动复位。 5V 10uF R8.2k kkK C XTAL1 P0 XTAL2 P1 RST P2 P3 GND DD C 图 3-11 最小系统图 19 3.4 矩阵式键盘系统设计 当有很多按键时,传统的独立式键盘已不再适合,这是为了节约 I/O 口,常常采用矩阵式键盘。矩阵式 键盘又称行列式键盘。 3.4.1 矩阵式键盘的结构原理 矩阵式键盘由行线与列线组成,按键位于两者的交叉点上。这样,一个由 n 条行线、m 条列线组成的矩阵 键盘,就可以含有 mxn 个按键。但它所需的 I/O 接口只需要 m+n 个。当 m 和 n 数量较大时,矩阵式键盘 的优点就尤为突出。如图 3-12 所示是 4x4 键盘。(当列线不接与门时)列线与上拉电阻接到+5V,所以一 般情况下无按键按下时,列线电平为高。当有按键被按下时,则该列线的电平便由与之相连的行线电平 决定。当与之相连的行线电平为高时,列线电平保持高不变;当行线电平为低时,则列线电平也会被拉 低。正式利用这一点确定是否有键被按下。 3.4.2 键盘工作方式 矩阵式键盘的扫描常用程序扫描方式、定时扫描方式或中断扫描方式来实现的。 (1) 程序扫描方式是在 CPU 不执行其它程序时对键盘进行扫描,占用 CPU 的时间比较多,当 CPU 执行其它 功能时,就不再响应键盘的要求。 (2) 定时扫描方式,是利用定时器每隔一定时间产生定时中断,在中断服务时扫描键盘。定时扫描方式的 电路与程序扫描方式相同。这种方式在无键闭合的情况下也会执行扫描任务。 (3) 中断扫描方式是只有在按键被按下时产生中断申请,进行键盘扫描,能在最快时间内对按键进行响应, 占用 CPU 的时间最少,运行效率高。与前述不同的是,这里的 4 条列线经过一个与门接到了 8051 单 片机的外部中断引脚/INT1 上,如图 3-12。P1.4p1.7 全部置零,当没有按键按下时,4 条列线因为 有上拉电阻接到+5V,所以都为高电平,这样与门的输出也为高电平,不会产生中断。当有任何一键 被按下,4 条列线中就会有一条线电平与与之接触的行线电平相等,变为低电平。因此,接到与门后, 与门也会变为低电平,产生中断。进入中断后你,再来处理键盘扫描任务。 3.4.3 键盘扫描识别及消抖措施 键盘识别:本设计中采用的是程序扫描方式,就调用扫描程序进行扫描,识别具体是哪个键被按下后输 出返回值。按键的识别方法常常采用扫描法(逐行扫描或逐列扫描)或线反转法,本设计中采用线发转 法,因其简单实用,效率高。具体步骤如下: 第一步,给 P1 引脚输入 0 xf0,延时消抖后如果低 4 位出现高电平,则说明某行有键被按下; 第二步,给 P1 引脚输入 0 x0f,延时消抖后如果某高 4 位出现高电平,则说明某列有键被按下; 第三步,将上述两步结果相与就可以确定具体哪个按键被按下,操作见程序。 消抖措施:在一般电路中,有键按下按下后,理想状态下产生一个个负矩形脉冲,但由于在按动按键时 不可避免的会产生一些抖动,所以在脉冲的首尾部位时常会出现一些毛齿波。毛齿波的长短与开关的机 20 械特性有关,一般为 510ms。除了消抖之外还有重建,即一个按键被按下后紧接着又按下一个键,或者 两键同时按下。这些需要采用一定的措施加以消除。目前消抖的方法有两种,一种是用硬件电路实现, 即用 RC 滤波电路滤除抖动;第二种则是用软件延时的方法来解决,就是通过延时来确保信号的稳定,在 稳定后进行键值查询。本设计采用的是第二种,其过程是在扫描到有按键被按下后延时一段时间 (12ms20ms) ,再扫描一次看是否有被按下的按键,若这一次扫描不到说明前一次结果为干扰信号,如 果这一次扫描到有按键按下,则说明负脉冲信号已稳定,然后判断闭合按键的键值。在被按键的键值确 定之后,再去扫描其是否释放,等按键释放后在进行处理,这样即可消除释放抖动的干扰。 P1.0 VDD 图 3-12 矩阵式键盘 4、软件设计流程图 4.1 矩阵式扫描键盘功能的实现 本设计的键盘扫描方式采用的是程序调用扫描方式。起初,给 4x4 每个按键定义一个键值(如:015 键 分别对应的键值是 key=0 x11,0 x21,0 x41,0 x81,0 x12,0 x22,0 x42,0 x82,0 x14,0 x24,0 x44,0 x84,0 x18,0 x28,0 x48,0 x88) 当需要扫描键盘的时候,调用扫描程序进入键盘扫描状态。如果有按键被按下时,程序就可以识别 k2 状 态与之前设定的哪个具体键值相等,从而返回该按键的键值的数组标号,也就是键号 015。具体流程图 如下: 21 Y N Y N Y Y N N 开开 始始 P1!=0 xf0 P1=oxfo K1=p1 Delay(10) Delay(10) P1=k1 P1=0 x0f Delay(10) K2=p1 Keyi=k2 i+1; DQ=0,DQ=1;延时 15us DQ=1 tmp=tmp|0 x80 延时 60us,DQ=1 i+;i1 , DQ=1 DQ=0,延时 15us 延时 60us i+;i8 结 束 YN Y N N Y Y N (a)DS18B20 写函数流程图(b)DS18B20 读函数流程图 图 4-7 DS18B20 写/读函数流程图 4.5 SHT11 湿度测量功能实现 湿度测量主要通过 SHT11 的启动、读写字节、读写寄存器、传感器的响应检测,温湿度测量完毕检测、 温湿度转换、测量类型设置及结果返回等功能函数来完成。 每次的读写都要先“启动传输” ,然后写入指定命令/数据等待 SHT11 的响应,传感器响应时会在第 9 下 降沿将数据线拉高以表示接收到命令/数据。 STH11 温湿度传感器每次测量都需要一定的时间,时间的长短根据之前设定的测量精度来确定。当传感器 测量温度或湿度完成后会将数据总线拉低以便来通知主机进行后续操作。 主机接受到通知信号后开始读出之前传感器测量的数据,分两次读出,先读高字节后读低字节,每次读 完一个字节后主机都要向传感器做出响应,即在第 9 下降沿将数据总线拉低后在释放;若读完低字节后 数据总线不拉低则读取结束。 写寄存器主要是通过向状态寄存器写入命令字来设定传感器的测量的精度,或者读状态寄存器的相关位 来了解有关测量状态。具体流程图如下: 26 Sht11_data=0 开 始 Sht11_sck=0, i=0;dat=data dat1)当在元件列表中选择一个元件时,它会显示该元件的预览图;2)当鼠标 指针落在原理图编辑窗口时,它会显示整张原理图的缩略图,并显示一个绿色的方框,可用鼠标改变 绿色的方框的位置,从而改变原理图的可视范围。 (2) 原理图编辑窗口:用来绘制原理图,蓝色方框内为可编辑区,元件要放大其中。 (3) 菜单栏:菜单栏为标准的 Windows 风格,有 12 个下拉菜单。 (4) 工具栏:包括文件工具栏、视图工具栏、编辑工具栏、模型选择工具、方向工具栏、仿真工具栏。前 四个工具栏可以通过 View 菜单中的 Toolbars 子菜单显示或关闭。 5.2.2 Proteus 仿真流程 首先启动 ISIS,如图 5-5 所示是 ISIS 工作界面,主要包括标题栏、菜单栏、工具栏、状态栏、方位控制 按钮、仿真进程控制按钮、对象选择窗口、原理图编辑窗口和预览窗口。 图 5-5 ISIS 工作界面 33 接着准备绘制原理图,具体步骤有:点击对象选择按钮 P,到元器件库(Pick Devices)左侧窗口中输入 关键字,在右侧窗口里加载仿真所需要的元件并放置在原理图编辑窗口如图 5-6;根据对象的类别在绘图 模型选择工具栏选择相应的图标;编辑、拖动、旋转、复制、设置对象属性;利用 ISIS 的布线功能在元 器件之间连线,可形成如图 5-7 的电路原理图,以*.DSN 格式保存设计文件。 图 5-6 元器件库加载元件 图 5-7 完成的仿真效果图 然后输入单片机汇编程序,单击 Source 菜单,选中 Add/Remove source file,选择路径创建源文件,利用 ISIS 的源文件编辑功能输入汇编语言程序,并以*.ASM 格式保存源程序文件。接着利用 ISIS 的代码调试功 能对保存的源程序进行语法和逻辑错误检查,直至程序编译和调试成功,以*.HEX 格式保存可执行文件。 最后将形成的*.HEX 文件加载到电路的单片机属性里,启动仿真运行功能即可观察运行效果。 34 6、 设计总结 本次毕业论文是基于单片机的家用气象系统设计,包含温度检测,湿度检测,时钟及液晶显示功能, 具有操作方便、实时性好、精确度高、显示直观等优点。本次设计功能均已实现,现对要点做如下总结: DS18B20 传感器与主控芯片读写时序是设计中的一个难点,这里稍作总结:读写时序都需要至少 60us,两个读/写周期至少有 1us 的恢复时间。写时序是以将数据线拉低并持续 15us 开始的,若写 0 就 把数据线拉低,反之拉高,传感器在 1560us 内 采样数据接口,完成数据的采集;读时序是以将数据 线拉低并持续至少 1us 后释放开始的,释放后需要保持 15us,因为 DS18B20 传感器输出的数据在 015us 内有效。 SHT11 与主控芯片读写时序是本设计中的另一个难点,总结如下:首先,SHT11 与主机的通信是从 “启动传输开始”的,主机向传感器发出测量命令,当传感器接收到命令后发出响应信号,以便告知主 机;接着,传感器进行温湿度测量,测量完毕会将数据线拉低以便通知主机,主机得知后读出其测量到 的数据。 软件设计是这是毕业设计的核心部分,所花的时间和精力也是最多的,在此过程中遇到了许多以前 从未遇到过的难题,比如“ERROR L107:ADDRESS SPACE OVERFLOW”,“WARNING L15:MULTIPLE CALL TO SEGMENT”等,面对这些陌生的问题,刚开始感到很困惑,无从入手,但通过在网上查找资料,慢慢的知 道了其错误的根源,在弄清原理后,在对程序算法进行改进,所有难题也就慢慢的迎刃而解。 本次毕业设计从选题到完成是在导师的指导和自己操作下完成的,整个设计过程是对四年来所学知识 的总结和实践应用,收获很多。首先,不仅提高了自学能力和解决实际问题能力,而且拓宽了自己的知 识面,但其过程并不是一路顺畅,在设计过程中好多知识都是随学随用,遇到了好多困难和疑惑,比如: DS18B20、SHT11、LM016 的硬件原理和工作时序,开始时都比较陌生,难以上手,只有慢慢的通过对相关 资料的查阅并与导师和同学细心交流,才逐渐的掌握其知识要点,最后在一点一点的吸收;然后,我的 编程能力和分析能力得到了锻炼,它让我知道编写一段程序往往不能一蹴而就,需要慢慢的调试和摸索, 有时会连续几天停滞不前,但一旦突破难点将是另一番天地,那种喜悦心情不胜言表;最后,在这段学 习时间里收获了诸多经验,其将是我今后学习的一笔财富。在此,感谢这段时间里指导和帮助过我的老 师和同学,因为你们,我将走的更远。 参考文献:参考文献: 1林立 张俊亮 曹旭东.单片机原理及应用.电子工业出版社. 2李萍 张池 张文华.AT89S51 单片机原理、开发与应用实例.中国电力出版社. 3唐俊翟 许雷 张群瞻.单片机原理与应用.冶金工业出版社. 4先锋工作室.单片机程序设计实例.清华大学出版社. 5陈明荧.8051 单片机课程设计实例教材.清华大学出版社. 6杨欣 王玉凤 张延强.51 单片机应用实例详解.清华大学出版社. 35 7侯殿有.单片机 C 语言程序设计.人民邮电出版社. 8孙育才.MCS-51 系列单片机微型计算机及其应用.东南大学出版社. 9 2012 年 5 月访问. Microcontroller-Based Home Weather System Design Xu Tengfei Nanjing University of Information Science And Technology BinJiang College Department of Automation Control Nanjing China ABSTRACT In a good weather system to timely and accurate for people the day of meteorological information. This paper mainly focuses on indoor temperature and humidity, plus an electronic clock expand thinking about design. Designed by the microcontroller AT89C51, LM016L monitor, temperature and humidity sensor SHT11 and temperature sensor DS18B20, and supplemented with the necessary circuitry to constitute a home weather systems, its measurement accuracy, intuitive display, etc., suitable for home. Keywords: electronic clock SHT11 DS18B20 LM016L 36 附表附表 1 1 系统元器件表和原理图系统元器件表和原理图 附表 1-1 系统元器件表 名称规格数量 单片机 AT89C511 按 键 BUTTON18 电 容 CAP1uf1 电 容 CAP0.33uf1 电 容 CAP33pf2 电 容 CAP10uf1 电 容 CAP-ELEC/1uf1 电 阻 RES/10K8 排 阻 RESPACK81 晶 振 CRYSTAL1 温湿度传感器 SHT111 温度传感器 DS18B201 液晶显示器 LM016L1 蜂鸣器 SOUNDER1 电位器 POT-HG1 电源稳压 LM78051 37 三极管 PN42581 38 附表 图 11 系统原理图 39 附表附表 2 2 系统仿真效果图系统仿真效果图 2.1 当按下仿真按钮,LCD 进入欢迎界面。具体如下图 1-2 所示: 附表 图 1-2 欢迎界面图 2.2 当键“开始”按下,LCD 进入时钟、温度值显示界面,开始正常计数。具体如下图 1-3 所示: 附表 图 1-3 数据显示界面图 2.3 当键“闹铃设置”按下,LCD 进入闹钟设置界面。具体如下图 1-4 所示: 附表 图 1-4 闹钟设置界面图 2.4 当按下“时” 、 “分”键,计数停止,闹钟设置界面的“时” 、 “分”位置光标闪烁;在分别按下键“加” 、 “减” ,相应数值加或减;当按下“退出”键,则界面返回到图 1-3 数据显示界面.具体如下图所示: 附表 图 1-5 闹钟“时”位置光标闪烁图 附表 图 1-6 闹钟“时” “分”数值设置图 40 附表 图 1-7 返回正常时间计数界面图 2.5 当按下“年、月、日、时、分、秒”键时,计数停止,进入时钟设置界面,对应位置光标闪烁;在按 下“加” 、 “减”键,闪烁的位置进行数值加减;当按下“退出”键,界面恢复到正常计数.具体如下图所 示: 附表 图 1-8 时间“日”光标闪烁图 附表 图 1-9 时间“分”光标闪烁图 附表 图 1-10 时间设置完成界面图 附表 图 1-11 恢复正常时间计数界面图 2.6 DS18B20 温度传感器设置的温度值,SHT11 湿度传感器设置的湿度值,湿度温差在2.5 左右。如下 图所示: 附表 图 1-12 左为 SHT11,右为 DS18B20 传感器 41 附表附表 3 3 系统源程序系统源程序 /*/ *模块名:系统主函数 *功能描述:定时器定时时间到,执行中断函数,调用温湿度和时钟显示函数,并执行时钟整点设置; main 函数执行时钟加减及闹铃程序, /*/ #include DS18B20.h #include LCD.h #include KEY_TONE.h #include SHT11.h #include KEY.h #define uchar unsigned char #define uint unsigned int void Init();/主程序初始化函数; void Adjust_Key();/时钟调整函数 uchar count=0; uchar adjust_flag=0; uchar hour=0,minute=0,second=35; uchar year=2012,month=5,day=25; uchar alarm_hour=0,alarm_minute=0,alarm_set_flag=0,alarm_flag=1,key3; void Timer1(void) interrupt 3 /定时器 1 中断函数; count+; if(count=250) count=0; second+; if(second=60) second=0; minute+; if(minute=60) minute=0; second=0; hour+; if(hour=24) hour=0; minute=0; second=0; day+; 42 if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) if(day=32)day=1;month+; if(month=4|month=6|month=9|month=11) if(day=31)day=1;month+; if(month=2) if(year%4=0month+; else if(day=29)day=1;month+; if(month=13)month=1;ye

温馨提示

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

评论

0/150

提交评论