基于单片机的温度测控系统设计—大学毕业论文毕业设计学位论文范文模板参考资料.doc

上传人:土8路 文档编号:10283848 上传时间:2021-05-05 格式:DOC 页数:29 大小:3.46MB
返回 下载 相关 举报
基于单片机的温度测控系统设计—大学毕业论文毕业设计学位论文范文模板参考资料.doc_第1页
第1页 / 共29页
基于单片机的温度测控系统设计—大学毕业论文毕业设计学位论文范文模板参考资料.doc_第2页
第2页 / 共29页
基于单片机的温度测控系统设计—大学毕业论文毕业设计学位论文范文模板参考资料.doc_第3页
第3页 / 共29页
基于单片机的温度测控系统设计—大学毕业论文毕业设计学位论文范文模板参考资料.doc_第4页
第4页 / 共29页
基于单片机的温度测控系统设计—大学毕业论文毕业设计学位论文范文模板参考资料.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《基于单片机的温度测控系统设计—大学毕业论文毕业设计学位论文范文模板参考资料.doc》由会员分享,可在线阅读,更多相关《基于单片机的温度测控系统设计—大学毕业论文毕业设计学位论文范文模板参考资料.doc(29页珍藏版)》请在三一文库上搜索。

1、摘 要本设计以AT89C51单片机为核心的温度控制系统,利用其工作原理和设计方法实现温度控制。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路、PC机与单片机和一些接口电路 。单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序。关键词:AT89S51单片机 ; DS18B20温度芯片 ; 温度控制 AbstractThe design of the AT89C51 microcontro

2、ller as the core of the temperature control system, the use of its working principle and design method for control of temperature. DS18B20 chip temperature signal from the temperature of the collection, and to transmit digital signals to the microcontroller. This paper introduces the control system

3、hardware, including: temperature detection circuit, the temperature control circuit, PC and Single-chip, and some of the interface circuit. SCM processing by the signal corresponding to the temperature control to achieve the purpose. The article also highlights some of the software design, where the

4、 modular structure, the main modules are: digital tube display program, the keyboard scan and key processes, the temperature signal handler, over-temperature alarm program.Key word: AT89S51 microcontroller;DS18B20 chip temperature;Temperature control目 录引言11 总体设计22 硬件设计32.1主控制模块32.2 键盘输入模块62.3 温度测试模块

5、82.4 七段数码管显示模块93 软件设计113.1设计思路、主程序流程图113.2 温度采集子程序123.3 动态显示子程序124 系统调试144.1 硬件调试144.2 软件调试144.3 调试结果155 结论16附录18附录118附录226参考文献28引言温度控制系统广泛应用于社会生活的各个领域 ,如家电、汽车、材料、电力电子等 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚

6、至出现控制不稳定、失控现象。传统的继电器调温电路简单实用 ,但由于继电器动作频繁 ,可能会因触点不良而影响正常工作。控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。DS18B20数字温度传感器具有微型化、封装简单、低功耗、高性能抗干扰能力、测量范围广、强易配处理器等

7、优点,可使系统测量更加精确,电路更加简单。实验测试证明,设计的样机系统测温控温精度均为0.1,测温控温的范围可达-55+125,可应用于家用电器、汽车、冷库等领域1 总体设计 该系统将检测点的温度采集之后发送到单片机进行处理,并通过矩阵按键进行温度上限和下限的设定。当温度超过设定值范围后,单片机将发出控制信号启动升温装置或降温装置,使温度恒定在一定的范围。该系统主要包括温度采集模块、矩阵按键模块、主控模块、温度控制模块、测温控温显示模块等,其结构框图如图1所示:AT89C51温度显示电路温度控制电路键盘输入电路温度采集电路 图1 系统总体框图该系统由核心部件AT89C51来处理从键盘输入电路和

8、温度采集电路送入的数据,并通过温度显示电路进行温度显示,由温度控制电路来进行相应的升温或降温的操作。2 硬件设计2.1主控制模块AT89C51 是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引

9、脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。单片机系统原理图如图2所示:图 2 单片机系统原理图由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 A TMEL 公司的 AT89C51单片机作为主控芯片。主控模块采用单片机最小系统是由于 AT89C51芯片内含有4 kB的 E2PROM ,无需外扩存储器 ,电路简单可靠 ,其时钟频率为 024 MHz

10、 ,并且价格低廉。 AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟。同时, AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式何在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。AT89C51引角功能说明Vcc:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,也

11、即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。表1为P1口第二功

12、能:表1 P1口第二功能端口引脚第二功能P1.5MOSI(用于ISP编程)P1.6MISO(用于ISP编程)P1.7SCK(用于ISP编程)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。在访问位地址的外部数据存储器(如执行:MOVX Ri 指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。Flash 编程或校验时,P2也接收高位地址和其它控制信号。)P3口:P3口是一组带有内部上

13、拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表2: 表2 P3口的第二功能 端口功能第二功能端口引脚第二功能RXD(P3.0)串行输入口T0(P3.4)定时/计数器0外部输入TXD(P3.1)串行输出口T1(P3.5)定时/计数器1外部输入INT0(P3.2)外中断0WR(P3.6)外部数据存储器写选通INT1(P3.3)外中断1RD(P3.7)外部数据

14、存储器读选通RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。WDT益出将使该引脚输出高电平,设置SFR AUXR 的 DISRTO 位(地址8EH)可打开或关闭该功能。DISRTO 位缺省为RESET输出高电平打开状态。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:第当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,

15、可禁止ALE操作。该位禁位后,只有一条MOVX 和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的PSEN信号。EA/VPP:外部访问允许。欲使CPU公访问外部程序存储器(地址0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储

16、器中的指令。Flash存储器编程时,该引脚加上12V的编程电压Vpp。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。AT89S51单片机内部构造及功能:特殊功能寄存器:特殊功能寄存器的片内空间分存如下图3-2所示。这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。中断寄存器:各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。双时钟指针寄存器:为方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存储器:PD0位于SFR区块中的地址82H、83H和DP1位

17、于地址84H、85H,当SFR中的位DPS=0时选择DP0,而DPS=1时选择DP1。在使用前初始化DPS。电源空闲标志:电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89S51,假如接至Vcc(电源),程序首先执行从地址0000H0FFFH(4KB)内部程序存储器,再执行地址为1000HFFFFH(60KB

18、)的外部程序存储器。数据存储器:在AT89S51的具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。看门狗定时器(WDT):WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看狗复位SFR(WDTRST)构成。外部复位时,WDT默认为关闭状态,要打开WDT,必按顺序将01H和0E1H写到WDTRST寄存器,当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。2.2 键盘输入模

19、块单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。 键开关状态的可靠输入 :为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响在这种行列式矩阵键盘非编码键盘的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。按键复位电路原理图如图3所示:图3

20、按键复位电路原理图对照图示的键盘,说明线反转法工作原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。2.3 温度测试模块DS18B20是DALLAS公司生产的一线式数

21、字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围55125,可编程为912位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出DS18B

22、20可以非常方便的被用于远距离多点温度检测系统。综上,在本系统中我采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。在0100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。温度芯片DS18B20如图4所示:图4 温度芯片DS18B20采用温度芯片DS18B20。使用集成芯片,能够有效的减小外界的干扰,提高测量的精度,简化电路的结构。为了使测得的温度更准确,采用了温度传感器DS18B20来获取当前温度,而DS18B20是采用I2C总线进行通信的,如图5所示,单片机使用P2.7端口与DS18B20的数据

23、通讯端口相连接,并通过软件实现P2.7控制DS18B20的读和写。单片机与DS18B20的通信如图5所示: 图5 单片机与DS18B20的通信2.4 七段数码管显示模块 在本系统中采用了LED七段数码动态显示电路来显示温度值,显示范围在0-99之间。LED显示器是单片机应用系统中常见的输出器件,而在单片机的应用上也是被广泛运用的。如果需要显示的内容只有数码和某些字母,使用LED数码管是一种较好的选择。LED数码管显示清晰、成本低廉、配置灵活,与单片机接口简单易行。数码管如图6所示:图6 数码管LED数码管作为显示字段的数码型显示器件,它是由若干个发光二极管组成的。数码管显示原理图7所示:图7

24、数码管显示原理图当发光二极管导通时,相应的一个点或一个笔画发亮,控制不同组合的二极管导通,就能显示出各种字符,常用的LED数码管有7段和“米”字段之分。这种显示器有共阳极和共阴极两种。共阴极LED显示器的发光二极管的阴极连在一起,通常此共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。同样,共阳极LED显示器的发光二极管的阳极接在一起,通常此共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。本次设计所用的LED数码管显示器为共阳极。3 软件设计3.1设计思路、主程序流程图根据所学知识,实现本系统的软件部分将使用汇编语言,要配合硬件部

25、分实现输入一个需要恒定的温度值和偏差温度,与从温度传感器所获取的当前实际温度相比较,并向温度控制执行电路发出升温或降温的命令,在这一过程中将随时显示当前温度值和设置的温度值。其主要实现的部分包括:键盘输入、温度采集、数据转换、动态显示、温度控制等。主程序流程图如图8所示:开始系统初始化发送温度读取指令读出温度值数据转换16进制10进制温度控制执行显示当前温度和设置温度是否有外部中断0请求?键盘输入中断服务子程序结束断点YN图8 主程序流程图3.2 温度采集子程序温度采集子程序主要负责驱动外部的温度传感器DS18B20进行工作,通过串口通信方式向DS18B20写入ROM命令,并读取当前温度值,将

26、读取的数据存放在26H-2EH存储单元,其中26H单元存放温度值的低位,27H单元存放温度值的高位,程序流程图如图9所示:开始DS18B20 复位向DS18B20写入相应的ROM命令读出温度值并进行校验结束图9 温度采集子程序流程图3.3 动态显示子程序在该恒温系统中使用了两个两位的LED七段数码管来显示系统所采集的当前温度值和设置的温度值,为了不占用更多的单片机端口,在针对显示电路的设计时采用了动态显示的方案,而动态显示子程序的主要任务就是控制显示电路的扫描规律。其程序流程图如图10所示:开始当前温度高位送入片选信号初始化当前温度高位片选信号显示输出延时1ms当前温度低位送入片选信号初始化当

27、前温度低位片选信号显示输出延时1ms设置温度高位送入片选信号初始化设置温度高位片选信号显示输出延时1ms设置温度低位送入片选信号初始化设置温度低位片选信号显示输出延时1ms结束图10 动态显示子程序流程图4 系统调试单片机应用系统样机组装好后,便可进入系统的在线(联仿真器)调试,其主要任务是排除样机硬件故障,并完善其硬件结构,试运行所设计的程序,排除程序错误,优化程序结构,使系统达到期望的功能,进而固化软件,使其产品化4.1 硬件调试静态测试 在样机加电之前,首先用万用表等工具,根据硬件电器原理图和装配图仔细检查样机线路的正确性,并核对元器件的型号、规格和安装是否符合要求。应特别注意电源的走线

28、,防止电源之间的短路和极性错误,并重点检查扩展系统总线(地址总线、数据总线和控制总线)是否存在相互间的短路或与其它信号线的短路。第二步是加电后检查各个插件上引脚的电位,仔细测量各点电位是否正常,尤其应注意单片机插座上的各点电位,若有高压,联机时将会损坏仿真器。第三步是在不加电情况下,除单片机以外,插上所有的元器件,最后用仿真适配器将样机的单片机插座和仿真器的仿真接口相连,为联机调试做准备。 4.2 软件调试软件调试所使用的方法有:计算程序的调试方法、I/O处理程序的调试法等。1计算程序的调试方法 计算程序的错误是一种静态的固定的错误,因此主要用单拍或断点运行方式来调试。根据计算程序的功能,事先

29、准备好一组测试数据。调试时,用防真器的写命令,将数据写入计算程序的参数缓冲单元,然后从计算程序开始运行到结束,运行的结果和正确数据比较,如果对有的测试数据进行测试,都没有发生错误,则该计算程序调试成功;如果发现结果不正确,改用单步运行方式,即可检查出错误所在。计算程序的修改视错误性质而定。若是算法错误,那是根本性错误,应重新设计该程序;若是局部的指令有错,修改即可。如果用于测试的数据没有全部覆盖实际计算的原始数据的类型,调试没有发现错误可能在系统运行过程中暴露出来。2I/O处理程序的调试 对于A/D转换一类的I/O处理程序是实时处理程序,因此一般用全速断点运行方式或连续运行方式进行调试。 4.

30、3 调试结果经硬件调试和软件调试后,最终调试结果温度为22.8。如图11 所示:图11 温度显示5 结论 在设计该系统的过程中我充分应用了在课堂上所学的相关理论知识,当把理论知识通过自己的双手变成实际后,使我对电路设计有了更多的了解,同时又产生了更浓厚的兴趣。 本系统的核心技术表现在温度采集、矩阵键盘输入和动态显示部分,其中温度采集的硬件部分使用温度传感器DS18B20,通过软件控制与DS18B20的串口通讯来进行温度采集; 键盘输入采用键码的扫描来实现.。为了实现这一系列功能我主动与指导老师交流,并且查阅了大量相关的书籍,在此过程中进一步锻炼了自己思考问题与解决问题的能力,巩固并提高了自己的

31、单片机、数字电路、模拟电路等相关知识。该系统实现的最终功能是控制外界温度,使温度恒定在一定的范围内,统所能测量温度的范围在0-99度之间,能恒定的范围是在1-98度之间,所以该系统在日常生活与生产中有较大的应用空间,特别是运用在养值业方面。而在一些特殊的生产环境中,其需要恒温的范围远远超过了该系统,该恒温系统是不适用的,这也是该系统有待完善的地方。附录附录1主程序代码#include#define uchar unsigned char#define uint unsigned int#define D0 P0#define uchar unsigned charunsigned char h

32、our,min,sec,T50ms;unsigned char q,m,n,p;sbit DQ = P27; /定义DS18b20的管脚sbit L0 = P15;sbit L1 = P14; /定义控制数码管的管脚sbit L2 = P13;sbit L3 = P12;sbit L4 = P11; sbit L5 = P10;uint tvalue; /温度值uchar tflag; /温度正负标志unsigned char table = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80,0x40,0xcc;/0-9数字void

33、init();/初始化子程序声明void delay500us(unsigned char X);/延时子程序声明void display1();/显示子程序声明void display2();/显示子程序声明/*延时子程序1*void Delay_DS18B20(int num)while(num-);/*延时子程序2*void delay( char i) unsigned char t; while(i-) for(t=0;t0;i-)for(j=248;j0;j-);/*初始化T0*void init()/初始化子程序TMOD=0x01;TH0=0x3c;/(65536-49990)/

34、256;TL0=0xb0;/(65536-49990)%256;ET0=1;EA=1;TR0=1;/*初始化DS18B20*void Init_DS18B20(void)unsigned char x = 0;DQ = 1; /DQ复位Delay_DS18B20(8); /稍做延时DQ = 0; /单片机将DQ拉低Delay_DS18B20(80); /精确延时,大于480usDQ = 1; /拉高总线Delay_DS18B20(14);x = DQ; /稍做延时后,如果x=0则初始化成功,x=1则初始化失败Delay_DS18B20(20);/*读一个字节*unsigned char Rea

35、dOneChar(void)unsigned char i = 0;unsigned char dat = 0;for (i = 8;i 0;i-) DQ = 0; / 给脉冲信号 dat = 1; DQ = 1; if(DQ) dat |= 0x80; Delay_DS18B20(4);return(dat);/*写一个字节*void WriteOneChar(unsigned char dat)unsigned char i = 0;for (i = 8;i 0;i-) DQ = 0; DQ = dat&0x01; Delay_DS18B20(5); DQ = 1; dat = 1;/*读

36、取温度值并转换*unsigned int ReadTemperature(void)uchar a,b;Init_DS18B20(); WriteOneChar(0xcc); /*跳过读序列号WriteOneChar(0x44); /*启动温度转换*Init_DS18B20(); WriteOneChar(0xcc); /*跳过读序列号* WriteOneChar(0xbe); /*读取温度* a = ReadOneChar(); /读低8位b = ReadOneChar(); /读高8位tvalue = b;tvalue = 8;tvalue = tvalue | a; if(tvalue

37、=20)T50ms=0;sec+;if(sec=60)sec=0;min+;if(min=60)min=0;hour+;if(hour=24)hour=0;/*数码管显示扫描函数*void display1(void)P1=0X00; Delay_DS18B20(150);D0 = tableq;/百位数L5 = 1;Delay_DS18B20(250);L5 = 0;D0 = tablem;/十位数L4 =1;Delay_DS18B20(250);L4 = 0;D0 = tablen;/个位数L3 = 1;Delay_DS18B20(250);L3 = 0;D0 = table10;/小数点

38、 L3 = 1;Delay_DS18B20(250);L3 = 0; D0 = tablep;/小数位L2 = 1;Delay_DS18B20(250);L2 = 0; /*数码管显示扫描函数*void display2() P1=0X00; delay500us(5); D0 = tablehour/10;/小时的十位L5 = 1; delay500us(5);L5 = 0;D0 = tablehour%10;/ 小时的个位L4 =1; delay500us(5);L4 = 0;D0 = tablemin/10;/ 分钟的十位L3 = 1; delay500us(5);L3 = 0;D0 =

39、 tablemin%10;/ 分钟的个位 L2 = 1; delay500us(5);L2 = 0; D0 = tablesec/10;/ 秒的十位L1 = 1; delay500us(5);L1 = 0; D0 = tablesec%10;/ 秒的个位 L0 = 1; delay500us(5);L0 = 0;/*主函数部分程序*void main(void) uchar a=0;init();hour=15;min=45;sec=35;while(1)if(P3|0xfb)=0xfb) /等待外部中断0口(P32松开) delay(100); /延时去抖动 if(P3|0xfb)=0xfb

40、)a=a+1; if(a%2=0) tvalue = ReadTemperature(); /读取温度 q = tvalue/1000; /分离出百位m = tvalue%1000/100; /分离出十位n = tvalue%100/10; /分离出个位p = tvalue%10; /分离出小数位 display1(); /扫描数码管 else /时间显示 display2(); /扫描数码管 附录2整体实物图整体连接图温度模块DS18B20数码管显示参考文献1徐玮. C51单片机高效入门(第2版). 北京:机械工业出版社,2010;2赵保京;中国集成电路大全;国防工业出版社;3李标荣 张绪里

41、;电子传感器;国防工业出版社;1993;4何立民;MCS-51系列单片机应用系统设计M;北京:航空航天大学出版社;2001;5张毅刚 彭喜源;新编MCS-51单片机应用设计M;黑龙江:哈尔滨工业大学出版社;2003; 6韩润萍,陈小萍.点阵LED显示屏控制系统J.微计算机信息,2003,19(10):50-51; 7阳进.基于单片机的LED显示屏的汉字显示J.中国科技信息,2005,(12):112;8胡锦 蔡谷明 梁先宇;单片机技术使用教程M;北京:高等教育出版社;2003;9胡汉才;单片机原理及其接口技术(第2版)M;北京:清华大学出版社;2004;10曹巧缓;单片机原理与应用;电子工业出版社;1997.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1