蔬菜大棚温度控制系统

合集下载

蔬菜大棚温湿度控制系统设计

蔬菜大棚温湿度控制系统设计

蔬菜大棚温湿度控制系统设计1. 引言蔬菜大棚是一种用于种植蔬菜的设施,其温湿度控制对于蔬菜的生长和产量具有重要影响。

为了提高蔬菜的质量和产量,设计一套高效可靠的温湿度控制系统是至关重要的。

本文将介绍一种基于现代控制理论和技术的蔬菜大棚温湿度控制系统设计。

2. 温湿度对蔬菜生长的影响温湿度是影响植物生长和发育的重要环境因素之一。

过高或过低的温湿度都会对植物生长产生负面影响。

在适宜范围内,适当调节温湿度可以促进光合作用、提高光能利用效率、增加养分吸收能力,并且有利于提高抗病虫害能力。

3. 温湿度控制系统设计原理3.1 温室环境参数测量为了实现精确可靠地温湿度控制,需要对环境参数进行实时测量。

可以使用传感器测量温度、湿度等参数,并将测量结果传输给控制系统。

3.2 控制算法设计控制算法是温湿度控制系统的核心部分。

常用的控制算法有比例-积分-微分(PID)控制、模糊逻辑控制、模型预测控制等。

根据实际情况选择合适的控制算法,并对其进行参数调整,以实现对温湿度的精确调节。

3.3 控制执行器设计根据温湿度的调节需求,选择合适的执行器进行操作。

常用的执行器有加热设备、通风设备、喷水设备等。

通过对执行器进行精确操作,可以实现对温湿度的有效调节。

4. 温湿度控制系统设计方案4.1 系统硬件设计蔬菜大棚温湿度控制系统需要包括传感器、执行器和处理单元(CPU)等硬件设备。

传感器用于测量环境参数,执行器用于实现环境参数调节,CPU负责接收传感器数据并根据预定算法进行处理和决策。

4.2 系统软件设计蔬菜大棚温湿度控制系统需要编写相应软件进行控制。

软件需要实现传感器数据的采集与处理、控制算法的实现、执行器的控制等功能。

同时,软件需要具备数据存储、报警处理、用户界面等功能,以提高系统的可靠性和易用性。

5. 系统性能评估与优化为了保证系统的稳定可靠运行,需要对系统进行性能评估与优化。

可以通过实际操作和数据采集来评估系统对温湿度变化的响应速度和稳定性,并根据评估结果对系统参数进行优化调整,以提高系统的控制精度和稳定性。

智能农业大棚控制系统的介绍

智能农业大棚控制系统的介绍

智能农业大棚控制系统的介绍
一、简介
智能农业大棚控制系统是一种新型的智能农业网络系统,它可以实现
温室大棚内环境参数(如温度、湿度、光照、土壤温度、土壤湿度等)的
监测、控制和调节,以保证大棚内环境条件的良好,可以为农业生产提供
最优的农业环境。

二、智能农业大棚控制系统的功能
1、温湿度控制:通过温湿度控制,可以实现温室大棚内部温度和湿
度的监测,以达到良好的温室环境条件,从而促进农作物生长发育。

2、气象参数检测:包括大气温度,大气湿度,大气压,大气温度,
风速,风向,降水。

这些参数可以提供及时准确的气象信息,以促进种植
体系之间的协调,使种植顺利进行。

3、植保控制:系统可以对农药,农膜,灌溉,温室照明,空气循环,农肥,种子等进行控制,以节约成本,保证植物健康生长发育。

4、自动灌溉控制:通过检测土壤湿度,可以自动控制灌溉,以保证
植物得到充足的水分,减少灌溉时间,节约农业水源。

5、远程控制:系统支持远程连接,可以通过手机,网络或其他移动
设备来进行智能化管理,实现远程监控和控制。

三、智能农业大棚控制系统的特点。

蔬菜大棚温度控制系统解决方案

蔬菜大棚温度控制系统解决方案

蔬菜大棚温度控制系统处理方案近几年蔬菜大棚温度控制系统工程旳总体水平有了明显提高。

详细表目前蔬菜种植设施逐渐向大型化发展。

大型现代化温室及配套设施旳引进,增进了温室产业旳发展,设施构造设计建筑愈加科学合理,使得设施内旳光、温、水、气环境得以优化,有助于作物生长发育,为高产优质奠定了基础。

蔬菜大棚温度控制系统是针对蔬菜大棚旳控制规定配置旳远程监控与管理系统,采用无线传感器技术,基于老式旳蔬菜大棚生产技术,提供一套更适合蔬菜大棚旳,具有高可靠性、安全性、灵活性、可扩展性、易操作性旳一套软硬件系统。

可以实时监测蔬菜大棚内旳温度、湿度、土壤墒情、二氧化碳浓度、电动卷帘状态、水泵状态旳采集,以及对水泵、阀门旳启停、电动卷帘、通风窗旳开闭等控制,通过无线通讯方式与蔬菜大棚管理中心计算机联网,对各蔬菜大棚单位进行监管和控制。

蔬菜大棚温度控制系统构成无线传感器:如温湿度传感器、土壤温湿度传感器、光照传感器、CO2传感器等设备。

控制器:温湿度控制器、光照强度控制器、土壤温湿度控制器等,用于对各传感器上传旳数据信息进行集中处理,并下发控制计算机下达旳控制指令。

控制计算机、触摸屏:用于多种采集数据旳显示、各现场设备(风机、加湿、加热电磁阀等)旳远程控制、各数据报表旳打印等。

远程控制终端:手机、电脑等。

蔬菜大棚温度控制系统功能检测系统:采用多种无线传感器实时地采集蔬菜生长环境中旳温度、湿度、PH值、光照强度、土壤养分、CO2浓度等物理量参数信息;信息传播系统:“传播”就是建立数据传播和转换措施,通过局部旳无线网络、互联网、移动通信网等多种通信网络交互传递,实现农业生产环境信息旳有效传播;信息通过无线网络传播系统和信息路由设备传到控制中心,各个节点可以自由配对、任意监控、互不干扰。

控制系统:加装摄像头可以对每个大棚和整个园区进行实时监控。

运用监控计算机可监控整个库内环境调整过程。

实时通过显示屏画面监视蔬菜生长环境温湿度、光照、CO2、风向、风速、雨量、土壤温湿度等数据,搜集各个节点旳数据,进行存储和管理实现整个测试点旳信息动态显示,并根据各类信息进行自动浇灌、施肥、喷药、降温补光等控制。

大棚蔬菜的温度控制方法

大棚蔬菜的温度控制方法

大棚蔬菜的温度控制方法大棚蔬菜的生长环境对于作物的产量和品质有着重要的影响。

其中,温度是一个至关重要的因素。

合理的温度控制方法能够为大棚蔬菜的生长提供适宜的条件,提高产量并改善品质。

本文将介绍几种常见的大棚蔬菜温度控制方法。

一、通风换气通风换气是大棚温度控制的基本手段之一。

通过合理设计和设置大棚通风设备,可以调节温湿度,排除热量,使大棚内部温度保持在适宜范围内。

1. 自然通风自然通风是利用大棚的自然空气流动进行换气,采用通风口或透明材料调节大棚内外的空气交换。

适当调节通风口的开闭程度和数量,可以有效控制大棚内的温度。

2. 强制通风强制通风是利用电动或风机等辅助设备,强制循环大棚内外空气,有效降低大棚内部的温度。

通过合理设置通风设备的位置和数量,可以实现精细调控和自动化控制。

二、防风降温大棚蔬菜的生长一般需求较高的温度,但在夏季高温时节,温度过高会对蔬菜生长产生不利影响。

因此,防风降温是一种常用的温度控制方法。

1. 灌水降温通过在大棚内喷水或洒水,利用水的蒸发吸热原理,可以降低大棚内的温度。

特别是在炎热的夏季,适当增加灌水频次和用水量,可有效降低大棚内的温度。

2. 植物遮阳在大棚外部或内部设置遮阳网,通过减少阳光直射,可以减轻大棚内的热量。

同时,遮阳网还可以起到防风、透气、保湿等功能,为蔬菜提供更好的生长条件。

三、散热降温大棚内部的热量主要来源于太阳辐射和作物代谢等。

合理的散热降温方法有助于控制大棚内的温度,提供适宜的生长环境。

1. 空调降温对于一些需要严格控制温度的大棚,可以安装空调设备进行降温。

空调能够快速稳定地降低大棚内的温度,提供恒温的生长环境。

2. 硫酸铵冷却在大棚内设置硫酸铵冷却器,通过压缩冷却剂氨对空气进行冷却,降低大棚内的温度。

这种方法可实现全天候的降温效果,并且操作简单易行。

四、合理管理除了以上的温度控制方法外,合理管理也是大棚蔬菜温度控制的关键。

以下是几点值得注意的管理措施:1. 定期检查大棚设施,确保通风设备的正常运转。

蔬菜大棚温度控制系统

蔬菜大棚温度控制系统

蔬菜大棚温度控制系统目录一、引言 (3)(一)选题的背景 (3)(二)国内温室大棚发展状况 (3)(三)选题目的 (2)二、控制系统的总体设计 (4)(一)控制系统具体功能 (4)(二)控制系统整体结构 (4)(三)硬件设备的选择 (5)1.控制芯片的选择 (3)2.温度传感器的选择 (6)3.显示器件的选择 (6)(四)系统工作原理 (7)三、温度控制系统电路设计 (8)(一)控制模块电路 (8)(二)控制模块输入电路 (11)1. DS18B20温度传感器设计 (11)2. 外部控制电路的设计 (15)(三)输出控制控温设备电路 (16)1.蜂鸣器电路的设计 (16)2. 继电器驱动电路设计 (17)(四)系统硬件测试 (18)四、系统软件部分设计 (18)(一)主函数 (18)(二)数码管显示函数的设计 (19)(三) DS18B20温度采集函数的设计 (20)(四)系统单片机程序调试 (21)五、结论 (21)参考文献 (23)致谢 (23)一、引言(一)选题的背景从本世纪处开始,随着中国经济的快速发展,人民对于生活质量和身体健康越来越重视,在北方寒冷的冬季吃上新鲜可口的蔬菜成为了生活的需要。

因此造成了冬季反季节蔬菜的需求逐年扩大,尤其是在北方寒冷地区。

温室蔬菜栽培大棚远比比南方蔬菜的长途运输更加具有明显优势。

出于经济上的价值。

长江以南从南到北菜长途运输不仅成本高,而且长途运输的蔬菜大多为冷冻脱水蔬菜不再新鲜。

因此,依靠现代数字温度控制系统,推广性价比高的大棚种菜能更好地满足人民群众生活的需要。

由于不同蔬菜作物及其不同生育期所需要的温度不同且要求稳定在一定的温度范围内。

仅仅是依靠人工管理存在温度调节不及时、不准确,影响作物生长及人力资源浪费等问题。

因此要求有一种能对温室温度的检测具有足够精度和实时控制的温度控制系统来代替人工操作,并尽可能具有较低成本,这样的产品才有实用价值。

蔬菜大棚的温室环境控制自动调节的环境条件在温室中,以实现对植物生长发育的最佳环境。

基于PLC的智能蔬菜大棚控制系统设计简述

基于PLC的智能蔬菜大棚控制系统设计简述

基于PLC的智能蔬菜大棚控制系统设计简述随着科技的不断发展,智能化控制系统在农业领域的应用也越来越广泛。

特别是在蔬菜大棚种植领域,智能控制系统可以帮助农民实现精准浇灌、温度控制、光照管理等功能,大大提高了蔬菜生产的效率和质量。

本文将简要介绍基于PLC的智能蔬菜大棚控制系统设计。

一、系统概述智能蔬菜大棚控制系统是一个基于PLC(可编程逻辑控制器)的自动化系统,主要包括传感器、执行机构、控制器等组件。

系统通过实时监测环境参数(如温度、湿度、光照等),并根据农作物的生长需求,实现对大棚内环境的自动化控制,从而提高蔬菜的生长效率和质量。

二、系统设计1. 传感器智能蔬菜大棚控制系统中需要使用多种传感器,用于实时监测大棚内的温度、湿度、光照等参数。

常用的传感器包括温湿度传感器、光照传感器、CO2浓度传感器等。

这些传感器可以将采集到的环境数据反馈给PLC控制器,从而实现对大棚内环境的精准控制。

2. 执行机构智能蔬菜大棚控制系统中的执行机构包括灌溉设备、通风设备、遮阳网等。

这些执行机构可以根据PLC控制器的指令,实现自动化的浇水、通风、遮阳等操作。

比如在温度过高时,PLC控制器可以自动开启通风设备,以降低大棚内的温度;在光照不足时,可以自动展开遮阳网,保证植物的光照需求。

3. PLC控制器PLC控制器是整个智能蔬菜大棚控制系统的核心部件,负责实时监测传感器数据,制定相应的控制策略,并控制执行机构进行操作。

PLC控制器具有高稳定性、可靠性和扩展性,可以灵活应对不同的控制需求。

PLC控制器通过界面操作,可以方便地实现对系统的监控和调整。

三、系统功能智能蔬菜大棚控制系统的主要功能包括:1. 温度控制:根据实时的温度数据,自动控制通风设备的开启和关闭,保持大棚内的适宜温度;2. 湿度控制:根据实时的湿度数据,自动控制灌溉设备的启停,保持大棚内的适宜湿度;3. 光照管理:根据实时的光照数据,自动控制遮阳网的展开和收起,保证植物的光照需求;4. CO2浓度管理:根据CO2浓度数据,自动控制通风设备的开启和关闭,保持大棚内的CO2浓度在适宜范围;5. 安全监控:实时监测大棚内的环境参数,及时发现并处理异常情况,保障大棚内作物的安全生长。

基于单片机的蔬菜大棚温度控制系统

基于单片机的蔬菜大棚温度控制系统

基于单片机的蔬菜大棚温度控制系统一、概述随着现代农业技术的快速发展,蔬菜大棚作为一种重要的农业生产设施,其智能化、自动化管理已成为提升农业生产效率、保障农产品质量的重要手段。

在蔬菜大棚的生产环境中,温度是一个至关重要的因素,直接影响到作物的生长速度和产量。

开发一套稳定可靠的蔬菜大棚温度控制系统显得尤为重要。

本文介绍了一种基于单片机的蔬菜大棚温度控制系统。

该系统通过单片机作为核心控制器,结合传感器技术、控制算法和执行机构,实现对大棚内温度的实时监测和智能调控。

系统不仅具有硬件结构简单、成本低廉的优点,而且通过合理的控制策略,能够实现对大棚内温度的精确控制,为蔬菜生长提供最佳的环境条件。

该系统在实际应用中,可以有效提高蔬菜大棚的生产效率,降低能耗和人力成本,同时提高农产品的产量和质量,具有重要的实际应用价值和推广意义。

在接下来的章节中,我们将详细介绍该系统的硬件设计、软件编程、控制策略以及实际运行效果,以期为相关领域的研究和实践提供参考和借鉴。

1. 介绍蔬菜大棚温度控制的重要性。

蔬菜大棚作为一种现代农业设施,通过调控生长环境,显著提高了蔬菜的产量和品质。

温度是影响蔬菜生长的关键因素之一。

适宜的温度不仅有助于蔬菜的正常生长,还能有效防止病虫害的发生,从而提高蔬菜的抗病能力和产量。

蔬菜大棚的温度控制具有极其重要的意义。

适宜的温度是蔬菜生长的基础。

不同种类的蔬菜对温度的要求各不相同,但总体来说,适宜的温度范围能够促进蔬菜的光合作用,加速营养物质的合成和转运,从而提高蔬菜的生长速度和产量。

同时,适当的温差还有利于提高蔬菜的抗逆性,增强其对极端天气的适应能力。

温度控制对于防止病虫害的发生至关重要。

高温或低温环境都可能导致蔬菜生长异常,进而引发各种病虫害。

通过精确控制大棚内的温度,可以有效降低病虫害的发生概率,减少农药的使用量,从而保障蔬菜的品质和安全。

温度控制还能提高蔬菜大棚的生产效益。

在适宜的温度条件下,蔬菜的生长周期缩短,产量增加,品质提升,这都将直接带来经济效益的提升。

蔬菜大棚温湿度微机自动控制系统毕业论文答辩PPT.ppt

蔬菜大棚温湿度微机自动控制系统毕业论文答辩PPT.ppt

的含水量等,这些参数直接关系到蔬菜的质量和产量。
国外的温室设施已经发展到比较完备的程度,并形成一
定的标准,但是价格非常昂贵,缺乏与我国气候特点相
适应的测控软件。当今大多数对大棚温度、湿度、二氧
化碳含量的监测与控制都采用人工管理,这样不可避免
有测控精度低、劳动强度大及测控不及时等弊端。为了
实现高效农业生产的科学化并提高农业研究的准确性,
该系统由于使用集成温湿度传感器 DHT90和性价比较高的单片机AT89S52, 具有系统性能稳定可靠、功耗低、成本 低、测量准确、传输距离远、维护简单 等优点, 在其他实际工作中, 有一定的 实用和参考价值。
系统总体设计框图
DHT90温湿度传 感器
键盘
AATT898S95S25单2单片片机机
LCD-12864显 示模块 报警电路
S0 SW1 -PB SW-PB S2 SW3 -PB
LCD-U1 268A6 4 1
2 7 4LS0 8 U6 B
1
2
3
U6 C
1
2 3
7 4LS0 8
3 P3. 2
VCC
6 N13 6
U3
8
VCC C ATHODE
3
D2
R4
K2
DIODE 1 0k
VCC SW-PB
7 4LS0 8
Q1
R7
NPN
J1 2 1
CON2
J2 2 1
CON2
S4 SW-PB
C1 2 2u F R10
1k U1
M
C2 3 0p F
C3 3 0p F
VCC R2
1 0K
U4
4 3
D VDD GND S
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

烟台南山学院单片机课程设计题目蔬菜大棚温度控制系统*名:***所在学院:烟台南山学院所学专业:自动化班级:09自动化02班学号:************指导教师:***完成时间: 2012-9-11摘要本文根据蔬菜大棚温度控制系统的要求和特点,设计了一种基于51单片机的蔬菜大棚温度控制器。

该控制器以单片机为控制核心,结合外围信号采集电路、键盘扫描电路、LCD显示电路、报警电路和继电器控制电路,实现了蔬菜大棚的的智能控制。

DS18B20温度传感器将采集的数据在传感器内部经模数转换后传送给单片机,单片机将得到的数据分别与键盘预先设定的上限温度值和下限温度值比较,如果数据大于上限温度值值,开启电机并报警,如果数据小于下限温度值,启动电机并报警,并且电路还有预报警,当温度高于预报警上限值,进行报警,提醒用户,当温度低于预报警下限值时,进行报警,提醒用户。

整个过程LCD实时显示上限温度值、下限温度值、实际温度值。

1绪论 (1)2 系统方案设计 (2)2.1温度控制系统设计方框图 (2)2.2方案论证 (2)3 电路设计 (3)3.1键盘电路设计 (3)3.2显示电路设计 (3)3.3报警电路设计 (4)3.4传感器电路设计 (4)3.5电机控制电路设计 (4)4 程序设计 (6)4.1C语言 (6)4.2控制程序设计 (6)4.3主控制程序设计...................................................... . (6)5 总结 (8)6 参考文献 (9)附件一:总原理图 (10)附件二:系统程序 (11)本设计的内容是温度测试控制系统,控制对象是温度。

温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。

而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。

针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。

随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。

特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。

针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。

温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。

在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。

比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。

没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。

因此,各行各业对温度控制的要求都越来越高。

可见,温度的测量和控制是非常重要的。

单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。

随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器应运而生。

2 系统方案设计2.1蔬菜温度控制系统设计方框图图2.1系统设计方框图系统硬件电路框图如图2.1所示,蔬菜温度控制装置由单片机最小系统、LCD液晶显示电路、键盘电路、报警电路、温度传感器、继电器控制等七部分组成。

系统工作原理:将温度传感器采集的数据输入单片机,单片机将得到的数据分别与键盘预先设定的上限温度和下限温度比较,如果数据大于上限温度单片机控制报警并接通电机电源(相当于接升温器),如果数据小于下限温度单片机控制报警并接通电机电源(相当于接降温器),整个过程LCD实时显示:上限温度值、下限温度值、实际温度值。

2.2 方案论证在设计中要对空压机内压力、上、下限压力显示,显示模块的设计方案如下。

方案一:测温电路的设计,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理,在显示电感温电路比较麻烦。

路上,就可以将被测温度显示出来,这种设计需要用到 A/D 转换电路方案二:考虑使用温度传感器,结合单片机电路设计,采用一只 DS18B20 温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。

比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。

3电路设计3.1键盘电路因为本设计使用键盘数比较少,只要5个按键就足够了,故可以直接接在端口即可。

图3.1键盘电路3.2显示电路设计将P1与显示的数据端相连,采用模拟时序形式电路。

电路接线如图3-2图3.2显示电路3.3报警电路设计报警电路对实时温度的检测,温度过高或过低报警灯亮,并且蜂鸣器根据不同的报警情况,发出不同频率的声音。

图3.3 报警电路3.4传感器电路设计本设计使用的是DS18B20,采用单总线方式连接。

图3.4 传感器电路3.5电机控制电路设计电机电路利用继电器来控制电机开断。

电路如图图3.5图3.5电机控制电路设计第4章程序设计4.1 C语言软件对整个系统来说是至关重要的,是整个系统的灵魂,整个系统的执行操作都是在软件的协调指挥下进行的。

用于计算机程序设计的语言分为机器语言、汇编语言和高级语言。

本测控系统的软件的编写主要采用C语言编写。

4.2 控制程序设计本系统软件设计采用模块化的设计思路,即整个系统的程序软件由许多独立的子程序模块组成,它们之间通过软件接口进行连接。

连接的原则是:模块内数据关系紧凑,模块间数据关系松散,按功能划分模块。

整个软件系统的程序可分为四个大模块,即主程序模块、参数设置程序模块、现场数据采集显示模块和执行处理程序模块。

每个模块都具有一定的功能,每个模块又可分为许多子模块,既相互独立又相互联系,低级模块可以被高级模块调用。

4.3主控制程序设计主程序是整个测控系统中最重要的程序,各个子程序都在主程序的协调指挥下运行,是一个顺序执行的无限循环程序,可以被任何优先级的中断请求所打断。

各个环境参数的测试和控制指令的判断都在各个测控子程序中进行,主程序的主要功能是实现系统的初始化、实现系统自检、响应中断请求进而调用数据处理子程序。

主程序的初始化工作主要完成对8255A、AD590、LED、ADC0809。

主流程图见图4.1。

5 总结早在选题之前,我就利用平时的时间看DS18B20芯片资料,当初认为DS18B20延时要很精确,所以我必须写出精确的延时程序。

但是C语言延时是不好精确地,为了写出那种很精确的延时程序,在网上找了很多资料,也学会了利用反汇编来计算延时,还有可以利用keil这个软件进行一些调试,也可测出延时时间。

延时解决后,以为一切都会很顺利,但往往看起来容易的事情总有想不到的问题。

在写DS18B20驱动程序时,读出来显示的温度值总是不对,左看右看,我知道问题肯定是出在数据处理上。

于是我上网看别人是怎么进行数据处理,结合很多网上程序后,最后选择了其中一种的方法,但一切并不顺利,一篇又一篇的调试,不知调试了多少次终于成功了。

DS18B20驱动写出来了后,1602显示程序以前写过,所以可以移植过来,所以减少了不少的时间。

大的结构确定后,就是修改一些细节上。

比如我的温度比较范围是从-20---99,这在软件控制上,看上去很简单。

可最后代码写下来也不少。

而且我也是调试了蛮多次的。

主要是以前从没有独立做过这种课程设计。

所以没有经验,很多细节上处理的不是很好。

所以自己只有不断地去学习别人怎么处理,然后结合自身来处理细节上的问题。

利用了几天的时间,终于是在PROTEUS上仿真成功了。

但我的设计还是存在一些问题,比如反映时间不是很快,这些问题是值得去注意的。

再者,在Proteus上仿真通过,而没有做出实物,那也永远只是理论水平。

所以,尽管课程设计完成了,我要做的还远远不够。

在写课程设计的论文时,也得到了同学的帮助,同学也帮忙完成了一些。

通过这次课程设计,让我对于单片机的项目有了一个认知。

我更近一步看清了前方的路。

很多东西是接下来必须去做的。

总之,要学的还很多,只有不断地学习,才能轻松的处理事情。

有句话说的很对“只有很努力,才能看起来毫不费力”。

课程设计搞完了,我的单片机学习还是不会断,因为我学的还真不够。

最后感谢给与我指点的老师和同学。

虽然我没有很强烈的表达在表面,但我一直都记住的。

没有你们,我可能会走很多弯路才能做到,一生中遇到你们这些贵人是我的荣幸。

感谢你们。

6 参考文献1. 赵晶.Protel99高级应用[M].人民邮电出版社, 2006年.2. 谷树忠.Protel DXP实用教程[M].电子工业出版社,2003年.3. 刘湘涛,江世民.单片机原理与应用[M].电子工业出版社, 2006年.4. 孙育才. ATMEL新型AT89c51系列单片机及其应用[M].清华大学出版社, 2005年.5. 李华.MCU-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993年.6. 张迎新,雷道振.单片机初级教程[M].北京航天航空大学出版社, 2006年.7.李朝青. 单片机原理及接口技术. 北京: 北京航空航天大学出版社, 2009年.8. 潘新民, 王燕芳. 微型计算机控制技术. 北京: 电子工业出版社, 20011年.附录一:总原理图附件一:系统程序#include<reg51.h>#include<absacc.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define ulint unsigned long intuchar code table0[]={ //欢迎界面0xa0,0x57,0x65,0x6c,0x63,0x6f,0x6d,0x65,0xa0,0x74,0x6f,0xa0,0x75,0x65,0x73,0xa0,0xa0,0xa0,0x74,0x68,0x65,0x72,0x6d,0x6f,0x6d,0x65,0x74,0x65,0x72,0x21,0xa0,0xa0};uchar table1[]={0x6d,0x61,0x78,0x3a,0x00,0x00,0x00,0xa0, //存储报警值0x6d,0x69,0x6e,0x3a,0x00,0x00,0x00,};uchar table2[]={ //存储温度0x54,0x4d,0x50,0x54,0x3a,0x00,0x00,0x00,0x00,0xa5,0x00,0x00,0x43};uchar code table3[]={ //提醒设定报警值0xa0,0x50,0x6c,0x65,0x61,0x73,0x65,0xa0,0xa0,0x63,0x68,0x61,0x72,0x67,0x65,0xa0,0xa0,0xa0,0xa0,0x79,0x6f,0x75,0x72,0xa0,0x63,0x61,0x72,0x64,0x21,0xa0,0xa0,0xa0};uchar table4[]={ //输入界面0x50,0x6c,0x65,0x61,0x73,0x65,0xa0,0x69,0x6e,0x70,0x75,0x74,0x3a};sbit E=P3^7;sbit RW=P3^6;sbit RS=P3^5;sbit flag=P1^7;sbit dec=P3^0;sbit inc=P3^1;sbit ok_max=P3^2;sbit ok_min=P3^4;sbit out=P2^1;sbit DQ=P2^3;sbit beep=P2^2;uchar p,tflag;uint tvalue;/*****************延时函数**********************/void delay_18B20(unsigned int i){while(i--);}/**********ds18b20初始化函数**********************/void Init_DS18B20(void){unsigned char x=0;DQ = 1; //DQ复位delay_18B20(8); //稍做延时DQ = 0; //单片机将DQ拉低delay_18B20(80); //精确延时大于480usDQ = 1; //拉高总线delay_18B20(14);x=DQ; //稍做延时后如果x=0则初始化成功x=1则初始化失败delay_18B20(20);}/***********ds18b20读一个字节**************/unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;delay_18B20(4);}return(dat);}/*************ds18b20写一个字节****************/void WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;delay_18B20(5);DQ = 1;dat>>=1;}}/**************读取ds18b20当前温度************/unsigned int ReadTemperature(void){ unsigned char tl,th;float t;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换delay_18B20(80); // 这个延时很重要Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度delay_18B20(80);tl=ReadOneChar(); //读取温度值低位th=ReadOneChar(); //读取温度值高位tvalue=th;tvalue<<=8;tvalue=tvalue|tl;if(tvalue<0x0fff) //判断正负{tflag=0; //符号标记位table2[5]=0xa0; //存储'+'号}else{tvalue=~tvalue+1; //负数取反加一tflag=1;table2[5]=0x2d; //存储'-'号}t=tvalue*(0.0625);tvalue=t*100; //温度值扩大100倍,精确到2位小数return(tvalue);}/*************处理当前温度******************/void show1(void);void DeelTemperatre(uint t){table2[6]=t/10000+0x30;if(table2[6]==0x30) //百位为0,就消隐{table2[6]=0xa0;}table2[7]=t%10000/1000+0x30; //十位table2[8]=t%1000/100+0x30; //个位table2[10]=t%100/10+0x30; //小数位table2[11]=t%10+0x30;}/****************警告函数*******************/void warn(uchar s,uchar led){uchar i,j,k;i=s;P2=~(led);for(k=0;k<20;k++){for(j=0;j<200;j++)//喇叭发声的时间循环,改变大小可以改变发声时间长短{delay_18B20(i); //参数决定发声的频率,估算值,可以自行更改参数并beep=!beep;}}P2=0xff;beep=1;}/******************报警处理函数**************/void deal(uint fuzhi){uchar t1,th,tl,i;char t1_c,th_c,tl_c,th_s,tl_s;t1=fuzhi/100;if(table2[5]==0x2d) //存储实际温度换成有符号数实际温度{ //符号位为'-'换成负数t1_c=t1;t1_c=~t1_c;}else{t1_c=t1;}th=(table1[5]-0x30)*10+(table1[6]-0x30); //存储上限温度换成有符号数温度if(table1[4]==0x2d){th_c=th;th_c=~th_c;th_s=th_c-2; //设置第二高温度报警线}else{th_c=th;th_s=th_c-2;}tl=(table1[13]-0x30)*10+(table1[14]-0x30); //存储下限温度换成有符号数温度if(table1[12]==0x2d){tl_c=tl;tl_c=~tl_c;tl_s=tl_c+2;}else{tl_c=tl;tl_s=tl_c+2; //设置低二道报警线温度}if(t1_c>=th_s&&t1_c<th_c) //大于第二高上限值小于最高上限,进行预报警{warn(20,0x80); //控制预报警声音,点亮指示灯out=1;}else if(t1_c>=th_c) //高于最高上限{warn(40,0x40); //先报警out=0; //自动开发动机}else if(t1_c<=tl_s&&t1_c>tl_c) //进行预报警{warn(20,0x20);out=1;}else if(t1_c<=tl_c){warn(40,0x10);out=0;}else{i=5; //利用显示延时while(i--){DeelTemperatre(ReadTemperature());show1();out=1;}}}/*************************LCD显示****************************/ /**********************延时函数***********************/void delay0(){uint a,b;for(a=0;a<600;a++)for(b=0;b<600;b++);}void delay1(){uint e;for(e=100;e>0;e--);}void delay2(){uint a,b;for(a=0;a<100;a++)for(b=0;b<100;b++);}/***********************判忙函数*********************/void busy(){do{P1=0xff;RS=0;RW=1;E=0;E=1;}while(flag);}/*************功能:写函数**********************************//*********入口参数:con=1代表写指令,con=0代表写数据,com代表数据/*********出口参数:无;**********************************************************/ void write(uchar con,uchar com){busy();RS=con;RW=0;E=1;P1=com;E=0;}/***********************lcd初始化**********************/void init(){write(0,0x01);write(0,0x38);write(0,0x0c);}/***********************显示欢迎界面********************/void show0(){write(0,0x80);for(i=0;i<16;i++)write(1,table0[i]);busy();write(0,0xc0);for(i=16;i<32;i++)write(1,table0[i]);busy();delay0();}/***********************显示温度界面*********************/void show1(){uint i,j;write(0,0x01);write(0,0x80);for(i=0;i<15;i++)write(1,table1[i]);busy();write(0,0xc0);for(j=0;j<13;j++)write(1,table2[j]);busy();delay0();}/*************************改值函数******************************/ void input(){uchar i,sign=0,k=0;char t=0,z=0;ok_max=1; //上限值确认键ok_min=1; //下限值确认键write(0,0x01); //清屏指令while(ok_max==1&&ok_min==1) //当确认键按下,结束循环{inc=1;dec=1;if(inc==0) //加一键按下{delay2(); //去抖动if(inc==0)if(t<99) //设定最高上限为99{if(t>=0) //对符号数进行处理,大于0,保持不变{t++;sign=0xa0; //温度显示标志位}else{if(t==-1) //小于0,首先判断是否等于-1,因为再加一为0,消‘-’符号位{t++;k--; //k为负数的绝对值sign=0xa0;}else{ //不为-1,前面要加符号位‘-’t++;k--;sign=0x2d;}}}else ; //大于99不再增加}}if(dec==0) //减一确认键按下{delay2(); //去抖动if(dec==0){if(t<=-20); //设定下限为-20else{if(t<=0){t--;k++;sign=0x2d;}else{t--;sign=0xa0;}}}if(t<=0){z=t;t=k;} //t<=0,取绝对值write(0,0x80);for(i=0;i<13;i++)write(1,table4[i]); //显示提醒输入界面busy();write(0,0xc0);write(1,sign); //将设定的值显示write(1,t/100%10+0x30);write(1,t/10%10+0x30);write(1,t%10+0x30);write(1,0x43);busy();if(z<0)t=z;delay1();}if(t<0)t=~t+1;p=t;if(ok_max==0) //存储上限值{table1[6]=p%10+0x30;table1[5]=p/10%10+0x30;table1[4]=sign;}else{ //存储下限值table1[14]=p%10+0x30;table1[13]=p/10%10+0x30;table1[12]=sign;}}/******************外部中断0函数*******************/ void Exter1(void) interrupt 2{EX1=0;input();EX1=1;}void main(){uchar l,i=5;init();delay2();input();EA=1;EX1=1;IT1=1;while(1){out=1; //电动机开关关闭DeelTemperatre(ReadTemperature()); //去温度值show1();deal(ReadTemperature()); //温度处理while(i--) //利用显示延时{DeelTemperatre(ReadTemperature());show1();deal(ReadTemperature());}}}。

相关文档
最新文档