第1章概述1.1 数字温度计简介随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
此次课程设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。
1.2 设计内容及要求本次单片机课程设计将以51系列单片机为核心,以开发板为平台;设计一个数字式温度计,要求使用温度传感器(可以采用DS18B20或采用AD590)测量温度,再经单片机处理后,由LED数码管显示测量的温度值。
测温范围为0~100℃,精度误差在0.5℃以内。
第2章系统总体方案设计2.1数字温度计设计的方案在做数字温度计的单片机电路中,对信号的采集电路大多都是使用传感器,这是非常容易实现的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
采集之后,通过使用51系列的单片机,可以对数据进行相应的处理,再由LED显示电路对其数据进行显示。
2.2系统设计框图温度计电路设计总体设计方框图如图 2.1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用6位LED数码管以串口传送数据实现温度显示。
此外,还添加了报警系统,对温度实施监控。
图2.1 数字温度计框图第3章硬件设计3.1主控器8051 芯片对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。
AT89C51 以低价位单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。
单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS—51的CMOS产品。
其主要特征有如下几个:●与MCS-51 兼容● 4K字节可编程FLASH存储器●寿命:1000写/擦循环●数据保留时间:10年●全静态工作:0Hz-24MHz●三级程序存储器锁定● 128×8位内部RAM● 32可编程I/O线●两个16位定时器/计数器● 5个中断源●可编程串行通道·●低功耗的闲置和掉电模式●片内振荡器和时钟电路AT8951的管脚如下图所示:图3.1 AT89C51芯片管脚图各管脚功能:VCC:供电电压。
GND:接地。
P0~P3:为输入/输出口线,其各有的功能,而P3口每一位还有特殊功能。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
3.1.1 时钟电路80C51时钟有两种方式产生,即内部方式和外部方式。
80C51中有一个构成内部震荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
本次采用内部震荡电路,瓷片电容采用22PF,晶振为12MHZ。
图3.1.1 震荡电路图3.1.2 复位电路单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用10KΩ的阻值,电容采用10μF的电容值。
图3.1.2 复位电路3.2 温度传感器DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。
DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
温度测量范围为-55~+125 摄氏度,可编程为9位~12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。
被测温度用符号扩展的16位数字量方式串行输出;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
表3.1 DS18B20分辩率的定义规定由表3.1可见,DS18B20温度转换的时间比较长,而且设定的分辩率越高,所需要的温度数据转换时间就越长。
因此,在实际应用中要将分辩率和转换时间权衡考虑。
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列、各种封装形式,DQ 为数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD 引脚。
当工作于寄生电源时,此引脚必须接地,如下图所示。
图3.2 DS18B20管脚图DS18B20的初始化:(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
DS18B20的写操作:(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
3.3 显示电路对于数字温度的显示,我们采用6位LED数码管。
足够显示0~100中各位数,并且还能显示一位小数部分。
图3.3 6位LED数码显示管3.4 温度报警电路对于数字温度计的设计,除了温度的数字显示功能外还加入了报警系统,如果我们所设计的系统用来监控某一设备,当设备的温度超过我们所设定的温度值时,系统会产生报警。
我们便能很好的对设备进行处理,就不会应温度的变化而造成不必要的损失。
当温度高于100度时,报警时由单片机产生一定频率的脉冲,由P3.7引脚输出,P3.7外接一只NPN的三极管来驱动杨声器发出声音,以便操作员来维护,从而达到报警的目的。
其电路图如下所示。
图3.4(a)扬声器报警系统电路图当温度低于0度时,亮红灯报警,以便操作员来维护,从而达到报警的目的。
其电路图如下所示。
图3.4(b) 红灯报警系统电路图第4章软件设计及调试4.1 概述本次课程设计采用的是proteus软件仿真,用Keil软件进行编译。
Protues 软件是英国Labcenter electronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具,也是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。
由单片机AT89C51为核心而设计的数字温度计,对其进行软件程序的仿真时,我们采用单片机汇编语言来编写。
系统程序主要包括主程序、读出温度子程序、显示数据子程序、报警子程序等等。
然而整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
每一个执行软件是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
各执行模块规划好后,就可以规划监控程序了。
首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。
4.2 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度。
图4.1 主程序流程4.3读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,检验有错时不进行温度数据的改写。
其程序流程图如图4.2所示。
图4.2 读出温度子程序流程图4.4 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
4.5计算温度子程序计算温度子程序将RAM值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4.3所示。
图4.3 计算温度子程序流程图第5章系统联调及操作说明对于此次的数字温度计设计,我们采用汇编语言来实现51单片机的运行,首先,根据设计所需,可以用伟福软件来编写汇编程序。
编写完毕检查无误后,接下来便是原理图的绘制。
首先运行Proteus ISIS软件,新建一个模板后,就可以开始绘制原理图工作。
原理图的绘制过程如下:1.将所需元器件加入到对象选择器窗口。
单击选择菜单栏“库”选项下的“拾取元件/符号选项”,然后在弹出的“Pick device”对话框的“关键字”栏输入要找的器件英文名称,如“AT89C51”,系统就会自动将搜索结果显示在“结果”栏中,如图1所示,单击选择“AT89C51”,再点“确定”即可。