2022年18B20温度采集LCD12864显示_第1页
2022年18B20温度采集LCD12864显示_第2页
2022年18B20温度采集LCD12864显示_第3页
2022年18B20温度采集LCD12864显示_第4页
2022年18B20温度采集LCD12864显示_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于单片机 STC89C51的温度显示系统的设计引言随着电子技术, 特别是随大规模集成电路的产生而显现的微型运算机技术的飞速进展,人类生活发生了根本性的转变.假如说微型运算机的显现使现代科学争论得到了质的飞跃,那么可以毫不夸张地说,单片机技术的显现就是给现代工业测控领域带来了一次新的技术革命.目前,单 片机以其体积小,重量轻,抗干扰才能强,对环境要求不高,高牢靠性,高性能价格比,开发较 为简洁,在工业把握系统,数据采集系统,智能化仪器外表,办公自动化等诸多领域得到极为广 泛的应用,并已走人家庭,从洗衣机,微波炉到音响,汽车,到处都可见到单片机的踪影.因此, 单片机技术开发和应用水平已逐步成为一

2、个国家工业进展水平的标志之一.本课题争论的内容就是以单片机为主要把握元件,通过温度传感器 DS18B20实现对温度的测量, 并通过 LCD12864直接显示所测温度.1,设计任务用温度传感器 DS18b20 检测空气中的温度, STC89C51采集 DS18B20的数据并通过 LCD12864显示实时温度.2,系统硬件设计2.1 系统方框图见图 2-1.温度传感器单片机STC89C51LCD12864 显示温度值图 3-1系统方框图2.2 各模块方案的选择2.2.1 温度检测方案选择方案一:接受热电偶或热敏电阻作感温元件,但热电偶需冷端补偿,电路设计复杂,热敏电阻虽然精度较高,但需要标准稳固电

3、阻匹配才能使用,而且重复性,牢靠性都比较差.方案二:接受集成温度传感器DS18B20 .该传感器结构简洁,不需外接电路,数据传输接受one-wire.总线,可用一根I/O数据线即供电又传输数据,在-10 -+85 范畴内精度为±0.5 ,辨论率较高,重复性和牢靠性好.故接受方案二.可编辑资料 - - - 欢迎下载2.2.2 显示模块方案的选择方案一:接受数码管显示.数码管亮度高,体积小,重量轻,但其显示信息简洁,有限,在此题目中应用受到很大的限制.方案二:接受液晶显示.液晶显示功耗低,轻巧防震.接受液晶显示界面友好清楚,操作方便,显示信息丰富.故接受方案二2.3 单片机把握系统单片机

4、作为整个硬件系统的核心,它既是和谐整机工作的把握器,又是数据处理器.它由单片机,时钟电路, 复位电路等组成. 为了简化电路, 降低成本, 提高牢靠性, 本系统接受 STC89C51 作为主把握器,它是一款与MCS51完全兼容且内部自带有4KB的 Flash 储备器及 256KB RAM单元的芯片, 因此可以不需另外扩展EEPROM及静态 RAM就可以实现所需功能. 单片机最小系统是软硬 件系统连接的桥梁.它包括:单片机 89C51, LCD12864液晶模块 , DS18B20温度采集模块.单片机的时钟信号用来供应单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到 : 内部振荡和外

5、部振荡.MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器, 引脚 XTALl 和 XTAL2分别是此放大电器的输入端和输出端,由于接受内部方式时,电路简洁,所得的时钟信号比较稳固,实际使用中常接受这种方式,如以下图在其外接晶体振荡器 简称晶振 或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲.下图中外接晶体以及电容C2 和 C1 构成并联谐振电路,它们起稳固振荡频率,快速起振的作用,其值均为 30P 左右,晶振频率选6MHz.为了初始化单片机内部的某些特别功能寄存器,必需接受复位的方式,复位后可

6、使CPU及系统各部件处于确定的初始状态,并从初始状态开头正常工作.单片机的复位是靠外电路来实现的, 在正常运行情形下,只要RST引脚上显现两个机器周期时间以上的高电平,即可引起系统复位,但假如 RST引脚上连续为高电平,单片机就处于循环复位状态.复位操作有两种情形,即上电复位和手动 开关 复位.本系统接受上电复位方式.图2-2 中 R9 和 Cl 组成上电复位电路,其值R取为 1K, C 取为 22 F.可编辑资料 - - - 欢迎下载可编辑资料 - - - 欢迎下载2.4 温度检测模块图 3-2单片机最小系统可编辑资料 - - - 欢迎下载由 DALLAS半导体公司生产的DS18B20型单线

7、智能温度传感器, 属于新一代适配微处理器的智能温度传感器 , 可广泛用于工业, 民用, 军事等领域的温度测量及把握仪器,测控系统和大型设备中.它具有体积小,接口便利,传输距离远等特点.DS18B20性能特点2.4.1 DS18B20的性能特点:接受单总线专用技术,既可通过串行口线,也可通过其它I/O 口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9 位二进制数,含符号位).测温范畴为 -55 -+125 ,测量辨论率为0.0625 .内含 64 位经过激光修正的只读储备器ROM.适配各种单片机或系统机.用户可分别设定各路温度的上,下限.内含寄生电源.2.4.2 DS18B20内部结

8、构DS18B20内部结构主要由四部分组成:64 位光刻 ROM温, 度传感器 , 非挥发的温度报警触发器TH 和 TL, 高速暂存器. 64 位光刻 ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号. 64 位 ROM结构图如图 2 所示.不同的器件地址序列号不同.DS18B20的管脚排列如图5-1 所示.可编辑资料 - - - 欢迎下载图 3-4-2 DS18B20引脚分布图2.4.3 DS18B20高速暂存器DS18B20高速暂存器共 9 个储备单元,如表所示:序号寄存器名称作用序号寄存器名称0温度低字节以 16 位补码形式 4配置寄存器1温度高字节存放5,6,7保留2T

9、H/用户字节1存放温度上限8CRC3HL/ 用户字节2存放温度下限表 3-4-3DS18B20高速暂存器以 12 位转化为例说明温度高低字节存放形式及运算:12 位转化后得到的 12 位数据,储备在18B20 的两个高低两个8 位的 RAM中,二进制中的前面 5 位是符号位. 假如测得的温度大于0,这5 位为 0,只要将测到的数值乘于0.0625 即可得到实际温度.假如温度小于0,这 5 位为 1,测到的数值需要取反加1 再乘于 0.0625 才能得到实际温度.64051-1高 8 位SSSSS222可编辑资料 - - - 欢迎下载23低 8 位22222-2-3-4可编辑资料 - - - 欢

10、迎下载2222.4.4 DS18B20把握方法DS18B20有六条把握命令,如表所示:指令商定代码操作说明温度转换44H启动 DS18B20进行温度转换读暂存器BEH读暂存器 9 个字节内容写暂存器4EH将数据写入暂存器的TH,TL 字节2复制暂存器48H把暂存器的 TH,TL 字节写到 E RAM中22重新调 E RAMB8H把 E RAM中的 TH,TL 字节写到暂存器 TH,TL 字节读电源供电方式B4H启动 DS18B20发送电源供电方式的信号给主CPU表 3-4-4 DS18B20把握命令可编辑资料 - - - 欢迎下载2.4.5 DS18B20的通信协议DS18B20器件要求接受严

11、格的通信协议,以保证数据的完整性.该协议定义了几种信号类型:复位脉冲,应答脉冲时隙.写0,写 1 时隙.读 0,读 1 时隙.与 DS18B20的通信,是通过操作时隙完成单总线上的数据传输.发送全部的命令和数据时,都是字节的低位在前,高位在后. 复位和应答脉冲时隙每个通信周期起始于微把握器发出的复位脉冲,其后紧跟DS18B20发出的应答脉冲,在写时隙期间,主机向DS18B20器件写入数据,而在读时隙期间,主机读入来自DS18B20的数据.在每一个时隙,总线只能传输一位数据.时序图见图图3-4-5-1DS18B20复位时序图写时隙当主机将单总线DQ 从规律高拉到规律低时,即启动一个写时隙,全部的

12、写时隙必需在60120us 完成,且在每个循环之间至少需要1us 的复原时间.写 0 和写 1 时隙如以下图.在写0时隙期间,微把握器在整个时隙中将总线拉低.而写1 时隙期间,微把握器将总线拉低,然后在时隙起始后 15us 之释放总线.3-4-5-2 DS18B20写时序图 读时隙8B20 器件仅在主机发出读时隙时,才向主机传输数据.所以在主机发出读数据命令后,必需马上产生读时隙,以便DS18B20能够传输数据.全部的读时隙至少需要60us,且在两次独立的读时隙之间,至少需要1us 的复原时间.每个读时隙都由主机发起,至少拉低总线1us .在主机发起读时隙之后, DS18B20器件才开头在总线

13、上发送0 或 1,如 DS18B20发送 1,就保持总线为高电平.如发送为 0,就拉低总线当发送0 时, DS18B20在该时隙终止后,释放总线,由上拉电阻将总可编辑资料 - - - 欢迎下载线拉回至高电平状态.DS18B20发出的数据,在起始时隙之后保持有效时间为15us .因而主机在读时隙期间,必需释放总线.并且在时隙起始后的15us 之内采样总线的状态.3-4-5-3 DS18B20写读序图2.4.6 DS18B20的电路接受集成温度传感器DS18B20 .该传感器结构简洁, 不需外接电路, 数据传输接受 one-wire.总线,可用一根 I/O数据线即供电又传输数据,在-10 -+85

14、 范畴内精度为± 0.5 ,辨论率较高,重复性和牢靠性好.图 3-3 DS18B20 电路DS18B20 为单总线器件,数据和命令在一根线上传输,先向温度传感器写入转换命令,延长一段时间,再发送读命令,将温度值读回单片机,单片机进行数据处理,送显示.转换关系为:T=temperature*6.25T 为单片机要显示的温度, temperature为从 DS18B20读回的数字量. 图中 TEM接单片机 P06口2.5 液晶显示模块LCD12864是一款具有 4 位/8 位并行, 2 线或 3 线串行多种接口方式,内部含有国标一级,二级简体中文字库的点阵图形液晶显示模块.其显示辨论率为

15、 128× 64,内置 8192 个 16*16 点汉字, 和 128 个 16*8 点 ASCII 字符集 . 利用该模块灵敏的接口方式和简洁,便利的操作指令,可构成全中文人机交互图形界面. 可以显示 8× 4 行 16× 16 点阵的汉字 .也可完成图形显示. 低电压低功耗是其又一显著特点.由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论可编辑资料 - - - 欢迎下载硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块.2.5.1 模块接口说明管脚号名称LEVEL功能1VSS0V电源地2VDD+5V电源正( 3.

16、0V-5.5V )3VO-对比度(亮度)调整4CSH/L模组片选端,高电平有效5SIDH/L串行数据输入端6CLKH/L串行同步时钟:上升沿时读取SID 数据15PSBLL:端口方式17/RESETH/L复位端19AVDD背光源电压 +5V20KVSS背光源负端 0V可编辑资料 - - - 欢迎下载2.5.2 并行接口说明图 2.5.1 液晶模块借口说明可编辑资料 - - - 欢迎下载图 2.5.2 液晶并行借口说明可编辑资料 - - - 欢迎下载2.5.2 把握器接口信号说明 RS, R/W的协作选择准备把握界面的四种模式表 2.5.2把握界面模式 BF 忙标志位字形产生 ROM显示数据 R

17、AM字形产生 RAM地址计数器AC可编辑资料 - - - 欢迎下载2.5.3 指令说明2.5.3 液晶指令说明2.5.4 读写时序图数据传输过程可编辑资料 - - - 欢迎下载时序图串口读写时序可编辑资料 - - - 欢迎下载2.5.5液晶电路图D0 D7 接单片机 P2 口, RES接高电平, RS,RW,LCD-E分别接 P03, P04, P05 口.可编辑资料 - - - 欢迎下载3,系统软件设计图 2.5.5 液晶电路接口可编辑资料 - - - 欢迎下载3.1 C51 语言的优缺点现在有四种语言支持 8051系列单片机编程,即汇编, PL/M,C和BASIC,在开发中最常用的是汇编语

18、言, 但随着程序复杂程度的提高, 汇编语言逐步暴露了它的不足, BASIC适合于初学者或要求编程简洁而对编程效率和运行速度不高的场合. PL/hi 对8051系列单片机来讲, 不支持复杂的算术运算和浮点变量,无丰富的库函数支持.C语言是一种源于编写 UNIX 操作系统的语言,是一种结构化语言,可产生紧凑代码.为了更好地实现对单片机的开发, C51 应运而生.每个不同公司开发的 C51 不尽相同,本系统接受的是Keil Elektronik Gmbh 开发的 KeiluVision 3 工具软件来进行系统软件编写和调试的.在嵌入式系统中,相对于汇编语言, C 语言作为一种高级语言主要存在两个不足

19、:一,生成的可执行代码冗长,效率不高.对于这一点,随着处理芯片运算速度的提高,集成 ROM的扩大, 特别编译系统的不断优化,冗长已经不再是问题.这也是 C 在嵌入式系统中逐步成为主流编程语可编辑资料 - - - 欢迎下载言的主要缘由之一.二,C 生成的可执行代码在时序上不简洁把握,比如本系统中要实现的时序把握.一般的解决方案是在C 程序中嵌入汇编语句,但其实只要充分挖掘C 的潜力,在时序要求严格的场合完全可以用C 语言实现.具体方法就是阅读开发环境给我们供应的反汇编代码.反汇编代码一目了然的反映了微控器的运行时序,然后依据反汇编代码修改C 源程序.3.2 程序设计3.2.1 程序流程图开头液晶

20、初始化显示“温度”DS18B20初始化单片机猎取温数据并处理液晶显示温度值可编辑资料 - - - 欢迎下载3.2.2 液晶显示流程图程图上电初始化设定进入点显示数据功能设定把握字显示开关把握字清屏把握字进入设定点把握字可编辑资料 - - - 欢迎下载3.2.3 温度传感器流程图程图数据口复位延时上电单片机拉低总线初始化延时忽视 ROM 指令释放总线读暂存器指令延时,传感器发出存在脉冲数据处理送 LCD 显示4,仿真与调试第一调试液晶程序. 单片机 STC89C51的P2口接液晶数据口, 依据液晶手册, 将RS1和RE借口接高电平. RS,R/W,EN接口接单片机 P03,P04,P05 口,单

21、独调试液晶程序,将hex 文件下载到单片机,看看是否在液晶第一排是否显示“温度”,在第三排是否显示“液晶温度显示”然后依据 DS18B20的手册书写程序,将液晶程序设为头文件,如DS18B20程序无误,就在液晶的第一排首位开头会显示“温度”,其次排的第三个字符开头会显示温度值XX,第三排不显示, 第四排首位开头显示“液晶温度显示”.假如程序有误,就再看看芯片资料和程序的书写是否有出入,如有错误就再更正,直至显示正确为止.5,结论依据题目要求, 我们完成了液晶温度显示系统的设计,分别写出了液晶 12864的程序和 DS18B20的程序,完成了温度检测模块,液晶显示模块的设计,达到了题目的功能要求

22、.在这个过程中,我们对 LCD12864和DS18B20的芯片资料做了分析和明白,特别是液晶模块, 它的显示量大且接口简洁,占用单片机 I/O 口少,假如单片机的对外借口欠缺是,我们仍可以在电路中使用74HC595,这样单片机输出数据端口可以重8位缩减到 3位,大大缩小了单片机 I/O 口得使用.可编辑资料 - - - 欢迎下载6,收成与体会在本设计中,我们重点放在了液晶显示应用上,将液晶模块从程序中单独制成头文件,对液晶的命令字和显示做了分析,做到了可以在液晶的指定位置显示数据.另外,本设计中我们也对我们的单片机软件和硬件学问做了一个整体的复习.由于,要想编写出一个系统的程序,就必需特别清楚

23、硬件电路中所用芯片的工作原理以及使用它们的一些留意事项.在完成任务的过程中,我们先后应用 keil 3对程序进行编译和修改, 是开发板上试验, 用 ALtium designer绘制电路图和PCB 图,因而,本次实训中,我收成很多,明白了看似简洁的问题也要对其进行深化分析,特别是芯片的官方资料的懂得,才能真正的把握和运通它.由于时间和本身学问水平的发挥,我们认为本系统仍有需要改进和提高的地方,例如液晶可以显示图形,系统中可以设计报警器等.这让我明白:在以后的学习工作中,不仅要有刻苦努力, 仍要有钻研精神.可编辑资料 - - - 欢迎下载附录1,整体电路图2,主函数#include<reg

24、52.h> #include"yejing.h"#define uchar unsigned char #define uint unsigned int #include <intrins.h>sbitDQ = P32;/数据口 define interface可编辑资料 - - - 欢迎下载uint temp;/温度值 variable of temperaturevoid delay2unsigned chari/延时函数while-i;void Init_Ds18b20void/DS18B20初始化 send reset and initializ

25、ation commandDQ = 1;/DQ复位 , 不要也可行.delay21;/稍做延时DQ = 0;/单片机拉低总线delay2250;/精确延时,保护至少480usDQ = 1;/释放总线,即拉高了总线delay2100;/此处延时有足够 , 确保能让 DS18B20发出存在脉冲.uchar Read_One_Byte/读取一个字节的数据read a byte date/读数据时 , 数据以字节的最低有效位先从总线移出uchar i= 0;uchar dat = 0;fori=8;i>0;i-DQ = 0;/将总线拉低,要在1us 之后释放总线_nop_;/单片机要在此下降沿后

26、的15us 内读数据才会有效.至少保护了 1us, 表示读时序开头dat >>= 1;DQ= 1;/让从总线上读到的位数据,依次从高位移动到低位.释放总线,此后DS18B20会把握总线 , 把数据传输到总线上delay21;/延时 7us, 此处参照举荐的读时序图,尽量把把握器采样时间放到读时序后的15us 内的最终部分ifDQ/把握器进行采样dat |= 0x80;/总线为 1, DQ 为 1, 那就把 dat 的最高位置 1; 如为 0, 不处理 , 保持 0delay210;/此延时不能少,确保读时序的长度60us.return dat;void Write_One_Byte

27、uchar datuchar i = 0; fori=8;i>0;i-DQ = 0;/拉低总线_nop_;/至少保护了1us, 表示写时序 包括写0 时序或写1时序 开头DQ = dat&0x01;/从字节的最低位开头传输可编辑资料 - - - 欢迎下载可编辑资料 - - - 欢迎下载15us 内,/指令 dat 的最低位赐予给总线 , 必需在拉低总线后的/由于 15us 后 DS18B20会对总线采样.可编辑资料 - - - 欢迎下载delay210;/必需让写时序连续至少60usDQ = 1;/写完后 , 必需释放总线 , dat >>= 1;delay21;ui

28、nt Get_Tmp/猎取温度 get the temperaturefloat tt; uchar a,b;Init_Ds18b20;/初始化Write_One_Byte0xcc;/忽视 ROM指令Write_One_Byte0x44;/温度转换指令Init_Ds18b20;/初始化Write_One_Byte0xcc;/忽视 ROM指令Write_One_Byte0xbe;/读暂存器指令a = Read_One_Byte;/读取到的第一个字节为温度LSBb = Read_One_Byte; temp = b;/读取到的第一个字节为温度MSB先把高八位有效数据赋于temptemp <&

29、lt;= 8;/把以上 8 位数据从 temp 低八位移到高八位temp = temp|a;/两字节合成一个整型变量tt = temp*0.0625;/得到真实十进制温度值,DS18B20可以精确到 0.0625 度/所以读回数据的最低位代表的是0.0625 度temp =uint tt*10+0.5;/放大十倍,目的是将小数点后第一位也转换为可显示数字return temp;void mainP0=0;delay50; init; delay10; show; while1displayGet_Tmp; 液晶头文件#ifndefyejing_H #defineyejing_H #define

30、 uchar unsigned char可编辑资料 - - - 欢迎下载#define uint unsigned int uchar CMDAddress;sbit RS=P25; sbit RW=P21; sbit EN=P22;void delayuchar t/延时函数uint x,y; forx=t;x>0;x-fory=110;y>0;y-;bit busy/判忙标志位bit flag;RS=0;RW=1;EN=1;flag=bitP0&0x80;EN=0;return flag;void write_cmduchar cmd/写命令字whilebusy;RW=0;RS=0;delay5; P0=cmd; EN=1;delay5;EN=0;delay5;void write_dateuchar

温馨提示

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

评论

0/150

提交评论