最新51单片机LCD1602液晶显示测温系统.docx
- 文档编号:900736
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:41
- 大小:365.58KB
最新51单片机LCD1602液晶显示测温系统.docx
《最新51单片机LCD1602液晶显示测温系统.docx》由会员分享,可在线阅读,更多相关《最新51单片机LCD1602液晶显示测温系统.docx(41页珍藏版)》请在冰豆网上搜索。
最新51单片机LCD1602液晶显示测温系统
51单片机LCD1602液晶显示测温系统
第一部分设计任务
1.1设计题目及求要求……………………………………………………………………3
1.2.1方案一…………………………………………………………………3
1.2.4方案分析………………………………………………………………3
第二部分设计方案
2.1总体设计方案说明……………………………………………………3
2.2实物电路图………………………………………………………………4
第三部分电路设计与器件选择
3.1DS18B20工作原理和功能说明······························……4
3.2LCD1602工作原理和功能说明……………………………………………16
第四部分 4.1实验程序………………………………………………………28
第五部分 5.1课程设计总结(心得体会)…………………………………34
第六部分6.1参考文献………………………………………………………34
1.1设计题目及求要求
用电子元器件和单片机通过编写程序做成能实时显示温度的仪器。
1.2.1方案
用通用型1602液晶显示器和DS18B20温度传感器组成温度显示仪,并编写程序用51单片机来控制和连接1602液晶显示器和DS18B20温度传感器。
1.2.2方案分析
1602液晶显示器能显示ASCII码字符,数字、大小写字母、和各种符号。
而且其体积小、功耗低、显示操作简单,显示值清晰,正常温度范围为-20~+60。
DS18B20温度传感器采用单总线协议,与单片机接口仅需用一个I/O接口无需任何外部元件,直接将环境温度转化成数字信号,从而大大简化了传感器于微处理机的接口。
DS18B20温度传感器支持多点组网功能,多个DS18B20可以并联在唯一的三线上,其测试范围在-50~+125.C。
测试结果直接输出数字温度信号,以“一位总线”串行传送给CPU,同时可传送CRC效验码,具有极强的抗干扰纠错能力。
电源板极性接反时,芯片不会因发热而烧毁。
且它具有微型化、低功耗、高新能、抗干扰能力强、一赔微处理器等优点。
考虑到1602液晶显示器和DS18B20温度传感器有诸多优点,顾用二者来完成实验。
2.1总体设计方案说明
分别用DS18B20温度传感器和1602液晶显示器来测试温度和现实数据。
编写程序和利用51单片机来控制电路。
2.2实物电路图
3.1DS18B20的工作原理
①DS18B20数字温度传感器概述
DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有
线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20产品的特点
●只要求一个端口即可实现通信。
●在DS18B20中的每个器件上都有独一无二的序列号。
●实际应用中不需要外部任何元器件即可实现测温。
●测量温度范围在-55.C到+125.C之间。
●数字温度计的分辨率用户可以从9位到12位选择。
●内部有温度上、下限告警设置。
TO-92封装的DS18B20的引脚排列见右图,其引脚功能描述见表
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源
3
VDD
可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地
表3-2 DS18B20详细引脚功能描述
②DS18B20的内部结构
DS18B20的内部框图下图所示,DS18B20的内部有64位的ROM单元,和9字节的暂存器单元。
64位ROM存储器件独一无二的序列号。
暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。
暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。
暂存器的5、6和7字节器件内部保留使用。
第八字节含有循环冗余码(CRC)。
使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP在总线低电平时为器件供电。
(字节5~8就不用看了)。
图为暂存器
暂存器介绍
A.温度寄存器(0和1字节)
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
DS18B20的温度操作是使用16位,也就是说分辨率是0.0625。
BIT15~BIT11是符号位,为了就是表示转换的值是正数还是负数。
█要求出正数的十进制值,必须将读取到的LSB字节,MSB字节进行整合处理,然后乘以0.0625即可。
Eg:
假设从,字节0读取到0xD0赋值于Temp1,而字节1读取到0x07赋值于Temp2,然后求出十进制值。
unsignedintTemp1,Temp2,Temperature;
Temp1=0xD0;//低八位
Temp2=0x07;//高八位
Temperature=((Temp2<<8)|Temp1)*0.0625;//又或者
Temperature=(Temp1+Temp2*256)*0.0625;//Temperature=125
█在这里我们遇见了一个问题,就是如何求出负数的值呢?
我们必须判断BIT11~15是否是1,然后人为置一负数标志。
Eg.假设从,字节0读取到0x90赋值于Temp1,而字节1读取到0xFC赋值于Temp2,然后求出该值是不是负数,和转换成十进制值。
unsignedintTemp1,Temp2,Temperature;
unsignedcharMinus_Flag=0;
Temp1=0x90;//低八位
Temp2=0xFC;//高八位
//Temperature=(Temp1+Temp2*256)*0.0625;//Temperature=64656
//很明显不是我们想要的答案
if(Temp2&0xFC)//判断符号位是否为1
{
Minus_Flag=1;//负数标志置一
Temperature=((Temp2<<8)|Temp1)//高八位第八位进行整合
Temperature=((~Temperature)+1);//求反,补一
Temperature*=0.0625;//求出十进制
}//Temperature=55;
else
{
Minus_Flag=0;
Temperature=((Temp2<<8)|Temp1)*0.0625;
}
█如果我要求出小数点的值的话,那么我应该这样做。
Eg:
假设从,字节0读取到0xA2赋值于Temp1,而字节1读取到0x00赋值于Temp2,
然后求出十进制值,要求连同小数点也求出。
unsignedintTemp1,Temp2,Temperature;
Temp1=0x90;//低八位
Temp2=0xFC;//高八位
//实际值为10.125
//Temperature=((Temp2<<8)|Temp1)*0.0625;//10,无小数点
Temperature=((Temp2<<8)|Temp1)*(0.0625*10);//101,一位小数点
//Temperature=((Temp2<<8)|Temp1)*(0.0625*100);//1012,二位小数点
█如以上的例题,我们可以先将0.0625乘以10,然后再乘以整合后的Temperature变量,就可以求出后面一个小数点的值(求出更多的小数点,方法都是以此类推)。
得出的结果是101,然后再利用简单的算法,求出每一位的值。
unsingedcharTen,One,Dot1
Ten=Temperature/100;//1
One=Temperature%100/10;//0
Dot1=%10;//1
求出负数的思路也一样,只不过多出人为置一负数标志,求反补一的动作而已。
自己发挥想象力吧。
B.字节2~3:
TH和TL配置
TH与TL就是所谓的温度最高界限,和温度最低界限的配置。
可以使用软件来试验。
C字节4:
配置寄存器
BIT7出厂的时候就已经设置为0,用户不建议去更改。
而R1与R0位组合了四个不同的转换精度,00为9位转换精度而转换时间是93.75ms,01为10位转换精度而转换时间是187.5ms,10为11位转换精度而转换时间是375ms,11为12位转换精度而转换时间是750ms(默认)。
该寄存器还是留默认的好,毕竟转换精度表示了转换的质量。
低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示:
(DS18B20出厂时被设置为12位)
表3-6R1与R0确定传感器分辨率设置表
R1
R0
传感器精度/bit
转换时间/ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
D.字节5~7,保留位,8:
CRC
光刻ROM介绍
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20温度传感器的存储器介绍
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
2DS18B20的工作过程
DS18B20一般都是充当从机的角色,而单片机就是主机。
单片机通过一线总线访问DS18B20的话,需要经过以下几个步骤:
①DS18B20复位(初始化),DS18B20复位。
在某种意义上就是一次访问DS18B20的开始,或者可说成是开始信号。
②执行ROM指令(ROM命令跟随着需要交换的数据);ROM指令,也就是访问,搜索,匹配,DS18B20个别的64位序列号的动作。
在单点情况下,可以直接跳过ROM指令。
(而跳过ROM指令的字节是0xCC,后面介绍)
③执行DS18B20功能指令(RAM指令),功能命令跟随着需要交换的数据。
DS18B20复位(初始化)
在初始化过程中,主机通过拉低单总线至少480µs,以产生复位脉冲(TX)。
然后主机释放总线并进入接收(RX)模式。
当总线被释
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 51 单片机 LCD1602 液晶显示 测温 系统