收藏 分销(赏)

基于AT89C51单片机的数字温度计设计.pdf

上传人:a199****6536 文档编号:3247593 上传时间:2024-06-26 格式:PDF 页数:34 大小:1.25MB
下载 相关 举报
基于AT89C51单片机的数字温度计设计.pdf_第1页
第1页 / 共34页
基于AT89C51单片机的数字温度计设计.pdf_第2页
第2页 / 共34页
基于AT89C51单片机的数字温度计设计.pdf_第3页
第3页 / 共34页
基于AT89C51单片机的数字温度计设计.pdf_第4页
第4页 / 共34页
基于AT89C51单片机的数字温度计设计.pdf_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、 编号:本科毕业论文 基于 AT89C51 单片机的数字温度计 I 摘 要 温度是生产过程和科学实验中非常关键的一项物理量,在日常生活、农业、工业、各种高新技术的开发和研究中也是一个非常普遍和常用的参数,许多地方都要使用温度计对温度进行测量。随着人们生活水平的不断提高,对于温度计的要求也越来越高,使之能为人们的工作、科研、生活提供更好、更方便的服务。传统的测温元件有热电偶和热电阻,而热电偶和热电阻测出的一般都是电压,再转换成对应的温度值,这些方法相对比较复杂,需要比较多的外部硬件支持。现在温度计向着数字化、智能化方向发展。本文采用美国 DALLAS 半导体公司继 DS1820 之后推出的一种改

2、进型智能温度传感器 DS18B20 作为检测元件,可以设计一种相对比较简单的方式来测量温度。DS18B20可以直接读出被测温度值,具有低成本和易使用的特点。在数字温度计电路中设计了一种基于单片机 AT89C51 芯片的一种温度测量及报警电路。硬件电路采用数字温度传感器 DS18B20来测量温度,将温度值转换成相应的数字量传给单片机,经单片机AT89C51芯片处理后使用1602LCD液晶模块显示出具体的温度值。在系统软件方面主要通过用 C 语言编程实现对各个电路的控制。数字温度计主要是对温度进行采集、显示,所以系统软件程序主要包括主程序、读出温度子程序、计算温度子程序、显示温度子程序等几大块。单

3、片机通过软件可以控制各个硬件电路间数据的处理。电路中可以设置温度报警上下限,超过上限或低于下限时可以自动报警。关键词:1602LCD 液晶模块;DS18B20 数字温度传感器;AT89C51 II Abstract The temperature is very critical in the production process and scientific experiments a physical quantity,in daily life,agriculture,industry,and a variety of high-tech development and research

4、 is a very common and frequently used parameters,many places have to use the thermometer to temperaturemeasurements.With the continuous improvement of peoples living standard,the requirements of the thermometer is also getting higher and higher,so for the peoples work,scientific research,life to pro

5、vide better and more convenient services.Traditional components of the temperature thermocouple and thermal resistance,thermocouple and thermal resistance are generally measured voltage,converted to the corresponding temperature value,these methods are relatively complex,requiring more external hard

6、ware support.Thermometer toward digital,intelligent direction.In this paper,an improved smart temperature sensor DS18B20 DALLAS Semiconductor,following the DS1820 after the launch of the detection devices,and can design a relatively simple way to measure the temperature.DS18B20 can be directly read

7、out the measured temperature value,low-cost and easy to use features.Digital thermometer circuit design based on a temperature measurement and alarm circuit of AT89C51 chip.The hardware circuit using a digital temperature sensor DS18B20 to measure the temperature,the temperature value is converted i

8、nto the corresponding digital pass microcontroller AT89C51 chip processing 1602LCD module displays a specific temperature.System software by using the C programming language to achieve control of each circuit.Digital thermometer for temperature acquisition,display,system software program includes th

9、e main program,read out the temperature subroutine to calculate temperature subroutine show that the temperature subroutine several large pieces.SCM software can control the processing of the data between the various hardware circuit.Temperature alarm circuit can be set to the lower limit exceeds th

10、e limit or below the lower limit can automatically alarm.Key words:1602LCD module;DS18B20 digital temperature sensor;AT89C51 III 目 录 1 绪论.1 1.1 数字温度计研究背景.1 1.2 数字温度计研究目的和意义.1 1.3 数字温度计研究主要工作.2 2 系统硬件电路设计.3 2.1 数字温度计总体设计方案.3 2.2 电源设计.3 2.3 主控制器 AT89C51.4 2.3.1 单片机 AT89C51 结构和性能.4 2.3.2 AT89C51 管脚说明.4

11、 2.3.3 单片机晶振电路和复位电路.6 2.4 DS18B20.6 2.4.1 DS18B20 引脚功能.7 2.4.2 DS18B20 性能特点.7 2.4.3 DS18B20 测温原理.7 2.4.4 DS18B20 温度传感器与单片机的接口电路.10 2.5 1602LCD 液晶模块显示.13 2.6 蜂鸣报警器.15 2.7 数字温度计电路原理图.15 3 系统软件设计.16 3.1 系统软件设计思路.16 3.2 读出温度子程序.16 3.3 计算温度子程序.17 3.4 显示温度子程序.18 3.5 数字温度计主程序.18 4 系统仿真.19 IV 4.1 Proteus 仿真

12、软件简介.19 4.2 仿真原理图.19 4.3 加载仿真程序.19 总 结.20 参考文献.21 致 谢.22 附录.23 绪论 1 1 绪论 1.1 数字温度计研究背景 温度是我们日常生活和生产中经常接触到的物理量,但是它是看不到的。最早的温度计是在 1593 年由意大利科学家伽利略(15641642)发明的。后来又相继出现华氏温度计、列式温度计、摄氏温度计,均用水银和酒精等制作,传统意义上的温度计测温精度不高,而且现在世界上大多数国家统一使用摄氏温度计。随着科学技术的发展和现代工业生产的需要,测温技术也在不断地改进和提高。由于测温范围变得越来越广,根据不同的测温精度要求,又制造出不同需要

13、的测温仪器:气体温度计、电阻温度计、温差电偶温度计、高温温度计等。在测温电路中可以使用热敏电阻之类的器件利用其感温效应,将随被测温度变化的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D 转换电路,电路设计比较复杂1。数字温度计恰恰是以读数方便、准确的特点进入我们的生活。随着温度感应元件灵敏度的增强,数字温度将会渐渐取代普通的温度计。数字温度计是通过一定的电路和温度传感器进行测量,将温度用数字准确的显示出来。数据显示比较直观而且测量精度比较高,测温范围也比较大。1.2 数字温度计研究目的和意义 温度测量在物理

14、实验、医疗卫生、食品生产等领域有特别重要的意义。传统所使用的温度计通常都是精度为1和 0.1的水银、煤油或酒精温度计。这些温度计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且他们的热容量还比较大,达到热平衡所需要的时间较长,因此很难读准温度值,并且使用非常不方便。数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温准确、其输出温度采用数字显示等优点,主要用于日常生活和科研实验中测温比较准确的场所。数字温度计采用温度传感器DS18B20 作为测温元件。DS18B20 是 DALLAS 公司生产的一线式数字温度传感器,温度测量范围为55125,测温分辨率可达 0.0625,被测温度用

15、扩展的 16 位数字量方式串行输出。多个 DS18B20 可以接在一根线上,CPU只需一根端口线就能与诸多 DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路2。绪论 2 数字温度计设计采用温度传感器 DS18B20 测量出环境的温度,通过核心器件单片机 AT89C51 处理数据,最后用 LCD 液晶模块显示数值,并且可以设定报警温度。如果测量温度在设定范围之外,发出报警信号。1.3 数字温度计研究主要工作 利用数字温度传感器 DS18B20 设计了一种基于单片机的数字温度测量系统,测量的结果使用 1602LCD 液晶模块直接显示出来。主要工作如下:1.温度测试基本范围5

16、5125。2.精度误差小于0.5。3.LCD 液晶显示。4.可以设定温度的上下限报警功能(上限 120,下限-50)。当温度超过上限温度时红灯亮起并且发出急促的报警声,当温度低于下限温度时黄灯亮起并且发出低沉的报警声。系统硬件电路设计 3 2 系统硬件电路设计 2.1 数字温度计总体设计方案 数字温度计的总体设计方案如图 2-1 所示,主控制器采用单片机 AT89C51,温度传感器采用 DS18B20,用 1602LCD 液晶模块实现温度显示。图 2-1 总体设计方框图 2.2 电源设计 如图 2-2 电源设计原理图所示将 220V 交流电压经过调压、整流、滤波以后变成5V 直流电压。AC2

17、为外接 220V 电源接口,经过 TRAN1 变压成为 9V 电源。9V 的直流电源经过 7805 稳压电路调节和滤波电路后输出稳定的+5v 直流电源3。图 2-2 电源设计原理图 主 控 制 器 AT89C51 单片机复位 时钟振荡 蜂鸣报警器 液晶模块显示 温度传感器 DS18B20 系统硬件电路设计 4 2.3 主控制器 AT89C51 2.3.1 单片机 AT89C51 结构和性能 AT89C51 是美国 ATMEL 公司生产的低功耗,高性能 8 位微处理器,片内含 4k 字节的可反复擦写 1000 次的 Flash 只读程序存储器。器件采用 ATMEL 公司的高密度、非易失性存储技术

18、制造,兼容标准 MCS-51 指令系统及引脚相兼容。AT89C51 功能强大、低价位并且可灵活应用于各种控制领域4。AT89C51 芯片的主要性能特点5:1、4k Bytes Flash 片内程序存储器;2、128 bytes 的随机存取数据存储器(RAM);3、32 个外部双向输入/输出(I/O)口;4、5 个中断优先级、2 层中断嵌套中断;5、两个外部中断源;6、2 个 16 位可编程定时器/计数器;7、全双工串行通信口;8、看门狗(WDT)电路;9、片内振荡器和时钟电路;10、与 MCS-51 兼容;13、可编程串行通道;14、低功耗的闲置和掉电模式;15、4.5-5.5v 工作电压。2

19、.3.2 AT89C51 管脚说明 AT89C51 芯片的引脚图6如图 2-3。系统硬件电路设计 5 图 2-3 AT89C51 引脚图 P0 口:P0 口为一个 8 位漏级开路双向I/O 口,每脚可吸收 8TTL 门电流。当 P0 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须接上拉电阻。P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收、输出 4个 TTL 门电流,当 P2 口被写

20、“1”时,其管脚被内部上拉电阻拉高,作为输入。因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3.31INT(外部中

21、断 1)P3.7RD(外部数据存储器读选通)。RST:复位信号输入端,高电平有效。EA:功能为内外程序存储器选择控制端。当引脚为高电平时,单片机访问片内程序存储器。引脚为低电平时,单片机则访问外部程序存储器。XLAT1:片内振荡器反相放大器和时钟发生器的输入端。系统硬件电路设计 6 XLAT2:片内振荡器反相放大器的输出端。2.3.3 单片机晶振电路和复位电路 单片机系统里都含有晶振电路和复位电路,他们在单片机系统里作用非常大。晶振电路结合单片机内部电路产生单片机正常运行所需要的时钟频率,单片机一切指令的执行都依靠单片机晶振电路提供的时钟频率。单片机复位电路就好比电脑的重启部分,当电脑在使用中

22、出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,复位电路内部的会让系统复位7。晶振电路和复位电路与单片机接口如图2-4 所示 图 2-4 晶振电路和复位电路 2.4 DS18B20 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传系统硬件电路设计 7 感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912 位的数字值读数方式。2.4.1 DS18B20引脚功能 图 2-5 DS18B20 引脚图 DS18B20 详细引脚功能描述如表 2-

23、1 表 2-1 DS18B20 详细引脚功能描述 2.4.2 DS18B20 性能特点 DS18B20 的性能特点如下8:1.采用单总线技术,与单片机通信只需要一根 I/O 线,在一根线上可以挂接多个DS18B20。2.每只 DS18B20 具有一个独有的,不可修改的 64 位序列号,根据序列号访问地应的器件。3.5V 低压供电,可以本地供电,也可以采用寄生电源方式。4.测温范围为55125,在-1085范围内误差为0.5。5.可编辑数据为 912 位。6.用户可自设定报警上下限温度。7.DS18B20 可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。2.4.3

24、DS18B20 测温原理 DS18B20 其内部结构框图如图 2-6 所示。序号 名称 引脚功能描述 1 GND 地信号 2 DQ 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3 VDD 可选择的 VDD 引脚。当工作于寄生电源时,此引脚必须接地。系统硬件电路设计 8 图 2-6 DS18B20 内部结构 64 位 ROM 结构的开始 8 位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后 8 位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可以采用一线进行通信的原因。温度报警触发器 TH 和 TL,可通过软件写入用户

25、报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性的可电擦除的EERAM。高速暂存 RAM 的结构为 9 字节的存储器,结构如图 2-7 所示。头 2 个字节包含测得的温度信息,第 3 和第 4 字节 TH 和 TL 的拷贝是易失的,每次上电复位时被刷新。第 5 个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图 2-7 所示。低 5 位一直为 1,TM 是工作模式位,用于设置 DS18B20 在工作模式还是在测试模式,DS18B20 出厂时该位被设置为 0,用

26、户要去改动,R1 和 R0 决定温度转换的精度位数,用来设置分辨率9。64 位 ROM 和 单 线 接 口 I/O C VDD 高 速 暂 存 存储器与控制逻辑 高温触发器 TH 低温触发器 TL 8 位 CRC 发生器 配置寄存器 温度传感器 系统硬件电路设计 9 图 2-7 DS18B20 字节定义 高速暂存 RAM 的第 6、7、8 字节保留未用,表现为全逻辑 1。第 9 字节读出前面所有 8 字节的 CRC 码,可用来检验数据,从而保证通信数据的正确性。当 DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16位带符号扩展的二进制补码形式存储在高速暂存存储器的

27、第 1、2 字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据以 0.0625/LSB 形式表示。由表 2-2 可见,DS18B20 温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。当符号位 S=0 时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位 S=1 时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表 2-3 是部分温度值对应的二进制温度数据。DS18B20 的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计

28、数器 1,高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器 1 和温度寄存器中,计数器 1 和温度寄存器被预置在55所对应的一个基数值。减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1温度 LSB 温度 MSB TH 用户字节 1 TL 用户字节 2 配置寄存器 保留 保留 保留 CRC TM R1 R0 1 1 1

29、1 1 系统硬件电路设计 10 的预置值减到 0 时,温度寄存器的值将加 1,减法计数器 1 的预置值将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器 2 计数到 0 时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值等于被测温度值10。表 2-2 DS18B20 温度转换时间表 R1 R0 分辨率/位 转换精度 温度最大转换时间/ms 0 0 9 0.5 93.75 0 1 10 0.25 187.5 1 0 11 0.125 375 1 1

30、 12 0.0625 750 表 2-3 部分温度对应值表 温度/二进制表示 十六进制表示+125 0000 0111 1101 0000 07D0H+25.0625 0000 0001 1001 0001 0191H+10.125 0000 0000 1010 0010 00A2H+0.5 0000 0000 0000 1000 0008H 0 0000 0000 0000 0000 0000H-0.5 1111 1111 1111 1000 FFF8H-10.125 1111 1111 0101 1110 FF5EH-25.0625 1111 1110 0110 1111 FE6FH-55

31、 1111 1100 1001 0000 FC90H 另外,由于 DS18B20 单线通信功能是分时序完成的,它有严格的时隙概念,因此读写时序很重要。系统对 DS18B20 的各种操作按协议进行。操作协议为:初使化 DS18B20(发复位脉冲)发 ROM 功能命令发存储器操作命令处理数据11。2.4.4 DS18B20 温度传感器与单片机的接口电路 DS18B20 与单片机的接口电路如图 2-8。系统硬件电路设计 11 图 2-8 DS18B20 与单片机的接口电路 DS18B20 可以采用电源供电方式,此时 DS18B20 的 1 脚接地,2 脚作为信号线,0脚接电源。为保证在有效的 DS1

32、8B20 时钟周期内提供足够的电流,可用一个 MOSFET 管来完成对总线的上拉。当 DS18B20 处于写存储器操作和温度 A/D 转换操作时,总线上必须有强的上拉。由于单线制只有一根线,因此发送接口必须是三态的。由于 DS18B20 是在一根 I/O 线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将单片机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从单片机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,单片机需启动

33、读时序完成数据接收。DS18B20 在启动温度转化命令后将测量的温度值存储在高速暂存RAM 中,单片机再通过读取温度值指令读取高速暂存 RAM 中的 9 字节内容进行温度计算 12。DS18B20 的三条控制命令,指令约定代码操作说明:CCH:跳过扫描温度传感芯片序列号;44H:启动 DS18B20 进行温度转换;BEH:读度温度值13。DS18B20 的复位时序:(1)先将数据线置高电平“1”;(2)延时(该时间要求的不是很严格,但是尽可能的短一点);(3)数据线拉到低电平“0”;系统硬件电路设计 12(4)延时 750 微秒(该时间的时间范围可以从 480 到 960 微秒);(5)数据线

34、拉到高电平“1”;(6)延时等待(如果初始化成功则在 15 到 60 毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制);(7)若 CPU 读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要 480 微秒;(8)将数据线再次拉高到高电平“1”后结束。DS18B20 的读时序:对于 DS18B20 的读时隙分为读 0 时序和读 1 时序两个过程。对于 DS18B20 的读时隙是从单片机把单总线拉低之后,在 15 秒之内就得释放单总线,

35、以让 DS18B20 把数据传输到单总线上。DS18B20 在完成一个读时序过程,至少需要 60us 才能完成。(1)将数据线拉高“1”;(2)延时 2 微秒;(3)将数据线拉低“0”;(4)延时 15 微秒;(5)将数据线拉高“1”;(6)延时 15 微秒;(7)读数据线的状态得到 1 个状态位,并进行数据处理;(8)延时 30 微秒。DS18B20 的写时序:对于 DS18B20 的写时序仍然分为写 0 时序和写 1 时序两个过程。总线单片机使用写“1”时间隙向 DS18B20 写入逻辑 1,使用写“0”时间隙向 DS18B20 写入逻辑 0。所有的写时隙必须有最少 60us 的持续时间,

36、相邻两个写时隙必须要有最少 1us 的恢复时间。两种写时隙都通过单片机拉低总线产生。对于 DS18B20 写 0 时序和写 1 时序的要求不同,当要写 0 时序时,单总线要被拉低至少 60us,保证 DS18B20 能够在 15us 到 45us 之间能够正确地采样 IO 总线上的“0”电平,当要写 1 时序时,单总线被拉低之后,在 15us 之内就得释放单总线。(1)数据线先置低电平“0”;(2)延时确定的时间为 15 微秒;系统硬件电路设计 13(3)按从低位到高位的顺序发送字节(一次只发送一位);(4)延时时间为 45 微秒;(5)将数据线拉到高电平;(6)重复(1)到(5)的操作直到所

37、有的字节全部发送完为止;(7)最后将数据线拉高。2.5 1602LCD 液晶模块显示 1602 字符液晶芯片在实际的产品中运用的比较多,是基于 HD44780 液晶芯片设计的。所谓 1602 是指显示的内容为 16*2,即可以显示两行,每行 16 个字符。字符型1602LCD 通常有 14 条引脚线,引脚定义14如下表 2-4 所示。表 2-4 LCD1602 引脚 引脚号 引脚名 电平 输入/输出 作用 1 Vss 电源地 2 Vcc 电源 5V 3 Vee 对比调整电压 4 RS 0/1 输入 0=输入指令 1=输入数据 5 RW 0/1 输入 0=向 LCD 写入指令或数据 1=从 LC

38、D 读取信息 6 E 1,10 输入 使能信号,1 时读取信息,10 执行指令 7 D0 0/1 输入/输出 数据总线 8 D1 0/1 输入/输出 数据总线 9 D2 0/1 输入/输出 数据总线 10 D3 0/1 输入/输出 数据总线 11 D4 0/1 输入/输出 数据总线 12 D5 0/1 输入/输出 数据总线 13 D6 0/1 输入/输出 数据总线 14 D7 0/1 输入/输出 数据总线 1602LCD 显示模块各引脚与单片机接口如图 2-9,其中 P1 为上拉电阻 系统硬件电路设计 14 图 2-9 LCD 显示原理 HD44780 内置了 DDRAM(显示数据 RAM)、

39、CGROM(字符发生存储器)和 CGRAM(用户自定义的字符图形 RAM)15。DDRAM 就是显示数据 RAM,用来寄存待显示的字符代码。共 80 个字节,在 1602 中我们就每一行都使用用前 16 个地址就可以了。其地址和屏幕的对应关系如下表 2-5。也就是说想要在 LCD1602 屏幕的第一行第一列显示一个“A”字,就要向 DDRAM 的00H 地址写入“A”字的代码就行了。但具体的写入是要按 LCD 模块的指令格式来进行的。表 2-5 DDRAM 地址与显示位置的对应关系 显示位置 1 2 3 4 5 6 16 DDRAM地 址 第一行 00H 01H 02H 03H 04H 05H

40、 0FH 第二行 40H 41H 42H 43H 44H 45H 4FH 1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母“A”。CGROM 中的字符代码与我们 PC 中的字符代码是基本一致的。因此我们在向 DDRAM系统硬件电路设计 15 写 C51 字符代码程序时甚至可以直接用 P1“A”这样的方法。PC 在编译时就把“A

41、”先转为 41H 代码了。CGRAM 是用户自定义的字符图形 RAM,功能与 CGROM 相同。简单的说如果要显示一个字符,操作方法:先设置 DDRAM 位置,再向 CGRAM 写入字符码,例如“A”就是 41H。2.6 蜂鸣报警器 如图 2-10 为一个蜂鸣报警器和两个不同颜色的灯16,它的作用是在温度超过上下限时,单片机 P3.7 口输出一个高电平,这时三极管到 Spesker(扬声器)电路导通,Speaker 则开始报警。当温度超过上限温度时红灯亮起并且发出急促的报警声。当温度低于下限温度时黄灯亮起并且发出低沉的报警声。图 2-10 蜂鸣报警器 2.7 数字温度计电路原理图 数字温度计电

42、路原理设计图见附录 1。系统软件设计 16 3 系统软件设计 3.1 系统软件设计思路 系统程序主要包括主程序、读出温度子程序、计算温度子程序、显示温度子程序等。数字温度计主要是对温度进行采集、显示。程序运行开始后,系统进行初始化设置,DS18B20 将采集到的温度经过 AD 转换后,送到单片机进行数据转换,并通过 LCD液晶模块显示17,并判断是否超过温度上限进行报警。如图 3-1 所示:图 3-1 主程序流程图 3.2 读出温度子程序 读出温度子程序的主要功能是启动温度转换并读出 RAM 中的 9 字节信息,判断符号位并将温度值存入寄存器 18。其程序流程图如图 3-2 示 温度超过 上下

43、限?转换并显示温度 报警 系统初始化 开始 DS18B20 获取温度值 Y 系统软件设计 17 图 3-2 读温度流程图 3.3 计算温度子程序 计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算,并进行温度值正负的判定19,其程序流程图如图 3-3 所示。图3-3 计算温度流程图 发送 DS18B20 复位命令 启动温度转换 发送读取温度命令 判定符号位为“+”?温度值取补码加 1 移入温度暂存器 N Y 开始 温度零下?温度值置“-”标志 分别计算百位数、十位数、个位数、小数位存入数据寄存器 温度值置“+”标志 Y N 系统软件设计 18 3.4 显示温度子程序 显示温度子程序主

44、要是对显示缓冲器中的显示数据进行显示操作,先判断符号位,为“-”则显示,为“+”则不显示。然后计算百位、十位、个位等数值并判断是否为0,为 0 不显示,不为 0 显示20。程序流程图如图 3-4。图 3-4 显示数据刷新流程图 3.5 数字温度计主程序 数字温度计程序见附录 3。读取温度数据并计算其百位数、十位数、个位数、小数位 判断符号位,为“+”则不显示符号位,为“-”则显示符号位 判断百位不为 0 显示百位,为 0 则不显示 判断十位不为 0 显示十位,为 0 则不显示 依次向LCD写入指令和数据显示符号位、百位数、十位数、和小数位 系统仿真 19 4 系统仿真 4.1 Proteus仿

45、真软件简介 Proteus 是英国 Labcenter 公司开发的电路分析与仿真软件。Proteus 是目前最好的模拟单片机外围器件的工具,它可以仿真 51 系列、AVR,PIC 等常用的 MCU 及其外围电路(如 LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分 SPI 器件,部分 IC 器件)。数字温度计的仿真设计基于 Proteus 和 KEILC 软件。运行于 Windows 操作系统上,可以仿真、分析(SPICE)数字电路、模拟电路、数模混合电路,是目前唯一能实现对 51、PIC、AVR、HC11 等处理器的仿真软件21。4.2 仿真原理图 Proteus 软件具有仿真功

46、能,要仿真首先要绘制原理图。选好所有的元器件后单击元件列表中的图标就可以把所需要的元件放入编辑窗口中,调整元件的位置,并把地线和电源放入编辑窗口中,最后进行连线。仿真电路中通过 DS18B20 手动控制温度从而达到仿真效果。系统仿真原理图见附录 2。4.3 加载仿真程序 双击仿真图中 AT89C51 后,在弹出的编辑元件对话框中选 program File 选项,然后找到仿真程序 wenduji.hex 选中即可。回到仿真界面后选择“调试”菜单中的执行选项,可以看到程序运行后的结果。如果想停止仿真就选择“调试”菜单选项中的停止仿真即可。仿真开始后,手动点击 DS18B20 上的两个按钮,“+”

47、代表增加温度,“-”代表减少温度。LCD 液晶显示模块就会显示出对应的温度值(由于仿真软件的限制,每次温度加减只能 1 度 1 度的进行)。如果温度超过上限时红灯会亮起并且蜂鸣报警器就会自动发出急促的报警声。如果温度低于下限时黄灯会亮起并且蜂鸣报警器会自动发出低沉的报警声。总结 20 总 结 经过半年的学习和实践,终于完成了数字温度计的设计,并且达到了预定的设计要求。但是由于时间和经验的不足,数字温度计的设计有一些地方还可以继续改进使测量结果更加精确。比如可以用多个 DS18B20 共同测量温度并进行报警,可以寻找一些测温精确度更高、测温范围更广的温度传感器等。设计过程当中使用单片机、温度传感

48、器、显示模块及报警器等其它模块共同组成了数字温度计。首先设计的是它的硬件电路,最重要的部分是单片机 AT89C51 芯片,所有的数据都是通过单片机进行处理的。其次是温度传感器 DS18B20,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式,并且它的测温精度可以达到0.5。然后就是 1602LCD 液晶显示模块,其他还有晶振电路、复位电路、报警电路。然后设计了系统的软件程序,通过用 C 语言编程实现对各个电路的控制。数字温度计主要是对温度进行采集、显示。系统软件设计主要包括主程序、读出温度子程序、计算温度子程序、显示温度子程序等。最后在英国 Labcent

49、er 公司开发的电路分析与仿真软件 Proteus 中作出仿真实验。在仿真过程中,程序运行开始后,系统先进行初始化设置,DS18B20 将采集到的温度经过转化后送到单片机 AT89C51 进行数据转换,并通过 LCD 液晶模块将温度值显示出来。参考文献 21 参考文献 1 高庆中.温度计量M.北京:中国计量出版社,2004 年.2 宋文绪,杨帆.传感器与检测技术M.北京:高等教育出版社,2004.3 陈有卿,谢刚.新颖电子模块应用手册M.北京:机械工业出版社,2005.4 李朝青.单片机原理及接口技术M.杭州:北京航空航天大学出版社,1998.5 张毅刚.单片机原理及应用M.北京:高等教育出版

50、社,2010.6 潘永雄.新编单片机原理与应用M.西安:西安电子科技大学出版社,2007.7 Dongxing Zhang,Jing Li.Artificial Intelligence Applications and Innovations Springer USM,2005.8 Yang Jing,Shi LiTing.Application of DS18B20 Intelligent Temperature Sensor in Temperature Control SystemJ.Industrial Control Computer,2006,(6):60-61.9 黄建伟.基于

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服