智能家居系统毕业设计.doc

上传人:good****022 文档编号:116537824 上传时间:2022-07-05 格式:DOC 页数:48 大小:9.31MB
返回 下载 相关 举报
智能家居系统毕业设计.doc_第1页
第1页 / 共48页
智能家居系统毕业设计.doc_第2页
第2页 / 共48页
智能家居系统毕业设计.doc_第3页
第3页 / 共48页
点击查看更多>>
资源描述
智能家居控制系统(软件)设计摘 要 本文通过对现有的家居智能控制系统功能以及实际情况分析,设计了一种安全、实用、方便的智能家居控制系统。本文首先阐述了智能家居控制系统的研究状况和发展现状,以及一般家居控制系统所要检测的物理量。根据家居控制系统常用的检测信号类型,选取了红外信号、温度信号、光线强度信号和密码输入等作为本设计的检测依据。本设计选取红外信号、温度信号和光线强度信号作为监测信号。密码验证是否通过作为整个电路是否工作的依据。当密码验证通过之后,整个系统同时监测红外信号、温度信号和光线强度信号,红外信号达到阈值则开始报警。温度信号实时显示。光线强度信号控制步进电机的动作。关键字:智能控制;光强度;红外;温度;步进电机Intelligent home control system (software) designAbstract Smart home control systems also emerged. This paper designs a practical and convenient smart home control system based on the existing smart home control system and the actual situation.This paper describes the intelligent home control system research and development, as well as detected physical signals of the home control system. This design chooses the infrared signal, the temperature signal, the light intensity signal and the password input signals as the detection signal types.The design selected infrared signal, the temperature signal and the light intensity signal as the monitoring signals. Password authentication is as the basis situation if the circuit works. When password authentication is passed, the entire system monitors the infrared signal, the temperature signal and the light intensity signal. The system alarms when the infrared signal reaches the threshold. Temperature signal real-time displays on the LCD1602. Light intensity signal controls the stepper motor movements.Keywords: intelligent control; light intensity; infrared technology; temperature control; stepper motor II 目 录1 绪 论11.1 课题背景及研究意义11.2 智能家居控制系统的发展概况21.3 本设计研究的主要内容22 智能家居控制系统的总体介绍32.1 整体系统的原理32.2 系统各个模块介绍32.2.1 系统中ADC0832的介绍32.2.2 电机驱动电路介绍42.2.3 矩阵键盘电路介绍42.2.4 声光报警电路介绍53 智能家居控制系统的软件设计63.1 系统功能结构图63.2 软件设计主程序63.3 软件系统构成83.4 显示子程序83.5 温度数据读取程序93.6 中断程序113.7 光线检测与步进电机控制子程序113.8 报警条件子程序124 智能家居控制系统软件调试环境与分析结果144.1 开发环境简介144.1.1 编程软件介绍144.1.2 程序的工程建立144.2 程序的调试154.2.1 主程序的调试154.3 调试结果展示165 结论及展望18附录一 程序清单19附录二 实物图43参考文献44致 谢45IIII1 绪 论1.1 课题背景及研究意义 在信息化技术日益发展的21世纪的世纪,各种电子和互联网新技术是了人类文明的取得巨大进步主要途径。而智能化家居控制系统的出现使得人们可以通过手机或者互联网互联网络在任何时候、任何地方远程的对家中的任何电器(空调、加热器、电饭煲、灯光、音响、DVD影碟机)进行控制;也可以在下班途中,让热水器提前烧好热水、预先将家中的空调机打开、让电饭煲煮好香喷喷的米饭而这一切都仅仅只需要轻轻的点几下鼠标键盘,或者打一个简单的电话就能够实现。此外,还有些家庭可以通过智能家居系统对家里的东西具有远程监听、多途径报警、数字留言等多种便捷功能。现今追求舒适、时尚和便捷的家居生活是社会进步的日趋表现,因为系统可以能够在不改变家中任何家电的情况下,远程的控制家中的电器、灯光、电源及家里环境,使人们可以方便的快捷的生活。现今我们常用的密码锁是一种利用输入密码的正确与否判断与他相联系的机械开关的闭合的电子产品。由于他的严密性和可靠性,使它的种类很多。有基于芯片的性价 比较高的产品,也有简易方便的电子产品。通过密码锁的加入可以防止一些设备被非法开启。提供安全性。 随着社会信息化技术的不断更新,红外传感技术也随之前进。目前已在多个领域发挥它巨大的作用。红外不是可见光,具有良好的隐蔽性,白天和夜里都能用,而且抗干扰能力强,我们利用红外线的特性来制作功能性器件,所以主要被用来制作防盗报警系统。我们为了防止社会上日益泛滥的偷盗现象,常将红外技术运用各大商场、博物馆及有关严密的场所。而本设计综合研究了现有的光电防盗报警装置的优缺点,本身具有实用性强、安装操作简易,价格低廉,误报率低等特点,并且在其原有基础上进行设计的。设计通过查找资料,采用红外对冲管的无线发射与接收来控制是否进入报警模式,通过红外线判读信号,通过电路传输给并由89C52单片机进行处理,所以报警电路是否进行触发将由单片机根据检测模块输入的信号来决定。 现代家居生活是追求舒适、方便的自动化的生活。而自动窗帘可是我们的生活发生实质性变化,利用全自动窗帘的感应基础是根据日照光线和温度来控制的,设计时可以预先设定的光线强度和温度,用来自动开启窗帘和关闭窗帘; 温度是人们日常生活中经常遇到的一个基础变量,现今市场上能测量温度值的传感器有很多种,很多控制系统对温度的测量也是的功能之一。而本设计中运用的是经典的温度传感器DS18B20来检测温度。1.2 智能家居控制系统的发展概况 我国的智能家居技术共历经了概念、研发、实验、推广以及普及四个大阶段,大概时间是从2000年的概念年到2007年普及年之间的7年左右的时间。由于硬件和软件间的协调有很大的困难,所以我们中国在推行智能化家居的难度更加之大。这些问题在国外往往需要更长的时间来完成。而自2003年开始的实验,一些国外的成熟的智能家居计算开始流向中国,这就给我的研发及实验带来了非常之大的帮助,极大地缩短了时间,是我们在追赶国外的步伐更加迅速。在随后的两年里,我国的智能家居技术与欧美国家相比差距并不大,只是国外的相关技术的种类非常多,这是我们国家所不能比的。例如:微软公司开发的“梦幻之家”IBM公司开发的“家庭主任”等均以完善而且成熟的技术强占了大部分家居市场。自2008年奥运会开始,我国的智能化家居技术已经在整个家具市场上占有很大的比重,而国外的智能化技术由于不适应中国认得生活方式所以占到的比例反而小了许多。相比较而言,智能化家居更能体现出科技的力量在我们生活中的重要性。很难再预测在2016年的时候,全球化的智能家居技术将达到怎样的地步,但是可以清楚家居智能化正在走进千家万户。1.3 本设计研究的主要内容 本设计的内容主要是基于89C51单片机的智能家居控制系统,利用单片机获取各个传感器的数据并处理,从而执行相应的控制与有关功能。设计中采用模块化设计原则,利用多种集成传感器芯片,将硬件模块和软件系统相组合,初步设计了一个简易的智能控制系统,并可以完成简单的防盗报警、温度显示、自动控制等功能。根据设计原则,设计中选用性能价格比较高的单片机STC89C52。温度数据的采集系统,本设计中选用DS18B20这一典型的温度传感器。而对于距离的感应,设计方案选用了红外传感器。本文通过对光线的检测是采用光敏电阻与模数转换ADC0832相结合的方案。之外还可以对步进电机进行控制。为了满足密码功能,用液晶屏LCD1602和矩阵键盘来完成密码验证功能。当密码输入错误或是红外的遮挡时间大于阈值时,启动报警电路来报警。本文个章节安排如下: 第一章绪论,主要分析课题提出的背景意义,及智能家居系统的发展概况。 第二章是本文对系统硬件部分的简单介绍。 第三章家居智能控制系统的软件部分的设计,对系统主程序与子程序的流程图的设计 进行分析论述。第四章是调试部分,介绍编程环境与分析软件可能出现的问题,进一步提高软件的操作行。第五章是结论部分,总结了本设计的成果意义,并对本课题的相关展望。2 智能家居控制系统的总体介绍2.1 整体系统的原理 一个完美的家居控制系统可以提供一个家用电器的控制,照明控制,窗帘控制,电话远程控制,室内和室外的远程控制,防盗报警,并为你的各种编程时间控制功能和方法。本系统设计充分利用了已软件代替有关硬件进行设计的原理。在设计中为了简化处理,对于家居系统中几个关键的量进行处理。家居室内温度和光线强度是舒适度的一个重要指标,本系统中对温度进行实时检测和显示,对光线值实时检测并通过步进电机来控制窗帘自动调整室内的光线强度。除了温度和光线强度的检测为,本系统还可以满足简易的防盗防盗功能。通过密码验证避免非法启用设备,通过红外检测可以避免人员非法进入。整个系统的总体原理框图如图2-1所示。 图2-1 智能控制系统总体原理框图2.2 系统各个模块介绍 2.2.1 系统中ADC0832的介绍经过ADC0832模数转换之后,单片机读的数据就是光敏电阻上的分压值。单片机对读到的数据判断就可以知道当前光线强度的情况了从而提高转换的宽度。因为ADC0832有两个通道,本设计中只需要对分压值进行判断,所以选用其中一路就可以了。有关资料表明,选用CH0通道,将CH1通道悬空,作为单通道模拟信号输入时ADC0832的输入电压是05V且8位分辨率时的电压精度为19.53mV。而如果是由IN+与IN-输入的输入时,可以将电压值设定在某一个较大范围之内,使其上下浮动。但值得注意的是,在进行IN+与IN-的输入时,如果IN+的电压小于IN-的电压则转换后的数据结果始终是00H。从图上可以看出,光敏电阻R9与电阻R8构成分压电路。光线强度会改变R9的阻值,当R9的阻值发生变化之后,R9上的电压值随之改变,而模数转换器ADC0832的2管脚CH0上的电压值也跟着改变。光敏电阻控制电路部分的原理图如图2-2。 图2-2 光敏电阻控制电路原理图 2.2.2 电机驱动电路介绍由于驱动步进电机需要较大的功率,所以单片机输出接口需要通过ULN2003放大再连接到相应的电机接口用于带动电机的转动。步进电机的电路图如图2-3所示。图2-3中,J2是步进电机的接口。R4R7是串联限流电阻。图2-3 步进电机驱动电路图 2.2.3 矩阵键盘电路介绍在本设计中,当处于密码处于输入状态时,通过键盘输入密码,可以通过LCD显示输入时的密码状态。在正常工作状态下,LCD显示实时的温度值和红外值。矩阵键盘及显示电路如图2-4所示。图2-4 矩阵键盘及显示电路 2.2.4 声光报警电路介绍当达到报警条件时,要有报警信号发出。这种报警信号通常有三类:闪光报警,鸣音报警和语音报警。本设计的报警电路包括灯光报警和蜂鸣器报警两种方式。实现声光报警电路比较简单,如图2-5所示。 图2-5 声光报警电路3 智能家居控制系统的软件设计3.1 系统功能结构图家居智能控制系统的软件设计分为2个工作状态:等待密码输入状态和正常工作状态。在等待密码输入状态下,电路等待矩阵键盘的数据输入。当输入的数据和定义的密码一致时,系统进入到正常工作状态。如果输入的数据和密码不一致,则提示密码错误并报警1秒,然后转入等待密码输入状态。直到密码输入正确为止。 在正常工作状态下,系统实时检测温度值、光线值、矩阵键盘值和红外值。将检测的值显示到液晶屏上。如果光线值发生改变则相应转动电机,模拟自动窗帘。整个系统的功能结构框图如图3-1所示。等待密码输入状态 正 常 工 作 状 态矩阵键盘温度传感器光敏电阻红外传感器步进电机LED显示 图3-1系统功能结构图3.2 软件设计主程序 系统的程序烧录到STC89C52内部的FLASH内存中,有主程序、温度读取程序、中断延时程序、红外遮挡时间判定程序、光线强度判定程序、由光线强度值控制电机程序、键盘输入、LCD显示程序和报警子程序等组成。为了方便编程,使程序完成后条理清晰,就必须对数据存储器的存储空间进行规划。STC89C52提供用户的RAM有256字节。 主程序的功能是完成开机界面和对单片机所进行的初始化,初始化就是设置各个变量的初始值、进行相关的中断设置等。各部分的地址分配如下:LCD1602的数据端口:P0口;LCD1602的控制端口:P2.5P2.7;DS18B20温度传感器接口:P1.0;矩阵键盘接口:P1.1P1.7;红外接口:P3.2;报警器接口:P3.3;步进电机接口:P3.4P3.7。主程序的流程图如图3-2所示。初始化设置定时器0打开定时器中断读取密码值读取温度值报警显示密码错误显示温度值读取光线强度主程序密码是否正确红外值是否大于阀值YNYN图3-2 主程序流程图3.3 软件系统构成本系统的软件部分主要包含五个文件即CLOCK.H文件、LCD1602.H文件、DS18B20.H文件、MOTOR.H文件、ULTRASONIC.H文件和MAIN.C文件。由于项目文件并不太大,所以用五个头文件的形式将一些必要的时钟设置、宏定义和一些简单的驱动程序包含在主函数中,这样,既可以实现程序设计的模块化,又不影响程序编译的效率。其中MAIN.C文件主要完成系统初始化以及红外检测、模数转换功能,同时,它还包含了单片机应用中最重要的定时器设置、定时器中断、端口中断等内容。3.4 显示子程序 LCD1602典型应用和本设计一致,可以参看原理图。其基本操作时序如下: 读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字 写指令:输入:RS=L, RW=L,D0D7=指令,E=高脉冲 输出:无 读数据:输入:RS=H, RW=H, E=H 输出:DOD7=数据 写数据:输入:RS=H, RW=L,D0D7=数据,E=高脉冲 输出:无显示子程序负责状态的显示,在输入密码状态负责提示语的显示,和输入密码过程的显示,当密码输入完毕之后将密码判断的结果显示出来。在系统进入正常工作状态后,显示当前的温度值和红外值。(1)LCD1602的读操作时序如图3-5所示。图3-3 1602读操作时序(2) LCD1602的写操作时序如图3-6所示 图3-4 1602写操作时序 3.5 温度数据读取程序 温度检测模块本设计选用了DS18B20元件。DS18B20元件是由DALLAS设计生产的一款单总线方式访问的数字温度计。该元件具有体积小,外围电路简单等特点。因此本设计选择该元件为基础组建一个温度检测系统。由于该元件遵循单总线协议,即只要使用一个引脚就可以进行数据的传输,所以它对读/写操作的时序要求比较严格。在进行此操作时为保证数据的可靠性,需要关闭总中断。此外该元件上电后默认精度为9位,在写完读取温度指令后,会在该器件内部的两个8位的RAM中获取有效数据。其中前8位用来表示测得数据的正负,即为数据的符号位,后面的8位用于表示数据值。由于测量精度为9位,所以当测得温度为正数时,实际温度值为数据值乘以0.5。当测得值为负数时,实际温度应为数据值的补码乘以0.5。例如,对应于-25的数据格式为: MSB LSB1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 (符号位“-”) (温度值“ ”) 11001110的补码00110010,即,被测温度值为: T=-(125 +124 +12)0.5=-25 表3-1 9位DS18B20温度与数据的对应关系温度/二进制数据输出十六进制数据输出+12500000000 1111101000FAH+2500000000 001100100032H+0.500000000 000000010001H-0.511111111 11111111FFFFH-2511111111 11001110FFCEH-5511111111 10010010FF92H当系统处于正常工作状态时,要循环的对温度数据采集、显示和判定。对温度值的读取由DS18B20来完成。DS18B20是一线式的器件,数据的读写都通过一个数据端口来完成。所以对DS18B20的控制时序就要求比较高。读取和写入数据的过程中无法被中断,所以在DS18B20的读写的情况下关闭中断。 DS18B20的控制是典型的控制类程序。共享4个函数来完成。初始化、读数据、写数据和得到温度4个函数。DS18B20控制程序的流程图如图3-7所示。初始化ds18b20写温度转换命令等待温度转换命令读取温度值温度程序结束图3-5 DS18B20流程图3.6 中断程序在DS18B20的程序中,当启动DS18B20温度转换之后,需要等待750ms以上,才能从DS18B20端口上读到当前的温度值。而红外的数据什么时候到来是不确定的,为了平衡二者的关系。使用定时器中断,来产生5ms的中断。没当中断到来读取红外的端口,当红外有输出时,打开内部计数器来记录红外被遮挡的时间。通过定时器中断不仅满足的DS18B20的读取问题,也兼顾了红外数据的读取和显示的问题。定时器中断流程图如图3-9所示。进入中断、定时存数据保护现场取数据指向下一地址请标志位开始退出现场结束图3-6 定时器中断子程序流程图3.7 光线检测与步进电机控制子程序根据本设计的模拟量转换要求,系统采用的ADC083是8位分辨率的A/D转换芯片,其最高分辨可达256级,转换时间仅为32S,转换速度快且稳定性能强,完全可以达到要求。因其内部参考电压的复用与电源的输入,使得芯片的模拟电压输入保持在05V之间,达到稳定的工作状态。芯片还具有双数据输出可作为数据校验,能够有效地减少数据误差。选用独立的芯片使能输入,通过数据输入,我们可以很容易地实现信道选择功能。光线检测主要是通过ADC0832来完成的。通过读取ADC0832的值,并与上一个读取的值相比较,来判断光线是变暗了还是变亮了。根据本次读取的值和上次读取的值取差值,用差值来控制电机的正反转以及电机的转动幅度。光线检测与步进电机控制子程序的流程图如图3-10所示。初始化DS18B20开始读取模数转换值 保存检测值,计算初始值或上一值的差值取反转程序及转动幅度 判断差值的大小取正转程序及转动幅度结束小于0大于0等于0图3-7 光线检测与步进电机控制程序流程图3.8 报警条件子程序报警条件说明 :(1)密码输入:当密码输入错误时报警,密码输入正确则进行下一步操作;(2)红外传感器:红外被遮挡5秒以上为达到报警条件,以下为未达到报警条件。因为所要监测的传感器主要是温度传感器和红外传感器,任何一个传感器如果达到报警条件,都可以发出报警信号。在硬件设计方面已经对每个传感器的报警条件进行了设置。程序流程图如图3-11所示。 读取密码值初始化进入报警状态读取红外值判断密码是否正确红外值是否达到阀值报警是否解除开始结束YNNY 图3-8 报警条件子程序流程图434 智能家居控制系统软件调试环境与分析结果本次系统调试,是以硬件模块为准,先模块后整合的方式进行的。当然,单片机的基本时钟和引脚设置必不可少。在系统联调时,出现了许多实际问题。现将主要方面阐述如下。4.1 开发环境简介 4.1.1 编程软件介绍 在本设计中,由于用的是C语言编程,所以我选用的软件开发环境是美国Keil SOFTWARE公司出品的51系列兼容单片机。KEIL VISION可以方便的使用并且利用其强大的仿真功能进行软硬件的调试工作。目前最新版的KEIL系统提供了包括于C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的一整套完善的开发方案,并可以通过一个集成开发环境(UVISION)将这些部分严密的组合在一起共同工作。WIN98、NT、WIN2000、WINXP等操作系统都可以有效的运行KEIL软件进行编程。 实际使用KEIL 51时,干集成环境既可用于C语言开发也可用于汇编语言开发。它内部集成了文件编辑、项目管理、编译链接和仿真调试等多种功能。用户可以在这里用文件编辑器编写自己的程序,用多种方法来调试和修改程序。编译程序也能帮助用户检查错误,提示用户修改错误,直至程序无误。 为了使软件编程环境更加灵活多样,所以在2009年2月发布了引入灵活的窗口管理系统的UVISION4编程环境,能够使用更多的监视器,视觉上可以对窗口位置的任何地方进行完全控制是本次软件更新的最大亮点,并且充分利用屏幕空间和更有效地组织多个窗口是新的用户界面显著地特点,它为我们提供一个整洁的、高效的环境来开发应用程序以提高工作效果。 4.1.2 程序的工程建立 (1)先建立一个名为“hyx”的空文件夹,把工程文件放到里面,防止和其它文件相混。开始工作并启动KEIL UVISION4软件。 (2)点击“PROJECT-NEW UVISION PROJECT”新建一个系统工程。 (3)在弹出的对话框中,选择刚刚建立的“HYX”的文件夹,保存该项目的名称,不需要填写,默认的工程后缀与UVISION3及UVISION2版本不同了,为UVPORJ。(4)弹出一个对话框后,就可以根据设计中所需要的单片机。可以在找到并选中“HYX”下的AT89C52,用于开始编译程序。 (5)编程完毕之后,开始建立一个源程序文本: (6)找一个空白的文档开始写入源程序。 (7)输入源程序文件名名称,因为是C语言,则是“HYX.C”然后保存。 (8)在项目设置中,可以编译、链接,选择菜单项目建立目标,连接到单一的工程项目,生成代码。如下图3-3所示:图4-1 基于Keil的编程说明图4.2 程序的调试在对工程成功的进行汇编、连接后,要进入软件调试状态,只要选择菜单中的DEBUGSTART/STOP DEBUG SESSION即可,并建立了一个仿真CPU用来模拟执行该程序。 4.2.1 主程序的调试 因为本设计中采用的模块较多所以系统采用了实时多任务系统,实行逐个分任务进行调试。当逐个子程序调试好以后,再观察各个任务同时运行时操作系统中有没有错误。等调试全部完成后,为了调试效果应反复运行多次,其中如发现错误时部分程序作了适当修正后系统才能够正常运行。利用单步运行的的性质,可以对一些多次循环重复的程序进行检查。而这样的调试可以选用KEIL VISION开发环境来进行调试,既方便又快捷。从中找到程序出错的环节及故障点进行修改,直到程序完全正常。如下图3-4所示: 图4-2 Keil程序的调试 4.2.2 软件抗干扰措施当单片机受到干扰,不再按照一定的规律执行,被改变了的程序指针(PC)的值后,使程序而跑飞到其它非程序区,此后它不仅执行了一系列毫无意义的指令,而且还可能破坏数据存储器的内容,造成难以预料的后果。激活看门狗的程序其工作指令如下程序: SFR WDTRST = 0XA6 _NOP_(); WDTRST = 0X1E ;先送1E WDTRST = 0XE1 ;后送E14.3 调试结果展示设计中的要求基本完成,如下图4-1和4-2所示:(1) 开机画面,需输入正确密码(2) 密码正确后,会显示当前室内温度 (3)红外,光敏,步进电机都能实现且运行良好图4-3 开机画面图4-4 温度及其他显示画面5 结论及展望 智能家居控制系统的核心任务是数据的采集、运算和处理,对于实际物理量的采集必须要有传感器。传感器是一种检测装置,它能够直接将物理量转换为电信号的量,现今的传感器还能直接将物理量转换为单片机可以接收的数字量。传感器的工作指标与运行性能是能否圆满完成检测和控制的重要环节,如果没有对原始物理量精确可靠的反应,那么就无法进行最佳检测和控制。 本设计的控制系统是基于STC89C52单片机为核心,进行必要的计算技术,以软件代替很多传统的控制系统的硬件,多种功能完美的将多种系统功能集于一身。用本文设计的智能家居控制系统具有如下特点: (1)通过矩阵键盘输入密码,当密码正确电路进入正常工作状态。 (2)系统实时监测红外传感器的值,可以对非法进入的情况进行报警。 (3)实时采集温度值,将室内的温度值实时的显示出来。 (4)实时采集光线强度值,通过光线强度值来控制窗帘的开合,来保持室内光线的稳定。 (5)单片机及接口电路的设计使I/O接口线利用率高。电路简单、成本降低、外接器件少、性能可靠。 展望,家居环境的实际情况比较复杂,需要测量的参数一般都比较多,本设计主要采集了温度参数,红外参数以及光线强度参数等。温度是家庭室内舒适度的一个重要参数。为了防止人员的非法进入红外参数也是一个比较重要的参数,为了能够控制室内的光线强度,对光线强度的检测和对窗帘电机的控制也是必不可少的。为了提高一些设备使用的安全性,进行简单的密码认证也是很必要的。本课题所设计的智能家居控制系统可以用来检测非法进入、温度值、光线强度以及密码认证。 本设计也有许多不足之处,最明显的是所涉及的家居家电太少,以及智能化的操作行不高,如果有可能我会在原方案上加入以下的系统: (1)在原模块上加上万年历以及烟雾报警系统。 (2)在原来的设计上加入远程控制系统(GSM),是整个设计更加体现智能化家具的价值。 现在基于各种因素限制,所以本系统设计只能做到这样。附录一 程序清单#include#include #include #definetime_length10000/us#defineinf_length5/s#definetemp_max40/度#defineL1602_DBP0sbit L1602_RS=P27;sbit L1602_RW=P26; sbit L1602_E=P25;sbit ds18b20_bit = P10;sbit Inf_bit= P32;sbit KEY_LA=P11;sbit KEY_LB=P12; sbit KEY_LC=P13;sbit KEY_LD=P14;sbit KEY_L1=P15; sbit KEY_L2=P16;sbit KEY_L3=P17;sbit ADC0832_CS=P20;sbit ADC0832_CLK=P21;sbit ADC0832_DI=P23; sbit ADC0832_DO=P22;sbit SETP_1=P34;sbit SETP_2=P35;sbit SETP_3=P36; sbit SETP_4=P37;sbit Beep_bit=P33;unsignedcharbdatastatus;sbitnormal_work= status0;sbitflag_alarm= status1;sbitflag_1820= status2;sbitflag_inf= status3;unsigned char code time_num_h = (unsigned char)(65536-time_length)/256);unsigned char code time_num_l = (unsigned char)(65536-time_length)%256);unsigned char code ticks_second = (unsigned char)(1000000/time_length);unsignedchartemperature=30;unsignedcharseconds=0;unsignedcharadc_value=0;unsignedcharworkstate = 0;unsigned char psd6;staticcode unsigned charDPY_TAB16 = 0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f,0X77,0X7c,0X39,0X5e,0X79,0X71,;static code unsigned char MOTOR_STEP8 = 0 x80,0 xc0,0 x40,0 x60,0 x20,0 x30,0 x10,0 x90;unsigned char lcd_data16=KEY: *;/*延时函数 */voiddelayms(unsigned char ms)unsigned chari,j;while(ms-)for(i=0;i3;i+)for(j=0;j107;j+);/*延时函数 */voiddelay100us(unsignedcharcnt)unsignedchari,j;for(i=0;icnt;i+)for(j=0;j22;j+)_nop_();/*延时函数 */voiddelay10us(void)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/*按键状态判定函数 */unsigned charkey_station(void)unsigned chari,key;KEY_LA=0;KEY_LB=0;KEY_LC=0;KEY_LD=0;i=P1;i&=0 xE0;if(i = 0 xE0)key=0;elsedelayms(10);i=P1;i&=0 xE0;if(i = 0 xE0)key=0;elseKEY_LA=0;KEY_LB=1;KEY_LC=1;KEY_LD=1;i=P1;i&=0 xE0;i=i;if(i & 0 x80)key = 0 x31;if(i & 0 x40)key = 0 x32;if(i & 0 x20)key = 0 x33;KEY_LA=1;KEY_LB=0;KEY_LC=1;KEY_LD=1;i=P1;i&=0 xE0;i=i;if(i & 0 x80)key = 0 x34;if(i & 0 x40)key = 0 x35;if(i & 0 x20)key = 0 x36;KEY_LA=1;KEY_LB=1;KEY_LC=0;KEY_LD=1;i=P1;i&=0 xE0;i=i;if(i & 0 x80)key = 0 x37;if(i & 0 x40)key = 0 x38;if(i & 0 x20)key = 0 x39;KEY_LA=1;KEY_LB=1;KEY_LC=1;KEY_LD=0;i=P1;i&=0 xE0;i=i;if(i & 0 x80)key = 0 x08;if(i & 0 x40)key = 0 x30;if(i & 0 x20)key = 0 x0D;KEY_LA=0;KEY_LB=0;KEY_LC=0;KEY_LD=0;while(1)i=P1;i&=0 xE0;if(i = 0 xE0)delayms(10);i=P1;i&=0 xE0;if(i = 0 xE0)break;KEY_LA=1;KEY_LB=1;KEY_LC=1;KEY_LD=1;returnkey;/* DS18B20 程序 *voidInit_DS18B20(void)unsignedchari;ds18b20_bit=1;_nop_();ds18b20_bit=0;delay100us(5);ds18b20_bit=1;delay10us();delay10us();delay10us();delay10us();delay10us();delay10us();if(ds18b20_bit=0)for(i=0;i250;i+)if(ds18b20_bit = 1)delay100us(3);flag_1820= 1;elseflag_1820=0; /*读18B20函数 */unsignedcharread_18b20(void)unsignedchari;unsigned charc;for(i=0;i=1; if(ds18b20_bit = 1) c |= 0 x80; else c &= 0 x7f; delay10us();delay10us();delay10us();delay10us();delay10us();ds18b20_bit = 1;returnc;/*写18B20函数 */voidwrite_18b20(unsigned char cnt)unsignedchari;for(i=0;i=1;/*得到温度值函数 */unsigned intget_number_18b20(void)unsigned char temp=0;unsignedchar h,l;Init_DS18B20();if(flag_1820 = 1)EA=0;write_18b20(0 xcc);write_18b20(0 x44);EA=1;delayms(200);delayms(200);delayms(200);delayms(200); Init_DS18B20();EA=0;write_18b20(0 xcc);write_18b20(0 xbe);l = read_18b20();h = read_18b20();EA=1;temp = h;temp = temp 4;temp += l;if(h & 0 xf0) !=0)temp -= 1;temp = temp;temp |= 0 x80;returntemp;/* DS18B20 程序 */* LCD1602 程序 *staticunsigned char L1602_read_status() unsigned char s;L1602_RW=1; L1602_RS=0;L1602_E=0; L1602_DB=0 xff;_nop_();_nop_();L1602_E=1;_nop_();_nop_();s=L1602_DB;L1602_RW=1;_nop_();return(s);void L1602_write_command( unsigned char com )unsigned char i;do i=L1602_read_status(); i&=0 x80; delayms(2);while(i!=0); L1602_DB=com;L1602_RW=0;/L1602_RS=0;L1602_E=1;/ _nop_();_nop_();L1602_E=0;/ _nop_();_nop_();L1602_RW=1; void L1602_write_data( unsigned char dat ) unsigned char i;do i=L1602_read_status(); i=i&0 x80; delayms( 2);while(i!=0); L1602_DB=dat;L1602_RW=0;L1602_RS=1;L1602_E=1;_nop_();_nop_();L1602_E=0;_nop_();_nop_();L1602_RW=1;void L1602_init( void ) L1602_write_command(0 x38);L1602_write_command(0 x0C);L1602_write_command(0 x06);L1602_write_command(0 x01);delayms(2); voidLCD_display_char(unsigned char x , unsigned char y , unsigned char dat)unsigned char add;if(x=1)add=0 x80+y;elseadd=0 xc0+y;L1602_write_command(add);L1602_write_data(dat);voidLCD_display_str(unsigned char x)unsigned char i;if(x = 0 x01)L1602_write_command(0 x80);elseL1602_write_command(0 xc0);for(i=0;i16;i+)if(lcd_datai = 0)break;L1602_write_data(lcd_datai);voidLCD_clear(void)unsigned char i;L1602_write_command(0 x80);for(i=0;i16;i+)L1602_write_data(0 x20);L1602_write_command(0 xc0);for(i=0;i16;i+)L1602_write_data(0 x20);voidpsd_clear(void)psd0=0;psd1=0;psd2=0;psd3=0;psd4=0;psd5=0;/*
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 装配图区 > UG装配图


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!