毕业设计论文温控电扇的设计.doc_第1页
毕业设计论文温控电扇的设计.doc_第2页
毕业设计论文温控电扇的设计.doc_第3页
毕业设计论文温控电扇的设计.doc_第4页
毕业设计论文温控电扇的设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

中物院工学院:自动温控电扇的设计毕 业 设 计 论 文题 目 温控电扇的设计 指导教师 学生姓名 专 业 电气自动化技术 班 级 日 期 2013年12月 自动温控电扇的设计 摘要 要使电子产品保持较低的温度,必须用大功率、高转速、大风量的风扇,而风扇的噪音与其功率成正比。如果要低噪音,则要减小风扇转速,又会引起电子设备温度上升,不能两全其美。为解决上述问题,我们设计了这套温控自动风扇系统。本系统采用高精度集成温度传感器,用单片机控制,能显示实时温度,并根据使用者设定的温度自动在相应温度时作出小风、大风、停机动作,精确度高,动作准确。关键词 自动控制 单片机 温控 风扇 目录1)总体方案论证与选择41.1温度传感器的选用41.2控制核心的选择51.3显示电路51.4调速方式61.5控制执行部件62)系统概述63) 硬件设计7 3.1温度传感器73.2单片机93.3数码管124)单元电路设计12 4.1电源电路124.2数码管显示电路124.3声响,温度采集,温度设定及复位电路134.4温控自动电路144.5无极调速电路155)软件设计与原理156)总体电路图177) 参考文献188)鸣谢与收获18附1:流程图19附2:程序201 总体方案论证与选择本系统采用高精度集成温度传感器,用单片机控制,能显示实时温度,并根据使用者设定的温度自动在相应温度时作出小风、大风、停机动作,精确度高,动作准确。需要有较高的温度变化分辨率和稳定可靠的换档停机控制部件。1.1 温度传感器的选用温度传感器可由以下几种方案可供选择:方案一:选用热敏电阻作为感测温度的核心元件,通过运算放大器放大由于温度变化引起热敏电阻电阻的变化、进而导至的输出电压变化的微弱电压变化信号,再用ad转换芯片adc0809将模拟信号转化为数字信号输入单片机处理。方案二:采用热电偶作为感测温度的核心元件,配合桥式电路,运算放大电路和ad转换电路,将温度变化信号送入单片机处理。方案三:采用数字式集成温度传感器ds18b20作为感测温度的核心元件,直接输出数字温度信号供单片机处理。对于方案一,采用热敏电阻有价格便宜、元件易购的优点,但热敏电阻对温度的细微变化不敏感,在信号采集、放大、转换过程中还会产生失真和误差,并且由于热敏电阻的r-t关系的非线性,其本身电阻对温度的变化存在较大误差,虽然可以通过一定电路予以纠正,但不仅将使电路复杂稳定性降低,而且在人体所处温度环境温度变化中难以检测到小的温度变化。故该方案不适合本系统。对于方案二,采用热电偶和桥式测量电路相对于热敏电阻其对温度的敏感性和器件的非线性误差都有较大提高,其测温范围也非常宽,从-50摄氏度到1600摄氏度均可测量。但是依然存在电路复杂,对温度敏感性达不到本系统要求的标准,故不采用该方案。对于方案三,由于数字式集成温度传感器ds18b20的高度集成化,大大降低了外接放大转换等电路的误差因素,温度误差很小,并且由于其感测温度的原理与上述两种方案的原理有着本质的不同,使得其温度分辨力极高。温度值在器件内部转换成数字量直接输出,简化了系统程序设计,又由于该传感器采用先进的单总线技术(1-wrie),与单片机的接口变的非常简洁,抗干扰能力强。关于ds18b20的详细参数参看下面“硬件设计”中的器件介绍。1.2 控制核心的选择方案一:采用电压比较电路作为控制部件。温度传感器采用热敏电阻或热电偶等,温度信号转为电信号并放大,由集成运放组成的比较电路判决控制风扇转速,当高于或低于某值时将风扇切换到相应档位。方案二:采用单片机作为控制核心。以软件编程的方法进行温度判断,并在端口输出控制信号。对于方案一,采用电压比较电路具有电路简单、易于实现,以及无需编写软件程序的特点,但控制方式过于单一,不能自由设置上下限动作温度,无法满足不同用户以及不同环境下的多种动作温度要求,故不在本系统中采用。对于方案二,以单片机作为控制器,通过编写程序不但能将传感器感测到的温度通过显示电路显示出来,而且用户能通过键盘接口,自由设置上下限动作温度值,满足全方位的需求。并且通过程序判断温度具有极高的精准度,能精确把握环境温度的微小变化。故本系统采用方案二。1.3 显示电路方案一:采用五位共阳数码管显示温度,动态扫描显示方式。方案二:采用液晶显示屏lcd显示温度对于方案一,该方案成本低廉,显示温度明确醒目,在夜间也能看见,功耗极低,显示驱动程序的编写也相对简单,这种显示方式得到广泛应用。不足的地方是扫描显示方式是使五个led逐个点亮,因此会有闪烁,但是人眼的视觉暂留时间为20ms,当数码管扫描周期小于这个时间时人眼将感觉不到闪烁,因此可以通过增大扫描频率来消除闪烁感。对于方案二,液晶体显示屏具有显示字符优美,不但能显示数字还能显示字符甚至图形的优点,这是led数码管无法比拟的。但是液晶显示模块价格昂贵,驱动程序复杂,从简单实用的原则考虑,本系统采用方案一。1.4 调速方式 方案一:采用变压器调节方式,运用电磁感应原理将220v电压通过线圈降压到不同的电压,控制风扇电机接到不同电压值的线圈上可控制电机的转速,从而控制风扇风力大小。方案二:采用晶闸管构成无级调速电路。对于方案一,由于采用变压器改变电压调节,有风速级别限制,不能适应人性化要求。且在变压过程中会有损耗发热,效率不高,发热有不安全因素。对于方案二,以电位器控制晶闸管的导通角大小,可实现由最大风速到关闭的无级别调速,可将风力调节在关闭无风到最大风之间的任意风力,实现“自由风”。且在调速环节中基本无电力损耗。故本系统采用方案二。1.5 控制执行部件方案一:采用数模转换芯片ad0832控制,由单片机根据当前温度值送出相应数字量到ad0832,由ad0832产生模拟信号控制晶闸管的导通角,从而配合无级调速电路实现温控时的自动无级风力调节。方案二:采用继电器,继电器的接有控制晶闸管导通角的电阻的接入电路与否由单片机控制,根据当前温度值在相应管脚送出高/低电平,决定某个继电器的导通角控制电阻是否接入电路。对于方案一,该方案能够实现在风扇处于温控状态时也能无级调速,但是d/a转换芯片价格较高,与其温控状态下无级调速功能相比性价比不高。对于方案二,虽然在温控状态下只能实现弱/大风两级调速,但采用继电器价格便宜,控制可靠,且出于在温控状态时无级调速并不是特别需要的功能,综合考虑采用方案二。2 系统概述本系统由集成温度传感器、单片机、led数码管、继电器、双向晶闸管、蜂鸣器及一些其他外围器件组成。使用具有价廉易购的at89s52单片机编程控制,通过修改程序可方便实现系统升级。系统的框图结构如下:温度传感器ds18b20单片机at89s52数码管显示无级调速器被控对象(风扇)人工控制3 硬件设计系统主要部件包括ds18b20温度传感器、at89s52单片机、双向晶闸管、五位led数码管和风扇。辅助元件包括继电器、蜂鸣器、电阻、晶振、电源、按键和拨码开关等。3.1 温度传感器ds18b20 单线数字温度传感器是dallas 半导体公司开发的世界上第一片支持“一线总线”接口的温度传感器。它具有3 引脚to92 小体积封装形式。温度测量范围为-55+128,可编程为9 位12 位a/d 转换精度,测温分辨率可达0.0625。被测温度用符号扩展的16 位数字量方式串行输出。工作电压支持3v5.5v 的电压范围,既可在远端引入,也可采用寄生电源方式产生。ds18b20 还支持“一线总线”接口,多个ds18b20可以并联到3 根或2 根线上,cpu 只需一根端口线就能与诸多ds18b20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。它还有存储用户定义报警温度等功能。ds18b20 内部结构及管脚ds18b20 内部结构如图1所示,主要由4 部分组成:64 位rom、温度传感器、非挥发的温度报警触发器th 和tl、配置寄存器。其管脚排列如图2所示,dq 为数字信号端,gnd 为电源地,vdd 为电源输入端。图1 ds18b20 内部结构图2 ds18b20外形ds18b20工作原理ds18b20 测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2 的脉冲输入。计数器1 和温度寄存器被预置在55所对应的一个基数值。计数器1 对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1 的预置值减到0 时,温度寄存器的值将加1,计数器1 的预置将重新被装入,计数器1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2 计数到0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1 的预置值。低温度系数晶振高温度系数晶振计数器2斜率累加器计数器1预置比较预置=0=0温度寄存器加1停止lsb置位/清除 图3 ds18b20测温原理框图3.2 单片机根据设计要求设定at89s51为中央处理器,它是一种低功耗、高性能的处理器。作为整个控制系统的核心,at89s51内部已包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。整个系统结构紧凑,抗干扰能力强,性价比高,是比较合适的方案。 at89s51主要特性及引脚说明at89s51是一个低功耗高性能单片机,如图4所示,它共有40个引脚,32个外部双向输入/输出(i/o)端口,2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,at89s51可以按照常规方法进行编程,也可以在线编程。 图4 at89s51图管脚说明:vcc:供电电压。gnd:接地。po口:p0是一组8位双向i0口。可作地址数据总线使用,又可作通用i/o口使用。当cpu访问片外存储器时,p0口先作低8位地址总线,后作双向数据总线,此时,p0口就不能再作i/o口使用了。在访问期间激活要使用上拉电阻。 pl口:p1口是一个内部提供上拉电阻的8位双向i/o口,pl口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口: p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p3口:p3口管脚是8个带内部,下拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at89s51的一些特殊功能口,如下所示:p3口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口)p3.2 /into(外部中断0) p3.3 /int1(外部中断1)p3.4 /t0(定时/计数器0的外部输入)p3.5/t1(定时/计数器1的外部输入)p3.6/ wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。/psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。/ea/vpp:当iea保持低电平时,则在此期间外部程序存储器 ( ooooh-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此问内部程序存储器。xtall:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。51主要功能特性: 兼容mcs-51指令系统 4k可反复擦写(1000次)isp flash rom 32个双向i/o口 4.5-5.5v工作电压 2个16位可编程定时/计数器 时钟频率0-33mhz 全双工uart串行中断口线 128x8bit内部ram 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(wdt)电路 软件设置空闲和省电功能 灵活的isp字节和分页编程 双数据寄存器指针ds18b20温度传感器与单片机接口电路由于ds18b20使用的是单总线技术,即采用单条信号线传输时钟或数据,而且传输数据是双向的,因而这种单总线技术具有线路简单,便于总线扩展和维护等优点。适用于单主机系统控制一个或多个设备。它们之间的数据交换只通过一条信号线,通常单中线要求外接一个约为5k的上拉电阻。因此ds18b20与单片机的接口电路如图9所示。从图5可以看出,ds18b20和单片机的连接非常简单,单片机只需要一个i/o口就可以控制ds18b20。此图的接法是单片机与一个ds18b20通信,如果要控制多个ds18b20进行温度采集,只需将所有ds18b20的dq端全部连接到一起就可以了。在具体操作时,通过读取每个ds18b20内部芯片的序列号来识别。本系统仅操作一个ds18b20进行温度采集。图5 ds18b20与单片机接口图ds18b20vccdqgndr2 4.7k单片机p1.03.3 数码管本系统使用五个七段led数码管作为温度显示,公共阳极。4 单元电路设计 4.1 电源电路电源电路采用lm7805集成稳压器作为稳压器件,用典型接法,220v电源整流滤波后送入lm7805稳压,在输出端接一个470u和0.1u电容进一步滤除纹波,得到5v稳压电源。电路如图6所示。图6 电源4.2 数码管显示电路显示部分包括如下图7: 5个八段(共阳)数码管、pnp型三极管、电阻等。其连接方式如下:应用单片机p0口连接八段数码管,用p2口的p2.3p2.7五个端口作为数码管的片选信号输出端口,其中要用8550(pnp型)三极管做驱动。又因为p0口做i/o口时要加上拉电阻,所以我们给p0各位各加一个10k的电阻到电源。为了防止烧坏数码管,所以给数码管各段各加一个300欧姆的限流电阻。要显示的数据通过p0口送给数码管显示,通过p2口的p2.7p2.3五个端口分别对数码管进行位选,事实上数码管是间断被点亮的,只是其间断时间十分短,扫描周期在20ms以下,利用人眼视觉暂留,我们基本看不出它们的闪烁。图7 显示电路4.3 声响,温度采集设定及复位电路电路如图8所示,这一部分主要是由ds18b20,四个按键、一个电容一个三极管和一个蜂鸣器等构成。声响电路在每按下按键时会响一声,当没有把ds18b20接入到电路中时,单片机就会通过蜂鸣器发出报警声音。温度采集电路主要是由ds18b20构成,它可以把采集的温度数据转化成二进制数,经过单片机处理后输出送数码管显示。 温度设定主要是通过按键s1、s2、s3来设定的。按键s1、s2、s3分别接入单片机的p1.4、p1.5、p1.6脚。s3是设定键。用于对风速调节的上限和下限值th、tl的设置。当按下s1时,可以加1,长按可以快速加1,当按下s2 时,可以减1, 长按可以快速减1。图8 声响、温度采集、温度设置及复位电路4.4 温控电路该电路为控制风速的人工控制与温控两种方式之温控模式时的控制电路,当选择为温控时,单片机默认为弱风,当当前温度低于所设的温度下限tl时继电器1吸合,关闭风扇,当当前温度高于所设的温度上限时继电器2吸合,切换到强风档。电路如图9。 图9 温控自动电路4.5无极调速电路此电路如图10所示,包括:双向可控硅,双触发二极管、滑动变阻器、电容。该电路为无级调速电路,通过调节滑动变阻器的阻值来改变通过双向二极管的电流,控制双向晶闸管的导通角,从而控制电机的转速。可实现由最大风速到关闭的无级别调速,可将风力调节在关闭无风到最大风之间的任意风力,实现“自由风”。图10 无级调速电路5 软件设计与原理程序实现的功能是上电复位时检测温度传感器ds18b20是否存在或它工作是否正常,当不存在或工作不正常时从蜂鸣器发出报警声,提示用户检查ds18b20,安装或者更换。这部分功能由ds18b20复位与检测子程序reset完成。当检测到传感器工作正常后,发出温度转换命令及读取温度值命令,将从ds18b20读取的二进制温度值转换为七段码在led上显示出来。显示功能由温度显示子程序disp1子程序实现。在温控自动状态,本系统可由用户根据需要自由设置大小风档的切换温度值th,tl,硬件设计上为通过3个按键,由按键扫描子程序keyscan子程序提供软件支持。按下一次设置键k3,进入低温关风扇温度值tl设置状态,此时按下“加”键k1,tl值加一,长按k1不放可实现快速加1,按下“减”键k2,tl值减1,长按k2不放可实现快速减1。再按一次设置键k3,进入高温切换大风档温度值th设置状态,此时按下“加”键k1,th值加一,长按k1不放可实现快速加1,按下“减”键k2,th值减1,长按k2不放可实现快速减1。下限动作温度值tl和上限动作温度值的设置范围为0-120摄氏度,满足一般使用要求。再按一次设置键k3退出上下限温度设置状态,恢复到当前温度显示状态。在当前温度显示状态,按下“加”键k1一次显示当前tl设定值,再按一下显示当前th设定值,如此循环,按设置键k3退回到当前温度显示状态。每次设定的tl、th值均拷备到ds18b20的eerom内,在单片机掉电后设定值不会丢失,在再次上电时从ds18b20的eerom中读回上次设定的上下限动作温度值th、tl,用户要实现根据当前温度实时的控制风扇的状态,需要在程序中不时的判断当前温度值是否超过设定的动作温度值范围,此部分功能由比较控制子程序temp_comp来完成。由于单片机的工作频率高达12mhz,在执行程序时不断将当前温度和设定动作温度进行比较判断,当超过设定温度值范围时及时的转去执行超温处理和欠温处理子程序,控制继电器的吸合、断开状态,从而控制风扇实时的切换到关闭、弱风、大风三个状态。在没有超过设定的tl、th值时默认将风扇置为弱风档。该比较控制程序又由温度比较程序、超温处理子程序和欠温处理子程序构成。显示驱动程序以查七段码取得各数码管应显数字,逐位扫描显示。将本电路用硬件做出来,用编程器将keil软件对源程序编译生成的.hex文件烧入at89c52单片机,将单片机插入到目标板中,连好线。将“控制模式”开关选择在“温控”,打开电源,风扇工作在弱风档,数码管正常显示当前的温度,第五位数码管闪烁显示“o”,表示当前温度在tl和th值之间,没有欠温或超温。按“设置”键及“加”“减”键将下限动作温度值tl设为20摄氏度,将上限动作温度值th设为23摄氏度,用书对着ds18b20扇动,显示温度逐渐降低,当达到19.9摄氏度时继电器1动作,将风扇关闭,第五位数码管闪烁显示“l”,表示当前温度低于tl值。然后用手握着ds18b20,显示温度逐步上升,当达到23.1摄氏度时继电器2动作,将风扇切换到大风档,第五位数码管闪烁显示“h”,表示当前温度高于th值。将“控制模式”开关选择在“人控”,这时数码管依然按照上述规律显示,但是不能对风扇进行控制。用手旋动无级调速旋钮,可以将风扇从关闭一直连续调到最大风速,具有无级调节风扇风力的功能。测试结果表明,本系统实现了预期功能。6总体电路图7 参考文献1 胡汉才.单片机原理及其接口技术.北京:清华大学出版社,20042 吴金戍,沈庆阳,郭庭吉.8051单片机实践与应用.北京: 清华大学出版社,20023 求是科技.单片机典型模块设计实例导航.北京:人民邮电出版社,20044 王化详,张淑英.传感器原理.天津:天津大学出版社,20025 荣俊昌.新型电风扇原理与维修.北京:高等教育出版社,20046 王港元.电工电子实践指导.江西:江西科学技术出版社,20057 林全新 苏丽娟单片机原理与接口技术人民邮电出版社.2002.28 张大明单片机控制实训指导与综合运用实例机械工业出版社.2006.128 鸣谢与收获体会通过这次毕业设计使我们在这几年大学里所学的知识得以复习和巩固,同时也使我深刻认识到我们所学的内容是多么有限,学校生活的结束并不代表学习的结束,要想真止的有所发展,还将要不断的学习和进取。在这次设计中我学到了不少新知识,了解了很多的设计思想与方法,我也将继续努力,不断完善和充实自己。最后我们要感谢含辛茹苦、默默的在后辅导我们的老师,我们的成功离不开你的默默的努力和鞭策,在以后的工作和学习过程中我们将牢记你们的指导和教诲,使自己在事业上有更好的发展!附1 流程图主程序流程图开始初始化蜂鸣报警检测ds18b20正常?温度转换命令读温度温度bcd码处理显示温度按键扫描及处理与设定温度对比及处理ny 附2 程序;温控自动风扇系统 *;*说明: ;* 1、k3 进入设定低温动作温度值 tl 状态:;* 2、k3 进入设定高温动作温度值 th 状态:;* 3、k3 返回 ;* 4、设定过程: k1 加键 (up), k2 减键 (down),可快速调 5、实际温度在tl和th之间时,开启弱风档,低于tl时,关闭风扇;;高于th时,开启大风档。每次设置的th和tl均被保存在ds18b20的rom内,掉不需重新设置. * timer_l data 23h timer_h data 24h timer_coun data 25h templ data 26h temph data 27h temp_th data 28h temp_tl data 29h temphc data 2ah templc data 2bh temp_zh data 2ch beep equ p3.7 data_line equ p3.3 c1 equ p3.4 ;c1控制口,接继电器1 c2 equ p3.5 ;c2控制口,接继电器2 flag1 equ 20h.0 flag2 equ 20h.1 k1 equ p1.4 k2 equ p1.5 k3 equ p1.6 org 0000h jmp main org 000bh ajmp int_t0 main: mov sp,#30h mov tmod,#01h ;t0,方式1 mov timer_l,#00h ;50ms定时值 mov timer_h,#4ch mov timer_coun,#00h ;中断计数 mov ie,#82h ;ea=1,et0=1 lcall read_e2 mov 20h,#00h setb beep setb c1 setb c2 mov 7fh,#0ah ;熄灭符 call reset ;复位与检测ds18b20 jnb flag1,main1 ;flag1=0,ds18b20不存在 jmp startmain1: call reset jb flag1,start lcall beep_bl ;ds18b20错误,报警 jmp main1start: mov a,#0cch ; 跳过rom匹配 call write mov a,#044h ; 发出温度转换命令 call write call reset mov a,#0cch ; 跳过rom匹配 call write mov a,#0beh ; 发出读温度命令 call write call read ;读温度数据 call convtemp call dispbcd call disp1 call scankey lcall temp_comp jmp main1;ds18b20 复位与检测子程序;flag1=1 ok, flag1=0 errorreset: setb data_line nop clr data_line mov r0,#64h ;主机发出延时600微秒的复位低脉冲 mov r1,#03hreset1: djnz r0,$ mov r0,#64h djnz r1,reset1 setb data_line ;然后拉高数据线 nop mov r0,#25hreset2: jnb data_line,reset3 ;等待ds18b20回应 djnz r0,reset2 jmp reset4 ; 延时reset3: setb flag1 ; 置标志位,表示ds1820存在 jmp reset5reset4: clr flag1 ; 清标志位,表示ds1820不存在 jmp reset6reset5: mov r0,#064h djnz r0,$ ; 时序要求延时一段时间reset6: setb data_line retwrite: mov r2,#8 ;一共8位数据 clr cywr1: clr data_line ;开始写入ds18b20总线要处于复位(低)状态 mov r3,#09 djnz r3,$ ;总线复位保持18微妙以上 rrc a ;把一个字节data 分成8个bit环移给c mov data_line,c ;写入一个bit mov r3,#23 djnz r3,$ ;等待46微妙 setb data_line ;重新释放总线 nop djnz r2,wr1 ;写入下一个bit setb data_line ret;从ds18b20中读出温度低位、高位和动作温度设定值th、tl;存入26h、27h、28h、29hread: mov r4,#4 ; 将温度高位和低位从ds18b20中读出 mov r1,#26h ; 存入26h、27h、28h、29hre00: mov r2,#8re01: clr c setb data_line nop nop clr data_line ;读前总线保持为低 nop nop nop setb data_line ;开始读总线释放 mov r3,#09 ;延时18微妙 djnz r3,$ mov c,data_line ;从ds18b20总线读得一个bit mov r3,#23 djnz r3,$ ;等待46微妙 rrc a ;把读得的位值环移给a djnz r2,re01 ;读下一个bit mov r1,a inc r1 djnz r4,re00 ret 200ms对闪动标记取反一次int_t0: push acc push psw mov tl0,timer_l mov th0,timer_h inc timer_coun mov a,timer_coun cjne a,#04h,int_end mov timer_coun,#00h cpl flag2int_end: pop psw pop acc reti;重新对 ds18b20 初始化;将设定的动作温度设定值写入 ds18b20re_18b20: jb flag1,re_18b20a retre_18b20a: call reset mov a,#0cch ;跳过rom匹配 lcall write mov a,#4eh ;写暂存寄存器 lcall write mov a,temp_th ;th(动作上限温度) lcall write mov a,temp_tl ;tl(动作下限温度) lcall write mov a,#7fh ;12位精确度 lcall write ret 功能键扫描子程序scankey: mov p1,#0f0h jb k1,scan_k2 call beep_blscan_k1: call alert_tl call alert_play jb k1,scan_k1 call beep_blscan_k11: call alert_th call alert_play jb k1,scan_k11 call beep_blscan_k2: jb k2,scan_k3 call beep_blscan_k3: jb k3,scan_end call beep_bl lcall reset_alert lcall re_18b20 lcall write_e2scan_end: ret设置动作温度值tl,threset_alert: call alert_tl call alert_play jnb k3,$ ;k3为位移键 setb tr0reset_tl: call alert_play jnb flag2,r_tl01 mov 75h,7fh ;送入熄灭符 mov 76h,7fh call alert_play jmp r_tl02r_tl01: call alert_tl mov 75h,7eh ;送设定值 mov 76h,7dh call alert_play ;显示设定值r_tl02: jnb k1,k011a jnb k2,k011b jnb k3,reset_th jmp reset_tlk011a: inc temp_tl mov a,temp_tl cjne a,#120,k012a ;没有到设定上限值,转 mov temp_tl,#0k01

温馨提示

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

评论

0/150

提交评论