1、 I 信息工程学院 课程设计报告书 题目 : 基于 AT89S52 的温度测量系统设计 专 业 : 班 级: 学 号: 学生姓名: 指导教师: 2010 年 9 月 30 日 II 摘要 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术。本设计以 AT89S52 单片机为核心的温度测量系统的工作原理和设计方法。该温度测量系统 ,可以设置上下报警温度,当温度不在设置范围内时,可以报警。为方便记录时间,还添加了时间显示单元。温度信号由温度芯片 DS18B20 采集,并以数字信号的方式传送给单片机。时钟模块采用 DS1302 时钟芯片实现。文中介绍
2、了该测量系统的硬件部分,包括:温度检测电路、温度显示电 路、温度报警电路、实时时钟电路和一些接口电路 。单片机通过对信号进行相应处理,从而实现温度测量的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:液晶显示程序、键盘扫描及按键处理程序、温度信号处理程序、时间显示程序、超温报警程序。 关键词: AT89S52 单片机 DS18B20 温度芯片 温度测量 DS1302 时钟芯片 III 目 录 摘要 . II 1 引言 . 1 2系统基本方案选择和论证 . 2 2.1 单片机芯片的选择方案和论证 . 2 2.2 显示模块的选择方案和论证 . 2 2.3 时钟芯片的选择方案和
3、论证 . 2 2.4 温度传感器的选择方案和论证 . 2 2.5 系统设计最终方案决定 . 3 3系统的总体设计框图 . 4 3.1 主控制器 . 4 3.2 显示电路 . 6 3.3 温度传感器 . 7 3.4 时钟电路 . 9 3.5 按键电路 . 10 3.6 超温报警 . 11 4 系统整体硬件电路 . 12 5系统软件算法分析 . 13 5.1 主程序 . 13 5.2 读出温度子程序 . 14 5.3 温度转换命令子程序 . 14 5.4 计算温度子程序 . 15 5.5 显示数据刷新子程序 . 15 6 仿真结果 . 16 7总结与体会 . 17 参考文献 . 18 附录 A部分
4、程序清单 . 19 1 1 引言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度测量就是一个典型的例 子。温度测量系统广泛应用于社会生活的各个领域 ,如家电、汽车、材料、电力电子等。但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计采用数字温度传感器 DS18B20,因其内部集成了 A/D 转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20 只用一个引脚即可与单片机进
5、行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于 DS18B20 芯片的小型化 ,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器 DS18B20 做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器 DS18B20 进行范围的温度检测。本设计所介绍的数字温度测量与传统的温度测量相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机 AT89S52,测温传感器使用 DS18B20,用液晶以并行方式传送数据,实现温度显示,能准确达到以上要求。为记录方便还增加了显示时间功能
6、。 2 2 系统基本方案选择和论证 2.1 单片机芯片的选择方案和论证 方案一 采用 MSP430F449 芯片作为硬件核心,采用 Flash ROM,内部具有 4KB ROM 存储空间,能于 1.8V-3.6V 的超低压工作, 适合手持设备。但是编程环境复杂,编程风格与 MS-51 相差很大 。 用 MSP430 编程较之 MS-51 繁琐,故不采用 MSP430F449。 方案二 采用 AT89S52,片内 ROM 全都采用 Flash ROM;能 在 4V-5.5V 电 压工作;同时也与 MCS-51系列单片机完全 兼容。 该芯片内部存储器为 8KB ROM 存储空间,同样具有 89C5
7、1 的功能 。由于其与 MS-51 完全兼容,故编程简单。 AT89S52 的性能完全满足本设计对单片机的要求。 所以选择采用 AT89S52 作为主控制系统。 2.2 显示模块 的 选择方案和论证 方案一 采用 LED 数码管动态扫描, LED 数码管价格适中,对于显示数字最合适,但是显示字母不合适。而且采用动态扫描法与单片机连接时,占用的单片机时间多。所以不采用此种作为显示。 方案二 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得 太浪费,且价格也相对较高,所以也不用此种作为显示。 方案三 采用 LCD 液晶显示屏,液晶显示屏的显
8、示功能强大,可显示大量字母,图形,显示多样,清晰可见,但是价格一般,需要的接口线较少,所以在此设计中采用 LCD 液晶显示屏作为显示。 2.3 时钟芯片的选择方案和论证 方案一 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。 方案二 采用 DS1302 时钟芯片实现时钟, DS1302 芯片是一种高性能的时 钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高 ,位的 RAM 做为数据暂存区,工作电压 2.5V 5.5V 范围内, 2.5V 时耗电
9、小于 300nA。 2.4 温度传感器的选择 方案 和 论证 方案一 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到 A/D 转换电路,感温电路比较3 麻烦。 方案二 进而考虑到用温度传感器,在单片机电路设计中, 大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求 。 从以上两种方案,很容易看出,采用方案二,电路比较简单,软件
10、设计也比较简单,故采用了方案二。 2.5 系统 设计最终方案决定 综上各方案所述,对此次作品的方案选定 : 采用 AT89S52 作为主控制系统; DS1302提供时钟; DS18B20 作为温度传感器; LCD 显示屏作为显示。 4 3 系统 的总体设计框图 温度测量系统总体设计方框图如图 3-1 所示, 温度传感器 DS18B20 采集温度,单片机 AT89S52 获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过 液晶显示当前的温度值 。当采集的温度经处理后超过设定温度的上限时 或者下限时 ,单片机通过三极管驱动 扬声器鸣笛报警并且 LED
11、灯闪烁 。 可通过按键切换时间和温度上下限的显示,也可通过按键修改温度上下限值和时间。 扬 声 器 温 度报 警L C D 显 示 温度 和 时 间D S 1 8 B 2 0 温度 传 感 器D S 1 3 0 2 时 钟芯 片按 键 控 制单 片 机 复 位主控制器AT89S52图 3-1 温度测量系统总体设计框图 3.1 主控制器 AT89S52 是一个低功耗,高性能 CMOS 8 位单片机,片内含 8k Bytes ISP(In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存储器,器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容
12、标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集成了通用 8 位中央处理器和 ISP Flash 存储单元,功能强大的微型计算机的 AT89S52 可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S52 具有如下特点: 40 个引脚, 4k Bytes Flash 片内程序存储器, 128 bytes 的随机存取数据存储器( RAM), 32 个外部双向输入 /输出( I/O)口, 5 个中断优先级 2 层中断嵌套中断, 2 个 16 位可编程定时计数器 ,2 个全双工串行通信口,看门狗( WDT)电路,片内时钟振荡器。 此外, AT89S52 设计和配置了振荡频率可
13、为 0Hz 并可通过软件设置省电模式。空闲模式下, CPU 暂停工作,而 RAM 定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存 RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有 PDIP、 TQFP 和 PLCC 等三种封装形式,以适应不同产品的需求。 由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 A TMEL 公司的 A T89S51 单片机作为主控芯片。主控模块采用单片机最小系统是由于 A T89S51 芯片内含有 4 kB的 E2PROM ,无需外扩存储器 ,电路简单可靠 ,其时钟频率为 0 2
14、4 MHz ,并且价格低廉 ,批量价在 10 元以内。 其 主要功能特性: 5 兼容 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 字节和分页编程 双数据寄存器指针 可以看出 AT89S52 提供以下标准功能: 4K 字节 Flash 闪
15、速存储器, 128 字节内部 RAM,32 个 I/O 口线,看门狗( WDT),两个数据指针,两个 16 位定时器 /计数器,一个 5 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟。同时 , AT89S52 可降至 0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许RAM,定时 /计数器,串行通信口及中断系统继续工作。掉电方式何在 RAM 中的内容,但振荡器 停止工作并禁止其它所有部件工作直接到一个硬件复位 。 AT89S52 单片机内部构造及功能: 特殊功能寄存器:特殊功能寄存器的片内空间分存如下图 3-2所示。这些地址并没有全部占用
16、,没有占用的地址不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。 电源空闲标志:电源空闲标志( POF)在特殊功能寄存储器 SFR中 PCON的第 4位( PCON.4) ,电源打开时 POF置 “ 1” ,它可由软件设置睡眠状态并不为复位所影响。 存储器结构: MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构 ,均具有64KB外部程序和数据的寻址空间。 程序存储器:如果 EA引脚接地( GND),全部程序均执行外部存储器。在 AT89S52,假如接至 Vcc(电源),程序首先执行从地址 0000H 0FFFH( 4KB)内部程序存储器,再执行地址
17、为 1000H FFFFH( 60KB)的外部程序存储器。 数据存储器:在 AT89S52的具有 128字节的内部 RAM,这 128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行, 128字节均可设置为堆栈区空间。 看门狗定时器( WDT): WDT 是为了解决 CPU 程序运行时可能 进入混乱或死循环而设置,它由一个 14bit 计数器和看狗复位 SFR( WDTRST)构成。外部复位时, WDT 默认为关闭状态,要打开 WDT,必按顺序将 01H和 0E1H写到 WDTRST 寄存器,当启动了 WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或 WDT 溢出复位外
18、没有其它方法关闭WDT,当 WDT 溢出,将使 RST 引脚输出高电平的复位脉冲。 6 3.2 显示电路 1602 液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各类仪表和低功耗系统中得到广泛的应用。 1602 液晶为 16 字 X2 行的字符型液晶。该 液晶与数码管相比有如下优点: 1.位数多,可显示 32 位, 32 个数码管体积相当庞大了。 2.显示内容丰富,可显示所有数字和大、小写字母。 3.程序简单,如果用数码管动态显示,会占用很多时间来刷新显示,而 1602 自动完成此功能。 1602 液晶模块内部的字符发生存储器( CGROM)已经存储了不同的点阵字符图形,这
19、些字符有,阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,其中数字与字母同 ASCII 码兼容。其内部还有自定义字符( CGRAM),可用于存储自已定义的字符。 1602 模块 的设定,读写,与光标控制都是通过指令来完成,共有 11 条指令,如 表 3.2-1 下: 表 3.2-1 1602 液晶指令 指令 RS RW D7 D6 D5 D4 D3 D2 D1 D0 1 清屏 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示控制 0 0 0 0
20、0 0 1 D C B 5 光标 /字符移位 0 0 0 0 0 1 S/C R/L * * 6 功能 0 0 0 0 1 DL N F * * 7 置字符发生器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志和地址 0 1 BF 计数器地址 10 写数据到指令 7.8 所设地址 1 0 要写的数据 11 从指令 7.8 所设的地址读数据 1 1 读出的数据 1602 液晶显示模块可以和单片机 AT89S52 直接接口,电路如图 3.2-1 所示。 图 3.2-1 1602 液晶与单片机接法 7 液晶显示模块是一个慢显示器件,所以在执
21、行每条指令之前一定要确认模块的忙标志为低电平,表 示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符, 表 3.2-2 是 1602 的内部显示地址。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 00 01 02 03 04 05 06 07 08 09 1A 1B 1C 1D 1E 1F 第一行 40 41 42 43 44 45 46 47 48 49 5A 5B 5C 5D 5E 5F 第二行 比如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个 字符的位置呢?这样不行,因为写
22、入显示地址时要求最高位 D7 恒定为高电平 1所以实际写入的数据应该是 01000000B( 40H)+10000000B(80H)=11000000B(C0H) 3.3 温度传感器 DS18B20温度传感器是美国 DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。 DS18B20 的性能特点如下: 独特的单线接口仅需要一个端口引脚进行通信; 多个 DS18B20 可以并 联在惟一的三线上,实现多点组网功能; 无须外部器件; 可通过数据线供电,电压范围为 3.05.5; 零待机
23、功耗; 温度以或位数字; 用户可定义报警设置; 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20 采用脚 PR 35 封装或脚 SOIC 封装,其内部结构框图如图 3.3-1 所示。 图 3.3-1 DS18B20 内部结构 64 位 ROM 的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有 48位,最后位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。 DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的 EERAM。高速暂存 RAM 的结构为字节的存储器,结构如图 3 所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第I/O C 64 位 ROM 和 单 线 接 口 高速缓存 存储器与控制逻辑 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 发生器 Vdd