数字温度计设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字温度计实验报告
一,实验目的
1. 学习80C52单片机的内部的定时器及各接口的功能及应用。
2. 设计任务及要求利用实验平台上LED数码管和蜂鸣器设计具有最低、最高温度查询,实时显示和报警功能的数字温度器。
二,实验要求
基本要求:
1:能够实时显示环境温度。
2:能够保存使用时间内的最大值和最小值,能够查阅。
3:有温度报警功能,能够设置报警温度。用绿灯表示正常温度,红灯表示报警同时发声。扩展功能:
查询最低和最高温度时,指示灯蓝灯和黄灯分别表示当前先显示的是高温还是低温。三,实验基本原理
利用单片机定时器完成报警检测功能。每隔一段时间定时器0对当前温度值进行检测,当超过设定温度30度时红灯亮并发生报警。
为了将时间在LED数码管上显示当前温度,采用动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。
该设计采用四按键输入,当按键1(2)按下,可分别查看当前最低(最高)温度。
四,实验设计分析
针对要实现的功能,采用AT89S52单片机和ds18b20温度传感器进行设计,AT89S52 单片机是一款低功耗,高性能CMOS8位单片机,它有以下特点:
1、拥有灵巧的8位CPU和在系统可编程Flash
2、晶片内部具时钟振荡器(传统最高工作频率可至12MHz)
3、内部程序存储器(ROM)为8KB
4、内部数据存储器(RAM)为256字节
5、32 个可编程I/O 口线
6、8 个中断向量源
7、三个16 位定时器/计数器
8、三级加密程序存储器
9、全双工UART串行通道
Ds18b20管脚图为:
ds18b20管脚图
DS18B20的引脚功能:
DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生
电源接线方式时接地。
它具有如下特点:
(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:+3.0~ +5.5 V。
(4)测温范围:-55 ~+125 ℃。固有测温分辨率为0.5 ℃。
(5)通过编程可实现9~12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为温度获取程序,中断程序,显示程序,延时程序等。运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。
首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要蜂鸣器,led灯和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。
最后进行功能扩展,在已经正确的设计基础上,添加额外的功能!
五,实验要求实现
A.电路设计
1. 整体设计
此次设计主要是应用单片机来设计数字温度计,硬件部分主要分以下电路模块:输出电路用8个共阴数码管、四个led灯和蜂鸣器显示,键盘进行温度设置报警温度。电路的总体设计框架如下:
2. 分块设计
模块电路主要分为:输入部分、输出部分、及温度读取电路。
2.1 输入部分
输入部分
外电路输入部分主要用于查询当前最低和最高温度。KEY1\KEY2分别控制最低和最高温度的显示。
2.2 输出部分
输出部分
本电路的输出信号为7段数码管的位选和段选信号,蜂鸣器信号,提示灯信号。
本实验的数码管是共阴的,为了防止段选信号不能驱动数码管,故在P1口连接上拉电阻后,再送段选信号,以提高驱动,位选信号直接从P2口接入。
程序将获得的温度实时地显示在数码管上;当温度超过设定的数值时,红灯亮,蜂鸣器响。当查询最低温度时,蓝灯亮,最高温度时绿灯亮。
晶振与复位电路
本实验单片机时钟用内部时钟,模块如下:
温度检测模块:
DQ接P1.0,用于单总线传送。温度读取模块主程序如下:sendChangeCmd();
tempValue1 = getTmpValue();
temp = abs(tempValue1);
tempL=(tempL > temp ? temp :tempL );
tempH=(tempH < temp ? temp :tempH );
if(KEY1==0){temp= tempL;
test1=0; EA=0;
while(j--)display();
EA=1;
}
if(KEY2==0){
temp= tempH;
test2=0; EA=0;
while(j--)display();