AT89C52单片机为核心的电烤箱温度控制系统--单片机课程设计.docx

上传人:知**** 文档编号:88769512 上传时间:2023-04-30 格式:DOCX 页数:28 大小:424.32KB
返回 下载 相关 举报
AT89C52单片机为核心的电烤箱温度控制系统--单片机课程设计.docx_第1页
第1页 / 共28页
AT89C52单片机为核心的电烤箱温度控制系统--单片机课程设计.docx_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《AT89C52单片机为核心的电烤箱温度控制系统--单片机课程设计.docx》由会员分享,可在线阅读,更多相关《AT89C52单片机为核心的电烤箱温度控制系统--单片机课程设计.docx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 西华大学课程设计 摘 要 温度控制是工业生产过程中经常遇到的过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。本设计是利用单片机的控制功能来设计一种智能的电烤箱系统,保证使用安全又达到节能的作用。本文介绍了以AT89C52单片机为核心的电烤箱温度控制系统。电烤箱的温度控制系统有两部分组成:硬件部分和软件部分。其中硬件部分包括:单片机最小系统、驱动电路、报警电路、温度检测电路、以及键盘电路。软件部分包括:主程序、运算控制程序、以及各功能实现模块的程序。温度采集由DALLAS公司生产的一线式数字温度传感器DS18B20采集。DS18B

2、20测温范围为-55C+125C,测温分辨率可达0.0625C,被测温度用符号扩展的16位补码形式串行输。CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。 关键词: 温度控制;电烤箱;单片机 目 录第1章 绪论3第2章 课程设计的方案42.1 概述42.2 系统组成总体结构4第3章 硬件设计63.1单片机最小系统的设计63.1.1时钟电路设计83.1.2复位电路设计93.2温度检测模块的设计103.2.1 DS18B20芯片的内部结构113.2.2 DS18B20的测温原理113.2.3 DS18B20数据处理123.2.4 DS18B20

3、温度检测电路设计133.3 报警电路的设计143.4 按键电路的设计153.5 驱动模块的设计15第4章 软件设计174.1主程序流程图174.2 温度检测模块18第5章 课程设计总结20参考文献2128第1章 绪论随着现代信息技术的飞速发展和传统工业的逐步改造,温度自动检测和显示功能在很多领域得到广泛应用。人们在温度检测的准确度、便捷性和快速等方面有着越来越高的要求。本文以电烤箱的温度控制为模型,设计了以AT89C52单片机为检测控制中心的温度控制系统。单片机出现的历史并不长,但发展迅猛。自1975年美国德克斯仪器公司首次推出8位单片机TMS-1000后才开始快速发展。1976年9月,美国I

4、ntel公司首次推出MCS-48系列8位单片机以后,单片机发展进入了一个新的阶段。1983年Intel公司推出的MCS-96系列、1987年Intel公司又推出的80C96等位16位单片机。近年来各个计算机生产厂家已进入更高性能的32位单片机研制、生产阶段。单片机发展之快、品种之多,其中最常用的主要有:AT89系列单片机、AVR单片机Motorola公司的M68HC08系列单片机以及PIC单片机。随着社会的发展,单片机的特点体现在体积小、可靠性高、使用方便等方面。根据温度控制的特点,本次设计采用AT89C52单片机为控制核心,采用数字PID控制算法。实现对电烤箱的温度的控制。通过本次设计进一步

5、详细说明单片机控制系统在社会生活中的应用。为以后进一步应用单片机系统提供帮助。AT89C52单片机是美国Intel公司的8位高档单片机的系列。也是目前应用最为广泛的一种单片机系列。AT89C52系列单片机主要有CPU、存储器,IO接口电路及时钟电路等部分组成。此电烤箱温度控制系统利用单片机的控制功能来设计一种智能的烤箱系统。本文利用由DALLAS公司生产的一线式数字温度传感器DS18B20数字温度传感器采集温度。这种温度控制系统能过通过LCD1602显示屏直观的来观察电烤箱温度,通过按钮调节上限和下限温度的值。DS18B20测温范围为-55C+125C,测温分辨率可达0.0625C,被测温度用

6、符号扩展的16位补码形式串行输出。CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。第2章 课程设计的方案2.1 概述本次设计主要是综合应用所学知识,设计基于单片机的电烤箱温度控制系统,并在实践的基本技能方面进行一次系统的训练。能够较全面地巩固和应用“单片机”课程中所学的基本理论和基本方法,并初步掌握小型单片机系统设计的基本方法。应用场合: 温度控制是工业生产过程中经常遇到的过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。此电烤箱温度控制系统利用单片机的控制功能来设计一种智能的烤

7、箱系统,避免电烤箱加热过程中发生安全事故。主要应用于需要根据外界的需要自动调节温度范围的场合。系统功能介绍: 当DS18B20检测到温度超过设定的值时,发出信号到单片机AT89C52的中断端口,由AT89C52单片机控制加热系统断电,这样就能很好的解决温度过高的问题,起到一个很好的保护的作用。当DS18B20传感器检测到温度低于设定的下限值时,又会给AT89C52单片机一个启动信号,AT89C52就又会重启加热系统开始工作,这样就能保证电烤箱能正常加热了。当DS18B20传感器检测温度达到燃烧的临界点时,会给AT89C52输入一个预报警信号,AT89C52就会控制报警系统报警,这样就起到一个很

8、好的保护作用。2.2 系统组成总体结构系统主要包括单片机控制模块,驱动模块,温度检测模块,按键模块,报警模块等五大部分。AT89C52温度显示 温度传感器报警电路时钟与复位电路按键输入电炉驱动装置稳压电源图2.1 系统组成总体框结构图 控制模块主要由单片机AT89C52构成,温度检测由DS18B20传感器完成。稳压电源为整个系统提供+5V的直流电压。系统通过按键电路输入温度的设定值,通过温度检测电路检测当前的温度范围,通过单片机的控制作用得到想要的温度值,通过驱动电路来驱动电炉。当DS18B20传感器检测温度达到燃烧的临界点时,会给AT89C52输入一个预报警信号,AT89C52就会作用于报警

9、电路发出报警。第3章 硬件设计3.1单片机最小系统的设计数据处理过程是主要由AT89C52单片机等芯片完成的。AT89C52是一种带4K字节的闪烁可编程可擦除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。其中包括128 字节内部RAM,32个I/O 口线,2个16位定时/计数器,一个5 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52 降至0Hz 的静态逻辑操作,并支持两种可选的节电工作模式26。空闲方式体制CPU 的工作,但允许RA

10、M,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复位。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器。AT89C52单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。AT89C52单片机是美国Intel公司的8位高档单片机的系列。也是目前应用最为广泛的一种单片机系列。其内部结构简化框图如下所示。AT89C52系列

11、单片机主要有CPU、存储器,IO接口电路及时钟电路等部分组成。AT89C52单片机管脚图如图3.1所示 图3.1 单片机引脚图 引脚功能说明如下:VCC:电源电压GND:地P0口:P0口是一组8 位漏极开路型双向I/O口,也即地址/数据总线复用。作为输出口用时,每位能吸收电流的方式驱动8个TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接受指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8 位双向

12、I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash 编程和程序校验期间,P1接受低8 位地址。P2口:P2是一个带有内部上拉电阻的8 位双向I/O 口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位四肢的外部

13、数据存储器(例如执行MOVX DPTR指令)时,P2口送出高8 位地址数据,在访问8 位地址的外部数据存储器(例如执行MOVX RI 指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2 寄存器的内容),在整个访问期间不改变。Flash编程和程序校验时,P2也接收高位地址和其他控制信号。P3口:P3是一个带有内部上拉电阻的8位双向I/O口,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。P3 口还接收一些用于Fl

14、ash闪速存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元D0位置位,可禁止ALE操作。该位置,只有一条MOVX和MOVC指令A

15、LE 才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序存储允许输出是外部程序存储器的读选通型号,当89C51由外部存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12v的编程允许电

16、源VPP,当然这必须是该器件使用12v编程电压VPP。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,外接石英晶体或陶瓷谐振器及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对电容C1、C2虽没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30Pf10Pf,而如使用陶

17、瓷谐振器建议选择40Pf10Pf。用户也可以采用外部时钟。这种情况下,外部时钟脉冲接到XTAL端,即内部时钟发生器的输入端XTAL则悬空。3.1.1时钟电路设计单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。本课题采用内部时钟方式。在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。晶振频率取12 MHz。外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,本课

18、题选用33pF的电容。易知:本单片机最小系统的振荡周期=1/(12MHz)=1/12us,时钟周期=1/6us,机器周期=1us。图3.2时钟电路原理图 3.1.2复位电路设计无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需要复位。复位电路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这个状态开始工作。单片机的复位条件:必须使其RST引脚上持续出现两个(或以上)机器周期的高电平。单片机的复位形式:上电复位、按键复位。本课题采用按键复位。在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下

19、的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。图3.3复位电路原理图单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路、时钟电路、复位电路。图3.4 单片机最小系统原理图3.2温度检测模块的设计温度检测模块主要是由DS18B20传感器构成。该产品采用美国DALLAS公司生产的DS

20、18B20可组网数字温度传感器芯片封装而成,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。3.2.1 DS18B20芯片的内部结构(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(2)在使用中不需要任

21、何外围元件。(3)可用数据线供电,电压范围:+3.0+5.5V。(4)测温范围:-55+125。固有测温分辨率为0.5。(5)通过编程可实现912位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。存储器与控制逻辑64位ROM和单线接口高速缓存温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器图3.5 DS18B20内部结构框图 3.2.2 DS18B20的测温原理 DS18B20的测温原理如图3.6所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1

22、,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到

23、0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3.6中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器1的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。斜率累加器计数比较器减法计数器1预置预置低温度系数振荡器 减到0增加温度寄存器停止 减到0减法计数器2高温度系数振荡器 图3.6 DS18B20的测温原理3.2.3 DS18B20数据处理DS18B20的高速暂存存储器由9个字节组成,其分配如表3.1所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1

24、个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。 下表是DS18B20温度采集转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于或等于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。温度转换计算方法举例:例如当DS18B20采集到+125的实际温度后,输出为07D0H,则:实际温度=07D0H0.0625=20000.0625=125。例如当DS18B20采集到-55的实际温度后,输出为FC90H,则应先将11

25、位数据位取反加1得370H(符号位不变,也不作为计算),则:实际温度=370H0.0625=8800.0625=55。表3.1 DS18B20温度与表示值对应表温度二进制表示十六进制表示+1250000 0111 1101 0000 07D0H+850000 0101 0101 0000 0550H+25.06250000 0001 1001 0001 0191H+10.1250000 0000 1010 0010 00A2H+0.50000 0000 0000 1000 0008H00000 0000 0000 0000 0000H-0.51111 1111 1111 1000 FFF8H-

26、10.1251111 1111 0101 1110 FF5EH-25.06251111 1110 0110 1111 FE6FH-551111 1100 1001 0000 FC90H 3.2.4 DS18B20温度检测电路设计D1S18B20有两种供电模式:外部供电模式和寄生供电模式,本设计供电模式。 图3.7 温度检测电路3.3 报警电路的设计当温度超过设定值时,人又没又在旁边,就会带来不便,所以设计一个报警电路,当检测到温度超过设定值时提醒使用者关注电烤箱的状态。本设计的报警电路主要由蜂鸣器和2N3702型号的三极管构成,由于AT89C52的端口输出电流小驱动能力弱所以接一个2N3702

27、放大电流驱动蜂鸣器。当电池放电结束后单片机控制P2.4输出固定频率的高低电平从而使蜂鸣器发出声音。报警电路如图3.8所示: 图3,8 报警电路 3.4 按键电路的设计由下图可以看出按键电路的工作原理。通过按键来设定温度的调节范围,确定设定值,若需要修改时,重新输入相应的数值即可。S2到s6按键功能分别为:设置、增加、减小、确定、复位。下面为按键硬件电路: 图3.9 按键电路3.5 驱动模块的设计为保证驱动电路可靠工作,其驱动电路应满足如下要求:1)动态驱动能力强,能提供驱动脉冲,使加热电路迅速导通。2)能提供适当的正向偏压和足够的反向偏压,使加热电路可靠的开通和关断。3)有足够的输入输出电气隔

28、离能力,使信号电路与栅极驱动电路隔离,且具有灵敏的短路、过流保护功能。所设计的驱动电路如图3.10所示。 图3.10 驱动电路Q1,Q2组成功率放大电路,单片机I/O接口为P2.0。该驱动电路能安全接受输入信号,在接到正确的控制信号后对加热电路进行驱动,从而实现电烤箱的加热过程。第4章 软件设计4.1主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的温度值。主程序的另一功能是判断温度是否超过设定极限。其程序流程见图4.1所示。由总的流程图可以分析出,在整个程序中应该包括如下几个部分取DS18B20温度子程序,温度转换子程序,温度计算子程序,数据显示子程序等。主程序流程

29、图如下所示。 开始显示温度系统初始化温度超过设定极限?按键设定初值Y报警程序从DS18B20中读取温度N返回YN是否小于设定值?加热 4.1 主程序流程图 读出温度程序的主要功能是读出RAM中的数据。在读出时需进行CRC校验,校验有错时不进行温度数据的读取。其程序流程图如图4.2所示。 发DS18B20复位命令N 发跳过ROM命令CRC校验?Y 发读取温度命令移入温度寄存器 读取操作N全部读完?结束 YY 图4.2 读出温度程序流程图4.2 温度检测模块温度采集部分软件编程包括温度转换程序、温度计算程序及温度显示程序。温度转换程序是从发温度转化命令开始。当采用12位分辨率时,转换时间约为750

30、ms。温度转化命令程序流程图如下所示。发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束 图4.3 温度转化程序流程图 温度计算程序将RAM中读取的值进行BCD码的转化运算,并进行温度值正负的判定。计算温度程序流程图如下所示。 开始计算小数位温度BCD值N温度零下?无标志Y计算整数位温度BCD值温度值取补码置“-”标志结束 图4.4 温度计算程序流程图 第5章 课程设计总结 在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内微变,稳定性好,不振荡,对系统的快速性要求高。在论文中简单分析了单片机温度控制系统设计过程及实现方法。我的课设题目是基于单片机的电烤箱

31、温度控制设计。本次课程设计的温度检测电路由DS18B20来实现,以AT89C52作为温度控制系统,因此需要通过查阅资料来了解器件的基本结构、主要功能和注意事项等。通过了解器件,比较彼此之间的优缺点,来确定设计所需的器件,如何更好的利用器件的特点成为本次设计重要的一方面。在确定了器材之后,如何利用使之最大限度的体现设计的功能,完成设计目标,这又是需要花大量时间去思考的。在此期间经历了多次的方案论证、系统的硬件、软件设计以及查阅了大量的关于传感器、单片机接口电路、控制方面的理论。经过了一番特殊的体验后,经历了失败的痛苦,也尝到了成功的喜悦,第一次通过所学的专业知识来解决问题。此过程检查了自己的知识

32、水平,使我对自己有一个全新的认识。通过这次课程设计,不仅锻炼了自己分析问题、处理问题的能力,还提高了自己的动手能力,这些培养和锻炼对于我们大学生来说,是很重要的。 参考文献1 华成英,童诗白.模拟电子技术基础. 高等教育出版社,20002 阎石.数字电子技术基础.高等教育出版社,1997:12-1213 李朝青.单片机原理及接口技术.北京:北京航空航天大学出版,2007:3-644 楼然苗.单片机课程设计指导.北京:北京航空航天大学出版社,2012:13-1345 康万新.应用电子技术方向.北京:清华大学出版,2009 (2) :8-3566 张毅刚.基于Protel的单片机课程的基础实验与课

33、程设计.人民邮电出版 社,2012:4-657 周景润.Protel入门实用教程.机械工业出版社,20078 郁有文.传感器原理及工程应用.西安:西安电子科技大学出版,2010:1-1279 刘畅生.电源集成电路使用速查手册.中国电力出版社, 201010 杨永.模拟电子技术设计、仿真与制作.电子工业出版社,2012:2-23211 余道衡,徐乘和.电子电路手册.北京:北京大学出版社,199612 王宗信,谢万新.传感器基础知识.煤炭工业出版社,1988:4-41213 杨亭.单片机C51程序设计教程与实验.北京:北京航天航空出版, 2006:4-21114 张伟.单片机原理及应用.机械工业出

34、版社,2002:5-11215 马树华.单片机原理及接口技术.北京:北京邮电大学出版社,2005附录程序清单#include #define uchar unsigned char#define uint unsigned intint baii,shii,gee,sheding1;uchar flag;uint baid,shid,ged;uint tvalue; /温度值uchar code table=0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90;sbit DQ=P37; /ds18b20与单片机连接口sbit kong1=P30;

35、sbit kong2=P31;sbit kong3=P32;sbit kong4=P33;sbit kong5=P34;sbit kong6=P35;sbit bai=P10;sbit shi=P11;sbit ge=P12;sbit queren=P13;sbit kaoxiang=P14;void delay(uchar z) uchar x,y; for(x=z;x0;x-) for(y=123;y0;y-); void display() P2=tablebaii;kong1=1;delay(10);kong1=0; P2=tableshii;kong2=1;delay(10);kon

36、g2=0; P2=tablegee;kong3=1;delay(10);kong3=0; void display1() P0=tablebaid;kong4=1;delay(10);kong4=0; P0=tableshid;kong5=1;delay(10);kong5=0; P0=tableged;kong6=1;delay(10);kong6=0; anjian() if(queren=0)delay(10);if(queren=0)flag=1;delay(500);delay(1500); if(bai=0)delay(10);if(bai=0)baii=1;delay(500);

37、delay(1500); if(shi=0)delay(10);if(shi=0)shii+;delay(500);if(shii=10)shii=0;delay(1500); if(ge=0)delay(10);if(ge=0)gee+;delay(500);if(gee=10)gee=0;delay(1500);sheding1=baii*100+shii*10+gee; if(sheding1120) if(flag=1) return sheding1; /ds18b20程序void delay_18b20(uint i)/延时1微秒while(i-);void ds18b20rst(

38、) /ds18b20初始化子函数 /要求数据线拉高-延时-数据线拉低-延时大于480微妙-数据线拉高-延时等待 uchar x=0;DQ = 1; /信号线DQ复位delay_18b20(4); /延时DQ = 0; /DQ拉低delay_18b20(100); /精确延时大于480usDQ = 1; /拉高delay_18b20(40); void ds18b20wr(uchar wdata)/*写数据子函数,无返回值,含参数*/ uchar i=0; for (i=8; i0; i-)/要写完一个字节,故需要重复8次以下操作 DQ = 0; /数据线拉低 DQ = wdata&0x01;/

39、wdata是一个形参,将其与0000 0001进行按位与 /按从低到高的顺序发送数据(一次发送一位) delay_18b20(10); DQ = 1; /最后将数据线拉高 wdata=1; /将wdata右移1位 uchar ds18b20rd() /读数据子函数,是有返回值dat uchar i=0;uchar dat = 0;for (i=8;i0;i-)/要读完一个字节,故需要重复8次以下操作 DQ = 0; /给脉冲信号dat=1;DQ = 1; /给脉冲信号if(DQ)dat|=0x80;delay_18b20(10); return(dat); /返回dat read_temp()

40、 /读取温度值并转换的子函数,有返回值温度值tvalueuchar a,b;ds18b20rst(); /调用ds18b20初始化子函数ds18b20wr(0xcc);/调用写数据子函数,向ds18b20写命令0xcc /ccH表示跳过ROM读序列号,适用于单机工作,直接向18b20发送温度变换命令ds18b20wr(0x44);/调用写数据子函数,向ds18b20写命令0x44 /44H表示启动ds18b20温度转换,结果自行存入9字节的RAM中ds18b20rst(); /调用ds18b20初始化子函数ds18b20wr(0xcc);/同上 ds18b20wr(0xbe);/调用写数据子函

41、数,向ds18b20写命令0xbe /beH表示读取RAM中9字节的温度数据a=ds18b20rd(); /调用读数据子函数,并将所得数据给ab=ds18b20rd(); /tvalue=b; /把b的值给tvaluetvalue=8; /tvalue左移8位tvalue=tvalue|a;/tvalue与a进行按位或 tvalue=tvalue*(0.625);/温度值扩大10倍,精确到1位小数return(tvalue); /返回温度值/温度值显示void ds18b20disp()/温度值显示 baid=tvalue/1000; /百位数 shid=tvalue%1000/100;/十位数 ged=tvalue%100/10; /个位数 void main() flag=0; baii=0;shii=0;gee=0; while(1) display(); anjian();read_temp(); /调用ds18b20读取温度 ds18b20disp(); display1(); /调用温度显示子函数if(tvalue

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁