基于单片机的温度测量与控制系统

课 程 设 计 报 告

课程名称 综合电子设计

题 目 基于单片机的温度测量与控制系统

指导教师

设计起止日期

系 别

专 业

学生姓名

班级/学号

成 绩

目录

一.摘 要 „„„„„„„„„„„„„„„„„„„„„„„„„2

二. 功能介绍 „„„„„„„„„„„„„„„„„„„„„„„3

1,基本要求„„„„„„„„„„„„„„„„„„„„„„„„3

2,硬件设计要求及思路„„„„„„„„„„„„„„„„„„„3

3,系统结构„„„„„„„„„„„„„„„„„„„„„„„„3

三,方案论证与比较„„„„„„„„„„„„„„„„„„„„3

1,使用DE2开发板设计 „„„„„„„„„„„„„„„„„„3

2,使用单片机设计思路 „„„„„„„„„„„„„„„„„„4

四,系统设计 „„„„„„„„„„„„„„„„„„„„„„„4

1,主控制部分AT89S51的设计方案 „„„„„„„„„„„„„„„„5

2,温度测量设计方案 „„„„„„„„„„„„„„„„„„„„„„10 五,单元电路设计„„„„„„„„„„„„„„„„„„„„„„„13

1,最小系统 „„„„„„„„„„„„„„„„„„„„„„„„„13

2, 温度采集„„„„„„„„„„„„„„„„„„„„„„„„„14

3, 显示电路„„„„„„„„„„„„„„„„„„„„„„„„„14

六,软件设计„„„„„„„„„„„„„„„„„„„„„„„„15

七,结束语„„„„„„„„„„„„„„„„„„„„„„„„„15

1,实验总结„„„„„„„„„„„„„„„„„„„„„„„„„15

2, 设计心得与体会„„„„„„„„„„„„„„„„„„„„„„„16

八,参考文献„„„„„„„„„„„„„„„„„„„„„„„„„17

九,附录„„„„„„„„„„„„„„„„„„„„„„„„„„„18

摘要

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

关键词:AT89S51单片机 DS18B20温度芯片 温度控制 串口通讯

二, 功能介绍

1,基本要求

(1)温度设定范围为20-30oC ,最小区分度为1oC 。

(2)环境温度超温时,接通制冷装置;低于等于设定温度时,断开制冷装置。用LED 表示制冷装置的接通/断开状态。

(3)用数码管显示环境的实际温度,温度显示范围0-99oC ,显示精度为小数点后1位。 2,硬件设计要求及思路

要求设计单片机(AT89S51)最小系统,并在此基础上完成对温度传感器DS18B20的读写操作,实现温度测量功能,温度实时显示功能,要求所设计系统具备报警温度设置功能。对超过设置温度值的状态进行报警和相应控制操作(本次使用LED 表示相应的控制操作)。

单片机的选择在整个系统设计中至关重要,要满足大内存、高速率、通用性、价格便宜等要求,本课题选择AT89S51作为主控芯片。

AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable) 的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

3,系统结构

三,方案论证与比较

设计这个温度测量有两种方法:分别是使用DE2开发板和单片机开发,以下是两种设计方法的原理介绍:

(1)使用DE2开发板设计:

使用DE2开发板提供的资源进行设计题目的实现。

1)FPGA 芯片:EP2C35F672C6N (Cyclone II)

2)5M 时钟

3)LED 、按键、开关

4)IO 扩展接口

5)7段数码管

(2)使用单片机设计思路:

要求设计单片机(AT89S51)最小系统,并在此基础上完成对温度传感器DS18B20的读写操作, 实现温度测量功能,温度实时显示功能,要求所设计系统具备报警温度设置功能。对超过设 置温度值的状态进行报警和相应控制操作(本次使用LED 表示相应的控制操作)。

两种方法比较的优缺点:

DE2是Altera 研究机构推出的FPGA 多媒体开发平台。通过对DE2平台的了解它完全可以按照工业产品的标准进行,使用QUARTUSII 的开发工具来进行设计,仿真。它的优点是可靠性高,性能稳定。但是缺点是平时我们接触较少,而且需要使用的程序相对于发杂。

而单片机与高精度温度传感器结合的方式我们接触较多,而且成本低,测量温度简单且容易实现。即用单片机完成人机界面,系统控制,信号分析处理,由前端温度传感器完成信号的采集与转换。这种方案克服了方案一的缺点,所以本课题任务是基于单片机和温度传感器实现对温度的控制。

四,系统设计

本课题设计的是一种以STC89C52单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。其主要包括:电源模块、温度采集模块、按键处理模块、实时时钟模块、数据存储模块、LCD 显示模块、通讯模块以及单片机最小系统。

本系统由温度传感器DS18B20、AT89S52、LCD 显示电路、软件构成。DS18B20输出表示摄氏温度的数字量,然后用51单片机进行数据处理、译码、显示、报警等。

单片机原理系统结构图:

图1,单片机系统结构图

(1)主控制部分AT89S51的设计方案:

AT89S51 是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable) 的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT )电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP 、TQFP 和PLCC 等三种封装形式,以适应不同产品的需求。

由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 A TMEL 公司的 A T89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 A T89S51芯片内含有4 kB 的 E2PROM , 无需外扩存储器 ,电路简单可靠 ,其时钟频率为 0~24 MHz , 并且价格低廉 。

其主要功能特性:

兼容MCS-51指令系统

4k可反复擦写(>1000次)ISP Flash ROM

32个双向I/O口

4.5-5.5V工作电压

2个16位可编程定时/计数器

时钟频率0-33MHz

全双工UART 串行中断口线

128x8 bit内部RAM

2个外部中断源

低功耗空闲和省电模式

中断唤醒省电模式

3级加密位

看门狗(WDT )电路

软件设置空闲和省电功能

灵活的ISP 字节和分页编程

双数据寄存器指针

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

AT89S51引角功能说明:

Vcc :电源电压

GND :地

P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,

每位能驱动8个TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。对端口写“1”, 通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。表1为P1口第二功能。

表1 P1口第二功能

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

P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I 。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表2。

表2 P3口的第二功能

RST :复位输入。当振荡工作时,RST 引脚出现两个机器周期上高电平将使单片机复位。WDT 益出将使该引脚输出高电平,设置SFR AUXR 的 DISRTO 位(地址8EH )可打开或关闭该功能。DISRTO 位缺省为RESET 输出高电平打开状态。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE (地址锁存允许)输出脉冲用于锁存地址的低8位字节。ALE 仍以时钟振荡频率的1/6输出的正脉冲信号,因ALE 脉冲。如有必要,可通过对特殊功能寄存器(SFR )区中的8EH 单元的D0位置位,可禁止ALE 操作。该位禁位后,只有一条MOVX 和MOVC 指令ALE 才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE 无效。

PSEN :程序储存允许(PSEN )输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的PSEN 信号。

EA/VPP:外部访问允许。欲使CPU 公访问外部程序存储器(地址0000H -FFFFH ),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA 端状态。如EA 端为高电平(接Vcc 端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时, 该引脚加上+12V 的编程电压Vpp 。

XTAL1:振荡器反相放大器及内部时钟发生器的输入端。

XTAL2:振荡器反相放大器的输出端。

AT89S51单片机内部构造及功能:

特殊功能寄存器:特殊功能寄存器的片内空间分存如下图3-2所示。这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。

中断寄存器:各中断允许控制位于IE 寄存器,5个中断源的中断优先级控制位于IP 寄存器。图2为AUXR 辅助寄存器。

图2 AUXR辅助寄存器

双时钟指针寄存器:为方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存储器:PD0位于SFR 区块中的地址82H 、83H 和DP1位于地址84H 、85H ,当SFR 中的位DPS=0时选择DP0, 而DPS=1时选择DP1。在使用前初始化DPS 。

图3 双时钟指针寄存器

电源空闲标志:电源空闲标志(POF )在特殊功能寄存储器SFR 中PCON 的第4位(PCON.4), 电源打开时POF 置“1”, 它可由软件设置睡眠状态并不为复位所影响。

存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB

外部程序和数据的寻址空间。

程序存储器:如果EA 引脚接地(GND ),全部程序均执行外部存储器。在AT89S51, 假如接至Vcc (电源+),程序首先执行从地址0000H -0FFFH (4KB )内部程序存储器,再执行地址为1000H -FFFFH (60KB )的外部程序存储器。

数据存储器:在AT89S51的具有128字节的内部RAM ,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。

看门狗定时器(WDT ):WDT 是为了解决CPU 程序运行时可能进入混乱或死循环而设置,它由一个14bit 计数器和看狗复位SFR (WDTRST )构成。外部复位时,WDT 默认为关闭状态,要打开WDT ,必按顺序将01H 和0E1H 写到WDTRST 寄存器,当启动了WDT ,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT 溢出复位外没有其它方法关闭WDT ,当WDT 溢出,将使RST 引脚输出高电平的复位脉冲。引脚图详见图4。

图4 AT89S51管脚图

(2)温度测量设计方案:

DS18B20是DALLAS 公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125℃,可编程为9~12位A/D转换精度,

测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU 只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。

综上,在本系统中我采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。在0—100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。

图5 温度芯片DS18B20

DS18B20内部结构主要由四部分组成:64位光刻ROM, 温度传感器, 非挥发的温度报警触发器TH 和TL, 高速暂存器。DS18B20的管脚排列如图6所示。

图6 DS18B20引脚分布图

在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc 接外部电源,GND 接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD 、GND 接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K Ω左右的上拉电阻。

CPU 对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM 操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM 指令,最后发送RAM 指令,这样才能对DS18B20进行预定的操作。

以下图7是做好的仿真图并运行结果:

图7 仿真运行图

上图是仿真的运行图,其工作原理是,通过DS18B20对温度进行采集,当采集的温度大于最高上限值或低于下限值时,蜂鸣器将会发声;通过按键对设置的限值进行加减,单刀双掷开关控制显示电路显示限值还是当前温度。

图8 实物完成图

五, 单元电路设计

1, 最小系统模块

单片机最小系统是指用最少的元件组成单片机系统,是单片机产品开发的核心电路。最小系统是控制温度的采集、处理与显示、温度值的设定与温度越限时控制电路的启动。

图9 最小系统

AT89S51内部有一个高增益反相放大器, 用于构成振荡器, 但要形成时钟脉冲, 外部还需附加电路, 本设计采用内部时钟方式, 利用芯片内部的振荡器, 然后在引脚XTAL1和XTAL2两端跨接晶体振荡器, 就构成了稳定的自激振荡器, 发出的脉冲直接送入内部时钟电路,C1和C2的值通常选择为22pF 左右, 晶振Y1选择12MHz. 为了减小寄生电容, 更好地保证振荡器稳定、可靠地工作,振荡器电容应尽可能安装得与单片机引脚XTAL1和XTAL2靠近。

单片机的31脚(EA )接+5V电源,表示允许使用片内ROM 。

2, 温度采集模块

图10 温度采集模块

DS18B20是数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理., 在本系统中我采用温度芯片DS18B20测量温度.

3, 显示电路模块

图11 显示电路图

显示电路图是采用数码管作为显示模块,其接口原理图如图9.

六, 软件设计

以下是温度测量与控制系统的主程序流程图

.

图12 主程序流程图

七, 结束语

实验总结:

本次课程设计完成了基于单片机AT89S51的温度控制系统的设计方案与软硬件实现。系统包括数据采集模块,单片机控制模块,显示模块和温度设置模块四个部分。文中对每个部分功能、实现过程作了详细介绍。完成了课题既定的任务,达到了预期的目标。系统具有如下特点:

⑴. 采用智能温度传感器DS18B20采集温度数据,简化了硬件电路设计,温度采集数据更加精准;

⑵.AT89S51单片机的采用,有利于功能扩展;

⑶. 电路设计充分考虑了系统可靠性和安全性。

本次课设软件和硬件相结合,有相当大的难度,同时也有很大的实用性。在做课程设计的过程中,我的理论和实践水平都有了较大的提高。并且我熟练掌握了单片机硬件设计和接口技术,同时对温度传感器的原理及应用有了一定的了解,掌握了各种控制电路及其相关元器件的使用。

实验心得与体会:

通过此次对温度测量与控制系统的设计,我们学会了怎样把所学的书本知识应用于实践中去,并学会了如何去思考整个控制系统的软硬件设计。实践过程中我们遇到了一些困难,但在解决问题的过程中,我们学会了团队合作精神和怎样发现问题、分析问题,进而解决问题。此次课程设计不仅增强了我们学习专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。

八, 参考文献

1曹巧媛主编. 单片机原理及应用(第二版). 北京:电子工业出版社,2002

2全国大学生电子设计竞赛组委会编. 第五届全国大学生电子设计竞赛获奖作品选编(2001),

北京:北京理工大学出版社,2003

3何力民编. 单片机高级教程. 北京:北京航空大学出版社,2000

4金发庆等编. 传感器技术与应用. 北京机械工业出版社,2002

5王锦标,方崇智.过程计算机控制.北京:清华大学出版社,1997;36~40

6邵惠鹤.工业过程高级控制.上海:上海交通大学出版社,1997;58—62,78—101 7胡寿松.自动控制原理.北京:国防工业出版社,2000;103—124

8刘伯春.智能PID 调节器的设计及应用.电子自动化,1995;(3):20~25

九, 附录

#include"reg52.h"

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P1^4; //温度数据口

sbit wx1=P2^4; //位选1

sbit wx2=P2^5; //位选2

sbit wx3=P2^6; //位选3

sbit wx4=P2^7; //位选4

sbit sd=P1^2; //范围与显示开关 =1 范围

sbit sj=P1^3; //上下界切换 =1 上限

sbit ss=P2^2; // 加1

sbit xj=P2^3; // 减1

sbit bjs=P1^0; // 上限报警

sbit bjx=P1^1; //

unsigned int temp, temp1,temp2, xs;

unsigned int sx=30;

unsigned int xx=20;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, //

0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6};

/******延时程序*******/

void delay1(unsigned int m)

{

unsigned int i,j;

for(i=m;i>0;i--)

for(j=110;j>0;j--);

共阳数码管

}

void delay(unsigned int m) //温度延时程序

{

while(m--);

}

void Init_DS18B20()

{

unsigned char x=0;

DQ = 1; //DQ复位 ds18b20通信端口

delay(8); //稍做延时

DQ = 0; //单片机将DQ 拉低

delay(80); //精确延时 大于 480us

DQ = 1; //拉高总线

delay(4);

x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败

delay(20);

}

/***********ds18b20读一个字节**************/

uchar ReadOneChar()

{

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(4);

}

return(dat);

}

/*************ds18b20写一个字节****************/

void WriteOneChar(unsigned char dat)

{

unsigned char i=0;

for (i=8; i>0; i--)

{

DQ = 0; //从高电平拉至低电平时, 写周期的开始

DQ = dat&0x01; //数据的最低位先写入

delay(5); //60us到120us 延时

DQ = 1;

dat>>=1; //从最低位到最高位传入

}

}

/**************读取ds18b20当前温度************/

void ReadTemperature()

{

unsigned char a=0;

unsigned b=0;

unsigned t=0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作/

WriteOneChar(0x44); // 启动温度转换

delay(5); // this message is wery important

Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度/ delay(5);

a=ReadOneChar(); //读取温度值低位 /

b=ReadOneChar(); //读取温度值高位 /

temp1=b

temp1+=(a&0xf0)>>4; //低8位中的高4位值加上高8位中后三位数的值 temp1室温整数值

temp2=a&0x0f; //小数的值

temp=((b*256+a)>>4); //当前采集温度值除16得 实际温度值 zhenshu xs=temp2*0.0625*10; //小数位, 若为0.5则算为5来显示 xs小数 xiaoshu }

void wenduxianshi()

{

wx1=1;

P0=table[temp/10]; //显示十位

delay1(1);

wx1=0;

wx2=1;

P0=table[temp%10]+0x80; //显示个位 加上0x80就显示小数点了。 delay1(1);

wx2=0;

wx3=1;

P0=table[xs%10]; //显示小位

delay1(1);

wx3=0;

wx4=1;

P0=table[12]; //显示 C 字符

delay1(1);

wx4=0;

}

void sxxianshi()

{

wx1=1;

P0=table[sx/10]; //显示十位

delay1(1);

wx1=0;

wx2=1;

P0=table[sx%10]+0x80; //显示个位

delay1(1);

wx2=0;

wx3=1;

加上0x80就显示小数点了。

P0=table[12]; //显示小位

delay1(1);

wx3=0;

wx4=1;

P0=table[5]; //显示 C 字符 delay1(1);

wx4=0;

}

void xxxianshi()

{

wx1=1;

P0=table[xx/10]; //显示十位 delay1(1);

wx1=0;

wx2=1;

P0=table[xx%10]+0x80; //显示个位 delay1(1);

wx2=0;

wx3=1;

P0=table[12]; //显示小位

delay1(1);

wx3=0;

wx4=1;

P0=table[12]; //显示 C 字符 delay1(1);

wx4=0;

加上0x80就显示小数点了。

}

void dsx()

{

if(ss==0){sx=sx+1;}

if(xj==0) {sx=sx-1;}

}

void dxx()

{

if(ss==0){ delay1(5);if(ss==1)xx=xx+1;}; if(xj==0){ delay1(5);if(xj==1)xx=xx-1; };

}

void alarm()

{if(temp>sx)bjs=0;

if(temp

}

void normal()

{if(xx

if(sx>temp)bjs=1;

}

void main()

{

while(1)

{ if(sd==1){ if(sj==1){sxxianshi();dsx();}; if(sj==0) {xxxianshi();dxx();}; };

//仿真时未写触发沿 改动了

if(sd==0) {

ReadTemperature();

wenduxianshi();

alarm();

normal();

};

}

}

课 程 设 计 报 告

课程名称 综合电子设计

题 目 基于单片机的温度测量与控制系统

指导教师

设计起止日期

系 别

专 业

学生姓名

班级/学号

成 绩

目录

一.摘 要 „„„„„„„„„„„„„„„„„„„„„„„„„2

二. 功能介绍 „„„„„„„„„„„„„„„„„„„„„„„3

1,基本要求„„„„„„„„„„„„„„„„„„„„„„„„3

2,硬件设计要求及思路„„„„„„„„„„„„„„„„„„„3

3,系统结构„„„„„„„„„„„„„„„„„„„„„„„„3

三,方案论证与比较„„„„„„„„„„„„„„„„„„„„3

1,使用DE2开发板设计 „„„„„„„„„„„„„„„„„„3

2,使用单片机设计思路 „„„„„„„„„„„„„„„„„„4

四,系统设计 „„„„„„„„„„„„„„„„„„„„„„„4

1,主控制部分AT89S51的设计方案 „„„„„„„„„„„„„„„„5

2,温度测量设计方案 „„„„„„„„„„„„„„„„„„„„„„10 五,单元电路设计„„„„„„„„„„„„„„„„„„„„„„„13

1,最小系统 „„„„„„„„„„„„„„„„„„„„„„„„„13

2, 温度采集„„„„„„„„„„„„„„„„„„„„„„„„„14

3, 显示电路„„„„„„„„„„„„„„„„„„„„„„„„„14

六,软件设计„„„„„„„„„„„„„„„„„„„„„„„„15

七,结束语„„„„„„„„„„„„„„„„„„„„„„„„„15

1,实验总结„„„„„„„„„„„„„„„„„„„„„„„„„15

2, 设计心得与体会„„„„„„„„„„„„„„„„„„„„„„„16

八,参考文献„„„„„„„„„„„„„„„„„„„„„„„„„17

九,附录„„„„„„„„„„„„„„„„„„„„„„„„„„„18

摘要

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

关键词:AT89S51单片机 DS18B20温度芯片 温度控制 串口通讯

二, 功能介绍

1,基本要求

(1)温度设定范围为20-30oC ,最小区分度为1oC 。

(2)环境温度超温时,接通制冷装置;低于等于设定温度时,断开制冷装置。用LED 表示制冷装置的接通/断开状态。

(3)用数码管显示环境的实际温度,温度显示范围0-99oC ,显示精度为小数点后1位。 2,硬件设计要求及思路

要求设计单片机(AT89S51)最小系统,并在此基础上完成对温度传感器DS18B20的读写操作,实现温度测量功能,温度实时显示功能,要求所设计系统具备报警温度设置功能。对超过设置温度值的状态进行报警和相应控制操作(本次使用LED 表示相应的控制操作)。

单片机的选择在整个系统设计中至关重要,要满足大内存、高速率、通用性、价格便宜等要求,本课题选择AT89S51作为主控芯片。

AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable) 的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

3,系统结构

三,方案论证与比较

设计这个温度测量有两种方法:分别是使用DE2开发板和单片机开发,以下是两种设计方法的原理介绍:

(1)使用DE2开发板设计:

使用DE2开发板提供的资源进行设计题目的实现。

1)FPGA 芯片:EP2C35F672C6N (Cyclone II)

2)5M 时钟

3)LED 、按键、开关

4)IO 扩展接口

5)7段数码管

(2)使用单片机设计思路:

要求设计单片机(AT89S51)最小系统,并在此基础上完成对温度传感器DS18B20的读写操作, 实现温度测量功能,温度实时显示功能,要求所设计系统具备报警温度设置功能。对超过设 置温度值的状态进行报警和相应控制操作(本次使用LED 表示相应的控制操作)。

两种方法比较的优缺点:

DE2是Altera 研究机构推出的FPGA 多媒体开发平台。通过对DE2平台的了解它完全可以按照工业产品的标准进行,使用QUARTUSII 的开发工具来进行设计,仿真。它的优点是可靠性高,性能稳定。但是缺点是平时我们接触较少,而且需要使用的程序相对于发杂。

而单片机与高精度温度传感器结合的方式我们接触较多,而且成本低,测量温度简单且容易实现。即用单片机完成人机界面,系统控制,信号分析处理,由前端温度传感器完成信号的采集与转换。这种方案克服了方案一的缺点,所以本课题任务是基于单片机和温度传感器实现对温度的控制。

四,系统设计

本课题设计的是一种以STC89C52单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。其主要包括:电源模块、温度采集模块、按键处理模块、实时时钟模块、数据存储模块、LCD 显示模块、通讯模块以及单片机最小系统。

本系统由温度传感器DS18B20、AT89S52、LCD 显示电路、软件构成。DS18B20输出表示摄氏温度的数字量,然后用51单片机进行数据处理、译码、显示、报警等。

单片机原理系统结构图:

图1,单片机系统结构图

(1)主控制部分AT89S51的设计方案:

AT89S51 是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable) 的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT )电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP 、TQFP 和PLCC 等三种封装形式,以适应不同产品的需求。

由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 A TMEL 公司的 A T89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 A T89S51芯片内含有4 kB 的 E2PROM , 无需外扩存储器 ,电路简单可靠 ,其时钟频率为 0~24 MHz , 并且价格低廉 。

其主要功能特性:

兼容MCS-51指令系统

4k可反复擦写(>1000次)ISP Flash ROM

32个双向I/O口

4.5-5.5V工作电压

2个16位可编程定时/计数器

时钟频率0-33MHz

全双工UART 串行中断口线

128x8 bit内部RAM

2个外部中断源

低功耗空闲和省电模式

中断唤醒省电模式

3级加密位

看门狗(WDT )电路

软件设置空闲和省电功能

灵活的ISP 字节和分页编程

双数据寄存器指针

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

AT89S51引角功能说明:

Vcc :电源电压

GND :地

P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,

每位能驱动8个TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。对端口写“1”, 通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。表1为P1口第二功能。

表1 P1口第二功能

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

P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I 。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表2。

表2 P3口的第二功能

RST :复位输入。当振荡工作时,RST 引脚出现两个机器周期上高电平将使单片机复位。WDT 益出将使该引脚输出高电平,设置SFR AUXR 的 DISRTO 位(地址8EH )可打开或关闭该功能。DISRTO 位缺省为RESET 输出高电平打开状态。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE (地址锁存允许)输出脉冲用于锁存地址的低8位字节。ALE 仍以时钟振荡频率的1/6输出的正脉冲信号,因ALE 脉冲。如有必要,可通过对特殊功能寄存器(SFR )区中的8EH 单元的D0位置位,可禁止ALE 操作。该位禁位后,只有一条MOVX 和MOVC 指令ALE 才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE 无效。

PSEN :程序储存允许(PSEN )输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的PSEN 信号。

EA/VPP:外部访问允许。欲使CPU 公访问外部程序存储器(地址0000H -FFFFH ),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA 端状态。如EA 端为高电平(接Vcc 端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时, 该引脚加上+12V 的编程电压Vpp 。

XTAL1:振荡器反相放大器及内部时钟发生器的输入端。

XTAL2:振荡器反相放大器的输出端。

AT89S51单片机内部构造及功能:

特殊功能寄存器:特殊功能寄存器的片内空间分存如下图3-2所示。这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。

中断寄存器:各中断允许控制位于IE 寄存器,5个中断源的中断优先级控制位于IP 寄存器。图2为AUXR 辅助寄存器。

图2 AUXR辅助寄存器

双时钟指针寄存器:为方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存储器:PD0位于SFR 区块中的地址82H 、83H 和DP1位于地址84H 、85H ,当SFR 中的位DPS=0时选择DP0, 而DPS=1时选择DP1。在使用前初始化DPS 。

图3 双时钟指针寄存器

电源空闲标志:电源空闲标志(POF )在特殊功能寄存储器SFR 中PCON 的第4位(PCON.4), 电源打开时POF 置“1”, 它可由软件设置睡眠状态并不为复位所影响。

存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB

外部程序和数据的寻址空间。

程序存储器:如果EA 引脚接地(GND ),全部程序均执行外部存储器。在AT89S51, 假如接至Vcc (电源+),程序首先执行从地址0000H -0FFFH (4KB )内部程序存储器,再执行地址为1000H -FFFFH (60KB )的外部程序存储器。

数据存储器:在AT89S51的具有128字节的内部RAM ,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。

看门狗定时器(WDT ):WDT 是为了解决CPU 程序运行时可能进入混乱或死循环而设置,它由一个14bit 计数器和看狗复位SFR (WDTRST )构成。外部复位时,WDT 默认为关闭状态,要打开WDT ,必按顺序将01H 和0E1H 写到WDTRST 寄存器,当启动了WDT ,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT 溢出复位外没有其它方法关闭WDT ,当WDT 溢出,将使RST 引脚输出高电平的复位脉冲。引脚图详见图4。

图4 AT89S51管脚图

(2)温度测量设计方案:

DS18B20是DALLAS 公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125℃,可编程为9~12位A/D转换精度,

测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU 只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。

综上,在本系统中我采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。在0—100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。

图5 温度芯片DS18B20

DS18B20内部结构主要由四部分组成:64位光刻ROM, 温度传感器, 非挥发的温度报警触发器TH 和TL, 高速暂存器。DS18B20的管脚排列如图6所示。

图6 DS18B20引脚分布图

在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc 接外部电源,GND 接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD 、GND 接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K Ω左右的上拉电阻。

CPU 对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM 操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM 指令,最后发送RAM 指令,这样才能对DS18B20进行预定的操作。

以下图7是做好的仿真图并运行结果:

图7 仿真运行图

上图是仿真的运行图,其工作原理是,通过DS18B20对温度进行采集,当采集的温度大于最高上限值或低于下限值时,蜂鸣器将会发声;通过按键对设置的限值进行加减,单刀双掷开关控制显示电路显示限值还是当前温度。

图8 实物完成图

五, 单元电路设计

1, 最小系统模块

单片机最小系统是指用最少的元件组成单片机系统,是单片机产品开发的核心电路。最小系统是控制温度的采集、处理与显示、温度值的设定与温度越限时控制电路的启动。

图9 最小系统

AT89S51内部有一个高增益反相放大器, 用于构成振荡器, 但要形成时钟脉冲, 外部还需附加电路, 本设计采用内部时钟方式, 利用芯片内部的振荡器, 然后在引脚XTAL1和XTAL2两端跨接晶体振荡器, 就构成了稳定的自激振荡器, 发出的脉冲直接送入内部时钟电路,C1和C2的值通常选择为22pF 左右, 晶振Y1选择12MHz. 为了减小寄生电容, 更好地保证振荡器稳定、可靠地工作,振荡器电容应尽可能安装得与单片机引脚XTAL1和XTAL2靠近。

单片机的31脚(EA )接+5V电源,表示允许使用片内ROM 。

2, 温度采集模块

图10 温度采集模块

DS18B20是数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理., 在本系统中我采用温度芯片DS18B20测量温度.

3, 显示电路模块

图11 显示电路图

显示电路图是采用数码管作为显示模块,其接口原理图如图9.

六, 软件设计

以下是温度测量与控制系统的主程序流程图

.

图12 主程序流程图

七, 结束语

实验总结:

本次课程设计完成了基于单片机AT89S51的温度控制系统的设计方案与软硬件实现。系统包括数据采集模块,单片机控制模块,显示模块和温度设置模块四个部分。文中对每个部分功能、实现过程作了详细介绍。完成了课题既定的任务,达到了预期的目标。系统具有如下特点:

⑴. 采用智能温度传感器DS18B20采集温度数据,简化了硬件电路设计,温度采集数据更加精准;

⑵.AT89S51单片机的采用,有利于功能扩展;

⑶. 电路设计充分考虑了系统可靠性和安全性。

本次课设软件和硬件相结合,有相当大的难度,同时也有很大的实用性。在做课程设计的过程中,我的理论和实践水平都有了较大的提高。并且我熟练掌握了单片机硬件设计和接口技术,同时对温度传感器的原理及应用有了一定的了解,掌握了各种控制电路及其相关元器件的使用。

实验心得与体会:

通过此次对温度测量与控制系统的设计,我们学会了怎样把所学的书本知识应用于实践中去,并学会了如何去思考整个控制系统的软硬件设计。实践过程中我们遇到了一些困难,但在解决问题的过程中,我们学会了团队合作精神和怎样发现问题、分析问题,进而解决问题。此次课程设计不仅增强了我们学习专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。

八, 参考文献

1曹巧媛主编. 单片机原理及应用(第二版). 北京:电子工业出版社,2002

2全国大学生电子设计竞赛组委会编. 第五届全国大学生电子设计竞赛获奖作品选编(2001),

北京:北京理工大学出版社,2003

3何力民编. 单片机高级教程. 北京:北京航空大学出版社,2000

4金发庆等编. 传感器技术与应用. 北京机械工业出版社,2002

5王锦标,方崇智.过程计算机控制.北京:清华大学出版社,1997;36~40

6邵惠鹤.工业过程高级控制.上海:上海交通大学出版社,1997;58—62,78—101 7胡寿松.自动控制原理.北京:国防工业出版社,2000;103—124

8刘伯春.智能PID 调节器的设计及应用.电子自动化,1995;(3):20~25

九, 附录

#include"reg52.h"

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P1^4; //温度数据口

sbit wx1=P2^4; //位选1

sbit wx2=P2^5; //位选2

sbit wx3=P2^6; //位选3

sbit wx4=P2^7; //位选4

sbit sd=P1^2; //范围与显示开关 =1 范围

sbit sj=P1^3; //上下界切换 =1 上限

sbit ss=P2^2; // 加1

sbit xj=P2^3; // 减1

sbit bjs=P1^0; // 上限报警

sbit bjx=P1^1; //

unsigned int temp, temp1,temp2, xs;

unsigned int sx=30;

unsigned int xx=20;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, //

0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6};

/******延时程序*******/

void delay1(unsigned int m)

{

unsigned int i,j;

for(i=m;i>0;i--)

for(j=110;j>0;j--);

共阳数码管

}

void delay(unsigned int m) //温度延时程序

{

while(m--);

}

void Init_DS18B20()

{

unsigned char x=0;

DQ = 1; //DQ复位 ds18b20通信端口

delay(8); //稍做延时

DQ = 0; //单片机将DQ 拉低

delay(80); //精确延时 大于 480us

DQ = 1; //拉高总线

delay(4);

x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败

delay(20);

}

/***********ds18b20读一个字节**************/

uchar ReadOneChar()

{

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(4);

}

return(dat);

}

/*************ds18b20写一个字节****************/

void WriteOneChar(unsigned char dat)

{

unsigned char i=0;

for (i=8; i>0; i--)

{

DQ = 0; //从高电平拉至低电平时, 写周期的开始

DQ = dat&0x01; //数据的最低位先写入

delay(5); //60us到120us 延时

DQ = 1;

dat>>=1; //从最低位到最高位传入

}

}

/**************读取ds18b20当前温度************/

void ReadTemperature()

{

unsigned char a=0;

unsigned b=0;

unsigned t=0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作/

WriteOneChar(0x44); // 启动温度转换

delay(5); // this message is wery important

Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度/ delay(5);

a=ReadOneChar(); //读取温度值低位 /

b=ReadOneChar(); //读取温度值高位 /

temp1=b

temp1+=(a&0xf0)>>4; //低8位中的高4位值加上高8位中后三位数的值 temp1室温整数值

temp2=a&0x0f; //小数的值

temp=((b*256+a)>>4); //当前采集温度值除16得 实际温度值 zhenshu xs=temp2*0.0625*10; //小数位, 若为0.5则算为5来显示 xs小数 xiaoshu }

void wenduxianshi()

{

wx1=1;

P0=table[temp/10]; //显示十位

delay1(1);

wx1=0;

wx2=1;

P0=table[temp%10]+0x80; //显示个位 加上0x80就显示小数点了。 delay1(1);

wx2=0;

wx3=1;

P0=table[xs%10]; //显示小位

delay1(1);

wx3=0;

wx4=1;

P0=table[12]; //显示 C 字符

delay1(1);

wx4=0;

}

void sxxianshi()

{

wx1=1;

P0=table[sx/10]; //显示十位

delay1(1);

wx1=0;

wx2=1;

P0=table[sx%10]+0x80; //显示个位

delay1(1);

wx2=0;

wx3=1;

加上0x80就显示小数点了。

P0=table[12]; //显示小位

delay1(1);

wx3=0;

wx4=1;

P0=table[5]; //显示 C 字符 delay1(1);

wx4=0;

}

void xxxianshi()

{

wx1=1;

P0=table[xx/10]; //显示十位 delay1(1);

wx1=0;

wx2=1;

P0=table[xx%10]+0x80; //显示个位 delay1(1);

wx2=0;

wx3=1;

P0=table[12]; //显示小位

delay1(1);

wx3=0;

wx4=1;

P0=table[12]; //显示 C 字符 delay1(1);

wx4=0;

加上0x80就显示小数点了。

}

void dsx()

{

if(ss==0){sx=sx+1;}

if(xj==0) {sx=sx-1;}

}

void dxx()

{

if(ss==0){ delay1(5);if(ss==1)xx=xx+1;}; if(xj==0){ delay1(5);if(xj==1)xx=xx-1; };

}

void alarm()

{if(temp>sx)bjs=0;

if(temp

}

void normal()

{if(xx

if(sx>temp)bjs=1;

}

void main()

{

while(1)

{ if(sd==1){ if(sj==1){sxxianshi();dsx();}; if(sj==0) {xxxianshi();dxx();}; };

//仿真时未写触发沿 改动了

if(sd==0) {

ReadTemperature();

wenduxianshi();

alarm();

normal();

};

}

}


相关内容

  • 单片机毕业设计题目
  • 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC1211的温度智能温度传感器 9. 机器视觉系统 ...

  • 自动化毕业设计论文题目
  • 自 动 化 毕 业 设 计 论 文 题 目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC12 ...

  • 通信工程毕业设计题目精选
  • 不管怎样,生活还是要继续向前走去.有的时候伤害和失败不见得是一件坏事,它会让你变得更好,孤单和失落亦是如此.每件事到最后一定会变成一件好事,只要你能够走到最后. 通信工程毕业设计题目精选 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激 ...

  • 电气自动化设计论文题目大全
  • 机电一体化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数 ...

  • 电气自动化毕业设计论文题目
  • 电 气 自 动 化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机 ...

  • PLC毕业设计论文题目
  • P L C 第1-100个PLC毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MS ...

  • 毕业设计论文 基于单片机的温度测量系统
  • 毕 业 论 文 基于单片机的温度测量系统 所在系部: 电气信息工程系 摘 要 随着社会经济的不断发展,现代农业生产离不开环境控制,本文在对国内外温室智能控制进行深入分析的基础上,针对温室智能化控制存在的诸多因子,将智能传感器监测和单片机控制相结合,提出了基于单片机的温度检测系统设计方案. 本系统采用 ...

  • AT89C51单片机水温控制系统
  • 张鹏:基于AT89C51单片机的水温控制系统设计 正文第 1 页 共 25 页 1 引 言 1.1 单片机 1.1.1 单片机简介 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU 随机存储器RAM .只读存储器ROM .多种I/O口和中断系统.定时器/计时 ...

  • 太阳能热水器论文
  • 摘 要 在能源日益紧张的今天,电热水器,饮水机和电饭煲之类的家用电器在保温时,由于其简单的温控系统,利用温敏电阻来实现温控,因而会造成很大的能源浪费. 但是利用AT89C52 单片机为核心,配合温度传感器,信号处理电路,显示电路, 输出控制电路,故障报警电路等组成的控制系统却能解决这个问题.单片机可 ...

  • 100个自动化概论课结课论文题目
  • 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC1211的温度智能温度传感器 9. 机器视觉系统 ...