电子信息工程技术数字温度计

上传人:沈*** 文档编号:197283747 上传时间:2023-04-03 格式:PDF 页数:41 大小:1.71MB
收藏 版权申诉 举报 下载
电子信息工程技术数字温度计_第1页
第1页 / 共41页
电子信息工程技术数字温度计_第2页
第2页 / 共41页
电子信息工程技术数字温度计_第3页
第3页 / 共41页
资源描述:

《电子信息工程技术数字温度计》由会员分享,可在线阅读,更多相关《电子信息工程技术数字温度计(41页珍藏版)》请在装配图网上搜索。

1、 摘 要 本文将介绍一种基于单片机控制的数字温度计,就是用单片机实现温度测量,传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。本次采用 DS18B20 数字温度传感器来实现基于 AT89S52 单片机的数字温度计的设计用 LCD 数码管以串口传送数据,实现温度显示,能准确达到以上要求,可以用于温度等非电信号的测量,主要用于对测温比较准确的场所,或科研实验室使用,能独立工作的单片机温度检测、温度控制系统已经广泛应用很多领域。关键词 温度计;单片机;数字控制;DS18B20 1 ABSTRACT Thi

2、s article will introduce the single-chip microcomputer-based control of a digital thermometer is used to achieve single-chip temperature measurement,the traditional detection of most of the temperature thermistor for temperature sensor,but the poor reliability of thermistors,temperature measurement

3、accuracy of low-,and must go through a special interface circuit to convert the digital signal processed by the single chip.The use of digital temperature sensor DS18B20 to AT89S52 microcontroller-based design of digital thermometer with LCD digital control to the serial transmission of data,tempera

4、ture display,accurate to achieve the above requirements,can be used for temperature measurement and other non-electrical signal,mainly used for more accurate temperature measurement sites,or research laboratory use,can work independently of the single-chip temperature detection,temperature control s

5、ystem has been widely used in many areas Key words Thermometer;Single-chip;Digital Control;DS18B20 2 目 录 1 绪论 4 1.1 前言 4 1.2 数字温度计设计方案论证 4 1.2.1 方案一 4 1.2.2 方案二 4 1.3 方案二的总体设计框图 4 1.3.1 主控制器 5 1.3.2 温度传感器 5 2 硬件电路设计 10 2.1 主要芯片介绍 10 2.1.1 AT89S52的介绍 10 2.1.2 AT89S52各引脚功能介绍 10 2.2 主板电路 13 2.3 显示电路 14

6、 3 软件设计 15 3.1 主程序流程图 15 3.2 读出温度子程序流程图 16 3.3 温度转换命令子程序流程图 17 3.4 计算温度子程序流程图 17 3.5 显示数据刷新子程序流程图 18 4 PROTEUS仿真调试 19 4.1 PROTEUS软件介绍 19 4.2 PROTEUS界面介绍 20 4.2.1 原理图编辑窗口 20 4.2.2 预览窗口 20 4.2.3 模型选择工具栏 21 4.2.4 元件列表 21 4.2.5 方向工具栏 22 3 4.2.6 仿真工具栏 22 4.3 本次设计仿真过程 23 4.3.1 创建原理图 23 4.3.2 绘制的仿真原理图如 24

7、4.3.3 系统调试 25 4.3.4 开始仿真 26 4.4 总结与体会 27 参考文献 28 致 谢 29 附录1 程序清单 30 附录 2 元器件清单 38 附录 3 原理图 39 附录 4 PCB 图 40 4 1 绪论 1.1 前言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为

8、一种比较成熟的技术,单片机已经在测控领域中获得了广泛的应用 本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机 AT89S52,测温传感器使用 DS18B20,用 LCD 数码管以串口传送数据,实现温度显示,能准确达到以上要求。1.2 数字温度计设计方案论证 1.2.1 方案一 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到 A/D 转换电路,感温电路比较麻

9、烦。1.2.2 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。1.3 方案二的总体设计框图 温度计电路设计总体设计方框图如图 1.1 所示,控制器采用单片机 AT89S52,温 5 度传感器采用 DS18B20,用 LCD 液晶显示屏以串口传送数据实现温度显示:图 1.1 总体设计方框图 1.3.1 主控制器 单片机 AT89S52 具有低电压

10、供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。1.3.2 温度传感器 DS18B20 温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 9-12 位的数字值读数方式。DS18B20 的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个 DS18B20 可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为 3.05.5;零待机功耗;温度以 9 或 12 位数字;用户可

11、定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20 采用 3 脚 PR35 封装或 8 脚 SOIC 封装,其内部结构框图如图 2.2 所示:主 控 制 器 LCD显 示 温 度 传 感 器 单片机复位 时钟振荡 6 图 1.2 DS18B20 内部结构 64 位 ROM 的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。

12、DS18B20 温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的 EERAM。高速暂存 RAM 的结构为字节的存储器,结构如图 2.3.2 所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图 2.3 所示。低位一直为,是工作模式位,用于设置 DS18B20在工作模式还是在测试模式,DS18B20 出厂时该位被设置为,用户要去改动,R1 和0 决定温度转换的精度位数,来设置分辨率。I/O C 64

13、 位 ROM 和 单 线 接 口 高速缓存 存储器与控制逻辑 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 发生器 Vdd 7 图 1.3 DS18B20 字节定义 由表 1.1 可见,DS18B20 温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第 6、7、8 字节保留未用,表现为全逻辑。第 9 字节读出前面所有字节的 CRC 码,可用来检验数据,从而保证通信数据的正确性。当 DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16位带符号扩展的二进制补码形式

14、存储在高速暂存存储器的第 1、2 字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以 0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表 1.2 是一部分温度值对应的二进制温度数据。表 1.1 DS18B20 温度转换时间表 温度 LSB 温度 MSB TH 用户字节 1 TL 用户字节 2 配置寄存器 保留 保留 保留 CRC R0R1000101119101112分辨率/位温度最大转向时间/ms93.75187.5375750.TM R11R

15、01111.8 DS18B20 完成温度转换后,就把测得的温度值与 RAM 中的 TH、T字节内容作比较。若TH 或 TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20 同时测量温度并进行报警搜索。在 64 位 ROM 的最高有效字节中存储有循环冗余检验码(CRC)。主机 ROM 的前 56位来计算 CRC 值,并和存入 DS18B20 的 CRC 值作比较,以判断主机收到的 ROM 数据是否正确。DS18B20 的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温

16、度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器

17、中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。另外,由于 DS18B20 单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对 DS18B20 的各种操作按协议进行。操作协议为:初使化 DS18B20(发复位脉冲)发 ROM 功能命令发存储器操作命令处理数据。9 表 1.2 一部分温度对应值表 温度/二进制表示 十六进制表示+125 0000 0111 1101 0000 07D0H+85 0000 0101 0101 0000 0550H+25.0625 0000 0001 1001 0000

18、 0191H+10.125 0000 0000 1010 0001 00A2H+0.5 0000 0000 0000 0010 0008H 0 0000 0000 0000 1000 0000H-0.5 1111 1111 1111 0000 FFF8H-10.125 1111 1111 0101 1110 FF5EH-25.0625 1111 1110 0110 1111 FE6FH-55 1111 1100 1001 0000 FC90H 10 2 硬件电路设计 2.1 主要芯片介绍 2.1.1 AT89S52 的介绍 选用的 AT89S52 与同系列的 AT89C51 在功能上有明显的提

19、高,最突出是的可以实现在线的编程。用于实现系统的总的控制。其主要功能列举如下:(1)为一般控制应用的 8 位单片机(2)晶片内部具有时钟振荡器(传统最高工作频率可至 33MHz)(3)内部程式存储器(ROM)为 4KB(4)内部数据存储器(RAM)为 128B(5)外部程序存储器可扩充至 64KB(6)外部数据存储器可扩充至 64KB(7)32 条双向输入输出线,且每条均单独做 I/O 的控制(8)5 个中断向量源(9)2 组独立的 16 位定时器(10)1 个全双工串行通信端口(12)8751 及 8752 单芯片具有数据保密的功能(13)单芯片提供位逻辑运算指令 2.1.2 AT89S52

20、 各引脚功能介绍 VCC:ATAT89S52 电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反向放大器输入端 XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两个引脚与地之间加入一个 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:11 AT89S52 的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S52 便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址 0000

21、H 处开始读入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部 EPROM 中)来执行程序。因此在 8031 及 8032 中,EA 引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至 8751 内部 EPROM 时,可以利用此引脚来输入 21V 的烧录高压(Vpp)。ALE/PROG:ALE 是英文Address Latch Enable的缩写,表示地址锁存器启用信号。ATAT89S

22、51可以利用这支引脚来触发外部的 8 位锁存器(如 74LS373),将端口 0 的地址总线(A0A7)锁进锁存器中,因为 ATAT89S51 是以多工的方式送出地址及数据。平时在程序执行时 ALE 引脚的输出频率约是系统工作频率的 1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录 8751 程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当 8051 被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到 EPROM 的 OE 脚。ATAT89S51 可以利

23、用 PSEN 及 RD 引脚分别启用存在外部的 RAM 与EPROM,使得数据存储器与程序存储器可以合并在一起而共用 64K 的定址范围。PORT0(P0.0P0.7):端口 0 是一个 8 位宽的开路电极(Open Drain)双向输出入端口,共有 8 个位,P0.0表示位 0,P0.1 表示位 1,依此类推。其他三个 I/O 端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0 在当作 I/O 用时可以推动 8 个 LS 的 TTL 负载。如果当 EA 引脚为低电平时(即取用外部程序代码或数据存储器),P0 就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计

24、者必须外加一个锁存器将端口 0送出的地址锁住成为A0A7,再配合端口 2 所送出的 A8A15 合成一组完整的 16 位地址总线,而定位地址到64K 的外部存储器空间。PORT2(P2.0P2.7):端口 2 是具有内部提升电路的双向 I/O 端口,每一个引脚可以推动 4 个 LS 的 TTL负载,若将端口 2 的输出设为高电平时,此端口便能当成输入端口来使用。P2 除了当作一般 I/O 端口使用外,若是在 ATAT89S52 扩充外接程序存储器或数据存储器时,也 12 提供地址总线的高字节 A8A15,这个时候 P2 便不能当作 I/O 来使用了。PORT1(P1.0P1.7):端口 1 也

25、是具有内部提升电路的双向 I/O 端口,其输出缓冲器可以推动 4 个 LS TTL负载,同样地,若将端口 1 的输出设为高电平,便是由此端口来输入数据。如果是使用 8052 或是 8032 的话,P1.0 又当作定时器 2 的外部脉冲输入脚,而 P1.1 可以有 T2EX功能,可以做外部中断输入的触发引脚。PORT3(P3.0P3.7):端口3 也具有内部提升电路的双向 I/O 端口,其输出缓冲器可以推动 4个 TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.

26、1:TXD,串行通信输出。P3.2:INT0,外部中断 0 输入。P3.3:INT1,外部中断 1 输入。P3.4:T0,计时计数器 0 输入。P3.5:T1,计时计数器 1 输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。13 2.1 主板电路 系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主板电路等,如图 2.5 所示:图 2.1 单片机主板电路 14 2.3 显示电路 显示电路是使用的串口显示,这种显示最大的优点就是使用口资源比较少,只用p2 口串口的发送和接收,LCD 液晶显示屏显示,显示比较清晰。温度显示电路如图2.2所示:图

27、 2.2 温度显示电路 15 3 软件设计 系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。3.1 主程序流程图 主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20 的测量的当前温度值,温度测量每 1s 进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图 3.1 所示:图 3.1 主程序流程图 初始化 调用显示子程序 1S 到?初次上电 读出温度值温度计算处理显示数据刷新 发温度转换开始命令 N Y N Y 16 3.2 读出温度子程序流程图 读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC

28、 校验,校验有错时不进行温度数据的改写。其程序流程图如图 3.2 所示:图 3.2 温度子程序流程图 Y 发 DS18B20 复位命令 发跳过 ROM 命令 发读取温度命令 读取操作,CRC 校验 9 字节完?CRC校验正?移入温度暂存器 结束 N N Y 17 发DS18B20复位命令 发跳过 ROM 命令 发温度转换开始命令 结束 3.3 温度转换命令子程序流程图 温度转换命令子程序主要是发温度转换开始命令,当采用 12 位分辨率时转换时间约为 750ms,在本程序设计中采用 1s 显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图 3.3 所示:图 3.3 温度转换命令子程

29、序流程图 3.4 计算温度子程序流程图 计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算,并进行温度值正负的判定,其程序流程图如图 3.4 所示:图 3.4 温度子程序流程图 开始 温度零下?温度值取补码置“”标志 计算小数位温度BCD值 计算整数位温度BCD值 结束 置“+”标志 N Y 18 3.5 显示数据刷新子程序流程图 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为 0 时将符号显示位移入下一位。程序流程图如图 3.5 所示:图 3.5 显示数据刷新子程序流程图 温度数据移入显示寄存器 十位数 0?百位数 0?十位数显示符号百位数不显示 百位

30、数显示数据(不显示符号)结束 N N Y Y 19 4 Proteus 仿真调试 4.1 Proteus软件介绍 Proteus 软件10是来自英国 Labcenter electronics公司的 EDA 工具软件,它组合了高级原理布图、混合模式 SPICE 仿真,PCB 设计以及自动布线来实现一个完整的电子设计系统。此系统受益于 15 年来的持续开发,被电子世界在其对 PCB 设计系统的比较文章中评为最好产品“The Route to PCB CAD”。Proteus 产品系列也包含了我们革命性的 VSM 技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采

31、用诸如 LED/LCD、键盘、RS232 终端等动态外设模型来对设计进行交互仿真。其功能模块:个易用而又功能强大的 ISIS 原理布图工具;PROSPICE 混合模型SPICE 仿真;ARES PCB 设计。PROSPICE 仿真器的一个扩展 PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs 甚至 LCD 显示 CPU 模型。支持许多通用的微控制器,如 PIC,AVR,HC11 以及 8051。最新支持 ARM。交互的装置模型包括:LED 和 LCD 显示,RS232 终端,通用键盘,I2C,SPI 器

32、件。强大的调试工具,包括寄存器和存储器,断点和单步模式。IAR C-SPY 和 Keil uVision2 等开发工具的源层调试。应用特殊模型的 DLL 界面-提供有关元件库的全部文件。20 4.2 Proteus 界面介绍 Proteus ISIS 的工作界面是一种标准的 Windows 界面,如图 4.1 所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。图4.1 Proteus 窗口界面图 4.2.1 原理图编辑窗口 顾名思义,它是用来绘制原理图的。蓝色方框内为可编辑区,元件要放到它里

33、面。注意,这个窗口是没有滚动条的,你可用预览窗口来改变原理图的可视范围。4.2.2 预览窗口 它可显示两个内容,一个是:当你在元件列表中选择一个元件时,它会显示该元件的预览图;另一个是,当你的鼠标焦点落在原理图编辑窗口时(即放置元件到原理图编辑窗口后或在原理图编辑窗口中点击鼠标后),它会显示整张原理图的缩略图,21 并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口中显示的内容,因此,你可用鼠标在它上面点击来改变绿色的方框的位置,从而改变原理图的可视范围。4.2.3 模型选择工具栏 主要模型(Main Modes):1*选择元件(components)(默认选择的)2*放置连接点

34、3*放置标签(用总线时会用到)4*放置文本 5*用于绘制总线 6*用于放置子电路 7*用于即时编辑元件参数(先单击该图标再单击要修改的元件)配件(Gadgets)1*终端接口(terminals)有 VCC、地、输出、输入等接口 2*器件引脚:用于绘制各种引脚 3*仿真图表(gra 用于各种分析,如 Noise Analysis 4*录音机 5*信号发生器(generators)6*电压探针:使用仿真图表时要用到 7*电流探针:使用仿真图表时要用到 8*虚拟仪表:有示波器等 2D 图形(2D Graph1*画各种直线 2*画各种方框 3*画各种圆 4*画各种圆弧 5*画各种多边形 6*画各种文

35、本 7*画符号 8*画原点等 4.2.4 元件列表 22 用于挑选元件(components)终端接口(terminals)信号发生器(generators)仿 真 图 表(graph)等。举 例,当 你 选 择“元 件(components)”单击“P”按钮会打开挑选元件对话框,选择了一个元件后该元件会在元件列表中显示,以后要用到该元件时,只需在元件列表中选择即可。4.2.5 方向工具栏 旋转:旋转角度只能是 90 的整数倍。成水平翻转和垂直翻转。使用方法:先右键单击元件,再点击(左击)相应的旋转图标。4.2.6 仿真工具栏 仿真控制按钮 1*运行 2*单步运行 3*暂停 4*停止 23 4

36、.3 本次设计仿真过程 4.3.1 创建原理图 启动 Proteus 软件,单击挑选元件按钮,在元件库中选出所需元器件,出现如图 4.2 所示:图4.2 选取元件库中元件示意图 24 4.3.2 绘制的仿真原理图如 4.3 所示:图4.3 仿真原理图 25 4.3.3 系统调试 双击单片机出现下图所示画面图 4.4,在 Program File 一栏中选取仿真项目的源程序代码,点击 OK。图 4.4 加载源程序示意效果图 26 4.3.4 开始仿真 单击 Play 按钮,进入仿真状态,出现下图 4.5 所示:图 4.5 仿真结果 27 4.4 总结与体会 经过将近几周的毕业设计,终于完成了我的

37、数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把仿真成功做了出来,高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机毕业设计重点就在于软件算法的设计,需要有很巧妙的程序算法,。此外,本次毕业设计也使我对单片机技术有了更进一步的了解,实际操作和课本上的知识有很大的联系,又高于课本,一个看似很简单的电路,要动手做出来就比较困难了,因为是设计让我们在以后的学习中要注意这点,要把课本上所学的知识跟实际联系起来。有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不

38、上掌握,同时本次电路的设计巩固了所学知识,也使我们把理论与实际从真正的意义上结合起来了,增强了学习的兴趣,考验了我们借助图书馆、互联网搜索、查阅相关资料,以及综合能力。从这次的毕业设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次毕业设计中的最大收获,为以后从事电子电路设计、研制电子产品方面的工作奠定了一定的基础。28 参考文献 1 李朝青,单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998 Li chaoqing,Single-chip Microc

39、omputer Principle and Interface Technology.hangzhou:Beijing University of Aeronautics and Astronautics Press,1998 2 李广弟.单片机基础.北京:北京航空航天大学出版社,1994 Li guang di.Single-chip based on .Bijing:Beijing University of Aeronautics and Astronautics Press,1994 3 阎石.数字电子技术基础(第三版).北京:高等教育出版社,1989 Yan shi.Digital

40、Electronics.Beijing:Higher Education Press.1989 4 廖常初.现场总线概述J.电工技术,1999.Liao changchu.Fieldbus OverviewJ.Electrotechnical,1999 29 致 谢 在毕业设计完成之际,我要特别感谢我的指导老师王韧教授的热情关怀和悉心指导。在我毕业设计制作过程中,王韧教授倾注了大量的心血和汗水,无论是在课题的选题、构思和资料的收集方面,还是在课题的研究方法以及成文定稿方面,我都得到了王韧教授悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我终

41、生受益,在此表示真诚地感谢和深深的谢意。写作过程中,也得到了许多同学的宝贵建议,在此一并致以诚挚的谢意。感谢所有关心、支持、帮助过我的良师益友。最后,向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位老师表示衷心地感谢!并祝湖工蒸蒸日上。30 附录 1 程序清单 LCD1602#include /用 AT89C51 时就用这个头文件/#include /用华邦 W78E58B 时必须用这个头文件#include /注意那个 LCD_Wait()函数,它是判忙标志的,在实际硬件要把注掉的那种打开/Port Definitions*sbit LcdRs =P20;sbit LcdRw =P21;

42、sbit LcdEn =P22;sfr DBPort =0 x80;/P0=0 x80,P1=0 x90,P2=0 xA0,P3=0 xB0.数据端口 /内部等待函数 unsigned char LCD_Wait(void)LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();/while(DBPort&0 x80);/在用 Proteus 仿真时,注意用屏蔽此语句,在调用 GotoXY()时,会进入死循环,/可能在写该控制字时,该模块没有返回写入完备命令,即 DBPort&0 x80=0 x80 /实际硬件时打开此语句 LcdEn=0;return DBPort;/

43、向LCD写 入 命 令 或 数 据 31*#define LCD_COMMAND 0 /Command#define LCD_DATA 1 /Data#define LCD_CLEAR_SCREEN 0 x01 /清屏#define LCD_HOMING 0 x02 /光标返回原点 void LCD_Write(bit style,unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();/注意顺序 LcdEn=1;_nop_();/注意顺序 LcdEn=0;_nop_();LCD_Wait();/

44、设置显示模式*#define LCD_SHOW 0 x04 /显示开#define LCD_HIDE 0 x00 /显示关#define LCD_CURSOR 0 x02 /显示光标#define LCD_NO_CURSOR 0 x00 /无光标#define LCD_FLASH 0 x01 /光标闪动#define LCD_NO_FLASH 0 x00 /光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND,0 x08|DisplayMode);/设置输入模式#define LCD_AC_UP 0

45、x02#define LCD_AC_DOWN 0 x00 /default 32#define LCD_MOVE 0 x01 /画面可平移#define LCD_NO_MOVE 0 x00 /default void LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND,0 x04|InputMode);/初始化 LCD void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0 x38);/8 位数据端口,2 行显示,5*7点阵 LCD_Write(LCD_COMMAND,0 x38);L

46、CD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);/开启显示,无光标 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);/清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);/AC递增,画面不动 void GotoXY(unsigned char x,unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0 x80|x);if(y=1)LCD_Write(LCD_COMMAND,0 x80|(x-0 x40);void Print(unsigned char*str)while

47、(*str!=0)LCD_Write(LCD_DATA,*str);str+;33 void LCD_Print(unsigned char x,unsigned char y,unsigned char*str)GotoXY(x,y);Print(str);LCD18b20#include /用 AT89C51 时就用这个头文件/#include /用华邦 W78E58B 时必须用这个头文件#include#include#include#include#include#include#include LCD1602.h /液晶显示头文件/sbit DQ=P34;/定义 DQ 引脚为 P3.

48、4 unsigned char t2,*pt;/用来存放温度值,测温程序就是通过这个数组与主函数通信的 unsigned char TempBuffer19=0 x2b,0 x31,0 x32,0 x32,0 x2e,0 x30,0 x30,0 x43,0;/显示实时温度,上电时显示+125.00C unsigned char TempBuffer017=0 x54,0 x48,0 x3a,0 x2b,0 x31,0 x32,0 x35,0 x20,0 x54,0 x4c,0 x3a,0 x2b,0 x31,0 x32,0 x34,0 x43,0;/显示温度上下限,上电时显示TH:+125 T

49、L:+124C unsigned char code dotcode4=0,25,50,75;/*因显示分辨率为 0.25,但小数运算比较麻烦,故采用查表的方法*再将表值分离出十位和个位后送到十分位和百分位*/void covert0(unsigned char TH,unsigned char TL)/将温度上下限转换为 LCD 34 显示的数据 if(TH0 x7F)/判断正负,如果为负温,将其转化为其绝对值 TempBuffer03=0 x2d;/0 x2d 为-的 ASCII 码 TH=TH;TH+;else TempBuffer03=0 x2b;/0 x2B 为+的 ASCII 码

50、if(TL0 x7f)TempBuffer011=0 x2d;/0 x2d 为-的 ASCII 码 TL=TL+1;else TempBuffer011=0 x2b;/0 x2B 为+的 ASCII 码 TempBuffer04=TH/100+0 x30;/分离出 TH 的百十个位 if(TempBuffer04=0 x30)TempBuffer04=0 xfe;/百位数消隐 TempBuffer05=(TH%100)/10+0 x30;/分离出十位 TempBuffer06=(TH%100)%10+0 x30;/分离出个位 TempBuffer012=TL/100+0 x30;/分离出 TL

51、 的百十个位 if(TempBuffer012=0 x30)TempBuffer012=0 xfe /百位数消隐 TempBuffer013=(TL%100)/10+0 x30;/分离出十位 TempBuffer014=(TL%100)%10+0 x30;/分离出个位 void covert1(void)/将温度转换为 LCD 显示的数据 unsigned char x=0 x00,y=0 x00;t0=*pt;pt+;t1=*pt;35 if(t10 x07)/判断正负温度 TempBuffer10=0 x2d;/0 x2d 为-的 ASCII 码 t1=t1;/*下面几句把负数的补码*/t

52、0=t0;/*换算成绝对值*/x=t0+1;t0=x;if(x255)t1+;else TempBuffer10=0 x2b;/0 xfe 为变+的 ASCII 码 t1=4;/右移 4 位 x=x&0 x0f;/和前面两句就是取出 t0的高四位 t1=t1|x;/将高低字节的有效值的整数部分拼成一个字节 TempBuffer11=t1/100+0 x30;/+0 x30 为变 09 ASCII 码 if(TempBuffer11=0 x30)TempBuffer11=0 xfe;/百位数消隐 TempBuffer12=(t1%100)/10+0 x30;/分离出十位 TempBuffer13

53、=(t1%100)%10+0 x30;/分离出个位 t0=t0&0 x0c;/取有效的两位小数 t0=2;/左移两位,以便查表 x=t0;y=dotcodex;/查表换算成实际的小数 TempBuffer15=y/10+0 x30;/分离出十分位 TempBuffer16=y%10+0 x30;/分离出百分位 void delay(unsigned char i)while(i-);36 main()unsigned char TH=110,TL=-20;/下一步扩展时可能通过这两个变量,调节上下限 /测温函数返回这个数组的头地址 while(1)pt=ReadTemperature(TH,T

54、L,0 x3f);/上限温度-22,下限-24,分辨率10位,也就是 0.25C /读取温度,温度值存放在一个两个字节的数组中,delay(100);covert1();covert0(TH,TL);LCD_Initial();/第一个参数列号,第二个为行号,为0表示第一行 /为 1 表示第二行,第三个参数为显示数据的首地址 LCD_Print(0,0,TempBuffer0);LCD_Print(0,1,TempBuffer1);DS18B20 unsigned char TempBuffer017=0 x54,0 x48,0 x3a,0 x2b,0 x31,0 x32,0 x35,0 x2

55、0,0 x54,0 x4c,0 x3a,0 x2b,0 x31,0 x32,0 x34,0 x43,0;/显示温度上下限,上电时显示 TH:+125 TL:+124C void covert0(char TH,char TL)/将温度上下限转换为LCD显示的数据 if(TH0 x7F)/判断正负,如果为负温,将其转化为其绝对值 37 TempBuffer03=0 x2d;/0 x2d 为-的 ASCII 码 TH=TH+1;else TempBuffer00=0 x2b;/0 x2B 为+的 ASCII 码 if(TL0 x7f)TempBuffer011=0 x2d;/0 x2d 为-的 A

56、SCII 码 TL=TL+1;else TempBuffer011=0 x2b;/0 x2B 为+的 ASCII 码 TempBuffer04=TH/100+0 x30;/分离出 TH 的百十个位 if(TempBuffer04=0 x30)TempBuffer04=0 xfe;/百位数消隐 TempBuffer05=(TH%100)/10+0 x30;/分离出十位 TempBuffer06=(TH%100)%10+0 x30;/分离出个位 TempBuffer012=TH/100+0 x30;/分离出 TL 的百十个位 if(TempBuffer012=0 x30)TempBuffer012

57、=0 xfe;/百位数消隐 TempBuffer013=(TH%100)/10+0 x30;/分离出十位 TempBuffer014=(TH%100)%10+0 x30;/分离出个位 38 附录 2 元器件清单 物质名称 规格型号 数量(单位)芯片 AT89S52 1 块 芯片 DS18B20 1 块 数码管 LCD 液晶显示屏 1 块 电解电容 22F 1 个 瓷片电容 33pF 2 个 按键 欧姆龙 1 只 芯片插座 IC-40P 1 块 电阻 1K 1 个 电阻 0.2K 1 个 电阻 100K 1 个 限流电阻 0.3K 8 个 上拉电阻 5.1K 4 个 晶振 6MHz 1 个 下载接口 10 针(52)1 套 下载线 10 芯扁平线 1 根 39 附录 3 原理图 40 附录 4 PCB 图

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!