大棚恒温控制器的设计与实现_毕业论文(设计)1.doc_第1页
大棚恒温控制器的设计与实现_毕业论文(设计)1.doc_第2页
大棚恒温控制器的设计与实现_毕业论文(设计)1.doc_第3页
大棚恒温控制器的设计与实现_毕业论文(设计)1.doc_第4页
大棚恒温控制器的设计与实现_毕业论文(设计)1.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学科分类号 0806 本科生毕业论文(设计)题目(中文): 塑料大棚恒温控制器的设计与实现 (英文): constant temperature controller design and implementation of the plastic greenhouse 2013年 5月10日本科毕业论文(设计)诚信声明作者郑重声明:所呈交的本科毕业论文(设计),是在指导老师的指导下,独立进行研究所取得的成果,成果不存在知识产权争议。除文中已经注明引用的内容外,论文不含任何其他个人或集体已经发表或撰写过的成果。对论文的研究做出重要贡献的个人和集体均已在文中以明确的方式标明。本声明的法律结果由作者承担。本科毕业论文(设计)作者签名: 年 月 日目录摘 要i关键词iabstractikey wordsii1 前言12 任务分析与方案论证32.1 任务分析32.2 两种方案的比较42.2.1 方案一42.2.2 方案二42.3 实现方法简述43 硬件电路的设计53.1 单片机最小系统53.1.1 单片机stc12c5a16s253.1.2 按键电路73.1.3 显示电路73.1.4 报警电路83.2 ds18b20温度传感器与单片机的接口电路83.2.1 ds18b20温度传感器83.2.2 ds18b20的操作时序113.3 继电器输出电路123.4 电源电路134 软件设计144.1 系统流程图144.2 系统程序模块的设计144.3 db18b20测量温度的程序设计154.4 温度转换命令子程序175 调试176 总结17参考文献18致 谢20附录a:设计电路原理图21附录b:设计程序21 塑料大棚恒温控制器的设计与实现摘 要塑料大棚恒温控制器的设计包括硬件电路设计和系统程序的设计。硬件电路主要包括主控制器,温度测量电路,温度控制电路和显示电路。主控制器采用单片机stc12c5a16s2,温度传感器采用美国dallas半导体公司生产的ds18b20,温度控制电路采用的是继电器控制外部加热制冷设备,显示电路采用3个共阳极led数码管。测温控制电路由温度传感器和预置温度值比较组成,当实际测得的温度值大于预先设定的温度,导致光信号报警,并且驱动电风扇工作;当实际温度低于预先设定的温度,导致关信号报警,并驱动加热器工作。系统程序主要包括主程序,测试程序和显示子程序等。关键词单片机;数码显示管;温度传感器ds18b20;控制电路constant temperature controller design and implementation of the plastic greenhouse abstractplastics constant temperature controller design includes hardware circuit design and system program design. the hardware circuit mainly includes the main controller, temperature measurement circuit, temperature control circuit and display circuit. main controller by single chip microcomputer stc12c5a16s2, ds18b20 temperature sensor by dallas semiconductor companies in the united states production, temperature control circuit uses is relay control external heating refrigeration equipment, using three common anode led digital tube display circuit. temperature control circuit is composed of temperature sensor and the preset temperature comparison, when the actual measured temperature value is greater than the pre-set temperature, lead to light alarm signal, and work drive electric fan; when actual temperature is lower than the preset temperature, resulting in a warning signal, and drive the heater work. system program mainly includes the main program, the test program and display subroutine, etc.key wordssingle chip microcomputer; digital tube display; temperature sensor ds18b20; control circuit32 1 前言中国农业的发展必须走现代化农业这条道路,随着国民经济的迅速增长,农业的研究和应用技术越来越受到重视,特别是温室大棚已经成为高效农业的一个重要组成部分。日常生活及工农业生产中经常要用到温度的检测及控制,在冶金、食品加工、化工等工业生产过程中,广泛使用的各种加热炉、热处理炉、反应炉等,都要求对温度进行严格控制。温度控制,在自动化控制中占有非常重要的地位。单片机系统的开发应用给现代农业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的应用1。将单片机控制方法运用到温度控制系统2中,可以克服温度控制系统中存在的严重滞后现象,同时在提高采样频率的基础上可以很大程度的提高控制效果和控制精度。在日常生活中,电烤箱、微波炉、电热水器、烘干箱等电器也需要进行温度检测与控制。传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。而采用单片机对温度进行控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温度控制的技术指标。测量温度的关键是温度传感器,温度传感器正从模拟式向数字式、从集成化向智能化、网络化的方向发展。在测温电路中,可以使用热敏电阻之类的器件利用其感温效应,将随被测温度变化的电压或电流采集过来,先进行a/d转换,然后用单片机进行数据的处理,再在显示电路上,将被测温度显示出来。这种设计需要用到a/d转换电路,因此感温电路的设计比较复杂。进而想到采用智能温度传感器来设计数字温度控制器。本数字保温控制的设计采用美国dallas半导体公司继ds1820之后推出的一种改进型智能温度传感器ds18b20作为检测元件3,继电器控制外部加热制冷设备,其温度值可以直接被读出来,通过核心器件单片机stc12c5a16s2控制温度的读写和显示,用led数码管显示。在温度传感器的选择上我们采用温度芯片ds18b20测量温度。该芯片的物理化学性很稳定,且此元件线形较好。在0100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。本设计的最大特点之一就是直接采用温度芯片对温度进行测量,使数据传输和处理简单化。采用温度芯片ds18b20测量温度,体现了作品芯片化这个趋势。部分功能电路的集成,使总体电路更简洁,搭建电路和焊接电路时更快。而且,集成块4的使用,有效地避免外界的干扰,提高测量电路的精确度。所以芯片的使用将成为电路发展的一种趋势。本方案应用这一温度芯片,也是顺应这一趋势。对于温度的调节系统5,我们才用的只是简单的升温和降温方法,当温度低于我们设定的最低温度值时,则单片机系统则会通过一个高电平的脉冲电流直接送给继电器,使连接在继电器上的加热器通电产生热量来提高温度。如果当温度高于我们设定的最高温度值时,则单片机会通过另一个口发出一个高电平的脉冲电流送个继电器,使连在继电器上的电风扇启动,来降低温度。在此过程中,我们通过单片机将传感器所测量出来的温度通过数码管显示出来。这样就能观察到即时的温度情况,以便更好的验证系统的性能。按照上述设计功能的要求,确定系统有6个部分组成:主控制器、显示电路、报警电路、按键预置温度值电路、继电器输出电路及温度传感电路。控制器使用stc12c5a16s2,温度传感器使用ds18b20,显示电路用3位共阳极led数码管以动态扫描法实现温度显示,继电器外接控制加热制冷设备。系统程序6,7主要包括主程序、温度控制子程序及显示子程序等等。综上所述,本设计以智能集成温度传感器ds18b20为检测元件,以单片机stc12c5a16s2为主控器,用继电器控制外部的加热制冷设备,对大棚塑料内的温度进行控制,便于大棚内的植物生长。该设计同时也适用于人们的日常生活及工农业生产中用于温度的检测及控制。2 任务分析与方案论证2.1 任务分析本设计是对温度进行实时监测与控制,即可以测试塑料大棚中的温度和可设置塑料大棚内适合植物生长的温度。当温度低于设定下限温度时,系统自动报警且自动启动加热继电器加温,使温度上升,同时指示灯亮,当温度上升到下限温度以上时,停止加温;当温度高于设定上限温度时,系统自动报警且自动启动电风扇降温,使温度下降,同时指示灯亮。当温度下降到上限温度以下时,停止降温。温度在上下限温度之间时,执行机构不执行。三个数码管即时显示温度,精确到小数点一位。具体要求如下:(1)、能够测量温度,温度用数字显示。(2)、测量温度范围-1060,测量精度为0.5。(3)、能够设置塑料大棚温度并控制温度,设定范围540,且连续可调。设置温度用数字显示。(4)、温度控制精度2。(5)、当超过设定的温度5时,产生声、光报警。2.2 两种方案的比较2.2.1 方案一测温电路的设计,可以使用热敏电阻之类的器件,利用其感温效应,将被测温度变化的电压或电流采集过来,进行a/d转换后,用单片机进行数据的处理,在显示电路上显示被测温度,这种设计需要用到a/d转换电路,感温电路比较麻烦。2.2.2 方案二考虑使用温度传感器,结合单片机进行电路设计,温度传感器采用ds18b20,这种芯片可直接读取被测温度值,然后再通过单片机stc12c5a16s2控制继电器,进而控制外部的加热制冷设备,以达到预设的温度值。比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故采用方案二。2.3 实现方法简述硬件系统应包括四大模块:单片机最小系统,测温电路,继电器输出电路和电源电路。单片机最小系统负责设置温度的上下限,数据的处理和温度的显示;温度测量电路测量实时温度;当温度高于上限温度或者低于下限温度时,报警电路产生光和声音报警,此时继电器控制加热制冷设备,只至达到上下限范围以内,警报电路和继电器输出主控制器温度控制电路报警电路显示电路温度传感器键盘电路电路停止工作。设计的方框图如图2.1所示。图2.1 设计方框图3 硬件电路的设计3.1 单片机最小系统3.1.1 单片机stc12c5a16s2stc12c5a16s2单片机是以51内核为主的系列单片机,stc单片机是宏晶生产的单时钟/机器周期的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快812倍,内部集成max810专用复位电路。高速10位a/d转换,针对电机控制,强干扰场合。stc12c5a16s2单片机引脚2如图3.1所示。图3.1 stc12c5a16s2单片机主要性能它的主要性能有:(1) 高速:1 个时钟/机器周期,增强型8051 内核,速度比普通8051 快812 倍。(2) 宽电压:5.53.8v。(3) 低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)。(4) 16k 字节片内flash 程序存储器,擦写次数10 万次以上。(5) 芯片内有eeprom 功能。(6) 在系统可编程/ 在应用可编程,无需编程器/ 仿真器。(7) 高速spi 通信端口。(8) 先进的指令集结构,兼容普通8051指令集。引脚的功能:p0.0p0.7(3932):p0口是一个漏极开路型准双向i/o口。在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。在eprom编程时,它接收指令字节,而在验证程序时,则输出指令字节。验证时,要求外接上拉电阻。p1.0p1.7(1-8):p1口是带内部上拉电阻的8位双向i/o口。在eprom编程和程序验证时,它接收低8位地址。p2.0p2.7(21-28):p2口是一个带内部上拉电阻的8位双向i/o口。在访问外部存储器时,它送出高8位地址。在对efrom编程和程序验证期间,它接收高8位地址。p3.0p3.7(10-17):p3口是一个带内部上拉电阻的8位双向i/o口。3.1.2 按键电路三个轻触开关组成按键电路,因为都是独立的按键所以采用直接接地的方法,另外一段分别接在单片机的p1.5,p1.6,p1.7。这样电路比较简单,达到了效果。三个独立式按键可以分别调整温度的上下限报警温度,当按下设置键一次,数码管显示hxx且 led数码管闪烁,这时可以调整报警上限温度值。按下设置键第二次,l xx且数码管闪烁,这时可以调整报警下限温度值。通过“加键”可以对设置数值加。通过“减键”可以对设置数值减。每按一次减1,如图3.2所示。图3.2 按键电路3.1.3 显示电路显示电路采用3位共阳led数码管做为温度值显示。用三个8550pnp三极作为每一位led管的驱动电路,这样使得数码管电流量更大,亮度更亮。一位共阳极数码管显示摄氏度符号,使得整个显示电路更加人性化。电路图8如图3.3所示。图3.3 数码管电路图3.1.4 报警电路采用有源蜂鸣器作为报警器,用一个pnp三极管8550作为驱动。蜂鸣器可以在被测温度超过上限温度或者低于下限温度时,发出报警鸣叫声音。电路图9如图3.4所示:图3.4 报警电路3.2 ds18b20温度传感器与单片机的接口电路3.2.1 ds18b20温度传感器测温系统采用芯片ds18b20,ds18b20是dallas公司的最新单线数字温度传感器,它的体积更小、适用电压更宽、更经济,ds18b20是世界上第一片支持“一线总线”接口的温度传感器,具有一线总线独特而且经济的特点。温度传感器ds18b20作为检测元件,测温范围为55125,最大分辨率可达0.0625。ds18b20可以直接读出被测量的温度值,而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。引脚图如图3.5所示,各脚功能如表3.1所示。图3.5 db18b20引脚图表3.1 db18b20引脚的功能序号名称引脚功能描述1gnd地信号2dq数据输入/输出引脚。单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3vdd可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。ds18b20内部结构组成:(1) 64位光刻rom。rom中的64位序列号是出厂前被光刻好的,它可以看作是该ds18b20的地址序列码,开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的crc校验码,这也是多个ds18b20可以采用一线进行通信的原因。4位闪速rom的结构如表3.2,ds18b20内部结构如图3.6所示。表3.28b检验crc48b序列号8b工厂代码(10h)msb lsb msb lsb msb lsb存储器和控制逻辑暂存器8位crc产生器温度传感器触发上限th触发下限tl64位rom和单线接口电源检测dqvdd图3.6 ds18b20内部结构(2) 高速暂存存储。可以设置ds18b20温度转换的精度,ds18b20温度传感器的内部存储器还包括一个高速暂存ram和一个非易失性的可电擦除的e2pram。高速暂存ram的结构为8字节的存储器,如表3.2所示,头2个字节包含测得的温度信息,第3和第4字节th和tl的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。ds18b20工作时寄存器中的分辨率转换为相应精度的温度数值表3.2 ds18b20内部存储器结构byte0温度测量值lsb(50h)byte1温度测量值msb(50h)byte2th高温寄存器byte3tl低温寄存器byte4配位寄存器ybyte5预留(ffh)byte6预留(0ch)byte7预留(ioh)byte8循环冗余码校验(crc)(3) 非挥发的温度报警触发器th和tl。可通过软件写入用户报警上下限值。(4) crc的产生。在64 b rom的最高有效字节中存储有循环冗余校验码(crc)。主机根据rom的前56位来计算crc值,并和存入ds18b20中的crc值做比较,以判断主机收到的rom数据是否正确。3.2.2 ds18b20的操作时序ds18b20的一线工作协议流程是:初始化rom操作指令存储器操作指令数据传输。其工作时序包括初始化时序、写时序和读时序。主机控制ds18b20完成任何操作之前必须先初始化,即主机发一复位脉冲(最短为480us的低电平),接着主机释放总线进入接收状态,ds18b20在检测到i/o引脚上的上升沿之后,等待15-60us然后发出存在脉冲(60-240us的低电平)。 写时间片:将数据从高电平拉至低电平,产生写起始信号。在15us之内将所需写的位送到数据线上,在15us到60us之间对数据线进行采样,如果采样为高电平,就写1,如果为低电平,写0就发生。在开始另一个写周期前必须有1us以上的高电平恢复期。读时间片:主机将数据线从高电平拉至低电平1us以上,再使数据线升为高电平,从而产生读起始信号。主机在读时间片下降沿之后15us内完成读位。每个读周期最短的持续期为60us,各个读周期之间也必须有1us以上的高电平恢复期。ds18b20可以采用两种方式供电,一种是采用电源供电方式,此时ds18b20的1脚接地,2脚作为信号线接在单片机的p2.0,3脚接电源另一种是寄生电源供电方式,单片机端口接单线总线3,为保证在有效的ds18b20时钟周期内提供足够的电流,可用一个mosfet管来完成对总线的上拉。当ds18b20处于写存储器操作和温度a/d转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时vdd端接地。由于单线制只有一根线,因此发送接口必须是三态的。3.3 继电器输出电路继电器有常开触点,常闭触点。常开触点在线圈不通电的情况下是断开的,当线圈中有电流经过时,常开触点闭合;常闭触点在线圈不通电的情况下是闭合的,当线圈中有电流经过时断开。本设计用到的是继电器的常开触点,即在继电器线圈没有电流经过时是断开的状态,当继电器线圈中有电流经过时闭合导通。继电器实现的是弱电控制强电,单片机是弱电器件,一般情况下它的工作电压为5v,而本实验所用的热得快工作所需电压为220v属于强电,强电不能和弱电有任何电器接触,防止强电进入到单片机内,继电器起到隔离作用。由于单片机是一个弱电器件,它的工作电压是5v,驱动电流在ma级以下,而现在要把它用于一些大功率场合,控制热得快,显然是不行的。所以,就要有一个环节来衔接,这个环节就是所谓的“功率驱动”,继电器驱动就是一个典型的、简单的功率驱动环节。继电器驱动就是单片机与其他大功率负载接口,起到控制作用,三极管起到放大作用。当外部温度大于预设温度时,继电器输出电路一工作,驱动电风扇工作,使环境的温度降低,直到外部温度降低到预设的温度,此时继电器输出电路一停止工作,电路图如图3.7所示;当外部温度小于预设温度时,继电器输出电路二工作,驱动加热器工作,使环境的温度升高,当外部的温度升高到预设的温度时,继电器输出电路二停止工作,电路图如图3.8所示。图3.7 继电器输出电路一 图3.8 继电器输出电路二3.4 电源电路本次设计中既有需要5v供电的电路也有需要220v供电的电路,直接接入220v即可,其中有变压器10可将220v的电压变为5v,此外电源与电路之间有一个开关,当短时间内系统不需要工作,可断开开关,不必要切断电源,这样设计更加人性化,用发光二极管作为电源指示灯。4 软件设计4.1 系统流程图是否开始初始化ds18b20设定温度上、下限显示当前温度值判断当前温度值超过设定温度上限低于设定温度下限灯亮启动加热器升高温度灯亮启动风扇降低温度否是图4.1 系统流程图4.2 系统程序模块的设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。温控系统采用模块化11程序结构,可以分成以下程序模块:系统初始化程序:首先完成变量的设定、中断入口的设定、堆栈、输入输出口及外部部件的初始化工作。主程序main:完成键盘扫描、温度值采集及转换、温度值的显示。当温度值高于设定最高限时,驱动风扇工作,蜂鸣器报警;当温度值低于设定最低限时,驱动热得快,蜂鸣器报警。键盘扫描程序keyscan:完成键盘的扫描并根据确定的键值执行相应的功能,主要完成最高温度、最低温度的设定。温度采集程序:完成ds18b20的初始化并发出温度转换命令,经过指定时间后读取转换的温度值。4.3 db18b20测量温度的程序设计ds18b20的一线工作协议流程是:初始化rom操作指令存储器操作指令数据传输。初始化:单线总线上的所有操作均从初始化开始。初始化过程如下:主机通过拉低单线480us以上,产生复位脉冲,然后释放该线,进入rx接收模式,主机释放总线时,会产生一个上升沿。单线期间ds18b20检测到该上升沿后,延时15-60us,通过拉低总线60-240us来产生应答脉冲。rom操作命令:一旦总线主机检测到应答脉冲,便可以发起rom操作命令。共有5位rom操作命令。内存操作命令:在成功执行了rom操作命令之后,才可以使用内存操作命令。主机可以提供6种内存操作命令。数据处理:ds18b20要有严格的时序来保证数据的完整性。在单线dq上,存在复位脉冲、应答脉冲、写“0”、写“1”、读“0”和读“1”几种信号类型。其中,除了应答脉冲之外,均由主机产生。数据位的读和写则是通过使用读、写时隙实现的。当ds18b20接收到温度转换命令后,开始启动转换,转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625lsb形式表示。当符号位s0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位s1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。部分温度对应值如表4.1所示。表4.1 一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00000191h+10.1250000 0000 1010 000100a2h+0.50000 0000 0000 00100008h00000 0000 0000 10000000h-0.51111 1111 1111 0000fff8h-10.1251111 1111 0101 1110ff5eh-25.06251111 1110 0110 1111fe6fh-551111 1100 1001 0000fc90h4.4 温度转换命令子程序温度转换命令子程序主要是温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法,来等待转换的完成。温度转换命令子程序流程图如图4.2所示发ds18b20复位命令发跳过rom命令发温度转换开始命令结束图4.2 温度转换流程图5 调试连接好电路后,设置温度,用打火机在温度传感器ds18b20附近使温度升高,当温度超过预设温度上限时,此时电风扇开始工作,灭掉打火机,当温度回到预设温度上限以下时,电风扇停止工作;当用冰块在温度传感器ds18b20附近使温度降低,当温度低于预设温度下限时,此时加热器工作,拿开冰块,使温度升高,当温度达到预设温度下限以上时,加热器停止加热,经多次实验,与设想的结果一致,误差为2。但是读取温度值时,出现的现象是温度在判断时出现错误,使风扇存在忽快忽慢的变化,蜂鸣器也不断的蜂鸣报警。解决的方法是在读取温度判断时加延时,并且多次判断,防止跳变。6 总结本次设计使用的温度控制器结构简单、测温比较准确,具有一定的实际应用价值。该温度控制器只是ds18b20在温度控制领域的一个简单实例,还有许多需要完善的地方,在做实物的时候,也出现不少问题,刚开始我使用的是腐蚀电路板法,这种办法虽然美观,但不利于改进,所以我第二次用的是直接焊接的方法,可以在电路板上进行改装,另外还有一个不足的地方的是,我加热设备用的是热的快,加热时必须放在水中,在封闭的环境中,加热时会生成水珠,影响温度的测量,本想用电热炉的,但是成本太高;本设计还可以进一步的改进,让它更加智能,就是将测得的温度通过单片机与通讯模块相连接,以手机短消息的方式发送给用户,使用户能够随时对温度进行监控。此外,还能广泛地应用于其他一些工业生产领域,如建筑,仓储等行业,也可以应用于多种场合,像的温度、育婴房的温度、水温的控制。用户可灵活选择本设计的用途,有很强的实用价值。此外,在本次设计的过程中,我发现很多的问题,这次设计真的让我长进了很多,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。参考文献1 李光飞,楼然苗,胡佳文等.单片机课程设计实例指导m.北京:北京航空航天大学出版社,2004:105125.2 余锡存,曹国华.单片机原理及接口技术(第二版)m.西安:西安电子科技大学出版社,2007:2735.3 马云峰.单片机与数字温度传感器ds18b20的接口设计j.计算机测量与控制,2002:278280.4 高吉祥.模拟电子技术(第二版)m. 北京:电子工业出版社,2007:1442.5 沙占友. 单片机外围电路设计m. 北京:电子工业出版社,2003:3748.6 谭浩强,c程序设计(第三版) m. 北京:清华大学出版社,2006:1725.7 郑阿奇.visual c+ 使用教程 m. 北京:电子工业出版社,2007:2343.8 吴玮玮,protel 99简明应用教程m.西安:陕西国防学院电子教研室,2006:1544.9 程路,郑毅,向先波.protel 99se 电路板设计与制作m.北京:人民邮电出版,2007:1527.10 袁小平.电子技术综合设计教程(第一版)m.北京:机械工业出版社,2008:15-31.11 严蔚敏,吴伟民.数据结构 m.北京:清华大学出版社 ,2007:90115.致 谢附录a:设计电路原理图 电路图附录b:设计程序#include #include #define unchar unsigned char#define uint unsigned intcode unsigned char seg7code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf; /不带小数点的共阳数码管段码code unsigned charseg7codeb=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff,0xbf; /带小数点的共阳数码管段码sbit key_up=p16; /上调温度sbit key_down=p17; /下调温度sbit key_set=p15; /设定键(温度设定,长按开电源) sbit ledonec=p26; /led ds1控制(百位)sbit ledtwoc=p25; /led ds2控制(十位)sbit ledthreec=p24; /led ds3控制(个位)sbit dq=p20; sbit hout=p37; /继电器输出器输出sbit hled=p36;sbit lout=p35;sbit lled=p34;sbit bell=p33;unsigned int shangxian; /上限报警温度,默认值为38unsigned int xiaxian; /下限报警温度,默认值为5uchar data wendu3;uchar user_set4;unsigned char l,h,j,k,fuhao,fg,fg1;unsigned int temp,num;/*ds18b20延时函数*/void delay(unsigned int i)while(i-);/*初始化ds18b20*/void ds18b20_init(void)unsigned char i;bit flag;while(flag=0)dq=1;delay(20);dq=0;delay(200);dq=1;delay(10);while(1)i=dq;if(i=0)flag=1;delay(50);break;flag=0;/*主机发送一个字节的数据到ds18b20的子程序*/void ds18b20_write(unsigned char date)unsigned char i;for(i=8;i0;i-)dq=0;dq=date&0x01;delay(20);dq=1;date=1;delay(15);/*主机从ds18b20读取一个字节子程序*/unsigned char ds18b20_read(void)unsigned char i,date;for(i=8;i0;i-)dq=0;date=1;dq=1;if(dq=1) / 检测总线当前位的高低,如果为低就跳过,继续下一个循环 date=date|0x80;/如果为高,就把date的当前位也置高,继续下一个循环 delay(15);return(date);/*温度显示*/ void temp_read(void)ea=0; ds18b20_init(); ds18b20_write(0xcc);ds18b20_write(0x44);delay(300);ds18b20_init();ds18b20_write(0xcc);ds18b20_write(0xbe);l=ds18b20_read();h=ds18b20_read();delay(200);k=h&0x08;/提取h的第4位if(k=0x08)/检测h的第4位是否为1 fuhao=1;/负温度符号的扫描位码 temp=(h*256)+l);/把h左移8位,加上l后再按位取反temp=temp+1; temp=temp*0.625;/把取反后的值乘以0.625得到10进制实际温度值再扩大100倍,精确到小数点后面2位数(h和l的值计算的时候由软件自动转换成10进制)else fuhao=0;/如果温度为正值,符号位就不显示 temp=(h*256)+l)*0.625;/把h左移8位,加上l后的值乘以0.625得到10进制实际温度值再扩大100倍,精确到小数点后面2位数 ea=1; /*显示函数*void wendu_display(void) if(fuhao=0) if(temp=1000)temp=99.9; /设置显示最大值 ledonec=0; p0=seg7codetemp%1000/100; delay(120); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codebtemp%100/10; delay(120); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codetemp%10; delay(120); ledthreec=1; p0=0xff; if(fuhao=1) /温度为负时显示的数据 ledonec=0; p0=seg7code11; delay(120); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codetemp/10; delay(120); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codetemp%10; delay(120); ledthreec=1; p0=0xff; /*进入设置显示画面*/void xiaxian_disp(void) /下限设置界面 ledonec=0; p0=0xc7; delay(50); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codexiaxian/10; delay(50); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codexiaxian%10; delay(50); ledthreec=1; p0=0xff; void shangxian_disp(void) /上限设置界面 ledonec=0; p0=0x89; delay(50); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codeshangxian/10; delay(50); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codeshangxian%10; delay(50); ledthreec=1; p0=0xff; /*eeprom部份*/* 关闭 ispiap 功能 *void isp_iap_disable(void)iap_contr = 0x00;iap_cmd = 0x00; iap_trig = 0x00;iap_addrh=0x00;iap_addrl=0x00;ea = 1; /开中断/*字节读*uchar byte_read(uint byte_addr)iap_contr = 0x85; /开启isp/iap;并送等待时间 iap_cmd = 0x01; /送字节读命令字 iap_addrh = (uchar)(byte_addr 8); /送地址高字节iap_addrl = (uchar)(byte_addr &0x00ff); /送地址低字节ea = 0; /关中断iap_trig = 0x5a; /送触发命令字 0x46、0xb9iap_trig = 0xa5;_nop_();isp_iap_disable(); /关闭isp/iap功能ea = 1; /开中断return (iap_data);/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论