找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4268|回复: 0
收起左侧

自动浇水论文

[复制链接]
ID:334166 发表于 2018-5-20 14:09 | 显示全部楼层 |阅读模式
智能花盆自动浇水系统的设计_毕业设计说明书
河南理工大学 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
............................................................. 5 2.3管脚说明
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
计数器 ...................................................... 12 2.7 定时器/
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
5.3 SHT-11的状态寄存器 ........................................... 22 3.
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/50H;最适宜水压0.3-0.6Mpa;待机功率(4VA,浇水时,12VA);可控制连续Z
作业时间是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所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B64.tmp.png
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毕业设计说明书
TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此 作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口 当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八 位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写 时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址 信号和控制信号。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B84.tmp.png
2-2 AT89C51引脚图
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电 流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入口。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如表2-1所示。同时,P3口为闪烁编程和编程校验接收一些控制信号。
2-1 P3口的特殊功能
引脚 名称 功能说明 引脚 名称 功能说明 P3.0 RXD 串行输入口 P3.4 T0 记时器0外部输入 P3.1 TXD 串行输出口 P3.5 T1 记时器1外部输入 P3.2 外部中断0 P3.6 外部数据存储器写选通 INT0WR
P3.3 外部中断1 P3.7 外部数据存储器读选通 INT1RD
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位
6
河南理工大学 2011毕业设计说明书
字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
2.4 AT89C51单片机的存储器
在单片机中,存储器分为程序存储器ROM和数据存储器RAM,并且两个存储器是独立编址的。
AT89C51单片机芯片内配置有8KB(0000H,1FFFH)的Flash程序存储器和256字节(00H,FFH)的数据存储器RAM,根据需要可外扩到最大64KB的程序存储器和64KB的数据存储器,因此AT89C51的存储器结构可分为4部分:片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。如果以最小系统使用单片机,即不扩展,则AT89C51的存储器结构就较简单:只有单片机自身提供的8KB Flash程序存储器和256字节数据存储器RAM。
2-3给出了AT89C51单片机的存储器分布空间。左侧线框中为单片机自身提供的8KB Flash程序存储器和256字节数据存储器RAM。右侧为可扩展的64KB的程序存储器ROM和64KB的数据存储器RAM。
2.4.1 程序存储器
EAAT89C51单片机出厂时片内已带有8KB的Flash程序存储器,使用时,引脚要
7
河南理工大学 2011毕业设计说明书
按高电平(5V),这时,复位后CPU从片内ROM区的0000H单元开始读取指令代码,一直运行到1FFFH单元,如果外部扩展有程序存储器ROM,则CPU会自动转移到片外ROM空间2000H,FFFFH读取指令代码。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B94.tmp.png
2-3 存储器空间分布图
2.4.2 数据存储器
AT89C51单片机出厂时片内已带有256字节的数据存储器RAM,如果不够用,可以在片外扩展,最多可扩展64KB RAM。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B95.tmp.png
2-4 片内数据存储器的结构
8
河南理工大学 2011毕业设计说明书
单片机自带的数据存储器RAM结构如图2-4所示,此256字节单元(00H,FFH)的低128字节(00H,7FH)单元为用户使用区,高128字节(80H,FFH)单元为特殊功能寄存器SFR区。
片内数据存储器的00H,7FH单元又划分为3块:00H,1FH块是工作寄存器所用;20H,2FH块是位寻址功能的单元区;30H,3FH是普通RAM区。工作寄存器又分为4组,在当前的运行程序中只有一组是被激活的,谁被激活有程序状态寄存器PSW的RS1,RS0两位决定。
2.5 振荡电路和时钟
AT89C51芯片内部,有一个振荡电路和时钟发生器,引脚XTAL1和XTAL2之间接入晶体振荡器和电容后构成内部时钟方式。也可以使用外部振荡器,由外部振荡器产生的信号直接加载到振荡器的输入端,作为CPU的时钟源,称为外部时钟方式。采用外部时钟方式时,外部振荡器的输出信号接至XTAL1,XTAL2悬空。两种方式的电路连接如图2-5所示。大多数的单片机采用内部时钟方式,本次设计亦然。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B96.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BA7.tmp.png
(a)使用片内振荡器接法 (b)使用片外振荡器接法
2-5 AT89C51振荡器的连接方式
AT89C51单片机内部,引脚XTAL2和引脚XTAL1连接着一个高增益反相放大器,XTAL1引脚是反相放大器的输入端,XTAL2引脚是反相放大器的输出端。
f芯片内部的时钟发生器是一个二分频触发器,振荡器的输出为其输入,输出为osc
f两相的时钟信号(状态时钟信号),频率为振荡器输出信号频率的1/2。状态时钟osc
9
河南理工大学 2011毕业设计说明书
经三分频后为低字节地址锁存信号ALE,频率为振荡器输出信号频率的1/6,经六fosc分频后为机器周期信号,频率为/12。、一般取20,30pF的陶瓷电容器。 fCCosc12
2.6 AT89C51的中断系统
为了提高系统的工作效率,AT89C51单片机设置了中断系统,采用中断方式与外设进行数据传送。所谓“中断”,是指单片机在执行某一段程序的过程中,由于某种原因(如异常情况或特殊请求),单片机暂时中止正在执行的程序,而去执行相应的处理程序,待处理结束后,再返回到被打断的程序处,继续执行原程序的过程。 2.6.1 中断系统结构和中断控制
AT89C51有六个固定的可屏蔽中断源,分别是三个片内定时器/计数器溢出中断TF0、
INT0INT1TF1和TF2,两个外部中断(P3.2)和(P3.3),一个片内串行口中断TI或RI。6个中断源有两级中断优先级,可形成中断嵌套。它们在程序存储器中各有固定的中断入口地址,由此进入相应的中断服务程序。
引起6个中断源的符号、名称及产生的条件如下:
INT0:外部中断0,由P3.2端口线引入,低电平或下降沿引起;
INT1:外部中断1,由P3.3端口线引入,低电平或下降沿引起;
T0:定时器/计数器0中断,由T0记满回零引起;
T1:定时器/计数器1中断,由T1记满回零引起;
TI/RI:串行口I/O中断,串行端口完成一帧字符发送/接收后引起中断;
T2:定时器/计数器2中断,由T2记满回零引起。
在本次设计中采用了定时器/计数器0中断,它的中断控制寄存器包括定时器/计数器0、1控制寄存器TCON和中断允许控制寄存器IE。
? 定时器控制寄存器TCON
TCON是定时器/计数器和外部中断两者合用的一个可位寻址的特殊功能寄存器,它的格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
各控制位定义如下:
10
河南理工大学 2011毕业设计说明书
TF1:定时器/计数器1溢出中断请求标志位。当定时器/计数器1计数产生溢出时,由内部硬件置位TF1,向CPU响应中断并转向该中断服务程序执行时,由硬件内部自动TF1清0。
TR1:定时器/计数器1启动/停止位。由软件置位/复位控制定时器/计数器1的启动或停止计数。
TF0:定时器/计数器0溢出中断请求标志位。当定时器/计数器0计数产生溢出时,由内部硬件置位TF0,向CPU响应中断并转向该中断服务程序执行时,由硬件内部自动TF1清0。
TR0:定时器/计数器0启动/停止位。由软件置位/复位控制定时器/计数器0的启动或停止计数。
IE1:外部中断请求标志位。当CPU检测到INT0低电平或下降沿且IT1=1时,由内部硬件置位IE1标志位(IE1=1)向CPU请求中断,当CPU响应中断并转向该中断服务程序执行时,由硬件内部将IE1清0。
IE0:外部中断请求标志位。当CPU检测到INT0低电平或下降沿且IT0=1时,由内部硬件置位IE0标志位(IE0=1)向CPU请求中断,当CPU响应中断并转向该中断服务程序执行时,由硬件内部将IE0清0。
IT1:用软件置位/复位IT1来选择外部中断INT1是下降沿触发还是电平触发中断请求。当IT1置1时,则外部中断INT1为下降沿触发中断请求,即INT1端口由前一个机器周期的高电平跳变为下一个机器周期的低电平,则触发中断请求;当IT1复位清0,则INT1的低电平触发中断请求。
IT0:由软件置位/复位IT0来选择外部中断INT0是下降沿触发还是低电平触发中断请求,其控制原理同IT1。
? 中断允许控制寄存器
中断允许控制寄存器IE的格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
EA ET2 ES ET1 EX1 ET0 EX0
各控制位定义如下:
EA:中断总控制为。EA=1,CPU开中断,它是CPU是否响应中断的前提,在此前提下,如果某中断源的中断允许位置1,才能响应该中断源的中断请求。如果EA=0,无论哪个中断源有请求,CPU都不予回应。
11
河南理工大学 2011毕业设计说明书
ET2:定时器/计数器T2中断控制位,ET2=1,允许T2计数溢出中断;ET2=0,禁止T2中断。
ES:串行口中断控制位,ES=1,允许串行口发送/接收中断;ES=0禁止串行口中断。
ET1:定时器/计数器T1中断控制位,ET1=1,允许T1计数溢出中断;ET1=0,禁止T1中断。
EX1:外部中断1控制位,EX1=1,允许中断;EX1=0,禁止外部中断1中断。
ET0:定时器/计数器T0中断控制位,ET0=1,允许T0计数溢出中断;ET0=0,禁止T0中断。
[1]EX0:外部中断0控制位,EX0=1,允许中断;EX0=0,禁止外部中断0中断。 2.6.2 中断响应过程
CPU中断处理从响应中断、控制程序转向对应的中断矢量地址入口处执行中断服务程序,到执行返回(RETI)指令为止。中断响应可分为以下几个步骤:
? 保护断点,即保存下一个将要执行的指令的地址,把这个地址送入堆栈。
? 寻找中断入口,根据6个不同的中断源所产生的中断,中断系统必须能够正确地识别中断源,查找6个不同的入口地址。以上工作是由单片机自动完成的,与编程者无关。在6个入口地址处存放有中断处理程序。
?执行中断处理程序。
[2]?中断返回:执行完中断指令后,从中断处返回到主程序,继续执行。 2.7 定时器/计数器
AT89C51单片机内部设有两个16位可编程定时器/计数器,即定时器/计数器0和定时器/计数器1。除此之外还有一个可编程定时器/计数器2。
2.7.1定时器/计数器0和1简介
定时器/计数器0和1内部有一个计数寄存器(和),它实际上是一个累THxTLx
加寄存器进行加1计数。定时器和计数器共用这个寄存器,但定时器/计数器同一时刻只能工作在其中一种方式下,不可能既工作在定时器方式,同时又工作在计数器方式。这两个工作方式的根本区别是在于计数脉冲的来源不同。工作在定时器方式时,对振荡源12分频的脉冲计数,即每过一个机器周期(1个机器周期在时间上和12个振荡周期
12
河南理工大学 2011毕业设计说明书
的时间相等),计数寄存器中的值就加1。工作在计数器方式时,计数脉冲不是来自内部的机器周期,而是来自外部输入。对定时器/计数器0、定时器/计数器1,计数脉冲分别来自T0、T1引脚。当这些引脚上输入的信号产生高电平至低电平的负跳变时,计数寄存器的值就加1。单片机每个机器周期都要对对外部输入进行采样,如果在第一个周期采得的外部信号为高电平,在下一个周期采得的信号为低电平,则在再下一个机器
[1]周期,即第三个机器周期计数寄存器的值才增加1。
2.7.2 与定时器/计数器0和1相关的特殊功能寄存器
? 计数寄存器TH0、TL0和TH1、TL1
计数寄存器是16位的,再启动定时器时需要对它设定初始值。是计数寄存器THx的高8位,是计数寄存器的低8位。TH0、TL0对应T/C0,TH1、TL1对应T/C1。 TLx
? 定时器/计数器控制寄存器TCON
定时器/计数器控制寄存器TCON的格式如下:
TF1 TR1 TF0 TR1 IE1 IT1 IE0 IT0
TF1为T/C1的溢出标志,溢出时由硬件置1,进入中断后又由硬件自动清0。
TR1为T/C1的启动和停止位,由软件控制。置1时启动T/C1;清0时停止T/C1。
TF0和TR0的功能和使用方法以TF1、TR1类似,只是它们针对的是T/C0。
? 定时器/计数器方式控制寄存器TMOD
定时器/计数器方式控制寄存器TMOD的格式如下所示。它的控制位都是由软件控制的,其中高4位是针对T/C1的,低4位是针对T/C0的,其功能和使用方法相似。
GATE M1 M0 GATE M1 M0 C/TT/C
现在以T/C0来说明各控制位的使用方法:GATE是一个选通位,当GATE位置1时,
INT0T/C0受到双重控制,只有为高电平且TR0位置1是T/C0才开始工作,当GATE位
C/T清0时,T/C0仅受到TR0的控制。用来选择工作在定时器方式还是计数器方式。当
13
河南理工大学 2011毕业设计说明书
该位置1时工作在计数器方式,清0时工作在定时器方式。M1和M0联合起来用于选择操作模式,一共有四种操作模式,如表2-2所示。
2-2 操作模式
M1 M0 操作模式 计数器配置
0 0 模式0 13位计数器
1 0 模式2 自动重转载的8位计数器
1 0 模式2 自动重转载的8位计数器
1 1 模式3 T0分为两个8位计数器,T1停止计数
14
河南理工大学 2011毕业设计说明书
3、温湿度传感器
传统的模拟式湿度传感器需设计信号调理电路并要经过复杂的校准、标定过程,测量精度难以得到保证,且在线性度、重复性、互换性、一致性等方面往往不尽人意。为解决这些问题,瑞士Sensirion 公司推出了新一代基于CMOSensTM技术的数字式温湿度传感器。它很好地解决了温湿度传感器存在的上述问题,实现了数字式输出、免调试、免标定、
[3]免外围电路及全互换功能。
3.1 数字温湿度传感器SHT-11
数字温湿度传感器SHT—11采用COMSens专利传感器技术将温度湿度传感器、A/D
2转换器、数字接口、校准数据存储器、标准IC总线等电路全部集成在一个芯片内(其
[4]内部结构如图3-1所示)。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BB8.tmp.png
3-1 数字温湿度传感器SHT—11的内部结构图
由它的内部结构可看出SHT-11具有不同保护的“微型结构”检测电极系统与聚合物覆盖层组成了传感器芯片的电容,这样除保持了电容式湿敏器件的原有特性外还可抵御来自其它方面的影响。将温度传感器与湿度传感器结合在一起构成了一个单一的个体,这就使得测量精度提高并且可以精确得出露点,而不会产生由于温度与湿度传感器之间随温度梯度变化而引起的误差。而且将传感器元件、信号放大器、模/ 数转换器、OTP 校
2准数据存储器、IC 工业标准串行总线等,电路功能部件全部采用CMOS 技术与温湿度传感器一起放置在一个芯片内。这不仅使信号强度增加,更重要的是长期稳定性也得到增强,这对传感器系统是极为重要的。同时,模/ 数转换也在一个芯片内同时完成,这可使信号对噪声不敏感,尤其重要的是,在传感器芯片数据存储器内装载的针对每一只传感
15
河南理工大学 2011毕业设计说明书
器的校准数据保证了每一只传感器都有相同的功能,可以实现100%的互换。此外,。该传
2感器还具有IC 二线串行总线接口,这可使传感器方便的与任何类型的微处理器、微控制器接口相连,为温湿度的微机化测试带来极大的方便,这不仅能减少温湿度测试系统的开发时间,还可节约数字化接口的软硬件成本。
该传感器还有反应迅速、高精度、低功耗等优点。
3.2 SHT-11的传感器输出
[4]SHT-11的相对湿度绝对精度、温度精度和25?露点精度如图3-2(a),(c)所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BB9.tmp.png
(a)湿度绝对精度
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BBA.tmp.png
(b)温度精度
16
河南理工大学 2011毕业设计说明书
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BBB.tmp.png
(C)25?露点精度
3-2 相对湿度、温度和露点的精度曲线 3.2.1 湿度值输出
SHT-11可通过I2C 总线直接输出数字量湿度值,其相对湿度输出特性曲线如图3-2
所示。从中可以看出,SHT11 的输出特性呈一定的非线性,为了补偿湿度传感器的非线性
以获取准确数据,可按式(3-1)修正湿度值:
2,,RHlinear= ,, 3,1c,cSO,cSO12RH3RH式中,SORH 表示传感器相对湿度测量值,系数取值分别如下:
,612位时:; c,,4,c,0.0405,c,,2.8,10123
,48位时: 。 c,,4,c,0.648,c,,7.2,10123
3.2.2 温度值输出
温度传感器的线性非常好,可用下列公式(3-2)将温度数字输出转换成实际SHT-11
温度值T :
,,3,2T,d,dSO 12T
SO式中,表示传感器温度测量值。当电源电压为5V,温度传感器的分辨率为14位时,T
d,,40d,0.01d,,40d,0.04,;当温度传感器的分辨率为12位时,,。 1212
17
河南理工大学 2011毕业设计说明书
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BCB.tmp.png
3-3 相对湿度输出特性曲线
3.2.3 露点计算
空气的露点值可根据相对湿度和温度值由下面公式计算:
,,,,,,,,,,3,3lgEW,0.66077,7.5T/237.3,T,lgRH,2
,,,,,,,,,,,,3,4D,0.66077,lgEW,237.3/lgEW,8.16077P
,,EW式中,——饱和水蒸气压强(mmHg)
3.2.4 非线性校正及温度补偿
(3-1)为相对湿度的非线性补偿计算公式,对于单片机系统而言,计算量大而过复杂,下面给出简化的计算方法。
(1)线性 当系统对湿度测量精度要求不高时,可采用以下的线性计算公式。
,,,,3,5RHsimple,c,c,SO 12RH
c,c,0.5式中,。 12
(2)2×线性 当系统对湿度测量精度要求较高时,可采用以下的2×线性计算公式,即用最小的计算复杂性来提高精确度。
,,,,,,3,6RHreal,a,SO,b,256 式中,为8位湿度传感器输出湿度值。 SO
b,512b,512当时,,;当时,,。 0,SO,107a,143108,SO,255a,143
(3)温度补偿 上述湿度计算公式是按环境温度为25?进行计算的,而实际的测量
,,3,5温度值则在一定的范围内变化,所以应考虑湿度传感器的温度系数,可按式对环境
18
河南理工大学 2011毕业设计说明书
温度进行补偿。
,,,,,,,,,,RHture,T,25t,tSO,RHlinear3,712RH
当为12位时,,;当为8位时,,。 SOt,0.01t,0.00008SOt,0.01t,0.00128RH12RH12
3.3 SHT-11的特性
3.3.1 SHT-11的特点
SHT-11传感器的特点如下:
1)相对湿度和温度一体测量;
2)精确露点测量;
3)全量程标定,无需重新标定即可互换使用; 4)超快响应时间;
5)两线制数字接口(最简单的系统集成,较低的价格);
6)超小尺寸(7.5×5×2.5mm);
7)高可靠性(工业CMOS工业);
8)优化的长期稳定性;
9)可完全浸没水中;
10)基于请求式测量,因此低能耗; 11)具有湿度传感器元件的自检测能力; 12)传感器元件加热应用,亦可获得极高的精度和稳定性。
3.3.2 SHT的详细规格
1.相对湿度传感器(RH)的性能参数如下: 范围:0—100%RH;
精度:?3%RH(20—80%RH);
响应时间:?4s;
复现性:?0.1%RH;
分辨率:0.03%RH;
工作温度:,40?—,120?。
2.温度传感器(T)的性能参数如下:
19
河南理工大学 2011毕业设计说明书
范围:,40?—,120?;
精度:?0.5?(在25?时),?0.9?(在0—40?时);
响应时间:?20s;
复现性:?0.1?;
分辨率:0.01?。
3.电器数据
能耗:典型 30uW(@5V,12-bit,测量周期2秒)
典型 1uW(@2.4V,8-bit,测量周期2分);
供电范围:2.4V—5.5V;
检测电流:0.5mA;
待机电流:0.3uV。
3.4 SHT-11的引脚
SHT-11的引脚图如图3-4所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BCC.tmp.png
3-4 SHT-11的引脚图
引脚简介
引脚1—GND接地端;SHT-11的供电电压为0.4,5.5V,传感器上电后要等待11ms
以越过“休眠”状态。在此期间无需发送任何指令,电源引脚(VDD,GND)之间可增加
一个100uF的电容,用以去耦滤波。
引脚2—DATA双向串行数据线;SHT-11的串行接口,在传感器的读取及电源损耗方
面都做了优化处理。DATA三态门用于数据的读取。
20
河南理工大学 2011毕业设计说明书
引脚3—SCK串行时钟输入;用于微处理器与SHT-11之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小SCK频率。
引脚4—VDD电源端,0.4—5.5V电源
引脚5—8—NC空管脚
3.5 SHT-11的的内部命令与接口时序
3.5.1 SHT-11的内部命令
SHT-11 传感器共有5 条用户命令,具体命令格式见表3-1。在程序编程时根据命令编号来设定SHT-11的工作状态。例如:0x03设置SHT-11为温度测量,0x05是设置SHT-11
[5]为湿度测量。
3-1 SHT-11传感器命令列表
命令 编号 说明
测量温度 00011 温度测量
测量湿度 00101 湿度测量
读寄存器 00111 “读”状态寄存器
写寄存器 00110 “写”状态寄存器
重启芯片,清除状态记录器的错误
软启动 11110
记录11 毫秒后进入下一个命令 3.5.2 SHT-11的命令顺序及命令时序
1) 传输开始
初始化传输时,应发出“传输开始”命令,具体为SCK是高电平时,DATA 高电平变为低电平,并在下一个SCK为高时将DATA 升高。接着传输开始下一个命令,包含3个地址位(目前只支持“000”) 和5 个命令位,通过DATA 脚的ack 位处于低电位表示SHT11正确收到命令。
2) 连接复位顺序
如果与SHT11传感器的通讯中断,下列信号顺序会使串口复位:当使DATA线处于高电
21
河南理工大学 2011毕业设计说明书
平时,触发SCK9 次以上(含9 次) ,并发一个前述的“传输开始”命令。
3) 温湿度测量时序
当发出了温(湿) 度测量命令后,控制器就要等到测量完成后才开始动作。使用8/ 12/ 14 位的分辨率测量分别需要大约11/ 55/ 210 ms。为表明测量完成,SHT11会使DATA为低电平,此时控制器必须重新启动SCK,然后SHT11传送两字节测量数据与1字节CRC校验和到控制器,控制器必须通过使DATA为低来确认每一字节,通讯在确认CRC数据位后停止。如果没有用CRC28校验和,则控制器就会在测量数据LSB后,保持ack为高时停止通讯,SHT11在测量和通讯完成之后会自动返回睡眠模式。需要注意的是,为使SHT11温升高低于0.1?,则此时工作频率不能大15%(如:12 位精确度时,每秒最多进行3 次测量)。测量温度和测量湿度命令所对应的时序如图3-4所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BCD.tmp.png
3-4 测量温湿度时序图
4) 加热控制
将传感器芯片中的加热开关接通,传感器温度大约增加5 ?,加热用途如下:其一,通过对启动加热器前后的温、湿度进行比较,可以正确地区别传感器的功能;其二,在相对湿度较高的环境下,传感器可通过加热来避免冷凝。
5) 低电压检测
SHT11的工作极限功能可以检测VDD电压是否低于2.45V,准确度为?0.1V。
3.4.3 SHT-11的状态寄存器
SHT-11的状态寄存器的类型及其说明见表3-2。
3-2 SHT-11状态寄存器及说明
类型 说明 缺省 说明
7 保留 0
6 读 工检限 X
5 保留 0
4 保留 0
22
河南理工大学 2011毕业设计说明书
续表
类型 说明 缺省 说明
3 只用于试验,不可以使用 0
2 读/写 加热 0 关
1 读/写 不从OTP重下载 0 重下载
‘1’—8位相对湿度,12位温度分辨
0 读/写 率;‘0’—12位相对湿度,14位温 0 12位相对湿度,14温度
分辨率
3.6 硬件接口
SHT-11与单片机接口构成的温湿度测量电路,如图3-5所示 。因SHT-11内部集成
[6]了A/D转换器、数字接口等,在与单片机连接时就不需要再外接转换部件。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BCE.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BDF.tmp.png
3-5 SHT-11与单片机接口 图3.2 DS1302与单片机连接
3.7 恢复处理
置于极限工作条件下或化学蒸汽中的传感器,经过在80,90?(176,194F)和,5,RH的湿度条件下保持24小时(烘干),随后在20,30?(70,90F)和,74,RH的湿度条
[7]件下保持48小时以上(重新水和)的处理后可使其恢复到刚校准时的状态。
通过上面的论述可见SHT-11数字式温湿度传感器完全符合对土壤温湿度检测的要求。
23
河南理工大学 2011毕业设计说明书
3.8 SHT-11的相关程序
? SHT11端口定义
sbit SHT11_DATA=P2^6; sbit SHT11_SCK=P2^5; uchar flag_tempeture=0; //显示温度位置的标志 uchar flag_humidity=0; //显示湿度位置的标志 //uchar dat;
uint i,temp1,temp2,dat=0,count;
float tempeture1;
float RHline,RHtrue; void delay(uint m) {
while(m--);
}
? SHT11内部延时
void Delay()
{
;
;
}
? SHT11检测等待延时:11ms/55ms/210ms 分别对应8位/12位/14位 测量结果,
对应的形参为N 则延时Nms
void Delay_Ms(uint ms) {
uint i,j;
for(i=ms;i>0;i--)
for(j=112;j>0;j--); }
? SHT11启动时序
void SHT11_Start()
24
河南理工大学 2011毕业设计说明书
{
SHT11_SCK=1;
SHT11_DATA=1;
Delay();
SHT11_DATA=0;
Delay();
SHT11_SCK=0;
Delay();
SHT11_SCK=1;
Delay();
SHT11_DATA=1; }
? 向SHT11发送8bite数据
void SHT11_Sendbyte(uchar dat)
{
uchar i;
SHT11_SCK=0;
Delay();
for(i=0;i<8;i++)
{
if(dat&0x80)
{
SHT11_DATA=1;
Delay();
}
else
{
SHT11_DATA=0;
Delay();
}
25
河南理工大学 2011毕业设计说明书
dat=dat<<1;
SHT11_SCK=1;
Delay();
SHT11_SCK=0;
}
}
? 检测SHT11的响应信号(在第九个时钟周期)
void SHT11_Answer()
{
SHT11_SCK=1;
Delay();
while(SHT11_DATA==1);
SHT11_SCK=0;
SHT11_DATA=1;
}
? 检测SHT11温湿度检测是否完毕
void SHT11_Test_Finish()
{
while(SHT11_DATA==1);
}
? “写”程序:向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();
}
26
河南理工大学 2011毕业设计说明书
? “读”程序:ommand为REG_READ 0x07//读寄存器,返回值为状态寄存器的值。位6显示当前检测完一次数据后电源供电情况:当位6为0时表明VDD>2.47V 当位6为1时表明VDD<2.47V即电量不足。位0表明当前的测量分辨率:当位0为1时表明测
湿度 12位温度,当位0为0时表明测量精度:12位湿度 14位温度 ,量精度:8位/
默认为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小时制。
RST同步串行通信简化了DS1302与微处理的接口。与时钟/RAM通信只需三根线:、I/O(数据线)及SCLK(串行时钟)。时钟/RAM数据的读/写以每次一个字节或多达31个字节的多字节模式传输。DS1302设计为低功耗工作,保持数据和时钟信息的功耗小于uF。 1
4.2 引脚
DS1302的引脚(引脚图如图4-1所示)及功能简介如下:
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BE0.tmp.png
4-1 DS1302引脚图
1、2脚:Vcc1、Vcc2电源。
RST第3脚:复位输入端。
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 6 5 4 3 2 1 0
RAM RD
1 A4 A3 A2 A1 A0
SCLK W
RST(1)及时钟控制
RSTRSTRST驱动输入高电平可启动所有的数据传输。输入起到两种功能:第一,
RST启动控制逻辑,允许地址/字节序列访问移位寄存器。第二,信号提供了一种终止单字节或多字节数据传输的方法。
一个时钟周期是一个上升沿序列,紧跟着下降沿。对于数据输入,在时钟周期的上
RST升沿时间,数据必须正确;在时钟周期的下降沿,数据位输出。如果输入低电平所
RST有数据传输中止。I/O引脚变成高阻状态。数据的传输如图4-2所示。在上电时,
RST必须是逻辑0,直到Vcc>2.0V.此外,当被驱动到逻辑1状态时,SCLK必须为逻辑0。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BE1.tmp.png
a)单字节传送
31
河南理工大学 2011毕业设计说明书
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BF2.tmp.png
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的日历、时钟寄存器及控制字
寄存器名 命令字格式
取值范围
写操作 读操作 7 6 5 4 3 2 1 0
秒寄存器 80H 81H 00-59 CH 10SEC SEC
分寄存器 82H 83H 00-59 0 10MIN MIN
01-12 12/ 10
小时寄存器 84H 85H 0 HR HR
00-23 24 A/P
01-28/
日期寄存器 86H 87H 0 0 10DATE DATE
29/30/31
月份寄存器 88H 89H 01-12 0 0 0 10M MONTH
星期寄存器 8AH 8BH 01-07 0 0 0 0 0 DAY
年份寄存器 8CH 8DH 00-99 10YEAR YEAR
写保护寄存器 8EH 8FH — WP 0
涓流充电寄存器 90H 91H — TCS DS RS
时钟多字节寄存器 BEH BFH — —
RAM多字节寄存器 FEH FFH — —
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两者中较大者供电。它与单片机连接后,单片机便可读出
[9]其实时时间。连接示意图如图4-3所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BF3.tmp.png
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
河南理工大学 2011毕业设计说明书
{
T_RST = 0;
T_CLK = 0;
T_RST = 1;
RTInputByte(ucAddr); // 地址,命令
RTInputByte(ucDa); // 写1Byte数据
T_CLK = 1;
T_RST = 0;
}
? 读取DS1302某地址的数据:ucAddr为DS1302地址,ucData为读取的数据,即
返回值
unsigned char Read1302(unsigned char ucAddr)
{
unsigned char ucData;
T_RST = 0;
T_CLK = 0;
T_RST = 1;
RTInputByte(ucAddr); // 地址,命令
ucData = RTOutputByte(); // 读1Byte数据
T_CLK = 1;
T_RST = 0;
return(ucData);
}
? 设置初始时间
void Set1302(unsigned char *pClock)
{
unsigned char i;
unsigned char ucAddr = 0x80;
Write1302(0x8e,0x00); // 控制命令,WP=0,写操作
for(i =7; i>0; i--)
36
河南理工大学 2011毕业设计说明书
{
Write1302(ucAddr,*pClock); // 秒 分 时 日 月 星期年
pClock++;
ucAddr +=2;
}
Write1302(0x8e,0x80); // 控制命令,WP=1,写保护 }
37
河南理工大学 2011毕业设计说明书
5、液晶显示器LCD
液晶显示器是一种低功耗液晶显示器件。工作电流小,适合于仪表和低功耗系统。常用的有笔画型液晶显示器、点阵字符型液晶显示器和图形点阵式液晶显示器。LCD液晶显示器的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,。有电就显示黑色,这样就显示出图形。液晶显示器适应于大规模电路直接驱动,易于实现全彩色显示的特点。目前被广泛应用于计算机,数字摄像机等众多领域。
5.1 液晶显示器的分类
[1]液晶显示器按显示图案的不同可分笔段型LCD、字符型LCD和点阵图型LCD三种。
(1) 笔段型
笔段型是以长条状作为基本单位显示。该类型主要用于数字显示,也可用于显示西文字符或某些字符。这种段型显示通常有6段、7段、8段、9段、14段和16段等,在形状上与数码管类似,总是围绕数字“8”的结构变化。其中以7段显示器常用,常用于数字仪表、电子仪器中。
2) 字符型 (
字符型液晶显示器是专门用来显示英文和其他拉丁文字母、数字、符号等点阵型液晶显示模块。它一般由若干个5×8或5×11点阵组成,每个点阵显示一个字符。这类模块一般应用于数字寻呼机、数字仪表等电子设备中。
(3) 点阵图形型
点阵图形型是在一平板上排列多行多列的矩阵式的晶格点,点的大小可根据显示清晰度来设计,可显示数字、字母、汉字、图像,甚至动画。这液晶显示器广泛应用于手机、笔记本电脑等需要显示大量信息的设备中。
5.2 AMPIRE 128×64
带中文字库的128×64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示。低电压低功耗是其又一显著特点。由该模
38
河南理工大学 2011毕业设计说明书
块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显
示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 在本次设计中要求显示温度值,湿度值的同时显示起表明作用的“温度”与“湿度”
两组汉字。因此选用点阵图形型的AMPIRE 128×64。它的基本特性如下: • 低电源电压(VDD:+3.0--+5.5V);
• 显示分辨率:128×64点;
• 内置汉字字库,提供8192个16×16点阵汉字(简繁体可选); • 内置 128个16×8点阵字符;
• 2MHZ时钟频率;
• 显示方式:STN、半透、正显;
• 驱动方式:1/32DUTY,1/5BIAS;
• 视角方向:6点;
• 背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10; • 通讯方式:串行、并口可选;
• 内置DC-DC转换电路,无需外加负压;
• 无需片选信号,简化软件设计;
• 工作温度: 0? - +55? ,存储温度: -20? - +60?。 5.2.1 LCD 128×64引脚功能
AMPIRE 128×64内置KS0108型图形液晶模块驱动,它的引脚功能表如表5-1所示。 逻辑工作电压:4.5V,5.5V;
电源地(GND):0V;
工作温度:0,60?(常温)/-20,70?(宽温)。
5-1 LCD 128×64引脚功能表
引脚号 引脚名称 电平 引脚功能描述 1 CS1/CS2 H/L 片选信号,芯片1/芯片2控制液晶左半屏/右半屏 2 GND 0V 电源地 3 V +5V 电源正 CC
4 V0 — 对比度(亮度)调整
39
河南理工大学 2011毕业设计说明书
续表
引脚号 引脚名称 电平 引脚功能描述
RS=“H”,表示DB7,DB0为显示数据
5 RS H/L
RS=“L”,表示DB7,DB0为显示指令数据
R/W=“H”,E=“H”,数据被读到DB7,DB0
6 R/W H/L
R/W=“L”,E=“L”, DB7,DB0的数据被写到IR或DR
7 E H/L 使能信号
8 DB0,DB7 H/L 三态数据线
9 H/L 复位端,低电平有效 RST
10 VOUT — LCD驱动电压输出端 5.2.2 KS0108控制器指令功能
KS0108控制器指令功能如表4-2所示。具体分析如下:
? 读状态字(read status)格式:
BUSY 0 ON/OFF RESET O 0 0 0
BUSY=1:表示KS0108正在处理计算机发来的指令或数据。此时接口电路被封锁,不能接受除状态字以外的任何操作。BUSY=0表示KS0108接口控制电路已处于“准备好”状态,等待计算机的访问。
ON/OFF:表示当前的显示状态。ON/OFF=1表示关显示状态;ON/OFF=0表示开显示状态。
RESSET:表示当前KS1008的工作状态,即反映RET端得电平状态。当RST为低电平状态时,KS0108处于复位工作状态,RESET=1;当RST为高电平状态时,KS0108为正常工作状态,RESET=0。
在占领设置和数据读写时要注意状态字中的BUSY标志。只有在BUSSY=0时,计算机对KS0108的操作才有效。因此计算机在每次对KS0108操作之前,都要读出状态字判断BUSY是否为“0”。若不为“0”,则计算机需要等待,直至BUSY=0为止。
? 显示开关(display on/off)格式:
0 0 1 1 1 1 1 D
40
河南理工大学 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,0x0
0,0x00,
0x08,0x08,0xFE,0x01,0x40,0x42,0x4C,0x40,0x7F,0x40,0x7F,0x48,0x44,0x42,0x40,0x0
0,
/*-- 文字: 度 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0
x00,
0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x
00,
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,0x0
0,
/*-- 文字: 5 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x0
0,
/*-- 文字: 6 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x0
0,
/*-- 文字: 7 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0
0,
/*-- 文字: 8 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x0
0,
/*-- 文字: 9 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x0
0,
};
? 检查是否忙
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毕业设计说明书
column=column&0x3f;
column=0x40|column;
sendcommand(column);
}
? 开关显示
void setonoff(uchar onoff) {
onoff=0x3e|onoff; //onoff=0or1;
sendcommand(onoff);
}
? 写显示数据
void writebyte(uchar dat) {
checkstate();
RS=1;
RW=0;
DATA=dat;
EN=1;
_nop_();
_nop_();
EN=0;
}
? 选择屏幕
void selectscreen(uchar screen) {
switch(screen)
{
case 0:cs1=0;_nop_();_nop_();_nop_();cs2=0;_nop_();_nop_();_nop_();break;
case 1:cs1=0;_nop_();_nop_();_nop_();cs2=1;_nop_();_nop_();_nop_();break;
case 2:cs1=1;_nop_();_nop_();_nop_();cs2=0;_nop_();_nop_();_nop_();break;
}
}
? 清屏
void clearscreen(uchar screen)
46
河南理工大学 2011毕业设计说明书
{
uchar i,j;
selectscreen(screen);
for(i=0;i<8;i++)
{
setline(i);
setcolumn(0);
for(j=0;j<64;j++)
{
writebyte(0x00);
}
}
}
? 初始化
void initlcd()
{
checkstate();
selectscreen(0);
setonoff(0);
selectscreen(0);
setonoff(1);
selectscreen(0);
clearscreen(0);
setstartline(0); }
? 显示全角汉字
void display(uchar x,uchar y,uchar j) //在(x,y)位置显示第J个字
{
uint i;
setline(x);
setcolumn(y);
for(i=0;i<16;i++)
{
47
河南理工大学 2011毕业设计说明书
writebyte(hzk[j]);
}
setline(x+1);
setcolumn(y);
for(i=0;i<16;i++)
{
writebyte(hzk[j][i+16]);
}
}
? 显示数字
void displaynum(uchar x,uchar y,uchar j) //在(x,y)位置显示第J个字
{
uint i;
setline(x);
setcolumn(y);
for(i=0;i<8;i++)
{
writebyte(num[j]);
}
setline(x+1);
setcolumn(y);
for(i=0;i<8;i++)
{
writebyte(num[j][i+8]);
}
}
48
河南理工大学 2011毕业设计说明书
6、盆花自动浇水系统的设计
该系统包括土壤温湿度检测与控制系统和蓄水箱自动上水系统两个系统。 6.1 土壤温湿度检测与控制
土壤温湿度检测与控制系统以单片机AT89C51为控制核心,通过软件设置达到具体动作实现。土壤的温湿度是由SHT-11数字温湿度传感器检测并送入单片机,通过单片机的I/O口把检测到的土壤温湿度值用LCD显示出来。同时,如果系统在智能浇水设置情况下,则该值与设定的浇水上下限值相比较,若低于下限值,则单片机发出一个控制信号控制电磁阀打开,开始浇水。若高于上限值时,单片机再发出一个控制信号控制电磁阀关闭,停止浇水。若果系统设置在手动浇水情况下,则按照设定好的定时浇水时间以及浇水的量进行浇水,SHT-11把检测到的土壤温湿度值显示在LCD上,以达到对土壤温湿度实时监测的目的。具体系统设计框图如图6-1所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C03.tmp.png
6-1 自动浇水系统设计框图
6.1.1 硬件电路设计
土壤温湿度检测与控制系统由AT89C51单片机、SHT-11数字温湿度传感器、LCD显示屏、输入按键、二极管、三极管与电磁阀等组成。
在第三章中已经介绍过数字温湿度传感器SHT—11采用COMSens专利传感器技术将
2温度湿度传感器、A/D转换器、数字接口、校准数据存储器、标准IC总线等电路全部
49
河南理工大学 2011毕业设计说明书
集成在一个芯片内,因此在与单片机连接时不需要模/数转换器,只需要将DATA与SCK两个引脚连接到单片机的I/O口上即可。
对于LCD显示屏将DB0,DB7通过排阻RESPACK8连接到单片机的P0.0,P0.7上,E、R/W、RS与P2.0、P2.1、P2.2,片选CS1、CS2与P2.3、P2.4连接。
(1) 键盘
在单片机控制系统中可以通过键盘输入数据或命令。键盘是由一组常开的按键组成,每个按键都被赋予一个代码,称为键码。键码分为编码键盘和非编码键盘。编码键盘是通过一个编码电路识别闭合键的键码,非编码键盘是通过软件来识别键码。由于非编码键盘的硬件电路简单,用户可以方便的改变键的数量,因此在单片机系统中应用广泛。
非编码键盘可以分为独立式键盘和行列式键盘两种结构形式。行列式键盘是将I/O线的一部分作为行线,另一部分作为列线,按键设置在行线和列线的交叉点上,这种结构形式的键盘适用于键数较多的场合,但硬件电路结构较复杂。独立式非编码键盘中每一按键都独立地占用一条数据线,当一按键闭合时,相应的I/O线变为低电平。如图6-2所示为处于常开状态的独立式键盘,当按键闭合时I/O线为低电平,当按键为常态时I/O线为高电平。由于机械触点的弹性作用,触点在闭合和弹开瞬间的电接触情况不稳定,造成电压信号的抖动,如图6-3所示。键的抖动时间一般为5,10ms。为了避免一次闭合引起的CPU多次处理,就要采用措施消除抖动。去抖动的方法有硬件去抖和软件去抖两种方法。硬件去抖一般采用双稳态去抖电路(如图6-4所示)。软件消抖方法是在CPU检测到有键按下是,延时10,20ms,再次检测该键电平是否仍保持闭合状态,如果保持闭合状态,则确认有键按下,否则从头检测。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C14.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C15.tmp.png
6-2 按键输入电路 图6-3 电压抖动
50
河南理工大学 2011毕业设计说明书
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C25.tmp.png
6-4 单稳态去抖电路
在本次设计中用到的键数较少,为了简化硬件电路,选用独立式非编码键盘,并采用软件消抖的方法来消除按键抖动。
(2) 电磁阀
电磁阀(solenoid valve)使用电磁铁操纵阀芯移动的阀,用在工业控制系统中调整介子的方向、流向、速度和其他的参数。电磁阀是用电磁效应进行控制的,主要的控制方式由继电器控制。这样,电磁阀可以配合不同的电路来实现预期的控制。控制的精度和灵活性都能够保证。它的工作原理是:电磁阀里有密闭的腔,在不同的位置开有通孔,每个通孔都可以通向介质流通的通道,腔中间是阀,两面是两块电磁铁,哪面的磁铁线圈通电阀体就会被吸到哪边,通过控制阀体的移动来挡住或漏出不同的介质流通通道。
电磁阀从原理上分为三大类:
)直动式电磁阀 1
直动式电磁阀在通电时,电磁线圈产生电磁力把关闭件从阀座上提起,阀门打开;断电时,电磁力消失,弹簧把关闭件压在阀座上,阀门关闭。它的特点是在真空、负压、零压是能正常工作,通径一般不超过25mm。
2)先导式电磁阀
先导式电磁阀在通电时,电磁力把先导孔打开,上腔室压力迅速下降,在关闭件周
51
河南理工大学 2011毕业设计说明书
围形成上低下高的压差,流体压力推动关闭件向上移动,阀门打开;断电时,弹簧力把先导孔关闭,入口压力通过旁通孔迅速在腔室关闭件周围形成下地上高的压差,流体压力推动关闭件向下移动,关闭阀门。它的特点是流体压力范围上限较高,可任意安装(需定制)但必须满足流体压差条件。
3)分布直动式电磁阀
分布直动式电磁阀是一种直动和先导式相结合的原理结构,当入口与出口没有压差时,通电后,电磁力直接把先导小阀和主阀关闭件依次向上提起,阀门打开。当入口与出口达到启动压差时,通电后,电磁力先导小阀,主阀下腔压力上升,上腔压力下降,从而利用压差把主阀向上推开;断电时,先导阀利用弹簧力或介质压力推动关闭件向下移动,使阀门关闭。它的特点是在零压差、真空或高压时亦能动作,只是功率较大,要求必须水平安装。
本次设计的是盆花的自动浇水系统,根据盆花每次的需水量并不大,通径选取20mm左右就能满足要求,而且浇水的时间远比不交水的时间长,所以应选用常闭型,即通电打开,断电关闭。综上所述,在本次设计中采用常闭型的直动式电磁阀,不仅控制电路简单而且经济适用。
(4) 电路连接
5所示。具体的土壤温湿度检测控制系统硬件电路连接如图6-
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C26.tmp.png
(a)土壤温湿度检测显示电路
52
河南理工大学 2011毕业设计说明书
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C27.tmp.png
(b) 浇水驱动电路
6-5 土壤温湿度检测控制电路
在浇水控制电路中,当P1.0口输出高电平时,三极管的发射结正偏,集电结反偏,处于放大状态。由单片机输出的电压经三极管放大后驱动电磁阀动作。在电路中二极管作保护,用以防止过电压。
6.1.2 系统软件设计
土壤温湿度检测与控制系统有自动和手动两种浇水方法。通过设置键来选择浇水方式,若设置键按下则为手动浇水方式,否则为智能浇水方式。手动浇水时,由单片机向时钟芯片DS1302读取实时时间,若与设定的定时浇水的时间相符,则单片机执行定时器/计数器0中断程序,完成定量浇水。智能浇水时,传感器起感应作用,当传感器把感应到的土壤温湿度信号传给单片机,由控制程序判断是否需要进行浇水,若需要浇水,单片机输出高电平打开电磁阀,给植物浇水。当浇了足量的水,传感器感应到后,把信号传给单片机判断,单片机再发出信号让电磁阀闭合。由此,实现了智能浇水,浇水的上下限由程序编程时设定。
土壤温湿度的检测后在LCD液晶屏上显示由定时器/计数器1中断实现。
在本次设计中定时器/计数器0、1均工作在计数器方式的模式1。为方便时间计算设定中断一次为50ms,这样计数20次就是一秒。可以以此类推计算出所要设定的时间。
53
河南理工大学 2011毕业设计说明书
计数初值为;。 ,,,,TH,65536,50000/256,61TL,65536,50000%256,176XX
主程序和智能浇水与手动浇水子程序如下:
main()
{
int i,j;
if (button==0) //检测P3^0口按键是否按下
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(button==0)
{
hand_out();
else(button==1)
auto();
}
}
}
(1) 智能浇水子程序
对于一般花卉来讲,四季的供水量是:每年开春后气温逐渐升高,花卉进入生长旺期,浇水量是逐渐加多。早春浇水宜在午前进行。夏季气温高,花卉生长旺盛,蒸腾作用强,浇水量应充足。夏季浇水宜在晨、夕进行。立秋后气温渐低,花卉生长缓慢,适当少浇水。冬季气温低,许多花卉进入休眠或半休眠期,要控制浇水,盆土不太干就不要浇水,以免因浇水过多而烂根、落叶,影响明年生长开花。冬季浇水宜在午后1,2时进行。
void auto()
{
dat=SHT11_Measure(TEM_TEST,210);//14位
tempeture1=SHT11_Convert_Tempeture14bit(dat);
dat=SHT11_Measure(HUM_TEST,55);//12位
RHtrue=SHT11_Convert_Humidity12bit(dat,tempeture1);
temp1=tempeture1;
54
河南理工大学 2011毕业设计说明书
temp2=RHtrue;
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET1=1;
TR1=1;
selectscreen(2);
display(0,0,2);
display(0,16,3);
display(2,0,0);
display(2,16,1);
while(1)
{
temp1=tempeture1;
temp2=RHtrue;
displaynum(0,40,temp1%10);
displaynum(0,32,temp1/10);
displaynum(2,40,temp2%10);
displaynum(2,32,temp2/10);
if(temp2<=60)
{
b=1;
P10=b;
}
else if(temp2>=95)
55
河南理工大学 2011毕业设计说明书
{
b=0;
P10=b;
}
}
}
void time1() interrupt 1 {
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
if(count==20) //1s检测一次
{
count=0;
dat=SHT11_Measure(TEM_TEST,210);//14位
tempeture1=SHT11_Convert_Tempeture14bit(dat);
dat=SHT11_Measure(HUM_TEST,55);//12位
RHtrue=SHT11_Convert_Humidity12bit(dat,tempeture1);
}
}
) 手动浇水子程序 (2
在于单片机中,定时中断0的优先级高于定时中断1的优先级。当这两个中断同时
发出中断请求时,单片机先响应定时中断0,当ET0=0后再开始执行定时中断1服务子
程序。手动浇水就是由这两个中断程序嵌套完成的。 void hand_out(void)
{
int n;
void WATER1(void);
56
河南理工大学 2011毕业设计说明书
void WATER2(void);
void WATER3(void);
void WATER4(void);
dat=SHT11_Measure(TEM_TEST,210);//14位
tempeture1=SHT11_Convert_Tempeture14bit(dat);
dat=SHT11_Measure(HUM_TEST,55);//12位
RHtrue=SHT11_Convert_Humidity12bit(dat,tempeture1);
temp1=tempeture1;
temp2=RHtrue;
TMOD=0x01;
TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1;
ET1=1;
TR1=1;
selectscreen(2);
display(0,0,2);
display(0,16,3);
display(2,0,0);
display(2,16,1);
while(1)
{
temp1=tempeture1;
temp2=RHtrue;
displaynum(0,40,temp1%10);
displaynum(0,32,temp1/10);
displaynum(2,40,temp2%10);
57
河南理工大学 2011毕业设计说明书
displaynum(2,32,temp2/10);
n=read(0x89); //读取DS1302的月份数据
if(3<=n<=5)
WATER1();
else if(6<=n<=8)
WATER2();
else if(9<=n<=11)
WATER3();
else if(n==1||n==2||n==12)
WATER4();
}
}
}
void WATER1(void)
{
int h,m,s,c;
unsigned icount;
h=read(0x85); //读取DS1302小时数据
m=read(0x83); //读取DS1302分钟数据
s=read(0x85); //读取DS1302秒数据
if (c==8&&m==0&&s==0)
{
b=1;
P10=b;
icount=0; //T/C0溢出初始值
TMOD=0x01;
TH0=(65536-50000)/256; //T/C0装载计数初值
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
58
河南理工大学 2011毕业设计说明书
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==12000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
else if (c==11&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==18000)
{
icount=0;
59
河南理工大学 2011毕业设计说明书
b=0;
P10=b;
ET0=0;
}
}
}
}
void WATER2(void)
{
int h,m,s,c;
unsigned icount;
h=read(0x85); //读取DS1302小时数据
m=read(0x83); //读取DS1302分钟数据
s=read(0x85); //读取DS1302秒数据
if (c==8&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==12000)
{
icount=0;
60
河南理工大学 2011毕业设计说明书
b=0;
P10=b;
ET0=0;
}
}
}
else if (c==18&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==24000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
}
void WATER3(void)
61
河南理工大学 2011毕业设计说明书
{
int h,m,s,c;
unsigned icount;
h=read(0x85); //读取DS1302小时数据
m=read(0x83); //读取DS1302分钟数据
s=read(0x85); //读取DS1302秒数据
if (c==8&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
=1; ET0
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==3000)
{
icount=0;
b=0;
P10=b;
Et0=0;
}
}
}
if (c==11&&m==0&&s==0)
{
62
河南理工大学 2011毕业设计说明书
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==6000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
}
void WATER4(void)
{
int h,m,s,c;
unsigned icount;
h=read(0x85); //读取DS1302小时数据
m=read(0x83); //读取DS1302分钟数据
s=read(0x85); //读取DS1302秒数据
if (c==13&&m==0&&s==0)
{
63
河南理工大学 2011毕业设计说明书
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==6000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
else if (c==15&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
64
河南理工大学 2011毕业设计说明书
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==12000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
}
6.2 蓄水箱自动供水系统
蓄水箱自动供水系统的控制对象为水泵,容器为蓄水箱。水位高度正常情况下控制在C、D之间,如图6-6a所示;当水位低于C点时,水泵开始进水,如图6-6b所示;当水位高于D点时,水泵停止进水,如图6-6c所示;当水位低于C点并达到B点时就报警,采取手动启动水泵,如图6-6d所示;当水位高于D点并达到E点时上限报警,采取强制停止水泵进水,如图6-6e所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C38.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C39.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C3A.tmp.png
(a) (b) (c)
65
河南理工大学 2011毕业设计说明书
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C3B.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C3C.tmp.png
(d) (e)
6-6 设计分析示意图
6.2.1基本的导电理论
电子流动的方式可运用于液体上。液体流过管道与电子流过一个电阻类似(如图6-7所示)。引起电流流动的力被称为电动势EMF。电池、发动机或电站可提供电动势。电池有正负极,如果在两极之间连接导线则有电流流动。水系统的泵作为压力源类似于电池。在电动势(EMP)源的两极测量电动势差为电压,电压高(压力)则电流(流量)大。上水系统中管道和阀门产生的阻力类似于电流流过电路的电阻。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C4D.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C4E.tmp.png
电压(V)=泵压(m扬程)
电流(A)=流率(L/s)
电阻(Ω)=阀门流阻(kPa)
6-7 水循环和电路的类比
66
河南理工大学 2011毕业设计说明书
6.2.2系统工作原理
在本次设计中采用纯硬件控制电路,利用555定时器的定时与驱动功能制作一个性能可靠、成本低的蓄水箱自动供水系统。该系统主要分为模拟检测和逻辑判断两大块,如图6-8所示。模拟检测实际上测量的是B、C、D、E四个探头相对于A点(即地)电位的到底,在水箱里的四个探头B、C、D、E各点和A点之间实际上就相当于一个可变的电阻。当电阻值发生变化时,各点的位值不同,再通过逻辑判断及可以得到不同的输出,以达到操作控制不同的动作。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C4F.tmp.png
6-8 系统框图
6.2.3 系统硬件组成
该系统由导电率探头,555定时器、蜂鸣器、放大器和与非门电路等组成。
(1)导电率探头
对于一个盛水的开式水箱,一个探头(金属棒)悬吊在水箱上(如图6-9所示),如果加载电压而且电路上串联电流表,可以看到:探头浸入水中,电路有电流通过;探头脱离水面,电流消失。
这是导电率探头的基本原理,当水位接触了探头尖部,就通过相连的控制器触发一个动作。如启动或停止水泵,打开或关闭阀门,触发报警警铃与打开或关闭继电器等。但是一个探头仅能提供一个单一的作用点,因此,为了在预设的水位开关水阀和发出报警信号等就需要选择多个长短不一的导电率探头组合在一起。不过这一点对于导电率探头是相当易于实现的,因为其在安装时可截断到需要的长度。
67
河南理工大学 2011毕业设计说明书
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C50.tmp.png
6-9 单导电探头工作原理
(2)555定时器
555定时器是一种模拟和数字功能相结合的中规模集成器件,电源电压范围宽,可在4.5V,16V工作。它的成本低,性能可靠,只需要外接几个电阻、电容就可以实现多
[16]谢振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C60.tmp.png
6-10 555定时器的内部电路框图
555定时器的内部电路框图如图6-10所示。它内部包含两个电压比较器、三个等值串联电阻、一个RS触发器、一个放电管T及功率输出级,并提供两个基准电压VCC/3和2VCC/3。其引脚排列如图6-11所示,各引脚功能如下:
引脚1—外接电源负端VSS或接地,一般情况下接地;
引脚2—低触发端;
68
河南理工大学 2011毕业设计说明书
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C71.tmp.png
6-11 555定时器引脚图
引脚3—输出端V;
引脚4—直接清零端。当该端接低电平,则时基电路不工作,此时不论、TH处于何电平,时基电路输出为“0”,该端不用时应接高电平。
引脚5—VC为控制电压端。若此端外接电压,则可改变内部两个比较器的基准电压,当此端不用时,应将该端串入一只0.01uF电容接地,以防引入干扰;
引脚6—TH高触发端;
引脚7—放电端。该端与放电管集电极相连;
引脚8—外接电源VCC,一般用5V。
555 定时器的功能主要由两个比较器决定。两个比较器的输出电压控制 RS 触发器和放电管的状态。在电源与地之间加上电压,当5脚悬空时,则电压比较器 C1的同相输入端的电压为 2VCC/3,C2的反相输入端的电压为VCC/3。若触发输入端TR的电压小于VCC/3,则比较器C2的输出为 0,可使 RS 触发器置1,使输出端 OUT=1。如果阈值输入端 TH的电压大于2VCC/3,同时TR端的电压大于VCC/3,则C1的输出为0,C2的输出为1,可将RS触发器置0,使输出为0电平。根据555定时器的控制功能,可以制成各种不同的脉冲信号与处理电路,例如:施密特触发器、单稳态触发器、自激多谐振荡器等。其控制功能说明见表6-1。
69
河南理工大学 2011毕业设计说明书
6-1 555定时器控制功能表
输入 输出
TH TR R V DdOis
× × L L 导通
,2V/3 ,V/3 H H 截止 CCCC
,2V/3 ,V/3 H 不变 不变 CCCC
,2V/3 × H L 导通 CC
(3)蜂鸣报警器
蜂鸣器是一种一体化结构的电子讯响器,它主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5,15V 直流工作电压),多谐振荡器起振,输出1.5,2.5KHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
本次系统设计中采用的是电磁式蜂鸣器。蜂鸣片与555定时器通过一个三极管连接,通过555定时器的控制功能,使三极管周期性的导通从而使蜂鸣器振动发声。
6.2.4 系统电路连接
蓄水箱供水系统的硬件连接图如图6-12所示,包括水位监测电路,误动作判断电路,水位控制电路,电机开启或关闭和报警电路。
从图中可以看出,水位正常情况下应该保持在C、D范围之间,此时,B、C、D、E 4个探头的逻辑电平为0011,水箱水位处于保持状态;当水位低于C点,处于B、C之间时,B、C、D、E 4个探头的逻辑电平为0111,水箱水位处于进水状态;当水位高于D点,处于D、E之间时,B、C、D、E 4个探头的逻辑电平为0001,
70
河南理工大学 2011毕业设计说明书
水箱水位处于停进状态;当水位低于B点或高于E点,B、C、D、E 4 个探头的逻辑电平为1111或0000时,表明控制水位变化的电路出现了故障,水箱水位报警电路开始工作,产生下限报警或上限报警,即低报或高报,此时,需要人工手动关闭报警设备并启动或闭合控制电机。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C72.tmp.png
6-12 蓄水箱供水系统的硬件连接图
6.2.5 参数计算
水位指示灯部分令流过三极管T1、T2、T3、T4集电极的电流I为10mA,由: C
,,I,V,1.5/R,10mA, CCCC
RI,I/,,10mA/100,0.1mAR,V/I,10得=350Ω;取β=100,则因此KΩ。CBCBCCB
R但是在实际调试中,电阻值过小,所以选择=15KΩ。 B
6.2.6 水箱水位控制系统检测
水箱水位控制系统的测试,图6-13是水箱水位控制系统的外观正视图,由电源指示灯、报警确认灯、水位指示灯及报经确认开关组成。接通电源时,电源指示灯亮,当水箱中水深处于不同位置时,水位指示灯B、C、D、E状态不同,各状态如下:
71
河南理工大学 2011毕业设计说明书
(1)当水位处于B点之下,指示灯B、C、D、E全亮,报警电路开始报警,即下限 报警;
(2)当水位处于B、C之间,指示灯B灭,C、D、E亮,水泵开始进水;
(3)当水位处于C、D之间,指示灯B、C灭,D、E亮,保持状态,即保持进水;
(4)当水位处于D、E之间,指示灯B、C、D灭,E亮,停进状态,即水泵不工作;
(5)当水位处于E点之上,指示灯B、C、D、E全灭,水泵不工作,报警电路开始 溢出报警,集上限报警。
报警电路可以手动关闭,只要按下报经确认开关,就可以解除报警的蜂鸣声。此时,报经确认灯亮起。处理完故障时,必须关闭报警确认灯,报警电路复位,恢复其检测故障的功能。经过检测,水箱水位控制器符合设计的预定要求。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C73.tmp.png
6-13 水箱水位控制系统的外观正视图
此方案采用纯硬件电路设计,避免了软件程序设计中的不稳定因素,提高了实际运用中的可靠性。
72
河南理工大学 2011毕业设计说明书
7、总结
本次设计的盆花自动浇水系统以电子类的自动浇花器的工作原理为参考,运用现代传感器技术及单片机控制技术构成一个土壤温湿度采集与控制系统。再用数字电路控制自动给水系统及时的给浇水系统供水。整个盆花自动浇水系统包括土壤温湿度的检测和显示、自动浇水和蓄水箱自动上水及水位报警三个部分。土壤温湿度的检测和显示以温湿度传感器SHT-11为感应部件,将检测到的土壤温湿度值送入AT89C51单片机,再由单片机的I/O口输出到LCD液晶显示屏进行显。同时此湿度值也是是否给盆花浇水的参考值。自动浇水部分与土壤温湿度的检测和显示部分共同构成土壤温湿度的检测与控制系统。它设计为智能和手动两个部分:智能浇水部分是通过单片机程序设定浇水的上下限值并与SHT-11送入单片机的土壤湿度值相比较,当传感器检测到的湿度值低于设定的下限值时,单片机输出一个信号控制电磁阀打开,开始浇水,高于设定的上限值时再由单片机输出一个信号控制电磁阀关闭,停止浇水;手动部分是由单片机从时钟芯片DS1302读入月份与每天的实时时刻,通过软件程序设定定时浇水的时间与浇水的量。蓄水箱自动上水及水位报警采用纯硬件电路控制,实现水箱水位实时监测、自动上水以及水位上下限报警的功能。
通过本次毕业设计,让我进一步了解了微电脑控制的智能系统。也使我真正接触到了检测控制系统的设计,虽然是一个人们日常生活中的小系统,但也让我明白了很多设计上应该注意的问题。比如实用性、经济性以及安装条件等。
73
河南理工大学 2011毕业设计说明书
8、致谢
经过近三个月的时间,本次毕业设计已接近尾声。在这个过程中我遇到了许多的困难,有专业知识的不连贯,也有硬件选择时的实践经验不足等。不过,在老师和同学的帮助下,这些问题都得到了很好的解决。在这里,我要感谢指导老师赵彦如副教授在我做毕业设计的每个阶段,从查阅资料到设计草案的确定和修改,中期检查,后期详细设计等整个过程中所给予我悉心指导。感谢测控教研室的每一位老师对我的帮助。同时也要感谢我的同学将收集到的有关盆花自动浇水系统的资料给我,让我的设计有了更多的参考。
74
河南理工大学 2011毕业设计说明书
参考文献
[1] 李泉溪.单片机原理与应用实例仿真[M].北京:北京航空航天大学出版社,2009.8. [2] 曾光宇等.现代传感器技术与应用基础[M].北京:北京理工大学出版社,2006.3. [3] 李敏,孟臣.数字式温/湿度传感器及其应用技术[J].电子元器件应用,2004,(11). [4] 杨永杰,冯军.数字式温湿度传感器SHT11在尘埃检测仪中的应用[J].电子工程师,2005,(08). [5] 孙荣高,孙德超.数字温湿度数据记录仪的设计[J].现代电技术,2005,(7). [6] 黄鸿,吴石增.传感器及其应用技术[M].北京:北京理工大学出版社,2008.7. [7] 刘灿军.实用传感器[M].北京:国防工业出版社,2004.6.
[8] 王煜东.传感器应用电路400例[M].北京:中国电力出版社,2008.
[9] 孙惠芹.单片机项目设计教程[M].北京:电子工业出版社,2009.6. [10]贾宗璞,许合利.C语言程序设计[M].徐州:中国矿业大学出版社,20007.1. [11]唐文彦.传感器[M].北京:机械工业出版社,2006.7.
[12]宗光华,李大寨.多单片机系统应用技术[M].北京:国防工业出版社,2003.10. [13]王芳琴.单片机控制的节水灌溉系统的研究[J].华中农业大学.
单片机原理及实验/实训[M].西安:西安电子科技大学出版社,2009. [14]赵振德.
[15]顶轲轲.自动测量技术[M].北京:中国电力出版社,2004.
[16]艾永乐,付子仪.数字电子技术基础[M].北京:中国电力出版社,2008. [17]孙荣高,吕昂.微控制器温室环境温湿度程序控制系统的研究与设计[J].微计算机信息,2005,(10).
序号 名称 规格型号 单位 数量 备注 制冷系统 1 压缩机组 4AV10 台 4 2 冷凝器 LN-70 台 1 3 贮氨器 ZA-1.5 台 1 4 桶泵组合 ZWB-1.5 台 1 5 氨液分离器 AF-65 台 1 6 集油器 JY-219 台 1 7 空气分离器 KF-32 台 1 8 紧急泄氨器 JX-108 台 1 9 冷风机 KLL-250 台 8 10 冷风机 KLD-150 台 4 11 冷风机 KLD-100 台 2 12 阀门 套 86 13 电磁阀 套 6
75
河南理工大学 2011毕业设计说明书
14 管道及支架 吨 18.6 3 15 管道及设备保温 m22 16 管道保温包扎 镀锌板 吨 1.6 17 附件 套 1 二 气调系统 1 中空纤维制氮机 CA-30B 台 1 2 二氧化碳洗涤器 GA-15 台 1 3 气动电磁阀 D100 台 14 4 电脑控制系统 CNJK-406 台 1 5 信号转换器 8线 台 1 6 果心温度探头 台 7 37 库气平衡袋 5 m 个 7 8 库气安全阀 液封式 个 7 9 小活塞空压机 0.05/7 台 1 10 PVC管 套 1 11 附件 套 1 三 水冷系统 1 冷却塔 DBNL-100 台 2 3
2 水泵 SBL80-160I 台 2 3 水泵 SBL50-160I 台 2 4 阀门 套 30 5 管道及支架 吨 2.8 6 附件 套 1 四 电仪控系统 1 电器控制柜 套 1 2 照明系统 套 1 3 电线电缆 套 1 4 桥架管线 套 1 5 附件 套 1
76
河南理工大学 2011毕业设计说明书
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C84.tmp.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表