智能花盆自动浇水系统的设计

更新时间:2023-10-05 20:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河南理工大学 2011毕业设计说明书

盆花自动浇水系统的设计

测控07级2班 指导老师:

摘 要:本次设计的盆花自动浇水系统包括土壤温湿度的检测与控制和蓄水箱自动上水及水位报警两大部分。土壤温湿度的检测与控制部分又包括了土壤温湿度的检测和显示、自动浇水系统。土壤温湿度的检测和显示以温湿度传感器SHT-11为感应部件,将检测到的土壤温湿度值送入AT89C51单片机,再由其输出到LCD屏进行显示。自动浇水系统设计为智能和手动两个部分:智能浇水部分是通过单片机程序设定浇水的上下限值与SHT-11送入单片机的土壤湿度值相比较,当低于下限值时,单片机输出一个信号控制电磁阀打开,开始浇水,高于上限值时再由单片机输出一个信号控制电磁阀关闭,停止浇水;手动部分是由单片机从时钟芯片DS1302读入月份与每天的实时时刻,通过软件程序设定定时浇水的时间与浇水的量。蓄水箱自动上水及水位报警采用纯硬件电路控制,实现水箱水位实时监测、自动上水以及水位上下限报警的功能。

关键词:AT89C51单片机 SHT-11温湿度传感器 LCD DS1302时钟芯片 C51程序 数字电路

I

河南理工大学 2011毕业设计说明书

Design of potted flowers automatic watering system

Abstract:The design of the automatic watering system includes soil pot humidity detection and display, automatic watering and storage box automatic water and water level alarm three parts. S- oil testing and display of temperature and humidity system takes Temperature and humidity sen- sor SHT - 11 as inductive components, it will detect the soil temperature and humidity value and input the value to the AT89C51 microcontroller,then the temperature and humidity value will be output to LCD screen displayed. Automatic watering system design for intelligence and manual two parts.Intelligent watering part through the microcontroller program setting the upper and lo- wer water attained,then comparing this upper and lower water attained with the vale that throug -hing SHT-11 inputting to the microcontroller. When below the limit SCM outputs a signal to o- pening the Electromagnetic valve ,and Start watering .if Above the upper limit value,the SCM will output another signal to Turnning off the Electromagnetic valve ,and Stop watering. Manual part read the time from the clock chip DS1302 by microcomputer. Through software program to setting the regular watering'time and Watering amount.Storage box Water level control system u- ses Pure hardware control. Realizing real-time monitoring water tank, Automatic water supply and Level alarming function.

Keywords: AT89C51 microcontroller; SHT - 11 temperature and humidity sensor; LCD; clock chip DS1302;C51 program; Digital circuit

II

河南理工大学 2011毕业设计说明书

目 录

1、绪论 .................................................................... 1

1.1 选题的目的和意义 .................................................... 1 1.2自动浇花器的诞生背景及国内外发展现状 ................................ 1 1.3毕业设计所采用的研究方法和手段 ...................................... 2 2、AT89C51单片机 ........................................................... 4

2.1 AT89C51单片机的基本组成 ............................................ 4 2.2 AT89C51主要特性 .................................................... 5 2.3管脚说明 ............................................................ 5 2.4 AT89C51单片机的存储器 .............................................. 7

2.4.1 程序存储器 .................................................... 7 2.4.2 数据存储器 .................................................... 8 2.5 振荡电路和时钟...................................................... 9 2.6 AT89C51的中断系统 ................................................. 10

2.6.1 中断系统结构和中断控制 ....................................... 10 2.6.2 中断响应过程 ................................................. 12 2.7 定时器/计数器...................................................... 12

2.7.1定时器/计数器0和1简介 ...................................... 12 2.7.2 与定时器/计数器0和1相关的特殊功能寄存器 .................... 13

3、温湿度传感器 ........................................................... 14

3.1 数字温湿度传感器SHT-11 ............................................ 15 3.2 SHT-11的传感器输出 ................................................ 16

3.2.1 湿度值输出 ................................................... 17 3.2.2 温度值输出 ................................................... 17 3.2.3 露点计算..................................................... 18 3.2.4 非线性校正及温度补偿 ......................................... 18 3.3 SHT-11的特性 ...................................................... 19

3.3.1 SHT-11的特点 ................................................ 19 3.3.2 SHT的详细规格 ............................................... 19 3.4 SHT-11的引脚 ...................................................... 20

III

河南理工大学 2011毕业设计说明书

3.5 SHT-11的的内部命令与接口时序 ...................................... 21

3.5.1 SHT-11的内部命令 ............................................ 21 3.5.2 SHT-11的命令顺序及命令时序 .................................. 21 3.5.3 SHT-11的状态寄存器 .......................................... 22 3.6 硬件接口 .......................................................... 23 3.7 恢复处理 .......................................................... 23 3.8 SHT-11的相关程序 .................................................. 24 4、DS1302时钟芯片 ......................................................... 30

4.1 DS1302时钟芯片的简介 .............................................. 30 4.2 引脚 .............................................................. 30 4.3 命令字节 .......................................................... 31 4.4 DS1302的相关程序 .................................................. 34 5、液晶显示器LCD .......................................................... 38

5.1 液晶显示器的分类 ................................................... 38 5.2 AMPIRE 128×64..................................................... 38

5.2.1 LCD 128×64引脚功能 ......................................... 39 5.2.2 KS0108控制器指令功能 ........................................ 40 5.2.3 应用说明..................................................... 42 5.2.4 LCD相关程序 ................................................. 42

6、盆花自动浇水系统的设计 .................................................. 49

6.1 土壤温湿度检测与控制 ............................................... 49

6.1.1 硬件电路设计 ................................................. 49 6.1.2 系统软件设计 ................................................. 53 6.2 蓄水箱自动供水系统 ................................................. 65

6.2.1基本的导电理论 ............................................... 66 6.2.2系统工作原理 ................................................. 67 6.2.3 系统硬件组成 ................................................. 66 6.2.4 系统电路连接 ................................................. 70 6.2.5 参数计算..................................................... 71 6.2.6 水箱水位控制系统检测 ......................................... 71

IV

河南理工大学 2011毕业设计说明书

7、总结 ................................................................... 73 8、致谢 ................................................................... 74 参考文献 .................................................................. 75

V

河南理工大学 2011毕业设计说明书

1、绪论

1.1 选题的目的和意义

随着社会生活的进步,人们的生活质量越来越高。在家里养盆花可以陶冶情操、丰富生活。同时,盆花通过光合作用可吸收二氧化碳,净化室内空气,在有花木的地方空气中阴离子聚积较多,所以空气也特别清新,而且有许多花木还可吸收空气中的有害气体,因此,养盆花如今被许多的人所喜爱。

盆花浇水量是否能做到适时适量,是养花成败的关键。但是,在生活中人们总是会有无暇顾及的时候,比如工作太忙或者出差、旅游等。花草生长问题80%以上是由花儿浇灌问题引起;好不容易种植几个月的花草,因为浇水不及时,长势不好,用来美化家园的花草几乎成了“鸡肋”;不种植了吧,家中没有绿色衬托感觉没有生机;保留吧,花草长得不够旺盛,还影响家庭装饰效果。虽然目前市面上有卖盆花自动浇水器的,但价格十分的昂贵,并且大多只能设定一个定时浇水的时间,很难做到给盆花适时适量浇水。也有较经济的盆花缺水报警器,可以提醒人们及时的给盆花浇水。可是这种报警器只能报警,浇水还是需要人们亲自动手。当家里无人时,即使报警也无人浇水,就起不到应有的作用了。因此,我想通过设计一种集盆花土壤湿度检测,自动浇水以及蓄水箱自动供水于一体的盆花自动浇水系统。让盆花在人们无暇照顾时也能得到及时的浇灌。

1.2自动浇花器的诞生背景及国内外发展现状

微喷系统是近几年利用国内外先进技术组装的新型灌溉设施,主要是利用水流通过低压管道系统以一定速度从特制的喷头喷出,在空气中分散成细小的水滴,着落在花草植物、作物及周围的地面上,从而达到及时补充水分的目的。该系统具有用水量少、冲击力小的灌溉特性,适用于栽培密度大、植株柔软细嫩的植物。自动浇花器的诞生是随着人们生活水平的提高和生活节奏的加快而诞生的一种懒人园艺用品。它把微喷的概念应用于家庭盆花浇灌中,通过相应的改进,达到合理给盆花自动浇水的目的。 早在很多年前,国外就已经开始普及,国内使用的电子类自动浇花器多数从国外进口的,价格昂贵,但质量比较可靠。不过这并不太适用于国内,目前国内外比较流行的是玻璃制作的自动浇花器。这种类型的浇花器多数在我国山西和浙江一带加工生产的,价格比较低廉,实用性没有电子类自动浇花器好。随着国内居民消费水平和生活质量的提高,居家园艺市场异常火爆,但是由于生活节奏加快,种花容易养花难的问题暴露出

1

河南理工大学 2011毕业设计说明书

来,而养花最重要的问题就是浇水问题,研究表明花草80%以上的死亡由于浇水不及时引起,因此国内商家已经看到了这种需求潜力。目前这类小居家用品的厂家主要集中在广东,上海,浙江一带。现在市面上所出售的自动浇花器主要有以下几类:

⑴ 电子类自动浇花器

电子类自动浇花器又叫时控喷淋装置,系统构成为:主机(或者控制器)、主管(可以是花园管也可以是4/7mm的微喷淋管)、分水接头(3通、4通、5通、6通、分水器)、副管(3/5mm)喷淋管(雾化喷头、旋转喷头、折射雾化喷头等)。

电子类自动浇花器根据电源的不同分为交流电自动浇花器和电池自动浇花器两种。控制器的一般性能有:电磁阀控制;智能时控电路?微电脑芯片控制;适用电源为AC220V/50HZ;最适宜水压0.3-0.6Mpa;待机功率(4VA,浇水时<12VA);可控制连续作业时间是1分钟至168个小时;可每天自动完成十次以上浇水作业,可每天、隔天、隔多天自动循环进行浇水,手动自动两用;每天计时误差小于正负3秒;电器适应环境温度为-10~50℃;相对湿度<90%RH。

⑵ 玻璃、陶瓷类自动浇花器

玻璃、陶瓷类自动浇花器又叫自动渗水装置,它由本身材质的物理结构构成,根据器具的物理渗水原理完成自动浇灌,当自动浇水器内部存水,自身形成一定的压力,当遇到干燥的土壤,水就会自上而下的流出,当土壤湿润以后,会形成一个堵塞压力,从而导致水流速度变慢或者停止。器具工艺不同,效果也不一样,当然也因土壤的疏松情况决定器具内水流的速度。

当前传感器技术与单片机技术发展迅速,其应用逐步由工业、军事等领域向其他领域渗透,已经和我们的日常生活息息相关。而且智能家居概念也越来越受人们的推崇,因此,微电脑控制的电子类自动浇花系统有很好的发展前景。

1.3毕业设计所采用的研究方法和手段

本次毕业设计是设计一种单片机控制的自动浇水系统,实现室内盆花浇水的自动化

系统。该系统可对土壤的温湿度进行监控,并对作物进行适时、适量的浇水。其核心是单片机和温湿度传感器以及浇水驱动电路构成的检测控制部分。主要研究土壤湿度与浇水量之间的关系、浇灌控制技术及设备系统的硬件、软件编程各个部分。检测部分,单片机选用AT89C51单片机,温湿度传感器选用SHT11温湿度传感器。SHT-11采用COMSens专利传感器技术将温度湿度传感器、A/D转换器、数字接口、校准数据存储器、标准I2C

2

河南理工大学 2011毕业设计说明书

总线等电路全部集成在一个芯片内。软件选用C51语言编程。土壤温湿度传感器可将检测到的土壤温湿度模拟量放大转换成数字量通过单片机内程序控制精确的将温度与湿度分别显示在LCD显示屏上,同时通过单片机内的中断服务程序判断是否要给盆花浇水,若需浇水,则单片机系统发出浇水信号,并经放大驱动设备,开启电磁阀进行浇水,若不需浇水,则进行下一次循环检测。在浇水系统中也同时设计一个手动浇水部分,系统工作时通过设置键的按下与否来选择浇水系统的工作方式。土壤浇水驱动电路采用继电器开关电路,蓄水箱水位报警以及自动上水部分采用纯硬件控制。

3

河南理工大学 2011毕业设计说明书

2、AT89C51单片机

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh

Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2.1 AT89C51单片机的基本组成

AT89C51由一个8位的微处理器,128KB片内数据存储器RAM,21个特殊功能寄存器SFR,4KB片内程序存储器Flash ROM,64KB可寻址片内外统一编址的ROM,64KB可寻址片外的RAM, 4个8位并行I/O接口(P0—P3),一个全双工通用异步串行接口UART,两个16位的定时器/计数器,具有位操作功能的布尔处理机及位寻址功能的五个中断源、两个优先级的中断控制系统以及片内振荡器和时钟产生电路。其基本组成框图如图2-1所示。

图2-1 AT89C51的基本组成

4

河南理工大学 2011毕业设计说明书

2.2 AT89C51主要特性

AT89C51主要特性有: ·与MCS-51 兼容

·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路

2.3管脚说明

AT89C51的引脚图如图2-2所示。各引脚的具体说明如下: VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口 的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4

5

河南理工大学 2011毕业设计说明书

该指令设置显示开关/触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示状态。

D位为显示开/关的控制位。当D=1为显示设置,显示数据锁存器正常工作,显示屏上呈现所需的效果。此时在状态字中ON/OFF=0。当D=0为关显示设置,显示数据锁存器被清0,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态组中ON/OFF=1。

③ 显示起始行设置(display start line)格式:

1 1 L5 L4 L3 L2 L1 L0 该指令设置了显示起始行寄存器的内容。KS0108有64行显示的管理能力,该指令中L5~L0为显示起始行的地址,取值在0~3FH(1~64)范围内,它规定了显示屏上最顶一行所对的显示存储器的行地址。如果定时间间隔地,等间距地修改(如加一或减一)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。

④ 页面地址设置(set page(X address))格式:

1 0 1 1 1 P2 P1 P0 该指令设置了页面地址→X地址寄存器的内容。KS0108将显示存储器分成了8页,指令代码中P2~P0就是要确定当前所要的选择的页面地址,取值范围为0~7H,代表第1~8页。该指令规定了以后的读/写操作将在哪一个页面上进行。

⑤ 列地址设置(set Y address)格式:

0 1 C5 C4 C3 C2 C1 C0 该指令设置了Y地址计数器的内容,C5~C0=0~3FH(1~64)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行。Y地址计数器具有自动加一功能,在每一次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次。

页面地址的设置和列地址的设置将显示存储器单元唯一确定下来,为后来的显示数据的读/写作了地址的选通。

⑥ 写显示数据(write display data)该操作将8位数据写入先前已经确定的显示存储器的单元内,操作完成后列地址计数器自动加一。

⑦ 读显示数据(read display data)该操作将KS0108接口部的输出寄存器内容读出,然后列地址自动加一。

41

河南理工大学 2011毕业设计说明书

5.2.3 应用说明

用带中文字库的128×64显示模块时应注意以下几点:

① 欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。

② 显示ASCII字符过程与显示中文字符过程相同。不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空ASCII字符位置。

③ 当字符编码为2字节时,应先写入高位字节,再写入低位字节。

④ 模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF标志时BF需为“0”,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。⑤“RE”为基本指令集与扩充指令集的选择控制位。当变更“RE”后,以后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,无需每次均重设“RE”位。

5.2.4 LCD相关程序

⑴ 字库1 uchar code hzk[4][32]= {

/*-- 文字: 湿 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x10,0x60,0x02,0xCC,0x00,0x00,0x3E,0x2A,0xAA,0x2A,0xAA,0x2A,0x3E,0x00,0x00,0x00,

0x08,0x08,0xFE,0x01,0x40,0x42,0x4C,0x40,0x7F,0x40,0x7F,0x48,0x44,0x42,0x40,0x00,

/*-- 文字: 度 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,

0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,

42

河南理工大学 2011毕业设计说明书

/*-- 文字: 温 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,

0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,

/*-- 文字: 度 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,

0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,

}; ⑵ 字库2

uchar code num[10][16]= {

/*-- 文字: 0 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

/*-- 文字: 1 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*-- 文字: 2 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

/*-- 文字: 3 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,

/*-- 文字: 4 --*/

43

河南理工大学 2011毕业设计说明书

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,

/*-- 文字: 5 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,

/*-- 文字: 6 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,

/*-- 文字: 7 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

/*-- 文字: 8 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

/*-- 文字: 9 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,

};

⑶ 检查是否忙 void checkstate() {

uchar dat; RS=0; RW=1; do{

DATA=0x00; EN=1;

44

河南理工大学 2011毕业设计说明书

_nop_(); dat=DATA; EN=0; dat=0x80&dat;

}while(!(dat==0x00));

}

⑷ 写命令

sendcommand(uchar com) { checkstate(); RS=0; RW=0; DATA=com; EN=1; _nop_(); _nop_(); EN=0;

}

⑸ 设置页(X)地址 void setline(uchar page) { page=0xb8|page; sendcommand(page);

}

⑹ 设定显示开始行

void setstartline(uchar startline) { startline=0xc0|startline; sendcommand(startline);

}

⑺ 设定列(Y)地址

void setcolumn(uchar column) {

45

河南理工大学 2011毕业设计说明书

}

}

dat=dat<<1; SHT11_SCK=1; Delay(); SHT11_SCK=0;

⑹ 检测SHT11的响应信号(在第九个时钟周期) void SHT11_Answer() { }

⑺ 检测SHT11温湿度检测是否完毕 void SHT11_Test_Finish() { }

⑻ “写”程序:向SHT11的状态寄存器设置功能,command为REG_WRITE 0x06写寄存器,dat为设置SHT11的功能,可以设置检测的数据位数

void SHT11_Write_Register(uchar command ,uchar dat) {

SHT11_Start();

SHT11_Sendbyte(command); SHT11_Answer(); SHT11_Sendbyte(dat); SHT11_Answer(); }

while(SHT11_DATA==1); SHT11_SCK=1; Delay();

while(SHT11_DATA==1); SHT11_SCK=0; SHT11_DATA=1;

26

河南理工大学 2011毕业设计说明书

⑼ “读”程序:ommand为REG_READ 0x07//读寄存器,返回值为状态寄存器的值。位6显示当前检测完一次数据后电源供电情况:当位6为0时表明VDD>2.47V 当位6为1时表明VDD<2.47V即电量不足。位0表明当前的测量分辨率:当位0为1时表明测量精度:8位/湿度 12位温度,当位0为0时表明测量精度:12位湿度 14位温度 ,默认为0

uchar SHT11_Read_Register(uchar command) {

uchar dat; SHT11_Start();

SHT11_Sendbyte(command); SHT11_Answer();

dat=SHT11_Receivebyte(); SHT11_End(); return(dat); }

⑽ 设置SHT11检测功能,并返回相应的检测结果:command形参用于设定温度检测还是湿度检测,time形参用于设定检测过程中的等待时间,以确定检测结果的位数11ms/55ms/210ms 分别对应8位/12位/14位

uint SHT11_Measure(uchar command,uchar time) {

uint dat=0;

uchar data_high,data_low; SHT11_Start();

SHT11_Sendbyte(command); SHT11_Answer(); Delay_Ms(time); SHT11_Test_Finish();

data_high=SHT11_Receivebyte(); MCU_Answer();

data_low=SHT11_Receivebyte();

27

河南理工大学 2011毕业设计说明书

SHT11_End(); dat=(dat|data_high); dat=(dat<<8)|data_low; return(dat); }

⑾ 将检测到的数据转化为相应的温度数据:温度转换公式--T=d1+d2*Sot,公式中

的参数d1=-40,d2=0.01适用于14位测量精度

float SHT11_Convert_Tempeture14bit(uint dat) {

float tempeture1; tempeture1=-40+0.01*dat; if(tempeture1>100.0) {

flag_tempeture=1;

}

else if(tempeture1<0.0) {

flag_tempeture=1;

} else {

flag_tempeture=0;

}

return(tempeture1); }

⑿ 将检测到的数据转化为相应的湿度数据:相对湿度转换公式

RHline=C1+C2*SOrh+C3*SOrh*SOrh,

RHtrue=(tempeture-25)*(t1+t2*SOrh)+RHline

式中参数C1=-4,C2=0,0405,C3=-0.0000028,t1=0.01,t2=0.00008;适用于12位测

量精度

28

河南理工大学 2011毕业设计说明书

float SHT11_Convert_Humidity12bit(uint dat,float temp) {

// float RHline,RHtrue;

RHline=-4+0.0405*dat-0.0000028*dat*dat; RHtrue=(temp-25)*(0.01+0.00008*dat)+RHline; if(RHtrue<10.0) { flag_humidity=1;

} else {

flag_humidity=0; }

return(RHtrue); }

29

河南理工大学 2011毕业设计说明书

4、DS1302时钟芯片

DS1302是Dallas公司推出的高性能低功耗涓流充电时钟芯片。可通过简单的串行接口与单片机进行通信,光感应用于智能仪器、单片机系统和家用时钟电路等领域。

4.1 DS1302时钟芯片的简介

DS1302涓流充电计时芯片包含一个实时时钟/日历和31字节的静态RAM。它通过一个简单的串行接口与微处理器进行通信[8]。实时时钟/日历提供秒,分钟,小时,周,日期,月份和年的有关信息。对于少于31天的月份,每月月底的日期是自动调整的,包括对瑞年进行更正,时钟运行可采用24小时制或带AM/PM指示的12小时制。

同步串行通信简化了DS1302与微处理的接口。与时钟/RAM通信只需三根线:RST、I/O(数据线)及SCLK(串行时钟)。时钟/RAM数据的读/写以每次一个字节或多达31个字节的多字节模式传输。DS1302设计为低功耗工作,保持数据和时钟信息的功耗小于1uF。

4.2 引脚

DS1302的引脚(引脚图如图4-1所示)及功能简介如下:

图4-1 DS1302引脚图

第1、2脚:Vcc1、Vcc2电源。 第3脚:RST复位输入端。

30

河南理工大学 2011毕业设计说明书

第4脚:串行时钟输入端。 第5脚:数据输入/输出端。

第6、7脚:X1、X2是32.768kHz晶振输入/输出端。

4.3 命令字节

表4-1所示为命令字节格式。命令字节启动每个字节的数据传输。该MSB(第7位)必须为逻辑1.如果是0,写入DS1302操作将被禁用。第6位是逻辑1时指定RAM数据。第1至第5位规定特定寄存器作为输入还是输出。LSB(第0位)如果是逻辑0,指定一个写操作(输入);如果是逻辑1,执行一个读操作。命令字节总是从LSB(第0位)输入。

表4-1 DS1302命令字节

7 RAM 1 6 5 4 3 2 1 RD A4 A3 A2 A1 A0 0 SCLK W (1)RST及时钟控制

驱动RST输入高电平可启动所有的数据传输。RST输入起到两种功能:第一,RST启动控制逻辑,允许地址/字节序列访问移位寄存器。第二,RST信号提供了一种终止单字节或多字节数据传输的方法。

一个时钟周期是一个上升沿序列,紧跟着下降沿。对于数据输入,在时钟周期的上升沿时间,数据必须正确;在时钟周期的下降沿,数据位输出。如果RST输入低电平所有数据传输中止。I/O引脚变成高阻状态。数据的传输如图4-2所示。在上电时,RST必须是逻辑0,直到Vcc>2.0V.此外,当RST被驱动到逻辑1状态时,SCLK必须为逻辑0。

a)单字节传送

31

河南理工大学 2011毕业设计说明书

b) 多字节传送 图4-2 数据传送时序

(2)数据输入

继输入写命令字节的8个SCLK周期后,在接下来的8个SCLK周期的上升沿输入数据字节。如果有额外的SCLK周期,将被忽略。数据输入从位0开始。 (3)数据输出

继输入写命令的8个SCLK周期后,在接下来的8个SCLK周期的下降沿输出数据字节。请注意,将被传输的第一个数据位出现在命令字节最后一位被写入后的第一个下降沿。只要RST维持高电平,如有附加的SCLK的周期,将重新转发数据字节。此操作允许连续多字节模式读取能力。此外,I/O引脚在每个SCLK的上升沿都是三态的。数据输出开始于第0位。 (4)多字节模式

时钟/日历或由十进制存储单元31(地址/命令1至5=逻辑1)寻址的RAM寄存器可以为多字节模式。如上所述,第6位指定时钟或RAM和第0位指定读或写。在日历/时钟寄存器的地址9至31或RAM寄存器中的地址31不能存储数据。在多字节模式中,读或写开始于地址0的第0位。

当在多字节模式下写时钟寄存器时,必须按数据传输的次序写入首八个寄存器。然而,当在多字节模式写入RAM时,为了数据的传输,没有必要写入所有的31个字节。每个被写入的字节都将被传输到RAM,无论31个字节是否都被写入。 (5)DS1302内部寄存器

DS1302内部寄存器地址及数据分配情况如表4-2所示。

1)时钟/日历:时钟/日历包含在7个写/读寄存器中。数据以BCD码形式包含在时钟/日历寄存器中。

2)时钟暂停标志:秒寄存器的第7位定义为时钟暂停标志。当此位置1时,时钟振荡器停止,DS1302进入低功耗备用模式,电源消耗小于100nA。当此位置0时,时钟将启动。初始上电状态未定义。

3)AM-PM/12-24模式:DS1302能运行于12小时制或24小时制模式下。小时寄存器的第7位被定义为12或24小时模式选择位。当其处于高电平时,选择12小时模式。

32

河南理工大学 2011毕业设计说明书

在12小时模式下,第5位是AM/PM位,其为逻辑高电平表示PM。在24小时模式下,第5位是第二个10小时位元(20-23)小时。当12/24位被改变时,小时数据一定要被重新初始化。

表4-2 DS1302的日历、时钟寄存器及控制字

寄存器名 秒寄存器 分寄存器 命令字格式 取值范围 写操作 读操作 80H 82H 81H 83H 00-59 00-59 01-12 小时寄存器 84H 85H 00-23 01-28/ 日期寄存器 86H 87H 29/30/31 月份寄存器 星期寄存器 年份寄存器 写保护寄存器 涓流充电寄存器 时钟多字节寄存器 RAM多字节寄存器 88H 8AH 8CH 8EH 90H BEH FEH 89H 8BH 8DH 8FH 91H BFH FFH 01-12 01-07 00-99 — — — — WP TCS — — 0 0 0 0 0 0 10M 0 0 MONTH DAY YEAR 0 DS RS 0 0 10DATE DATE 24 7 CH 0 12/ 0 A/P 6 5 10SEC 10MIN 10 HR HR 4 3 2 1 0 SEC MIN 位 内 容 10YEAR 4)写保护位:控制寄存器的第7位是写保护位。首7位(第0至第6位)必须为0, 读取时始终读0。对时钟或RAM进行任何操作前,第7位必须为0。当写保护位为高电 平时,该位阻止对任何其他寄存器的写操作。初始的上电状态没有定义。因此,在写入 该器件之前,应清除WP位。

5)涓流充电寄存器:该寄存器控制DS1302的涓流特性。涓流充电选择(TCS)位(第 4至第7位)控制涓流充电器的选择。为了阻止意外使能,只有1010模式使能涓流充电 器。所有其他模式都禁用涓流充电器。DS1302上电时,涓流充电器被禁用。DS为二极 管选择位,RS为电阻选择位。

6)时钟/日历多字节模式:该时钟/日历命令字节指定多字节触发模式操作。在此

33

河南理工大学 2011毕业设计说明书

模式下,首8个时钟/日历寄存器可以从地址0的第0位开始被连续地读取或写入。当 指定写时钟/日历多字节模式时,如果写保护位被设置为高电平,将没有数据传送到8 个时钟/日历寄存器(包括控制寄存器)的任意一个。在多字节模式下,涓流充电器不 可用。

7)RAM:静态RAM是RAM地址空间中连续编址的31×8字节。

8)RAM多字节模式:RAM命令字节指定多字节模式操作。在此模式下,31个RAM寄存器从地址0的第0位开始被连续读取或写入。 (6)晶振的选择

32.768kHz的晶振可通过引脚2和3(X1、X2)直接连接至DS1302。所选定的晶振应该加一个6pF的负载电容。 (7)电源控制

Vcc1在单电源与电池供电的系统中提供低电源的电池备份。Vcc2在双电源系统中提供主电源,此时Vcc1连接到备份电源,以便在没有主电源,以便在没有主电源的情况下能保存时间信息以及数据。

DS1302由Vcc1 或Vcc2两者中较大者供电。它与单片机连接后,单片机便可读出其实时时间。连接示意图如图4-3所示[9]。

图4-3 DS1302与AT89C51连接图

4.4 DS1302的相关程序

DS1302的初始化、写入数据及读出数据的程序如下: ⑴ DS1302的头文件程序 sbit T_CLK=P1^5; sbit T_IO =P1^6; sbit T_RST=P1^7;

34

河南理工大学 2011毕业设计说明书

sbit ACC0=ACC^0; sbit ACC7=ACC^7;

⑵ DS1302读写程序:d 为写入的数据,无返回值 void RTInputByte(unsigned char d) {

unsigned char i; ACC = d;

for(i=8; i>0; i--) {

T_IO = ACC0; //相当于汇编中的 RRC T_CLK = 1; T_CLK = 0; ACC = ACC >> 1; } }

⑶ 从DS1302读取1Byte数据 (内部函数):ACC为返回值 unsigned char RTOutputByte(void) {

unsigned char i; for(i=8; i>0; i--) {

ACC = ACC >>1; //相当于汇编中的 RRC ACC7 = T_IO; T_CLK = 1; T_CLK = 0; }

return(ACC); }

⑷ 往DS1302写入数据:ucAddr为 DS1302地址, ucData为 要写的数据,无返回值void Write1302(unsigned char ucAddr, unsigned char ucDa)

35

本文来源:https://www.bwwdw.com/article/c1pd.html

Top