单片机DS18B20数字温度计课程设计报告.docx
《单片机DS18B20数字温度计课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机DS18B20数字温度计课程设计报告.docx(36页珍藏版)》请在冰豆网上搜索。
单片机DS18B20数字温度计课程设计报告
成绩南京工程学院
通信工程学院课程设计任务书
DS18B20数字温度计设计题目
B名称单片机原理及应用课程
专业
级班
姓名学生
学号
地点设计
师导教指
日月年月日至年设计起止时间:
1
一、绪论........................................................................................................................2
1.1设计目的..........................................................................................................2
1.2设计内容...........................................................................................................2
1.3设计要求...........................................................................................................2
二、基本设计...................................................................................................................................3
2.1基本思路………………………………………………………………………………….3
2.2系统设计原理…………………………………………………………………………….,3
2.3系统组成…………………………………………………………………………………..3
.6…………………………………………………………………………………三、系统硬件设计3.1系统电路接线图................................................................................................6
3.2主系统...............................................................................................................6
3.3显示电路LM016L...........................................................................................9
3.4蜂鸣器报警.....................................................................................................10
3.5DS18B20传感器.............................................................................................10
四、系统软件设计......................................................................................................14
4.1具体步骤和设计内容……………………………………………………………………14
4.1程序流程图...................................................................................................123
4.2源程序清单....................................................................................................16.
五、结果验证
5.1测试结果.........................................................................................................23
5.2仿真结果.........................................................................................................23
六、学习小结错误!
未定义书签。
、参考文献……………………………………………………………
2
绪论
1.1设计目的
1.掌握单总线协议的基本特点及通信过程;
2.掌握数字温度传感器DS18B20的基本特点及单总线控制协议;
3.掌握单片机IO端口模拟单总线时序控制程序的编写方法;
4.掌握LCD液晶显示器的显示驱动方法。
1.2设计内容
(1)基本内容:
在nKDE51单片机实验教学系统上,利用DS18B20数字温度传感器连续测试环境温度,对测试数据进行处理计算,在RT-1602字符点阵LCD上实时显示环境温度值;
。
:
实现环境温度越限告警功能2)附加内容(
1.3设计要求
1.单片机I/O口和DS18B20的数据段相连;
2.编写单片机通过IO端口模拟单总线时序控制DS18B20的程序,独出温度;
3.在1602字符点阵液晶显示模块上显示实时温度。
3
二、基本设计
2.1基本思路
本次课程设计主要是数字式环境温度测试仪设计,实现环境温度越限告警功能。
当LCD液晶显示器显示的温度小于29度时,只显示温度,当显示的温度大29。
,蜂鸣器鸣叫液晶显示器显示“HOT!
”度时,LCD2.2系统设计原理
利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。
同时处理后的数据送到LCD中显示。
2.3系统组成
本课题以是AT89C51单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路DS18B20,温度显示电路,蜂鸣器报警电路,单片机主板电路等组成。
系统框图主要由主控制器、单片机复位、蜂鸣器报警、时钟振荡、LCD显示、温度传感器组成。
系统框图如图所示:
LCD单片机复位显示电主路
时钟振荡电路控
制蜂
鸣器器
报警
温度传感器
方案设计图2-1主控制器14
单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
2温度显示电路
字符型液晶显示模块是一种专门用于显示字母、数字、符号等的点阵式液晶显示模块。
它是由若干个5*7或5*11等点阵字符位组成,每一个点阵字符位都可以显示一个字符。
点阵字符位之间有一定的间隔,起到字符间距和行距的作用。
3温度传感器
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
4蜂鸣器报警
当温度达到设定上下限时,蜂鸣器会发出报警,同时有液晶显示“LOW!
”或者“HOT!
”,同时可看到被测物体温度或环境实时温度。
5
三、系统硬件设计
3.1系统电路接线图
图3-1系统电路接线图
3.2主系统
AT89C51是一个低功耗,高性能8位单片机,片内含4kBytesISP(In-system
programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89C51在众多嵌入式控制应用系统中得到广泛应用。
主要性能特点
1、4kBytesFlash片内程序存储器;
2、128bytes的随机存取数据存储器;
3、32个外部双向输入/输出(I/O)口;
4、5个中断优先级、2层中断嵌套中断
5、6个中断源;
6、2个16位可编程定时器/计数器
7、2个全双工串行通信口;
8、片内振荡器和时钟电路;
6
9、与MCS-51兼容;
10、全静态工作:
0Hz-33MHz;
11、三级程序存储器保密锁定;
12、可编程串行通道;
13、低功耗的闲置和掉电模式。
管脚说明:
VCC:
电源电压输入端。
GND:
电源地。
单片机引脚图图3-2
引脚功能说明:
当门电流。
每脚可吸收8TTL8P0口为一个位漏级开路双向I/O口,P0口:
能够用于外部程序数据存储P01时,被定义为高阻输入。
P1口的管脚第一次写口作为原码输入编程时,P0/它可以被定义为数据地址的第八位。
在FIASH器,P0外部必须被拉高。
进行校验时,P0输出原码,此时FIASH口,当口缓冲器能接P1位双向I/O口,口:
P1P1口是一个内部提供上拉电阻的8P1后,被内部上拉为高,可用作输入,口管脚写入1收输出4TTL门电流。
P1作为第口被外部下拉为低电平时,将输出电流,这是由于内部上拉的在FLASH3P1口作为第八位地址八编程和校验时,P1口编程和校验时,口缓冲器可接收,口,P2I/OP2P2口:
口为一个内部上拉电阻的8位双向”时,其管脚被内部上拉电阻拉高,且作1口被写“门电流,当个输出4TTLP27
为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口除了作为普通I/O口,还有第二功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(T0定时器的外部计数输入)
P3.5T1(T1定时器的外部计数输入)
P3.6/WR(外部数据存储器的写选通)
P3.7/RD(外部数据存储器的读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到内部总线。
89C51的P0、P1、P2、P3口作为输入时都是准双向口。
除了P1口外P0、P2、P3口都还有其他的功能。
RST:
复位输入端,高电平有效。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
地址锁存允许/编程脉冲信号端。
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号,低电平有效。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效8
的/PSEN信号将不出现。
EA/VPP:
外部程序存储器访问允许。
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)
XTAL1:
片内振荡器反相放大器和时钟发生器的输入端。
XTAL2:
片内振荡器反相放大器的输出端。
3.3显示电路LM016L
LM016L的结构及功能:
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。
IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,可查找参考书。
CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符。
图3-3引脚图
LM016L引脚功能说明:
Vss(1脚):
一般接地。
Vdd(2脚):
接电源。
Vee(3脚):
液晶显示器对比度调整端,接电源时对比度最弱,接地时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
RS(4脚):
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
9
R/W(5脚):
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
E(6脚):
E(或EN)端为使能(enable)端,下降沿使能。
DB0(7脚):
底4位三态、双向数据总线0位(最低位)。
DB1(8脚):
底4位三态、双向数据总线1位。
DB2(9脚):
底4位三态、双向数据总线2位。
DB3(10脚):
底4位三态、双向数据总线3位。
DB4(11脚):
高4位三态、双向数据总线4位。
DB5(12脚):
高4位三态、双向数据总线5位。
DB6(13脚):
高4位三态、双向数据总线6位。
DB7(14脚):
高4位三态、双向数据总线7位(最高位)(也是busyflang)。
寄存器选择控制如表3-1。
表3-1寄存器选择控制
RSR/W操作说明
00写入指令寄存器(清除屏等)
10读busyflag(DB7),以及读取位址计数器(DB0~DB6)值
01写入数据寄存器(显示各字型等)
1
1
从数据寄存器读取数据
3.4蜂鸣器报警
蜂鸣器的工作原理:
蜂鸣器的端口定义为P2.2,其原理根据将蜂鸣器的一端接高电平,另一端接至P2某一脚,编写的简单程序使那一脚为低电平即可使其发出声音,否则不响。
同时,在上下限报警时LCD显示“LOW!
”或“HOT!
”。
图3-4蜂鸣器引脚图
3.5DS18B20传感器
1.DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
10
内部结构图3-5DS18B20
引脚定义:
2.DS18B20
输出端;
(1)DQ为数字信号输入/
存储器与控制逻6温度传感ROT高温触发T低温触发配置寄存Vd发生CR8
(2)GND为电源地;。
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)
引脚图图3-6DS18B20工作原理DS18B203.相同,只是得到的温度值的位数DS1820DS18B20的读写时序和测温原理与。
因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms用于产生固定频率的脉冲信号低温度系数晶振的振荡频率受温度影响很小,随温度变化其振荡率明显改变,所产生的信号1送给计数器。
高温度系数晶振
℃所对应的一个和温度寄存器被预置在-551作为计数器2的脉冲输入。
计数器低温度系数晶振产生的脉冲信号进行减法计数,当计数器对基数值。
计数器1的预置将重新被装入,10时,温度寄存器的值将加1,计数器1的预置值减到如此循环直到计数器计数器1重新开始对低温度系数晶振产生的脉冲进行计数,时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温计数到02中,RAM818B201212度。
这是位转化后得到的位数据,存储在的两个比特的11
二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
DS18B20温度数据表如表3-2所示:
表3-2:
DS18B20温度数据表
DIGALOUTPUTDIGITALOUTPUT
TEMPERTURE(Hex)
(Binary)
07D0h0000011111010000+12
0550h0000010101010000+8
01991h0000000110010001+25.06200A2h+10.120000000010100010
0008h0000000000001000+0.000h0000000000000000
FFF8h-0.1111111111111000
Ff5Eh1111111101011110-10.12
FE6Fh1111111001101111℃-25.0625FC90h
℃-551111110010010000
4.DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
配置寄存器各位字节的意义如下表3-3:
表3-3:
配置寄存器结构
TMR1R011
低五位一直都是?
,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表3-4所示:
(DS18B20出厂时被设置为12位)
表3-4:
温度分辨率设置表
温度最大分辨率R1R0转换时间
93.75ms00位9187.5ms10位01
375ms110位1
750ms
1
位1
125.高速暂存存储器高速暂存存储器由9个字节组成,其分配如表5所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。
12
表3-5是对应的一部分温度值。
第九个字节是冗余检验字节。
表3-5DS18B20暂存寄存器分布
存储器内容字节地址
0LSByte)温度值低位1温度值高位MSByt2高温限值T3低温限(TL)
4配置寄存5保
6保
7保CR校验
6.根据DS18B20的通讯协议主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
RAM指令表如3-6所示:
表3-6RAM指令表
约定功能指定代码启动DS18B20进行温度转换,12位转换时最长为750ms(944H
温度变换位93.75ms)。
结果存入内部9字节RAM中
读暂存取0BEH读内部RAM中9字节的内容
字节送两字节数据限温度数.4写上、下发出向内部RAM的3写暂存取4EH据命令,紧跟该命令之后,是传送两字节的数据48H字节的内容复制到中第将ROM3、4EEPROM中复制暂存重调0B8H、中的第EEPROM中内容恢复到ROM34字节将EEPROM
读供电方发送“的供电模式。
寄生供电时读DS18B20DS18B200”,0B4H
式”1DS18B20外接电源供电发送“
13
四、系统软件设计4.1具体步骤和设计内容是否存在,然后通过调用读温度子1、主程序中首先初始化:
检测DS18B20中读出的值转换调用温度转换子程序把从DS18B20程序读出DS18B20的当前值,液晶显示器相应位置进行显示。
成对应的温度,调用显示子程序把温度值在LCD测量的当前温度值,读出:
读出并处理DS18B202、温度测量子程序的功能每一次读写之前都要先进行复码的形式存放在缓冲区,DS18B20的温度值以BCDRAM指令。
位,复位成功后发送一条ROM指令,最后发送BCD以:
把从DS18B20中读出的值转换成对应的温度值,温度转换子程序3、码的形式存放在缓冲区,正负号存放在符号标志位中。
:
显示子程序首先把温度转换子程序得到液晶显示器4、显示缓冲区和LCD液晶显示器动态显示程序显示的值变换后放入显示缓冲区,然后调用LCD
程序流程图4.2主程序)主程序(1
始化初
调用测温子程序
调用温度转换子程序
调用显示子程序显示
(2)温度测量子程序
开始
DS18B20复位初始化