数字温度传感器课程设计论文讲解.docx
- 文档编号:28650112
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:29
- 大小:607.34KB
数字温度传感器课程设计论文讲解.docx
《数字温度传感器课程设计论文讲解.docx》由会员分享,可在线阅读,更多相关《数字温度传感器课程设计论文讲解.docx(29页珍藏版)》请在冰豆网上搜索。
数字温度传感器课程设计论文讲解
基于数字温度传感器的数字温度计设计报告
课题要求:
利用数字温度传感器DS18B20与单片机结合来测量温度。
利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。
其温度测量范围为−55℃~125℃,精确到0.5℃。
数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,,实现温度显示。
1.原理分析(刘星)
采用AT89C51单片机作为控制核心对温度传感器DS18B20控制,读取温度信号并进行计算处理,并送数码管显示。
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制芯片AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用AT89C51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制而且体积小,硬件实现简单,安装方便。
用AT89C51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。
该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。
⒉方案选择(刘星)
按照系统设计功能的要求,确定系统由3个大的模块组成:
主控制器、测温电路和显示电路。
由AT89C51单片机组成硬件设计,AT89C51的EA接高电平,其外围电路提供能使之工作的晶振脉冲、复位按键,四个I/O分别接8路的单列IP座方便与外围设备连接。
当AT89C51芯片接到来自温度传感器的信号时,其内部程序将根据信号的类型进行处理,并且将处理的结果送到显示模块,发送控制信号控制各模块。
⒊元器件选择(黄学然)
3.1单片机
AT89C51芯片:
AT89C51是一个低电压,高性能CMOS8位单片机,片内含4K的可反复擦写的FLASH只读存储器和128BYTES的随机存取数据存储器,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。
AT89C51可以按照常规方法进行编程,也可以在线编程。
器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51令系统,片内置通用8位中央处理器和Flash存储单元,其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
主要特性:
·与MCS-51兼容
·4K字节可编程FLASH存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
管脚说明:
VCC:
供电电压。
GND:
接地。
P0:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
3.2温度传感器
DS18B20:
DS18B20封装图
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。
与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而使用DS18B20可使系统结构更趋简单,可靠性更高。
他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
以下是DS18B20的特点:
(1)独特的单线接口方式:
DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:
+3.0~+5.5V。
(4)测温范围:
-55-+125℃。
固有测温分辨率为0.5℃。
(5)过编程可实现9-12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
3.3显示屏
LCD1602液晶显示屏:
同时显示摄氏温度与华氏温度。
管脚分布:
LCD1602模块的管脚分布功能
管脚号
管脚名称
状态
管脚功能
1
Vss
电源地
2
Vdd
电源正极
3
V0
液晶显示偏压信号
4
RS
输入
寄存器选着
5
RW
输入
读、写操作
6
E
输入
使能信号
7
DB0
三态
数据总线0(LSB)
8
DB1
三态
数据总线
9
DB2
三态
数据总线
10
DB3
三态
数据总线
11
DB4
三态
数据总线
12
DB5
三态
数据总线
13
DB6
三态
数据总线
14
DB7
三态
数据总线(MSB)
15
LEDA
输入
背光+5V
16
LEDK
输入
背光地
3.4蜂鸣器
实现报警振铃音。
3.5其他元件
电容(30pf,10uf)、电阻(4.7k,8.2k)、三极管(8550)、晶振(12MHZ)、按键、杜邦线、排针若干,万能板。
⒋proteus原理图绘制(余琳玲)
4.1设计步骤
1.使用proteus软件画出原理图
2.使用keil软件
1)建立工程
2)为工程选择目标器件
3)设置工程的配置参数
4)打开程序文件
5)编辑和链接工程
6)纠正程序中的书写和错误并重新建立链接
7)生成hex文件
3.使用proteus软件进行仿真
4.2设计过程
硬件接线图见附录4
4.2.1单片机系统模块
4.2.2晶体振荡模块
晶振电路是提供系统时钟信号。
为了各部分的同步应当引入公用的外部脉冲信号作为振荡脉冲。
电容选择在10~30pF之间,因为电容的大小影响振荡器振荡的稳定性和起振的速度。
电容C1和C2的作用是稳定频率和快速起振,晶振CYS的振荡频率取12MHZ。
89C51单片机的时钟信号通常有两种方式产生,外部时钟和内部时钟方式,如下图所示:
4.2.3扬声器报警模块
系统设有一定的温度范围,当系统检测到的温度不在预设的范围时,则需发出报警,警报系统由PNP三极管和蜂鸣器组成。
4.2.4温度传感器模块
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
4.2.5液晶显示模块
硬件连线图:
指令:
1)Cleardisplay清显示
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
0
0
1
清显示指令将空位字符码20H送入全部DDRAM地址中,使DDRAM中的内容全部清除,显示消失;地址计数器AC=0,自动增1模式;显示归位,光标或者闪烁回到原点(显示屏左上角);但并不改变移位设置模式。
2)Returnhome归位
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
0
1
*
归位指令置地址计数器AC=0;将光标及光标所在位的字符回原点;但DDRAM中的内容并不改变。
3)Entrymodeset设置输入模式
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
1
I/D
S
I/D:
字符码写入或者读出DDRAM后DDRAM地址指针AC变化方向标志:
I/D=1,完成一个字符码传送后,光标右移,AC自动加1;
I/D=0,完成一个字符码传送后,光标左移,AC自动减1;
S:
显示移位标志:
S=1,将全部显示向右(I/D=0)或者向左(I/D=1)移位;
S=0,显示不发生移位;
S=1时,显示移位时,光标似乎并不移位;此外,读DDRAM操作以及对CGRAM的访问,不发生显示移位。
4)Displayon/offcontrol显示开/关控制
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
1
D
C
B
D:
显示开/关控制标志:
D=1,开显示;D=0,关显示;
关显示后,显示数据仍保持在DDRAM中,立即开显示可以再现;
C:
光标显示控制标志:
C=1,光标显示;C=0,光标不显示;
不显示光标并不影响模块其它显示功能;显示5X8点阵字符时,光标在第八行显示,显示5X10点阵字
符时,光标在第十一行显示;
B:
闪烁显示控制标志:
B=1,光标所指位置上,交替显示全黑点阵和显示字符,产生闪烁效果,Fosc=250kHz
时,闪烁频率为0.4ms左右;通过设置,光标可以与其所指位置的字符一起闪烁。
5)Cursorordisplayshift光标或显示移位
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
1
S/C
R/L
*
*
光标或显示移位指令可使光标或显示在没有读写显示数据的情况下,向左或向右移动;运用此指令可以实现显示的查找或替换;在双行显示方式下,第一行和第二行会同时移位;当移位越过第一行第四十位时,光标会从第一行跳到第二行,但显示数据只在本行内水平移位,第二行的显示决不会移进第一行;倘若仅执行移位操作,地址计数器AC的内容不会发生改变。
S/C
R/L
说明
0
0
光标向左移动,AC自动减1
0
1
光标向右移动,AC自动加1
1
0
光标和显示一起向左移动,AC值不变
1
1
光标和显示一起向右移动,AC值不变
6)Functionset功能设置
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
1
DL
N
F
*
*
功能设置指令设置模块数据接口宽度和LCD显示屏显示方式,即MPU与模块接口数据总线为4位或者是8位、LCD显示行数和显示字符点阵规格;所以建议用户最好在执行其它指令设置(读忙标志指令除外)之前,在程序的开始,进行功能设置指令的执行;
DL:
数据接口宽度标志:
DL=1,8位数据总线DB7~DB0;DL=0,4位数据总线DB7~DB4,DB3~DB0不用,使用此方式传送数据,需分两次进行;
N:
显示行数标志:
N=1,两行显示模式;N=0,单行显示模式;
F:
显示字符点阵字体标志:
F=1:
5X10点阵+光标显示模式;F=0:
5X7点阵+光标显示模式。
7)SetCGRAMaddressCGRAM地址设置
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
1
ACG5
ACG4
ACG3
ACG2
ACG1
ACG0
CGRAM地址设置指令设置CGRAM地址指针,它将CGRAM存储用户自定义显示字符的字模数据的首地址ACG5~ACG0送入AC中,于是用户自定义字符字模就可以写入CGRAM中或者从CGRAM中读出。
8)SetDDRAMaddressDDRAM地址设置
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
1
ADD6
ADD5
ADD4
ADD3
ADD2
ADD1
ADD0
DDRAM地址设置指令设置DDRAM地址指针,它将DDRAM存储显示字符的字符码的首地址ADD6~ADD0送入AC中,于是显示字符的字符码就可以写入DDRAM中或者从DDRAM中读出;值得一提的是:
在LCD显示屏一行显示方式下,DDRAM的地址范围为:
00H~4FH;两行显示方式下,DDRAM的地址范围为:
第一行00H~27H,第二行40H~67H。
9)Readbusyflagandaddress读忙标志BF和AC
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
当RS=0和R/W=1时,在E信号高电平的作用下,BF和AC6~AC0被读到数据总线DB7~DB0的相应位;
BF:
内部操作忙标志,BF=1,表示模块正在进行内部操作,此时模块不接收任何外部指令和数据,直到BF=0为止;
AC6~AC0:
地址计数器AC内的当前内容,由于地址计数器AC被CGROM、CGRAM和DDRAM的公用指针,因此当前AC内容所指区域由前一条指令操作区域决定;同时,只有BF=0时,送到DB7~DB0的数据AC6~AC0才有效。
10)WritedatatoCGRAMorDDRAM写数据到CGRAM或DDRAM
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1
0
D7
D6
D5
D4
D3
D2
D1
D0
写数据到CGRAM或DDRAM指令,是将用户自定义字符的字模数据写到已经设置好的CGRAM的地址中,或者是将欲显示字符的字符码写到DDRAM中;欲写入的数据D7~D0首先暂存在DR中,再由模块的内部操作自动写入地址指针所指定的CGRAM单元或者DDRAM单元中。
11)ReaddatafromCGRAMorDDRAM从CGRAM或DDRAM中读数据
指令码:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1
1
D7
D6
D5
D4
D3
D2
D1
D0
从CGRAM或DDRAM中读数据指令,是从地址计数器AC指定的CGRAM或者DDRAM单元中,读出数据D7~D0;读出的数据D7~D0暂存在DR中,再由模块的内部操作送到数据总线DB7~DB0上。
5.综合调试(刘星、余琳玲、黄学然)
系统程序主要包括主程序、读出温度子程序、温度转换子程序、计算温度子程序、显示等等,由余琳玲同学编写。
程序于附录
硬件方面主要由黄学然和刘星调试焊接,一开始存在少许不易发现的焊点虚焊漏焊现象,导致显示屏无显示,后改正后可以得出正常显示温度,证明我们的课程设计实验初步取得成功。
6.总结(刘星、余琳玲、黄学然)
本次课程设计经过我们小组三个同学的齐心协力最终获得了成功,此次实验中我们还有不少需要改善的地方,比如这个温度计不能快速的反应温度变化,不能做到接触测量(由于DS18B20焊接在电路板上),同时焊接技艺还没有达到极致,美观上略有欠缺。
我们在仿真调试中也获得不少感悟:
画图的时候应仔细连线,线一旦连错,程序无法正常运行。
程序烧写到单片机,实物运行不能显示正常结果,要认真检查仿真图的连线正确与否以及焊接电路是否出现虚焊、漏焊,元器件是否错放。
附录1
C语言程序
#include
#include
#include"18b20.h"//18b20头文件
#include"1602.h"//18b20头文件
//宏定义
#defineucharunsignedchar
#defineuintunsignedint
//定义变量
uintbw,sw,gw;
uchartable[]="0123456789";
ucharalarm[]="Alarm";
ucharj;//1602显示的字符个数
longinttem,tem1;//tem为摄氏温度,tem1为华氏温度,baojing为警报温度值
longintbaojing=38;
sbitspeaker=P1^0;
voidbeep();//函数声明蜂鸣器函数
voiddisplay(void)//18b20显示摄氏温度
{EX0=0;
tem=duqu_wendu();
if(tem>baojing)
{beep();
}
bw=tem/10;
sw=tem%10;
write1602(0x80+0x00);
read1602(table[bw]);
write1602(0x80+0x01);
read1602(table[sw]);
write1602(0x80+0x02);
read1602(0xdf);
write1602(0x80+0x03);
read1602('C');
write1602(0x80+0x04);
read1602('');
EX0=1;
}
voiddisplay1(void)//18b20显示华氏温度
{EX0=0;
tem1=duqu_wendu()*1.8+32;
if(tem1>(baojing*1.8+32))
{beep();
}
bw=tem1/100;
sw=(tem1%100)/10;
gw=tem1%10;
write1602(0x80+0x0b);
read1602(table[bw]);
write1602(0x80+0x0c);
read1602(table[sw]);
write1602(0x80+0x0d);
read1602(table[gw]);
write1602(0x80+0x0e);
read1602(0xdf);
write1602(0x80+0x0f);
read1602('F');
EX0=1;
}
voiddisplaybaojing(void)//显示报警温度值
{
bw=baojing/100;
sw=baojing/10;
gw=baojing%10;
write1602(0x80+0x4b);
read1602(table[bw]);
write1602(0x80+0x4c);
read1602(table[sw]);
write1602(0x80+0x4d);
read1602(table[gw]);
write1602(0x80+0x4e);
read1602(0xdf);
write1602(0x80+0x4f);
read1602('C');
}
v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 温度传感器 课程设计 论文 讲解