基于单片机的智能散热器的设计大学本科毕业论文.doc
本科毕业设计题 目 基于单片机的智能散热器的设计 学生姓名 专业名称 指导教师 年 月 日基于单片机的智能散热器的设计摘 要:散热器在生活中的应用很广泛,例如笔记本电脑会因为散热不良而出现死机现象。单片机具有集成度高、体积小、功能强、可靠性高、价格低廉等优点,广泛应用于工业测控、智能仪器仪表、网络通信、家用电器等领域。本设计在深入探讨散热问题的基础上,设计出了一套基于单片机控制的智能散热器,综合了成本和性能等相关因素,采用Atmel公司的AT89C52单片机为核心。控制器件向温度传感器DS18B20发送指令,进行温度信号的采集与处理,并通过液晶显示器显示出来,与系统预先设定的温度参数进行比较,当温度达到一定数值后,单片机会驱动风扇转动,进行散热处理。当温度下降到一定数值后,风扇停止工作。通过按键对温度参考值进行设定,利用记忆芯片EEPROM对设定值进行保存,实现温度智能控制最后系统在Protues下仿真运行,验证此系统设计正确可行。关键词:散热器;单片机 ;智能控制Based on the Single chip MicrocomputerIntelligent design of radiatorAbstract: Radiator wide range of applications, such as notebook computers because of poor heat dissipation phenomenon of death in life. MCU with high integration, small size, strong function, high reliability, low price, etc., are widely used in industrial measurement and control, smart instrumentation, network communications, household appliances and other fields.The design in depth heat problem on the basis of design of a microcontroller-based control of intelligent radiator, a combination of cost and performance, and other related factors, using Atmel AT89C52 microcontroller as the core. Control devices to send commands to the temperature sensor DS18B20 temperature signal acquisition and processing, and LCD display parameters were compared with the pre-set temperature when the temperature reaches a certain value, the microcontroller will drive the rotation of the fan for cooling treatment. When the temperature drops to a certain value, the fan stopped working. Set through the button on the temperature reference value, the use of memory-chip EEPROM to save the set value, temperature intelligent control the final system Profuse under simulation run to verify that the design of this system is correct and feasible.Key Words:radiator; SCM; intelligent controlIII目 录1、引 言21.1系统研究背景21.2散热原理和方式22、 整体方案设计32.1 系统整体设计32.2 方案论证42.2.1 温度传感器的选择42.2.2 控制器的选择52.2.3 温度显示器件的选择52.2.4 电机及其驱动器的选择53、各单元模块的硬件设计63.1 系统主要器件简介63.1.1 单线数字温度传感器DS18B20简介63.1.2 单片机AT89C5273.1.3 风扇直流电机83.1.4 芯片MAX232介绍93.1.5 电源芯片7805介绍93.1.6 LCD显示芯片1602103.2 各部分电路设计103.2.1 复位与晶振电路103.2.2 独立键盘连接电路113.2.3 温度采集电路113.2.4 LCD显示电路123.2.5 串口通信123.2.6 直流电机驱动电路133.2.7 电源芯片连接电路144、软件设计154. 单片机程序设计154.1.1 总程序流程图154.1.2 温度采集子程序流程图155、 系统仿真165.1 用Keil C51编写程序165.2 系统软件调试175.3 PROTEUS软件简介175.4 PROTEUS电路原理图设计185.4.1 智能散热系统的电路原理图设计:185.4.2 智能散热核心的电路原理图设计:185.5 PROTEUS系统仿真与分析196、结论20参考文献21致 谢22附 录23源程序代码231、引 言1.1系统研究背景 随着科技不断进步和发展,单片机的使用已经渗透到我们日常生活的各个领域,导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,各种智能IC卡的广泛使用,轿车、地铁和公交车的安全保障系统,智能手机、摄像机等,这些产品都与开单片机息息相关。那就更不用说自动控制领域的机器人、智能仪表、医疗器械了。本文设计的智能散热器,利用单片机进行控制,实时温度传感器对直流电机进行转速控制,外加液晶显示电路,可实现散热器转速随着外界温度变化而变化。而目前市场上仅仅有的是单开关式的散热器,且操作不方便,经常开关,还没有根据温度变化来进行控制的智能散热底座。因而,此设计具有相当重要的现实意义和实用价值。1.2散热原理和方式散热,其实就是一个热量传递过程通过传导、对流、辐射等几种方式。通常在台式机中主要是风冷技术,这包括中央处理器、显卡、电源及机箱的散热风扇等,在笔记本电脑中,风冷依旧的主要的散热方式,绝大数的散热方式是:风扇、热管、散热板的组合。目前很多笔记本电脑采用铝镁合金的外壳,对散热也起到了一定的作用。在笔记本电脑底部一般都有散热通风口,或吸入或吹出,对笔记本电脑的散热都非常重要。笔记本电脑在设计的时候也考虑到散热问题,往往会用垫脚将机身抬高,但是在温度过高的时候,就显得比较勉强。笔记本的散热底座的散热原理主要有两种:1.单纯通过物理学上的导热原理实现散热功能。将塑料或金属制成的散热底座放在笔记本的底部,抬高笔记本以促进空气流通和热量辐射,可以达到散热效果。2.在散热底座上面再安装若干个散热风扇来提高散热性能。这种风冷散热方式包括吸风和吹风两种。两种送风形式的差别在于气流形式的不同,吹风时产生的是紊流,属于主动散热,风压大但容易受到阻力损失,例如我们日常夏天用的电风扇;吸风时产生的是层流,属于被动散热,风压小但气流稳定,例如机箱风扇。理论上说,开放环境中,紊流的换热效率比层流大,但是笔记本底部和散热底座实际组成了一个封闭空间,所以一般吸风散热方式更符合风流设计规范。市场上的散热底座多数是有内置吸风式风扇的。2、 整体方案设计2.1系统整体设计本设计的整体思路是:利用温度传感器DS18B20检测环境温度并直接输出数字温度信号给单片机AT89C52进行处理,在LCD上显示当前环境温度值(检测到的当前环境温度为整数)。同时采用PWM脉宽调制方式来改变直流风扇电机的转速,并通过一个按键实现智能控制和固定转速切换。系统结构框图如下:AT89C52时钟振荡电路复位电路温度采集电路电源电路LCD液晶显示按键电路直流电机驱动电路串口通信部分 图1 系统结构框图2.2 方案论证为了实现智能温度控制,须要电机根据环境温度的变化自动改变转速,就要选择比较稳定可靠的电机变速控制部件。2.2.1 温度传感器的选择方案一:采用热敏电阻作为检测温度的核心元件,经运算放大器放大,再经模数转换芯片ADC0809将微弱电压变化信号转化为数字信号输入供单片机处理。但因热敏电阻随温度变化而变化,会产生输出电压的微弱变化。方案二:采用模拟式集成温度传感器LM35作为温度检测的核心元件,经ADC0809模数转换芯片将微弱电压变化信号转化为数字信号输入单片机处理。方案三:采用数字式集成温度传感器DS18B20作为温度检测的核心元件,由其检测并直接输出数字温度信号让单片机进行处理。对于方案一,采用热敏电阻虽有价格便宜、元件易购的优点,但其对温度的细微变化不太敏感,在信号采集、放大以转换过程中会产生失真和误差,并且热敏电阻的R-T关系是非线性的而对温度的变化存在较大误差,虽可通过一定电路来修正,但这不仅会使电路变得更复杂,而且在人体所处环境温度变化过程中难以检测到小的温度变化。故不适合选该方案。对于方案二,虽然模拟式集成温度传感器LM35的高度集成化,大大降低了外接放大转化等电路的误差因数,但其检测温度结果以电压形式输出,需要使用ADC0809将模拟信号转换为数字的,该过程繁琐。并且LM35对温度变化产生的电压变化较小,系统易受干扰。故该方案不适合本系统。对于方案三,由于数字式集成温度传感器DS18B20的高度集成化,使外接放大转化等电路的误差因数大大降低,温度误差变得很小,并且其检测温度的原理与热敏电阻检测的原理有着本质的不同,其温度分辨力会极高。温度值直接在器件内部转化成数字量输出,简化了系统程序设计,又因其采用先进的单总线技术与单片机的接口简单,抗干扰能力强,因此该方案适用于本系统。2.2.2 控制器的选择在本设计中采用AT89C52单片机作为控制核心,通过软件编程的方法进行温度检测和判断,并在其I/O口输出控制信号。AT89C52单片机工作性能高、电压低,片内含8k字节的只读程序存储器ROM和512字节的随机数据存储器RAM,它兼容标准的MCS-51指令系统,性价比高,适合本设计的仿真。2.2.3 温度显示器件的选择方案一:应用动态扫描的方式,采用LED共阴极数码管显示温度。方案二:采用LCD液晶显示屏显示温度。对于方案一,该方案成本、功耗低,温度显示程序的编写也相对简单,因而得到广泛应用。但不足是它采用动态扫描的显示方式,各个LED数码管是逐个点亮的会产生闪烁,但由于人眼的视觉暂留时间为20MS容易感觉到闪烁,造成误差,因此对于温度的精确显示不宜采用该方案。对于方案二,液晶显示具有显示质量高、数字式接口、体积小、重量轻、功耗低等优点。从仿真精确简洁的角度,本系统采用方案二。2.2.4电机及其驱动器的选择 方案一:采用直流电机加模拟电路,通过电位器调节电机两端电压进行控制。达林顿管串联在直流电机回路上,调节电位器改变电机回路中电流的大小,从而控制电机的。此方案的优点:电路简单,通过一个电位器实现调节电机速度,但三极管工作在放大区时电机回路上会产生一个压降和很多热量,效率很低。 方案二:采用PWM控制步进电机。PWM控制是利用微处理器的数字输出来对模拟电路进行控制。PWM对半导体器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不等的脉冲,正弦波或其他所需要的波形被这种脉冲来代替,按一定的规则对各脉冲的宽度进行调节,逆变电路输出电压的大小和输出频率都可以被它所改变。但步进电机适用于精确控制,本电路不需要非常精确。而且电路过于复杂,成本过高。 方案三:采用三级管直接驱动直流电机,电路使三级管工作在饱和或截止区处于很低的功耗状态,发挥简单的开关作用来控制电机两端电流的通断,从而达到控制电机的目的。此设计简单,成本低,易于实现。因此,本设计采用方案三。3、各单元模块的硬件设计系统主要器件包括DS18B20温度传感器、AT89C52单片机、风扇直流电机、串口通信的电平转换芯片MAX232、电源芯片7805、LCD显示芯片1602、。辅助元件包括电阻、电容、晶振、电源、按键等。3.1系统主要器件简介3.1.1单线数字温度传感器DS18B20简介数字温度传感器DS18B20,是美国DALLAS公司生产的一种单线数字温度传感器,可直接将温度转化成串行数字信号供处理器处理,并能按具体要求通过简单编程实现位温度读数。它具有低功耗、高性能、抗干扰能力强、微型化、易配微处理器等优点,适用于各种狭小空间设备数字测温和控制领域。DS18B20的主要特征:测量的结果直接以数字信号的形式输出,以“一线图2 18B20管脚图总线”方式串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;温度测量范围在-55+125之间;可检测温度分辨率为912位,对应的可分辨温度分别为0.5,0.25,0.125和0.0625,可实现高精度测温。3.1.2 单片机AT89C52 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央 处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。 主要功能特性: · 兼容MCS51指令系统 · 8k可反复擦写(>1000次)Flash ROM · 32个双向I/O口 · 256x8bit内部RAM · 3个16位可编程定时/计数器中断 · 时钟频率0-24MHz · 2个串行中断 · 可编程UART串行通道 · 2个外部中断源 · 共6个中断源 · 2个读写中断口线 · 3级加密位 · 低功耗空闲和掉电模式 · 软件设置睡眠和唤醒功能图3 AT89C52芯片引脚图3.1.3 风扇直流电机(1) 三极管简介三极管,全称应为半导体三极管,也称双极型晶体管,晶体三极管,是一种电流控制的半导体器件。其作用是把微弱信号放大成幅值较大的电信号,也用作无触点开关。三极管分类:按材质分:硅管、锗管。按结构分:NPN、PNP。按功能分:开关管、功率管、达林顿管、光敏管等。按功率分:小功率管、中功率管、大功率管。按工作频率分:低频管、高频管、超频管。按结构工艺分:合金管、平面管。在半导体锗或硅的单晶上制备两个能相互影响的PN结,组成一个PNP(或NPN)结构。中间的N区(或P区)为基区,两边的区域分别为发射区和集电区,这三部分各有一条电极引线,分别为基极B、发射极E和集电极C,还能够起到饱和和截止等作用的半导体电子器件。(2) 直流电机简介输出或输入为直流电能的旋转电机,称为直流电机,它能够实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。定子和转子两大部分构成了直流电机。直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。随着人们生活水平的提高,产品质量、精度、性能、自动化程度、功能以及功耗、价格问题已经是选择家用电器的主要因素。永磁直流电机既具有结构简单、 运行可靠、维护方便等优点,又具备良好的调速特性,现已广泛应用于各种场合。3.1.4芯片MAX232介绍 MAX232产品是由美国Maxim公司推出的一款兼容RS-232标准的芯片,该器件包含两个驱动器、两个接收器和一个电压发生器电路提供TIA/EIA-232-F电平,该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5TTL/CMOS电平,每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平,有从贴片到直插等不同的封装类。3.1.5 电源芯片7805介绍 电源电路主要运用到7805稳压芯片,输出电压为5V,加散热片时驱动电流可达1A,输出电流200300mA时,7805温度在50度左右,并且有过温切断输出起到保护功能。该系列芯片技术成熟,所需的外围器件少,性价比高,运用的非常广泛。1 INPUT 电源输入端,最大可达35V 2 GROUND电源地3 OUTPUT +5V输出端图4 7805稳压芯片3.1.6 LCD显示芯片1602LCD1602为工业字符型液晶,能够同时显示16X2即32个字符,使用简单方便,具有背光功能,显示字符清晰准确,能同时显示字母与数字,可以区分大小写字母,具有较强的功能并且连线简单,背光亮度可调,并且耗电量小,采用标准的16脚接口,其中包括8根数据线,3根控制线,电源地,电源及液晶驱动电压引脚。LCD1602主要参数如下:301 驱动芯片 KS0066(兼容HD44780) 2 背光 黄光 / 蓝光 3 字色 黑色 / 白色 4 字库 ASCII码字库(英文,数字,基本符号) 5 类型 STN 6 液晶模块尺寸(mm) 80 * 36 * 13.53.2 各部分电路设计3.2.1 复位与晶振电路单片机应用系统中,单片机本身和外部扩展I/O接口电路都需要复位,因此需要一个包括上电和按钮复位在内的系统同步复位电路。单片机上的XTAL1和XTAL2外接石英晶体和微调电容,用来连接单片机片内OSC的定时反馈回路,即采用内部时钟电路。本设计中开关复位与晶振电路如下图所示,当按下按键开关S1时,系统复位一次。晶振为11.0592MHz。 图5 开关复位与晶振电路3.2.2 独立键盘连接电路键盘包含1个独立按键S1,一端接地,另一端与单片机的P3.2口相连,当按下任一键时,P3.2口读取低电平有效并产生中断。其接线如图: 图6 独立键盘连接电路3.2.3 温度采集电路DS18B20使用时,一般都采用单片机来实现数据采集。将1个或多个DS18B20信号线与单片机1位I/O线相连,就可实现单点或多点温度检测。本设计中将DS18B20接在P1.6口实现温度的采集。 图7 温度采集电路3.2.4 LCD显示电路LCD液晶显示模块与单片机的接口有模拟工作时序和总线形式两种。采用模拟工作时序通过设置相应的工作位来模拟实现显示控制,采用总线形式工作通过MOVXDPTR,DATA指令才能实现对LCD的控制,此处用其的模拟工作时序。其基本操作时序:1 读状态:输入:RS=L,RW-H,E=H 输出:D0D7=状态字2 写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:无3 读数据:输入:RS=H,RW=H,E=H 输出:D0D7=数据4 写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无 LCD显示电路电路连接如图8:3.2.5串口通信 单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时是有一定条件的,计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者须有一个电平转换电路,采用专用芯片MAX232进行转换,更简单可靠。采用三线制连接串口,即和计算机的9针串口中的3根线连接,分别是:第5脚的GND、第2脚的RXD、第3脚的TXD。电路如图9:图8 1602接线图 图9 MAX232连接电路3.2.6 直流电机驱动电路采用三级管直接驱动直流电机,电路使三级管工作在饱和或截止区,三极管处于很低的功耗状态,发挥简单的开关作用来控制电机两端电流的通断,从而达到控制电机的目的。对于电路的保护采用二极管续流方式并联在电机两端。图10 直流电机驱动连接电路图3.2.7电源芯片连接电路 交流信号经过桥式整流和电容滤波之后送给LM7805,稳压5V输出单独供给单片机。在三端稳压管的输入输出端与地之间连接大容量的滤波电容,使滤掉纹波的效果更好,输出更稳定的直流电压。输出引脚端连接高频电容以减小高频噪声,接小容量高频电容以抑制芯片自激,提高系统稳定性。 图11 电源芯片连接电路图12 电源电路原理图4、软件设计硬件设计好后,加上软件部分整个系统才能得以运行。本系统的软件部分主要包括主程序和系统初始化子程序、电机控制子程序、温度采集子程序等。4. 单片机程序设计4.1 总程序流程图图13 总程序流程图4.1.2 温度采集子程序流程图图14 温度采集子程序流程图5、 系统仿真5.1用Keil C51编写程序Keil C51是美国Keil Software公司开发的51系列兼容单片机C语言的软件开发系统,与单片机汇编语言相比,C语言语句简单灵活,编写的函数模块可移植性强,因而易学易用,效率高。随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前使用较多的MCS-51系列单片机开发的软件。Keil C51软件不仅提供了丰富的库函数,而且它强大的集成开发调试工具为程序编辑调试带来便利,在开发大型软件时更能体现高级语言的优势。在使用时要先建立一个工程,然后添加文件并编写程序,编写好后再编辑调试。5.2 系统软件调试用KEIL编译器编程调试,初步调试的程序一般按照以下方法调试:1 单步:一次只执行一条指令,在每步执行后,返回监控调试程序。2 行:可以从程序的任何一条地址处启动,然后全速运行。3 点运行:可任意设置断点,当程序执行到此时控制返回到监控调试程序。4 查和修改存储器单元的内容。5 查和修改寄存器的内容。程序调试可以逐个模块进行,一个一个子程序的调试,从而发现程序中的死循环、机器码及转移地址错误,也能发现待测系统中算法和硬件设计错误。5.3 PROTEUS软件简介Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。它是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。利用Keil C51软件对源程序进行编译,编译成功后保存编译结果。然后在PROTEUS中设计出相应的硬件电路,最后将程序装载到单片机中,通过PROTEUS仿真,看程序是否能够实现预想的功能。5.4 PROTEUS电路原理图设计5.4.1 智能散热系统的电路原理图设计:图15 智能散热系统的电路原理图5.4.2 智能散热核心的电路原理图设计:图16 智能散热核心的电路原理图5.5 PROTEUS系统仿真与分析()当温度25<t<=32时,电机转速较低,如图:图17 25<t<=32时的仿真电路(2)当温度t>33时,电机转速加快,如图:图18 t>=33时的仿真电路 (3)当温度变化时,温度数值变化伴随的波形变化,原理图如图19:图19 温度数值变化伴随的波形变化仿真6、结论毕业课题选择时,因我的散热器坏了故对笔记本散热问题非常感兴趣。该设计需要硬件和软件设计,利用传感器、直流电机和单片机来实现。按要求我先设计硬件电路,由开始很多知识不清楚到有个大致思路再后来参考相关书籍及上网,自己真正设计了一个仿真原理图,虽然复杂但经过不断修改基本正确了。软件设计对我而言很难,编程遇到了很多问题,后来通过看书、上网、请教老师等才逐步完成了C语言编程,所以在这次毕业设计中学到了很多。本系统实现了对笔记本的温度监控和散热设备的运行,可将数据上传至电脑进行后期分析处理,能被广泛应用到生产和生活中,如带有温度控制的场合、工业温度测量仪表等。由于温度监控是一个实践应用性很强的课题,要使其产品化,能够经受住实际应用的严格考验,还需要很多细致的改进和深入的改进。参考文献1杨欣 王玉凤 刘湘黔.电子设计从零开始M.清华大学出版社,20092求是科技.单片机典型模块设计实例导航M.人民邮电出版社,20053严化南.数字电路逻辑设计M.清华大学出版社,19984何桥.单片机原理及应用M.中国铁道出版社,20085王志宏.现代电子技术M.2007第9期6曾喆昭.国外电子元器件M.2000第2期7汤志成.电子世界M.2007第12期8郭天祥.郭天祥单片机教学视频CD.2007致 谢 大学的学习已接近尾声,毕业设计是一次检验我大学学习成果的机会,这次毕业设计不仅把四年来所学知识融会贯通,而且提高了我的动手创造能力,同时在指导教师的悉心帮助下,我的专业技术水平有了很大进步。从开始加入这个项目的设计到现在项目的完成,我们真正经历了一次自己参与并设计的过程。我感觉收获非常大,我们获得的不仅是理论上的收获,还有实践中的丰收。这次毕业设计一定会为我们在不久的将来踏上工作岗位打下了良好的实践基础。在毕业设计及我的大学学习生活即将结束的时候,心中有很多感触,首先我要对我的毕业设计指导老师李雅莉老师及所有大学教授过我的老师表示诚心的真挚的感谢。这个学习机会,为我提供了良好的毕业设计场所和试验条件。最后,祝愿我校日后蓬勃发展,发展成为一所独具风格的高等院校。李老师严谨的治学态度和为人给了我们很大的教育,这将使我终身受益。 附录 源程序代码* 文件名 : 温度采集DS18B20.c* 描述 : 该文件实现了用DS18B20对温度的采集,并在LCD显示出来。#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define jump_ROM 0xCC#define start 0x44#define read_EEROM 0xBEsbit DQ = P16; /DS18B20数据口sbit dula=P26;sbit wela=P27;sbit PWM = P10;unsigned char CYCLE; /定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1msunsigned char PWM_ON ;/定义高电平时间unsigned char TMPH,TMPL; uint temp;/void dianji(uchar pwm);void delay_2(uint N)int i;for(i=0; i<N; i+);void delay(unsigned int cnt) while(-cnt);* 名称 : delay()* 功能 : 延时,延时时间大概为140US。void delay_1()int i,j;for(i=0; i<=10; i+)for(j=0; j<=2; j+);void Delay_1ms(uint i)/1ms延时uchar x,j;for(j=0;j<i;j+)for(x=0;x<=148;x+);* 名称 : Reset()* 功能 : 复位DS18B20uchar Reset(void)uchar deceive_ready;DQ = 0;delay(29);DQ = 1;delay(3);deceive_ready = DQ;delay(25);return(deceive_ready);* 名称 : read_bit()* 功能 : 从DS18B20读一个位值* 输入 : 无* 输出 : 从DS18B20读出的一个位值uchar read_bit(void)uchar i;DQ = 0;DQ = 1;for(i=0; i<3; i+);return(DQ);* 名称 : write_bit()* 功能 : 向DS18B20写一位* 输入 : bitval(要对DS18B20写入的位值)* 输出 : 无void write_bit(uchar bitval)DQ=0;if(bitval=1)DQ=1;delay(5);DQ=1;* 名称 : read_byte()* 功能 : 从DS18B20读一个字节* 输入 : 无uchar read_byte(void)uchar i,m,receive_data;m = 1;receive_data = 0;for(i=0; i<8; i+)if(read_bit()receive_data = receive_data + (m << i);delay(6);return(receive_data);* 名称 : write_byte()* 功能 : 向DS18B20写一个字节* 输入 : val(要对DS18B20写入的命令值)* 输出 : 无void write_byte(uchar val)uchar i,temp;for(i=0; i<8; i+)temp = val >> i;temp = temp & 0x01;write_bit(temp);delay(5);/* 定时中断 */void tim(void) interrupt 3 using 1static unsigned char count; /TH0=(65536-1000)/256; TL0=(65536-1000)%256;/定时1mS if (count=PWM_ON) PWM = 1; /灯灭 count+;if(count = CYCLE) count=0;if(PWM_ON!=0) /如果左右时间是0 保持原来状态 PWM = 0;/灯亮 /这三个引脚参考资料sbit E=P27;/1602使能引脚sbit RW=P26;/1602读写引脚sbit RS=P25;/1602数据/命令选择引脚void delay_3()int i,j;for(i=0; i<100; i+)for(j=0; j<20; j+);* 名称 : enable(uchar del)* 功能 : 1602命令函数* 输入 : 输入的命令值* 输出 : 无void enable(uchar del)P0 = del;RS = 0;RW = 0;E = 0;delay_3();E = 1;delay_3();* 名称 : write(uchar del)* 功能 : 1602写数据函数* 输入 : 需要写入1602的数据* 输出 : 无void write(uchar del)P0 = del;RS = 1;RW = 0;E = 0;delay_3();E = 1;/高脉冲delay_3();* 名称 : L1602_init()* 输入 : 无* 输出 : 无void L1602_init(void)enable(0x01);/0000 0001 显示清屏enable(0x38);