智能温控风扇实物报告

合集下载

温控风扇实训报告

温控风扇实训报告

一、实验目的本次实训的主要目的是通过实践操作,了解温控风扇的工作原理和设计方法,掌握单片机在温控系统中的应用,以及学会如何进行电路设计和调试。

通过实训,提升动手能力和问题解决能力,为以后从事相关领域的工作打下基础。

二、实验原理温控风扇是一种利用单片机控制电机转速,以达到调节环境温度的设备。

其工作原理如下:1. 温度传感器:采集环境温度,将温度信号转换为数字信号。

2. 单片机:接收温度传感器传输的温度信号,进行数据处理和决策,控制电机转速。

3. 电机驱动模块:根据单片机的指令,控制电机转速,实现风扇的启停和风速调节。

三、实验内容1. 硬件设计本次实训使用的硬件主要包括以下部分:(1)单片机:STC89C52(2)温度传感器:DS18B20(3)电机驱动模块:ULN2803(4)直流电机(5)电阻、电容、电位器等2. 软件设计软件设计主要包括以下部分:(1)温度采集:读取DS18B20温度传感器的数据,将其转换为温度值。

(2)温度控制:根据设定的温度值和采集到的实际温度值,计算误差,并通过PID算法进行控制。

(3)电机控制:根据单片机的指令,控制电机驱动模块,调节电机转速。

3. 系统调试(1)硬件调试:检查电路连接是否正确,电源电压是否稳定,传感器信号是否正常。

(2)软件调试:编写程序,对单片机进行编程,调试程序,使系统能够正常工作。

四、实验结果与分析1. 实验结果通过实验,我们成功设计并实现了温控风扇系统。

系统可以根据设定的温度值和实际温度值,自动调节电机转速,实现风扇的启停和风速调节。

2. 结果分析(1)温度采集:DS18B20温度传感器采集到的温度值稳定,准确度较高。

(2)温度控制:通过PID算法对电机转速进行控制,能够实现较好的温度控制效果。

(3)电机控制:电机驱动模块能够根据单片机的指令,准确控制电机转速。

五、实验总结1. 通过本次实训,我们掌握了单片机在温控系统中的应用,了解了温控风扇的工作原理和设计方法。

智能风扇

智能风扇

智能温控风扇综述报告一、研究课题的背景和目的:近年来,随着人们生活及科技水平的不断提高,家用电器在款式、功能等方面日益求精,并朝着健康、安全、多功能、节能等方向发展。

电风扇由于价格低廉而且相对省电,安装和使用方便,所以目前中国大部分人口的农村地区还有一些校园里的教师与宿舍仍然使用着电风扇作为防暑降温的设备。

但是目前但是目前市场上的电风扇多半是采用全硬件电路实现,存在着电路复杂、功能单一等局限性。

并且由于目前市场上的电风扇,大多数为手动控制机械调节来定时,存在着无人时风扇依然工作,温度低于一定温度时仍然工作。

所以,我们课题的目的在于研究,开发一个新型的具有人体红外和温度传感系统来检测室内有无人员以及室内温度。

然后通过程序,与传感器来自动控制电风扇工作与停止,以及工作时转速的大小。

从而达到我们所预期的智能控制和节能环保的目的。

二、国内外研究现状:1、温控风扇的系统框图及硬件选择:单片机模块、键盘输入模块、人体感应模块、温度采集模块、双向可控硅控制模块、报警及显示模块。

附:主要模块介绍:单片机模块:采用T89S52单片机,T89S52单片机是一个低功耗,高性能CMOS8位单片机,片内含8KB ISP(In—System Programmable)的可反复擦写1000次的FLASH只读程序存储器,支持在线编程。

兼容标准MCS一51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFLASH存储单元。

具体特点表现为:具有优异的性能价格比;集成度高、体积小、可靠性高;控制功能强;低电压、低功耗。

单片机是温控风扇中的控制核心。

当检测的温度高于一定值时,单片机引脚输出高电平,通过继电器实现弱电控制强电,打开电风扇,当温度低于一定值时,单片机引脚输出低电平,控制电风扇停止转动。

另外,温度过高或过低时,蜂鸣器发出声音。

双向可控硅控制模块:该模块采用3A、600V的双向可控硅TLC336A。

TLC336A 是一种特殊的可控硅器件,即硅五层三端器件,正、反向的导通共用一个控制极,控制极触发方式可用交流信号、直流信号及过零触发3种方式。

智能风扇实习报告

智能风扇实习报告

一、实习背景随着科技的不断发展,智能家居系统逐渐走进人们的生活。

作为智能家居系统中的一部分,智能风扇在调节室内温度、提高生活品质等方面发挥着重要作用。

为了深入了解智能风扇的工作原理和实际应用,我参加了为期一个月的智能风扇实习。

二、实习内容1. 智能风扇基本原理智能风扇主要由单片机、传感器、电机驱动模块、显示屏等组成。

单片机作为核心控制器,负责接收传感器采集的数据,并根据用户需求进行相应的控制。

传感器主要负责检测室内温度、湿度等信息,电机驱动模块负责驱动电机旋转,显示屏用于显示风扇状态和调节参数。

2. 实习过程(1)熟悉智能风扇硬件电路在实习过程中,我首先对智能风扇的硬件电路进行了详细学习。

通过查阅相关资料,了解了各个模块的功能和作用,并掌握了电路连接方法。

(2)学习单片机编程为了实现对智能风扇的编程控制,我学习了51单片机编程。

通过编写程序,实现了以下功能:1)读取传感器数据,实时显示室内温度和湿度;2)根据用户设置的温度范围,自动调节风扇转速;3)通过按键控制风扇开关、风速、定时等功能;4)具有过热保护功能,当风扇温度过高时,自动停止工作。

(3)组装智能风扇在掌握了编程和电路知识后,我开始组装智能风扇。

按照电路图连接各个模块,调试程序,确保风扇能够正常运行。

(4)测试与优化在组装完成后,我对智能风扇进行了测试。

首先,检查风扇是否能够根据温度变化自动调节风速;其次,测试按键控制功能是否正常;最后,检查过热保护功能是否有效。

在测试过程中,我发现风扇在某些情况下存在一些问题,如响应速度较慢、风速不稳定等。

针对这些问题,我进行了优化,如调整程序算法、改进电路设计等。

三、实习收获1. 掌握了智能风扇的基本原理和硬件电路设计方法;2. 熟悉了51单片机编程,并学会了使用C语言进行编程;3. 学会了组装和调试智能风扇,提高了动手能力;4. 深入了解了智能家居系统的应用,为今后从事相关工作奠定了基础。

四、实习体会通过这次实习,我深刻体会到以下几点:1. 理论与实践相结合的重要性。

人体感应智能风扇制作报告

人体感应智能风扇制作报告

人体感应智能风扇制作报告本设计为一种温控风扇系统,具有灵敏的温度感测和显示功能,系统STC89C52单片机作为控制平台对风扇转速进行控制。

可由用户设置高、低温度值,测得温度值在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动关闭风扇,控制状态随外界温度而定。

所设高低温值保存在温度传感器DS18B20内部E2ROM 中,掉电后仍然能保存上次设定值,性能稳定,控制准确。

本设计主要内容如下:(1)风速设为从低到高共2个档位,可由用户通过键盘设定。

(2)每当温度低于下限值时,则电风扇风速关闭。

(3)每当温度在下限和上限之间时,则电风扇转速缓慢。

(4))每当温度高于上限值时,则电风扇风速全速运转。

以单片机作为控制器,通过编写程序不但能将传感器感测到的温度通过显示电路显示出来,而且用户能通过键盘接口,自由设置上下限动作温度值,满足全方位的需求。

并且通过程序判断温度具有极高的精准度,能精确把握环境温度的微小变化。

由于数字式集成温度传感器DS18B20的高度集成化,大大降低了外接放大转换等电路的误差因素,温度误差很小,并且由于其感测温度的原理与上述两种方案的原理有着本质的不同,使得其温度分辨力极高。

温度值在器件内部转换成数字量直接输出,简化了系统程序设计,又由于该传感器采用先进的单总线技术(1-WRIE ),与单片机的接口变的非常简洁,抗干扰能力强。

故采用数字式集成温度传感器DS18B20作为感测温度的核心元件,直接输出数字温度信号供单片机处理。

采用五位共阳数码管显示温度,动态扫描显示方式,原因是数码管价格便宜。

以电位器控制晶闸管的导通角大小,可实现由最大风速到关闭的无级别调速,可将风力调节在关闭无风到最大风之间的任意风力,实现“自由风”。

且在调速环节中基本无电力损耗。

系统总体设计:经过了将近10个小时的焊接,小组成员的协同合作,终于将作品制作成功。

虽然走线布局并不完美,有跳线连接等诸多问题,但是初学者的我们已经尽力去做到完美。

智能温控风扇报告

智能温控风扇报告

基于51单片机的温控风扇设计摘要在炎热的夏天人们用电风扇来降温;在工业生产中,大型机械用电风扇来散热等。

随着温度控制的技术不断发展,应运而生的温控电风扇也逐渐走进了人们的生活中。

温控电风扇可以根据环境温度自动调节电风扇启停与转速,在实际生活的使用中,温控风扇不仅可节省宝贵的电资源,也大大方便了人们的生活和生产。

本设计为一种温控风扇系统,具有灵敏的温度感测和显示功能,系统采用STC89C51 单片机作为控制平台对风扇转速进行控制。

利用DS18B20数字温度传感器采集实时温度,经单片机处理后通过三极管驱动直流风扇的电机。

根据采集的实时温度,实现了风扇的自起自停。

可由用户设置高、低温度值,测得温度值在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动关闭风扇,控制状态随外界温度而定。

关键词:温控风扇,单片机,DS18B20,自动控制Temperature control fan design based on 51single chip microcomputerABSTRACTIn the hot summer, people use cooling fan; in the industrial production, is used toheat the electric fan large machinery. With the continuous development of thetechnology of temperature control, temperature controlled electric fan emerge as the times require gradually into people's lives. Temperature controlled electric fan can be adjusted automatically stop and start the fan speed according to the environment temperature, the use of real life, temperature controlled fan not only can save power resources valuable, but also greatly facilitate the people's life and production.The design of a temperature controlled fan system, sensitive temperate- easuing and display, the system uses STC89C51 microcontroller as the control platform to control the speed of the fan. The real-time temperature using DS18B20 digital temperature sensor, SCM processing through the transistor DCfan motor drive. According to the real-time temperature acquisition, the fan selfstop. High, low temperature value set by the user, the measured temperaturevalues in the high and low temperature between open fan weak wind profile,when the temperature exceeds the set temperature automatically switch to thefile, automatically turn off the fan when the temperature is lower than the set temperature, the control state varies with the outside temperature.KEY WORDS:Temperature control fan, MCU, DS18B20,automatic control目录前言 (1)第1章绪论 (2)1.1 研究本课题的目的和意义 (2)1.2 发展现状 (2)第2章整体方案选择 (4)2.1 温度传感器的选用 (4)2.2 主控机的选择 (6)2.3显示电路 (6)2.4调速方式 (7)第3章系统硬件组成 (8)3.1 系统结构 (8)3.2 主控芯片介绍 (8)3.2.1 STC89C51简介 (8)3.2.2 STC89C51主要功能和性能参数 (9)3.2.3 STC89C51单片机引脚说明 (10)3.2.4 STC89C51单片机最小系统 (12)3.2.5 STC89C51中断技术概述 (14)3.3 DS18B20温度采集电路 (15)3.3.1 DS18B20 的特点及内部构造 (15)3.3.3 DS18B20的工作原理 (17)3.3.3 DS18B20的工作时序 (19)3.4 数码管驱动显示电路 (22)3.4.1 数码管驱动电路 (22)3.4.2 数码管显示电路 (23)3.5 风扇驱动电路 (24)3.6 按键模块 (26)第4章系统软件设计 (28)4.1 软件介绍 (28)4.1.1 Keil C51 (28)4.1.2 Protel99SE (29)4.1.3 Proteus (30)4.2 主程序流程图 (32)4.3 DS18B20子程序流程图 (33)4.4 数码管显示子程序流程图 (34)4.5 按键子程序流程图 (35)第5章系统调试 (37)5.1 软硬件调试 (37)5.1.1 按键显示部分的调试 (37)5.1.2 传感器DS18B20温度采集部分调试 (37)5.1.3 风扇调速电路部分调试 (38)5.2 系统功能 (38)5.2.1 系统实现的功能 (38)5.2.2 系统功能分析 (39)结论 (40)谢辞 (41)参考文献 (42)附录 (43)附录1:protel原理图 (43)附录2:proteus仿真图 (44)附录3:源程序 (45)外文资料译文 (52)前言在现代社会中,风扇被广泛的应用,发挥着举足轻重的作用,如夏天人们用的散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电脑上广泛使用的智能CPU风扇等。

温控风扇实习报告

温控风扇实习报告

一、实习背景随着科技的发展,人们对生活品质的要求越来越高,智能家居产品逐渐走进了千家万户。

温控风扇作为智能家居产品之一,在夏季空调使用过程中,可以有效降低能耗,提高居住舒适度。

为了更好地了解温控风扇的设计与制作过程,提高自己的动手能力和实践能力,我于2023年7月至8月期间,在XX科技有限公司进行了为期一个月的温控风扇实习。

二、实习内容1. 温控风扇的基本原理温控风扇通过温度传感器检测室内温度,并将温度信息传递给单片机控制器。

单片机根据预设的温度范围和当前温度,通过PWM(脉冲宽度调制)技术控制风扇电机转速,实现风扇的智能调速。

2. 温控风扇的硬件设计(1)温度传感器:采用DS18B20数字温度传感器,具有高精度、抗干扰能力强等特点。

(2)单片机控制器:选用STC89C52单片机,具有丰富的外设资源和稳定的性能。

(3)电机驱动电路:采用L298N电机驱动模块,可驱动直流电机,实现风扇转速调节。

(4)电源电路:采用LM7805稳压芯片,为单片机和传感器提供稳定的5V电源。

3. 温控风扇的软件设计(1)主程序:负责读取温度传感器数据,判断温度是否在预设范围内,并控制电机转速。

(2)中断程序:用于处理按键输入,实现用户自定义温度范围和电机转速。

(3)显示程序:通过LCD显示屏显示当前温度、预设温度和电机转速。

三、实习成果通过一个月的实习,我掌握了温控风扇的设计与制作过程,取得了以下成果:1. 熟悉了温控风扇的基本原理和硬件设计。

2. 掌握了STC89C52单片机的编程方法和PWM技术。

3. 能够根据实际需求,设计并实现温控风扇的软件程序。

4. 了解了温控风扇在智能家居领域的应用前景。

四、实习体会1. 实习过程中,我深刻体会到理论知识与实际操作相结合的重要性。

2. 在解决问题过程中,培养了独立思考和团队协作的能力。

3. 通过实习,提高了自己的动手能力和实践能力,为今后从事相关工作奠定了基础。

4. 感谢XX科技有限公司为我提供了宝贵的实习机会,让我在实践中不断成长。

单片机温控风扇实验报告

单片机温控风扇实验报告

单片机温控风扇实验报告
一、实验目的
本实验的目的是通过利用单片机实现温控风扇,控制电机的转速来达到调节环境温度的目的。

二、实验原理
温控风扇的实现原理是核心的模糊控制,它以反馈为基础,依据房间里的温度,通过单片机来控制电机的转速,实现温度的调节。

通过温度的反馈来让温度控制在一定的范围之中,当房间里的温度超过或低于设定值时,系统可以自动调整电机的转速从而降低或提高室温,达到温控效果。

三、实验内容
1. 准备实验材料
温控风扇实验要准备材料,主要包括:
(1)单片机综合开发板、微型步进电机;
(2)温湿度传感器模块;
(3)变压器等。

2. 详细实验过程
a. 安装单片机、微型步进电机
首先我们要把单片机和微型步进电机安装好,将单片机模块安装到开发板上,然后将电机连接到单片机的IO口,最后用线将单片机模块和电源模块连接起来。

b. 编写控制程序
接下来,我们使用编程软件编写控制程序,用来控制微型步进电机的运行,根据温湿度传感器模块发出信号来控制电机转速,进而调节环境温度。

最终使用烧写工具把程序烧写到单片机中,把整个控制系统运行起来。

四、实验结果
实验结束后,我们用数字仪检测系统的实际输出,发现系统对温度变化有很好的响应,可以非常准确地控制风扇的转速,调节所测温度。

五、总结
本实验通过单片机控制风扇的电机,实现了温控功能,达到了调节环境温度、恒定室温的目的。

实验中使用的材料均为成熟可信的,同时编程程序也非常完善,实现了温控的目的。

另外,数字仪的检测结果也反映出系统的高精度,是一次很成功的实验。

温控风扇系统设计与调试实验报告

温控风扇系统设计与调试实验报告

温控风扇系统设计与调试实验报告本次温控风扇系统设计与调试实验旨在探究温度控制的原理及实现方法,具体操作步骤如下:一、实验原理本实验主要采用的温控系统原理为负反馈控制,即将温度传感器检测到的温度与设定温度进行比较,并计算出误差值,通过控制器计算并输出PWM控制信号,控制风扇的转速,维持系统温度稳定。

二、实验器材和材料1、Arduino主控板 1块2、LM35温度传感器 1个3、风扇电机模块 1个4、杜邦线若干三、实验步骤1、接线将LM35温度传感器和风扇电机分别连接到Arduino主控板上。

LM35温度传感器的VCC引脚连接到Arduino主控板的5V引脚,GND引脚连接到GND引脚,OUT引脚连接到A0引脚。

风扇电机模块的VCC引脚连接到Arduino主控板的5V引脚,GND引脚连接到GND引脚,PWM 引脚连接到D3引脚。

2、编程1) 定义变量定义变量,包括控制器的Kp值、Ki值、Kd值、偏差量、偏差和、上一秒的偏差、输出值等。

2) 设置风扇转速和PID系数设置风扇最小转速和PID系数,根据实际情况进行选择。

3) PID控制通过PID控制计算PWM输出值,控制风扇转速,使系统温度稳定在设定温度附近。

4) 读取和处理温度值读取LM35温度传感器检测到的温度值,与设定温度进行比较,计算误差,调整风扇速度控制系统温度稳定。

5) 延时每一次计算后,让控制器等待一定时间再进行下次计算,从而保证控制精度。

3、调试完成编程后,上传到Arduino主控板,插入电源,进行调试。

在初始状态下,风扇停止工作,温度传感器开始检测环境温度。

当环境温度高于设定温度时,通过调整PWM输出控制风扇增加转速,降低温度,直至稳定在设定温度附近。

四、实验结果实验结果显示,本次设计的温控风扇系统能够稳定控制系统温度,并能根据环境温度实现调整风扇转速的功能。

五、实验总结通过本次实验,我们深入了解了PID控制器的原理和实现方法,在实践中,我们运用PID控制方案实现了温控风扇系统,掌握了基本的温控风扇系统设计和调试技能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、智能温控风扇的设计1.1单片机最小系统1.1.1单片机最小系统硬件电路晶振电路图1-1晶振电路复位电路图1-2复位电路下载电路电源电路P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T 014P3.7/RD17P3.6/WR 16P3.5/T 115U180C51C130pfC230pfC91nFX1CRYSTALV C CR110kV C CV C C123456789J552207-0985单片机最小系统图1-5连接电路1.1.2单片机最小系统焊接图1-6焊接实物1.2单片机应用系统1.2.1智能温控小风扇硬件电路按键电路2207-0985VCC1GND 2GND 3GND 4GND5P1577RST 8P179P1610ISP温度传感器接口电路P2.4123J452207-031912345678910111213141516J852207-1619VCCP2.4温度传感器接口图1-9温度传感器接口图1-10风扇焊接实物1.2.2智能温控小风扇控制程序/*************************************************************************************************************** 名称:智能温控键控小风扇功能:可通过按键调节设定值,通过数码管显示当前温度值和设定值,通过PWM技术来控制小风扇的转速,温差越大转速越快***************************************************************************************************************/ORG 0000HAJMP MAINORG 000BH ;定时器中断子程序入口,用以产生PWM高低电平 AJMP TIM0ORG 0200HMAIN: SETB EA ;中断初始化SETB ET0MOV TMOD,#01HMOV TL0,#00MOV TH0,#255SETB TR0MOV SP,#55HTEMP_H EQU 37H ;字定义伪指令TEMP_L EQU 36HTEMP_D EQU 35HTEMPV EQU 45HTEMSV EQU 50HTEMPV_S EQU 47HTEMPV_G EQU 46HTEMSV_S EQU 52HTEMSV_G EQU 51HBUS BIT P2.4 ;位定义伪指令SETB P1.3 ;用于产生PWM脉冲的端口MOV DPTR,#TABEL ;数码管显示段码首地址MOV TEMSV,#30 ;假定的设定值MOV R5,#191 ;用于PWM控制占空比参数的寄存器MOV R6,#255LOOP:LCALL TEMPC ;温度暂存器的读取子程序LCALL CHANGE ; 温度转换子程序LCALL DISPLAY ;温度显示子程序LCALL KEYSCAN ;按键扫描控制设定值子程序LCALL PWM ;PWM电机调速子程序SJMP LOOP/***************************************************名称:获取DS18B20温度暂存器数据子程序功能:将温度低字节存入35H寄存器,温度高字节存入36H寄存器***************************************************/TEMPC:LCALL RES ;初始化子程序MOV A,#0CCH ;写跳过rom命令字节ACALL WBMOV A,#44H ;写温度转换命令字节ACALL WBLCALL DELAY1S ;等待温度转换时间(等待时间用显示和按键扫描子程序填充)LCALL RES ;初始化子程序MOV A,#0CCH ;写跳过rom命令字节ACALL WBMOV A,#0BEH ;写读ram命令字节ACALL WBACALL RB ;读ram数据字节MOV TEMP_L,A ;将温度低8位放入36HACALL RB ;读ram数据字节MOV TEMP_H,A ;将温度高8位放入37HRET/************************************************名称:写字节子程序功能:将写入寄存器A中的字节送入DS18B20************************************************/WB:MOV R7,#8 ;一个字节8位CLR EA ;暂时关中断以防止定时器中断的影响WB1:RRC A ;带进位循环右移将字节的位依次移入c中方便后续操作 JC W11 ;判断为“1”转入写“1”子程序ACALL W0 ;不为“1”即为“0”进入写“0”子程序SJMP W00W11:ACALL W1W00:DJNZ R7,WB1 ;判断是否写8位,即一个字节SETB EA ;开中断继续pwm的定时器中断RET/************************************************名称:写“0”子程序功能:把0位写入DS18B20************************************************/W0:CLR BUS ;主机拉低总线让DS18B20检测写信号LCALL DELAY60 ;写周期至少60usSETB BUS ;释放总线RET/***********************************************名称:写“1”子程序功能:把1位写入DS18B20************************************************/W1:CLR BUS ;主机拉低总线让DS18B20检测写信号NOPNOPSETB BUS ;写“1”信号LCALL DELAY60 ;写周期至少60usSETB BUS ;释放总线RET/************************************************名称:读DS18B20数据字节子程序功能:将读出的DS18B20数据字节放入寄存器A中************************************************/RB:MOV R7,#8 ;读一个字节8位CLR EA ;暂时关中断以防止pwm定时中断的干扰RB1:ACALL RED ;调用读一位子程序RRC ADJNZ R7,RB1 ;判断是否读一个字节即8位SETB EA ;开中断继续pwm定时器中断RET/**********************************************名称:读DS18B20数据位子程序功能:将读出的位数据存入C中**********************************************/RED:CLR C ;清除将要使用的位寄存器CSETB BUSNOPNOPCLR BUSNOPNOPNOPSETB BUSMOV C,BUSMOV C,BUSMOV C,BUSMOV C,BUSACALL DELAY60 ;读周期至少60usRET/*********************************************名称:初始化子程序功能:建立主机和DS18B20间的握手*********************************************/RES:MOV R2,#8MOV R3,#12CLR BUS ;主机发出初始化信号ACALL DELAY512SETB BUSACALL DELAY15 ;延时15usC0:MOV C,BUS ;判断15--60us内是否有从器件应答JNC E0DJNZ R2,C0SJMP RES ;若无应答重新初始化E0:MOV C,BUS ;有应答则判断是否大于60us以防是其他的干扰信号 DJNZ R3,E1SJMP D0E1:JNC E0SJMP RES ;若不大于60us,应答失败,重新初始化D0:ACALL DELAY180 ;若应答信号大于60us,判断是否小于240us,以防其他原因造成的总线电平拉低MOV C,BUSJNC RES ;若应答信号时间大于240us,应答失败,重新初始化CLR P1.0;若应答成功,点亮小灯表示初始化成功RET/***********************************************名称:温度转换子程序功能:将获取的16位温度数据转换为温度数值用于数码管显示***********************************************/CHANGE:MOV A,TEMP_L ;保留温度低字节高四位ANL A,#0F0HSWAP AMOV TEMPV,A ;暂时存入温度值45HMOV A,TEMP_H ;保留温度高字节低四位ANL A,#0FHSWAP AORL A,TEMPV ;温度高字节低四位低字节高四位连接MOV TEMPV,A ;将转换完成的温度数据存入45H中MOV A,TEMP_LJNB Acc.3,CHANGE1 ;温度低字节低四位小数部分四舍五入MOV R0,#TEMPVINC @R0CHANGE1:MOV A,TEMPV ;将已转化温度的十位和个位分离MOV B,#10DIV ABMOV TEMPV_S,A ;已转化温度十位存入47HMOV TEMPV_G,B ;已转化温度个位存入46HMOV A,TEMSV ;将设定值的十位和个位分离MOV B,#10DIV ABMOV TEMSV_S,A ;设定值十位存入52HMOV TEMSV_G,B ;设定值个位存入51HRET/********************************************名称:数码管显示子程序功能:对温度值十位和个位及设定值十位和个位进行显示********************************************/DISPLAY:MOV P2,#0FEH ;位选温度值十位MOV A,TEMPV_S ;段选温度值十位MOVC A,@A+DPTRMOV P0,AACALL DELAY512MOV P2,#0FDH ;位选温度值个位MOV A,TEMPV_G ;段选温度值个位MOVC A,@A+DPTRMOV P0,AACALL DELAY512MOV P2,#0FBH ;位选设定值十位MOV A,TEMSV_S ;段选设定值十位MOVC A,@A+DPTRMOV P0,AACALL DELAY512MOV P2,#0F7H ;位选设定值个位MOV A,TEMSV_G ;段选设定值个位MOVC A,@A+DPTRMOV P0,AACALL DELAY512RET/*********************************************名称:按键扫描子程序功能:扫描P1.0口和P1.1口P1.0口按下设定值加1P1.1口按下设定值减1**********************************************/ KEYSCAN:SETB P1.0 ;I/O口做输入口使用要先置“1” SETB P1.1PUSH ACCPUSH PSWCLR RS0MOV C,P1.0 ;把P1.0口的值送入c中做判断使用 JNC DEB0 ;若按下则低电平,转入去抖操作SJMP JP1 ;若没按下则转检测P1.1口DEB0:MOV R7,#5 ;延时10ms去抖操作DELAY10MS0:ACALL DISPLAY ;调用显示子程序来减少闪烁DJNZ R7,DELAY10MS0MOV C,P1.0 ;延时10ms后再次检测P1.0JNC ADDR ;若依然为低电平则转入加1SJMP JP1 ;若为高电平误操作转入判断P1.1口ADDR:MOV C,P1.0 ;松手检测,若一直为低电平则一直检测直至松手为高电平JNC ADDRMOV R0,#TEMSV ;设定值加1INC @R0CJNE @R0,#40,JP1 ;设定值上限39度MOV TEMSV,#39JP1:MOV C,P1.1 ;检测P1.1口同上JNC DEB1SJMP LAST ;若无按下则转结束DEB1:MOV R7,#5DELAY10MS1:ACALL DISPLAYDJNZ R7,DELAY10MS1MOV C,P1.1JNC DECRSJMP LASTDECR:MOV C,P1.1JNC DECRMOV R0,#TEMSV ;设定值减1DEC @R0CJNE @R0,#19,LAST ;设定值下限20度MOV TEMSV,#20LAST:POP PSWPOP ACCRET/*****************************************************名称:pwm调制定时器参数产生子程序功能:根据当前值和设定值的差值64*(PV-SV)/(40-SV)来决定pwm控制参数的值即R5,R6的值*******************************************************/PWM:MOV R5,#191 ;用于PWM控制占空比参数的寄存器 MOV R6,#255CLR CMOV A,TEMPV ;温度值地址60HSUBB A,TEMSV ;设定值50H,当前温度值减去设定值JNC PWM1MOV A,#00HPWM1:MOV R4,A ;结果放入R4MOV A,#40SUBB A,TEMPV ;上限调节温度40减去设定值MOV B,AMOV A,#64DIV AB ;得到每单位温度代表的PWM参数值 MOV B,R4MUL AB ;当前温差下所产生的PWM参数值的变化量 MOV R4,AMOV A,R5ADD A,R4MOV R5,A ;当前温度下所产生的PWM新参数值R5MOV A,R6SUBB A,R4MOV R6,A ;当前温度下所产生的PWM新参数值R6RET/***********************************名称:定时器0中断服务子程序功能:高低电平的不停变换***********************************/TIM0:PUSH PSWCLR RS0JB P1.3,L0MOV TH0,R5SJMP LASTML0:MOV TH0,R6LASTM:CPL P1.3POP PSWRETITABEL:DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90H/*******************************************名称:延时1s子程序功能:延时1s用于ds18b20温度转换*******************************************/DELAY1S:SETB RS0CLR RS1MOV R0,#0FFHDL3:ACALL DISPLAYACALL KEYSCANACALL DISPLAYACALL KEYSCANACALL DISPLAYACALL KEYSCANDJNZ R0,DL3CLR RS0RET/******************************************* 名称:延时512us子程序功能:延时512us用于ds18b20温度传感器和主机握手初始化子程序*******************************************/ DELAY512:SETB RS0CLR RS1MOV R0,#0FFHDL0:DJNZ R0,DL0CLR RS0RET/******************************************* 名称:延时15us子程序功能:延时15us用于ds18b20温度传感器和主机握手初始化子程序*******************************************/ DELAY15:SETB RS0CLR RS1MOV R0,#5DL1:DJNZ R0,DL1CLR RS0RET/******************************************* 名称:延时60us子程序功能:延时60us用于ds18b20温度传感器读写指令和数据*******************************************/ DELAY60:ACALL DELAY15ACALL DELAY15ACALL DELAY15ACALL DELAY15RET/******************************************* 名称:延时180us子程序功能:延时180us用于ds18b20温度传感器和主机握手初始化子程序*******************************************/DELAY180:SETB RS0CLR RS1NOPMOV R0,#87DL2:DJNZ R0,DL2CLR RS0RETEND1.2.3总结“纸上得来终觉浅,绝知此事要躬行”,我们在学校学习的理论知识在实践过程中转化,这个过程是非常有必要的,通过智能温控小风扇的设计,我深刻的体会到在进行大型程序设计时一定要注意几个问题。

相关文档
最新文档