基于单片机的数字电子钟温度计的设计毕业设计.docx
- 文档编号:11978855
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:91
- 大小:1.39MB
基于单片机的数字电子钟温度计的设计毕业设计.docx
《基于单片机的数字电子钟温度计的设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字电子钟温度计的设计毕业设计.docx(91页珍藏版)》请在冰豆网上搜索。
基于单片机的数字电子钟温度计的设计毕业设计
基于单片机的数字电子钟温度计的设计毕业设计
第一章绪论
1.1设计的意义
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是重要事情,一时的耽误可能酿成大祸。
这类因忘记时间而引起的灾祸不胜枚举,导致的经济损失数不胜数,且有的事故直接威胁人们的人身安全。
所以,一个定时、报时系统是人们日常生活极其必要的。
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
钟表的数字化给人们的生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
另一方面,传感器的被测信号来自于各个应用领域,每个领域都为了提高生产力、提高功效和时效,各自在开发研制适合应用的传感器,于是种类繁多的新型传感器及传感系统不断涌现。
温度传感器是其中重要的一类传感器。
其发展速度之快,以及其应用之广,并且还有很大潜力。
1.2设计的目的
为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。
本系统旨在为人们的日常生活提供时间和温度信息,为人们的学习、工作和生活提供便利。
随着社会的发展,科技的进步,以及传感器在各个领域的应用,智能化已成为社会发展势不可挡的趋势。
单片机作为微电控制的基础,对于国家未来的发展有着深远意义。
单片机的应用很广泛,使用也比较灵活,尤其是在对成本要求较为苛刻的地方,可以说在中国的社会主义初级阶段时间里,单片机是能够占有一席之地的。
单片机的学习和应用对于我们当代青年人就显得尤为重要。
1.3本设计的研究范围及技术要求
硬件主要由单片机89S51、液晶显示器LCD1602、万年历芯片DS1302和温度传感器DS18B20等组成;使用Protel99SE绘制电路原理图和印刷电路板PBC;应用KeiluVision源代码编辑、调试;进行软件和硬件总调试,将HEX文件下载到单片机内。
实现正常的走时和年月日时分秒显示,用一开关可控制不显示;测量温度并显示;用户可设置初始时间和日期;可设置多个闹钟和整点报时。
第二章单片机AT89S51
2.1AT89S51的介绍
AT89S51向下完全兼容51全部字系列产品,比如8051、89C51等等早期MCS-51兼
容产品。
也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还
是89C51还是MCS-51系列等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。
,它功能强大、使用灵活是具有较高性能性价比的微控制器。
[1]对它的新功能本文不予叙述,只用它作为MSC-51系列所共有的基本功能。
相对于89C51,89S51新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!
ISP在线编程功能,可直接把生成的机器码(HEX文件)下载到片内ROM中,无需编程器,是一个强大易用的功能。
最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
双数据指示器,电源关闭标识。
全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
2.2AT89S51的特性
89S51在工艺上进行了改进,89S51采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力。
89SXX可以像下兼容89CXX等51系列芯片。
市场上见到的89C51实际都是Atmel前期生产的巨量库存而以。
如果市场需要,Atmel当然也可以再恢复生产AT89C51。
AT89S51/LS51单片机是低功耗的、具有4KB在线编程Flash存储器的单片机。
它与通用80C51系列单片机的指令系统和引脚兼容。
片内的Flash可允许在线重新编程,也可使用非易失性存储器编程。
他将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能性价比的微控制器。
片内程序存储器含有4KB的Flash存储器,允许在线编程,擦写周期可达1000次;片内数据存储器内含128字节的RAM;I/O口具有32根可编程I/O线;具有两个16位I/O线;中断系统具有6个中断源、5个终端矢量、2个中断优先级的中断结构;串行口是一个全双工的串行通信口;具有两个数据指针DPTR0和DPTR1;低功耗节电模式有节电模式和掉电模式;包含3级程序锁定位;AT89S51的电源电压为4.0-5.5V,AT89LS51的电源电压为2.7-4.0V;振荡器频率0-33MHz(AT89S51),0-16MHz(A-T89LS51);具有片内看门狗定时器;灵活的在线片内编程模式(字节和页编程模式);具有断电标志模式POF。
[2]
2.3AT89S51的引脚排列
(1)P0口8位、开漏极、双向I/O口。
P0口可作为通用I/O口,但必须外接上拉电阻;作为输出口,每个引脚可吸收8个TTL的灌电流。
作为输入时,首先应将引脚置1。
P0口也可用作外部程序存储器和数据存储器是的低八位地址/数据总线的复用线。
在该模式下,P0口含有内部上拉电阻。
在Flash编程时,P0口接受代码,输出代码字节数据(需要外接上拉电阻)。
(2)P1口8位、双向I/O口、内部含有行拉电阻。
P1可作为普通I/O口。
输出缓冲器可驱动4个TTL负载;用作输入时,先交引脚置1,有片内上拉电阻将其抬到高电平。
P1口的引脚可由外部负载拉倒低电平,通过上拉电阻提供拉电流。
在Flash并行编程和校验时,P1口可输入低字节地址。
在串行编程和校验时,P1.0/MOSI,P1.6/OSI和P1.7/SCK分别是串行数据输入、输出和移位脉冲引脚。
I/O具有内部拉电阻的8位双向I/O。
(2)P2口用作输出口时,可驱动四个TTL负载;用作输入口时,先将引脚置1,由内部上拉电阻将其提高到高电平。
若负载为低电平,则通过内部上拉电阻向外输出电流。
CPU访问外部16位地址的存储器时,P2口提供高8位的地址。
当CPU用8位地址寻址外部存储器时,P2口为P2特殊功能寄存器内容。
在FLASH并行编程和校检时,P2口可输入高字节地址和某些控制信号。
(3)P3口局有内部上拉电阻8位双向口。
P3口做输出口时,输出缓冲器可吸收4个TTL的灌电流;用作输入口时,首先将引脚置1,有内部上拉电阻抬为高电平。
若外部负载是低电平,则通过内部上拉电阻向外输出电流。
在与FLASH并行编程和校检时,P3口可输入某些控制信号。
[3]
第三章单片机外围扩展芯片
3.1DS1302万年历时钟芯片
低功耗时钟芯片DS1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现数据的时间同时记录。
采用DS1302作为记录测控系统中的数据记录,其硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性。
若采用单片机计时,一方面需要采用计数器,另一方面需要设置中断、查询等,都要耗费单片机资源,而且某些测控系统可能不允许。
而在系统中采用DS1302则能很好地解决这个问题。
实时时钟,可对秒、分、时、日、周、月以及闰年补偿的年进行计数;用于高速数据暂存的31×8位RAM;最少引脚的串行I/O;2.5~5.5V电压工作范围,2.5V时耗电小于300nA;用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;简单的3线接口;可选的慢速充电(至Vcc1)图3-1DS1302管脚图
的能力;当Vcc2大于Vcc10.2V时,给DS1302供电,当Vcc2小于Vcc1时,DS1302由Vcc1供电。
下面是DS1302的内部寄存器和RAM:
图3-2左边为寄存器和RAM的地址,右边为具体内容。
各个寄存器的最高位都是1,最低位都是“RD/W”,比如要读时寄存器则命令为10000101,反之写为10000100,要注意其含义。
SEC:
秒寄存器,注意具体右边内容:
低四位为SEC(个位),高的次三位为10SEC(十位),最高位CH为DS1302的运行标志,当CH=0时,DS1302内部时钟运行,反之CH=1时停止。
MIN:
分寄存器。
HR:
时寄存器,最高位为12/24小时的格式选择位,该位为1时表示12小时格式;当设置为12小时显示格式时,第5位的高电平表示下午(PM);而当设置为24小时格式时,第5位为具体的时间数据。
DATE:
日寄存器。
MONTH:
月寄存器。
DAY:
周寄存器,注意一周只有7天,所以该寄存器只有低三位有效。
YEAR:
年寄存器。
CONTROL:
写保护寄存器,当该寄存器最高位WP为1时,DS1302只读不写,所以要在往DS1302写数据之前确保WP为0。
图3-2DS1302的内部寄存器
TRICKLECHARGEREGISTER:
涓细电流充电设置寄存器,我们知道,当DS1302掉电时,可以马上调用外部电源保护时间数据。
该寄存器就是配置备用电源的充电选项的。
其中高四位(4个TCS)只有在1010的情况下才能使用充电选项;低四位的情况,与DS1302内部电路有关,本文电路该寄存器内容为10100000。
CLOCKBURST:
批量读写操作设置寄存器,设置该寄存器后,可以对DS1302的各个寄存器进行连续写入。
DS1302有31个字节的存储空间,但这31个存储空间,最后一个是RAMBURST的寄存器,设置该寄存器可以达到对RAM连续读写的作用。
所以DS1302的可用存储空间实际上为30个字节[6]。
3.2LCD1602液晶显示芯片
(1)LCD1602的结构与基本参数
LCD1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD。
分为带背光和不带背光两种,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图3-3。
图3-3LCD1602的结构参数
表3-1LCD1602引脚说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
D8
背光源正极
8
D1
数据
16
D9
背光源负极
表3-1引脚接口说明表
第1脚:
VSS为地电源;
第2脚:
VDD接5V正电源;
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度;
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据;
第6脚:
E端为使能端,读操作时,高电平有效,写操作时下降沿有效;
第7~14脚:
D0~D7为8位双向数据线;
第15脚:
背光源正极;
第16脚:
背光源负极。
(2)LCD1602内部寄存器指令
LCD1602液晶模块内部的控制器共有11条控制指令,如下表3-2所示
表3-2LCD1602寄存器指令
序号
指令
RS
R/W
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
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
写数据到CGRAM或DDRAM
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
要读的数据内容
1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。
(说明1为高电平,0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置;
指令2:
光标复位,光标返回到地址00H;
指令3:
光标和显示位置设置I/D,光标移动方向,高电平右移,低电平左移,S:
屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效;
指令4:
显示开关控制。
D:
控制整体的显示开与关,高电平表示开显示,低电平表示关显示。
C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁;
指令5:
光标或显示移位S/C:
高电平时显示移动的文字,低电平时移动光标;
S/L
R/L
说明
0
0
光标向左移动,AC自动减1
0
1
光标向右移动,AC自动加1
1
0
光标和显示一起向左移动
1
1
光标和显示一起向右移动
指令6:
功能设置命令DL:
高电平时为8位总线,低电平时为4位总线,N:
低电平时为单行显示,高电平时为双行显示,F:
低电平时显示5X7的点阵字符,高电平时显示5X10的显示字符;
指令7:
字符发生器RAM地址设置;
指令8:
DDRAM地址设置;
指令9:
读忙信号和光标地址BF:
忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙[7]。
(3)LCD1602的RAM地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3-4是1602的内部显示地址。
图3-4LCD1602内部显示地址
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?
这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表3-3所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
图3-5CGROM和CGRAM中字符代码与字符图形对应关系
3.3DS18B20温度传感器
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
图3-6DS18B20内部结构
(1)DS18B20技术性能
独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
测温范围-55℃~+125℃,固有测温分辨率0.5℃。
支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
工作电源:
3~5V,在使用中不需要任何外围元件。
测量结果以9~12位数字量方式串行传送,温度转换为12位数字格式最大值为750毫秒。
(2)DS18B20有4个主要的数据部件
1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
但本设计只用到一个DS18B20,所以不必读取ROM中的64位序列号。
2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
图3-7DS18B20温度值格式表
这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度,如表3-3。
表3-3DS18B20温度数据表
TEMPERATURE
DIGITALOUTPUT(Binary)
DIGITALOUTPUT(Hex)
+125℃
0000011111010000
07D0H
+85℃
0000010101010000
0550H
+25.0625℃
0000000110010001
0191H
+10.125℃
0000000010100010
00A2H
+0.5℃
0000000000001000
0008H
0℃
0000000000000000
0000H
-0.5℃
1111111111111000
FFF8H
-10.125℃
1111111101011110
FF5EH
-25.0625℃
1111111001101111
FE6FH
-55℃
1111110010010000
FC90H
3)DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
4)配置寄存器,该字节各位的意义如下:
表3-4配置寄存器结构
TM
R1
R0
1
1
1
1
1
低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如表3-5所示:
(DS18B20出厂时被设置为12位)分辨率设置表:
表3-5温度值分辨率设置表
R1
R0
分辨率
温度最大转换时间
0
0
9位
93.75ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
(3)高速暂存存储器
高速暂存存储器由9个字节组成,其分配如表3-7所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表3-4所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。
第九个字节是冗余检验字节。
表3-6DS18B20暂存寄存器分布
寄存器内容
字节地址
温度值低位
0
温度值高位
1
高温限值TH
2
低温限值TL
3
配置寄存器
4
保留
5
保留
6
保留
7
CRC检验
8
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功[8]。
表3-7ROM指令表
指令
约定代码
功能
读ROM
33H
读DS18B20ROM中的编码(即64位地址)
符合ROM
55H
发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20使之作出响应,为下一步对该DS18B20的读写作准备。
搜索ROM
0F0H
用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址。
为操作各器件作好准备。
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20发温度变换命令。
适用于单片工作。
告警搜索命令
0ECH
执行后只有温度超过设定值上限或下限的片子才做出响应。
表3-8RAM指令表
指令
约定代码
功能
温度变换
44H
启动DS18B20进行温度转换,转换时最长为500ms(典型为200ms)。
结果存入内部9字节RAM中。
读暂存器
0BEH
内部RAM中9字节的内容
写暂存器
4EH
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。
复制暂存器
48H
将RAM中第3、4字节的内容复制到EEPROM中。
重调EEPROM
0B8H
将EEPROM中内容恢复到RAM中的第3、4字节。
读供电方式
0B4H
读DS18B20的供电模式。
寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”。
第四章总体软硬件设计
4.1硬件及功能要求
(1)硬件要求使用AT89S51单片机,DS18B02温度传感器,DS1302万年历芯片,LCD1602液晶显示器等;
(2)功能:
实现正常的走时和年月日时分秒显示,用一开关可控制不显示;测量温度并显示;用户可设置初始时间和日期;可设置多个闹钟和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 电子钟 温度计 设计 毕业设计