基于51单片机环境温度检测及显示教材.docx
- 文档编号:29022865
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:36
- 大小:395.26KB
基于51单片机环境温度检测及显示教材.docx
《基于51单片机环境温度检测及显示教材.docx》由会员分享,可在线阅读,更多相关《基于51单片机环境温度检测及显示教材.docx(36页珍藏版)》请在冰豆网上搜索。
基于51单片机环境温度检测及显示教材
摘要
本次的温度检测设计及显示以AT89C51单片机系统进行温度采集,AT89C51单片机系统进行控制,温度信号由温度传感器18b20采集,通过8255键盘控制输入89C51,温度数据传输采用12864液晶显示模块来实现。
本次设计实现了:
⏹检测温度范围:
0℃--100℃。
⏹检测器单元可显示检测的温度值。
⏹采用12864液晶显示模块显示。
⏹采用8255控制键盘。
本次的温度检测及显示设计主要研究了单片机与12864液晶显示模块、温度检测芯片18b20接口之间的作用,学会根据外围电路设计进行软件编程及系统调试,练习撰写实训总结报告,培养我们运用专业知识设计智能仪器的能力。
为以后的改进和发展奠定了很好的基础。
关键词:
温度检测、AT89C51单片机系统、温度传感器18b20、8255键盘、12864液晶显示模块
目录
第一章绪论4
1.1环境温度检测的概述4
1.2环境温度检测的现状和发展前景4
1.2.1环境温度检测的现状4
1.2.2环境温度检测的发展前景5
1.3环境温度检测研究的主要内容5
第二章环境温度检测及显示总体的设计方案6
2.1环境温度检测及显示的各个部分的设计方案6
2.1.1测量部分6
2.1.2远程通信部分6
2.1.3显示部分6
2.2环境温度检测及显示的总体的设计结构7
第三章环境温度检测及显示主要模块的组成8
3.1温度检测芯片DS18B20模块8
3.1.1DS18B20的技术参数8
3.1.2DS18B20数字温度计的封装与外形尺寸8
3.1.3DS1820使用中注意事项8
3.212864液晶显示模块9
3.2.1OCM4X8C汉字液晶屏引脚表9
3.2.2OCM4X8C接口方式与时序10
3.38255按键模块11
3.3.1引脚说明11
3.3.2内部结构11
3.3.3工作方式控制电路12
3.3.4总线数据缓冲器12
3.3.58255三种基本工作方式12
3.3.6读/写控制逻辑电路12
第四章系统的软件实现13
4.1主程序的流程图13
4.2按键的流程图13
4.3时间功能的流程图14
第五章环境温度检测系统显示15
5.1应用DXP2004绘制环境温度检测及显示原理图15
5.1.1电路原理图的PCB显示15
5.2环境温度显示16
5.2.1环境温度显示使用和操作说明16
第六章心得体会18
参考文献19
附录20
程序代码20
1.头文件20
2.DS18B20的主要程序代码20
3.12864的主要程序代码22
4.8255的主要程序代码24
5.时钟的主要程序24
6.动画的主要程序代码25
第一章绪论
1.1环境温度检测的概述
环境温度检测实质上就是对周围环境温度的测量,周围环境的温度变化,检测到的温度会随着周围环境的变化而变化。
温度测量仪表按测温方式可分为接触式和非接触式两大类。
一、接触式测温仪表测温仪表:
比较简单、可靠,测量精度较高;但因测温元件与被测介质需要进行充分的热交金刚,帮需要一定的时间才能达到热平衡,所以存在测温的延迟现象,同时受耐高温材料的限制,不能应用于很高的温度测量。
二、非接触式仪表测温:
通过热辐射原理来测量温度的,测温元件不需与被测介质接触,测温范围广,不受测温上限的限制,也不会破坏被测物体的温度场,反应速度一般也比较快。
但是,在本设计中,我们采用的是DS18B20温度传感器,通过检测周围环境而显示当前的温度值。
温度是影响传感器性能的一个关键因素,温度补偿对于提高传感器的性能起到关键作用,在研制新一代的传感器中,温度测量的难题以再一次摆在人们的面前。
因此,如何在传感器极小的空间内精确地测量、传输、处理温度信息是制约传感器性能和体积的关键,采用进口高性能、小体积、数字化温度元件DS18B20可以很好地解决这个问题,另外,有些传感器需要多点温度补偿,只需将多个DS18B20并联就可以解决这个问题,无需增加硬件,电路非常简单。
故而,我们采用DS18B20温度传感器检测周围环境,显示当前温度值。
1.2环境温度检测的现状和发展前景
1.2.1环境温度检测装置的现状
据网上信息的显示,我国环境温度检测装置在的应用宏观环境分析:
图1.1我国温度检测装置产业宏观经济环境分析
1.2.2环境温度检测装置的发展前景
环境温度检测装置的发展前景:
图1.2国内温度检测装置供给分布图
图1.3国内温度检测装置的需求结构分布图
1.3环境温度检测研究的主要内容
本次的温度检测及显示设计主要研究了单片机与12864液晶显示模块、温度检测芯片DS18B20接口之间的联系,学会根据外围电路设计进行软件编程及系统调试。
通过这些的结合,使得该设计达到一个目标:
通过对周围环境的检测来显示当前的温度值。
第二章环境温度检测及显示总体的设计方案
2.1环境温度检测及显示的各个部分的设计方案
2.1.1测量部分
方案一、采用热敏电阻,可满足40~90℃的测量范围,但热敏电阻精度、重复性、可靠性都比较差,对于检测小于1℃的温度信号是不适用的。
方案二、采用DS18B20。
DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!
性能价格比也非常出色!
它是DALLAS公司专利产品,在20~75℃范围内精度为0.5℃,但是在此范围外的温度测量却误差虽然比较大,而且其串行数字输出方式采用软件处理比较困难,但是,正好锻炼我们在面对困难时克服困难的精神。
综上比较分析,我们选择方案二,以实现较好的温度测量实现。
2.1.2远程通信部分
方案一、一般微机提供的标准接口为RS232,它的接口是一种用于近距离(最大30-60米)、慢速度、点对点通讯的通讯协议,在RS232中一个信号只用到一条信号线,采取与地电压参考的方式,因而在长距离传输后,发送端和接收端地电压有出入,容易造成通讯出错或速度降低。
方案二、采用89C51编码后以并行方式传输数据。
它的优点是方便实现,软件开销小。
综上比较分析,方案二容易实现,我们选择方案二。
2.1.3显示部分
方案一、向每一个数码管发送数据,通过控制器控制显示顺序,由于显示速度快,肉眼看不出闪烁,完成显示。
但是占用控制器资源太多。
方案二、通过12864液晶显示模块显示,用键盘通过8255控制液晶显示模块显示,控制器资源占用少。
综合分析,我们决定使用方案二。
2.2环境温度检测及显示的总体的设计结构
图2.1系统总体的设计结构图
由系统的总体结构可知,本系统主要由电源供给、89C51单片机、温度传感器DS18B20、8255按键、12864液晶显示模块这五大部分组成。
第三章环境温度检测及显示主要模块的组成
3.1温度检测芯片DS18B20模块
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
3.1.1DS18B20的技术参数
序号
项目
内容
1
内置传感器
DS18B20
2
温度精度
±0.5℃(-10°~+85°C范围内)
3
测温范围
-55℃~+125℃
4
温度分辨率
9-12位(0.0625℃)
5
测温速度
750ms(12位分辨率)
6
电源要求
3V-5.5V
7
支持通讯电缆长度
100m
8
材质
314不锈钢
9
外型尺寸
φ6mm 长度25mm,30mm可选
10
运行环境
-55℃~+80℃
表3.1DS18B20的技术参数表
3.1.2DS18B20数字温度计的封装与外形尺寸
图3.1DS18B20的封装图图3.2DS18B20的外形尺寸图
3.1.3DS1820使用中注意事项
(1)较小的硬件开销需要相对复杂的软件进行补偿。
(2)单总线上所挂DS1820超过8小时,需要解决微处理器的总线驱动问题。
(3)连接DS1820的总线电缆是有长度限制的。
(4)在DS1820测温程序设计中DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。
3.212864液晶显示模块
12864液晶显示模块也就是OCM4X8C液晶显示模块,是通过串行扫描方式与单片机连接,用来显示文字,图像。
3.2.112864液晶显示模块的概述和比较
概述:
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集。
利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字。
也可完成图形显示。
低电压低功耗是其又一显著特点。
比较:
该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
3.2.1OCM4X8C汉字液晶屏引脚表
如下所示:
引脚
名称
方向
说明
引脚
名称
方向
说明
1
VSS
-
GND(0V)
11
DB4
I/O
数据4
2
VDD
-
SupplyVoltageForLogic
(+5v)
12
DB5
I/O
数据5
3
VO
-
SupplyVoltageForLCD
(悬空)
13
DB6
I/O
数据6
4
RS(CS)
H/L
H:
DataL:
InstructionCode
14
DB7
I/O
数据7
5
R/W
(STD)
H/L
H:
ReadL:
Write
15
PSB
H/L
H:
ParallelMode
L:
SerialMode
6
E(SCLK)
H,H/L
EnableSignal
16
NC
-
空脚
7
DB0
I/O
数据0
17
/RST
H/L
ResetSignal
低电平有效
8
DB1
I/O
数据1
18
NC
-
空脚
9
DB2
I/O
数据2
19
LEDA
-
背光源正极(LED+5V)
10
DB3
I/O
数据3
20
LEDK
-
背光源负极(LED-OV)
表3.2OCM4X8C汉字液晶屏引脚表
3.2.2OCM4X8C接口方式与时序
(1)4/8位并行接口方式当模块的PSB脚接高电平时,模块即进入并行接口模式。
在并行模式下可由功能设定指令的“DL”位来选择8位或4接口方式,主控制系统将配合“RS”、“RW”、“E”DB0~DB7来完成指令/数据的传送,其操作时序与其它并行接口液晶显示模块相同。
(2)2/3线串行接口方式
当模块的PSB脚接低电平时,模块即进入串行接口模式。
串行模式使用串行数据线SID与串行时钟线SCLK来传送数据,即构成2线串行模式。
本系统选择的是串行接口控制方式,工作原理如下:
OCM4X8C还允许同时接入多个液晶显示模块以完成多路信息显示功能。
此时,要利用片选端“CS”构成3线串行接口方式,当“CS”接高电位时,模块可正常接收并显示数据,否则模块显示将被禁止。
通常情况下,当系统仅使用一个液晶显示模块时,“CS”可连接固定的高电平。
线串行工作操作时序如图1所示。
由图1可以看出,单片机与液晶模块之间传送1字节的数据共需24个时钟脉冲。
首先,单片机要给出数据传输起始位,这里是以5个连续的“1”作数据起始位,如模块接收到连续的5个“1”,则内部传输被重置并且串行传输将被同步。
紧接着,“RW”位用于选择数据的传输方向(读或写),“RS”位用于选择内部数据寄存器或指令寄存器,最后的第8位固定为“0”。
在接收到起始位及“RW”和“RW”的第1个字节后,下一个字节的数据或指令将被分为2个字节来串行传送或接收。
数据或指令的高4位,被放在第2个字节串行数据的高4位,其低4位则置为“0”;数据或指令的低4位被放在第3个字节的高4位,其低4位也置为“0”,如此完成一个字节指令或数据的传送。
需要注意的是,当有多个数据或指令要传送时,必须要等到一个指令完成执行完毕后再传送下一个指令或数据,否则,会造成指令或数据的丢失。
这是因为液晶模块内部没有发送/接收缓冲区。
图3.3OCM4X8C的2线串行工作模式操作时序图
3.38255按键模块
8255A具有3个8位的并行I/O口,具有三种工作方式,可通过程序改变其功能,因而使用灵活方便,通用性强,可作单片机与多种外围设备连接时的中间接口电路。
3.3.1引脚说明
8255共有40个引脚,采用双列直插式封装。
各引脚功能如下:
D7~D0:
三个态双向数据线,与单片机数据总线连接,用来传送数据信息。
CS:
片选信号线,低电平有效,表示芯片被选中。
RD:
读出信号线,低电科有效,控制数据的读出。
WR:
写入信号线,低电平有效,控制数据的写入。
VCC:
+5V电源。
PA7~PA0:
A的输入/输出线。
PB7~PB0:
B口输入/输出线。
PC7~PC0:
C口输入/输出线。
RESET:
复位信号线。
A1~A0:
地址线,用来选择8255内部端口。
GND:
地线。
3.3.2内部结构
8255内部结构其中包括三个并行数据输入/输出端口,二个工作方式控制电路,一个读/写控制逻辑电路和8位总线缓冲器。
各部分功能概括如下:
端口A、B、C
A口:
是一个8位数据出锁器/缓冲器和一个8位数据输入锁存器。
B口:
是一个8位数据输入/输出锁存器和一个8位数据输入结冲器。
C口:
是一个8位数据输入/输出端口。
C作为控制/状态住处缓冲器(输入不锁存)。
通常A口、B口作为数据输入/输出端口。
C口作为控制/状态信息端口,它在“方式控制字”的控制下可分为二个4位端口。
每个端口有一个4位锁存器,分别与A口和B口配合使用,作为控制信号输出或状态信息输入端口。
3.3.3工作方式控制电路
工作方式控制电路有两个,一个是A组控制电路,另一个是B组控制电路。
这两组控制电路具有一个控制命令寄存器,用来接收中央处理器发来的控制字,以决定两组端口的工作方式,也可根据控制字的要求对C口按位清“0”或者位置“1”。
A组控制电路用来控制A口和C口的上半部分(PC7~PC4)。
B组控制电路用来控制B口和C口的下半部分(PC3~PC0)。
3.3.4总线数据缓冲器
总线数据缓冲器是一个三态双向8位缓冲器,作为8255与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。
3.3.58255三种基本工作方式
方式0:
(MODE0):
基本输入输出
方式1(Mode1):
选通输入输出
方式2(Mode2):
双向传送
3.3.6读/写控制逻辑电路
读/写控制逻辑电路接收CPU发来的控制信号WR、RD、RESET、地址信号A1~A0等,然后根据控制信号的要求,将端口数据读出,送往CPU,或者将CPU送来的数据写入端口。
各端口的工作状态如表二所求。
表二 8255接口工作状态表
A1 A2
RD WR CS
工作状态
0 0
0 1
1 0
0 1 0
0 1 0
0 1 0
A口数据 数据总线
B口数据 数据总线
C口数据 数据总线
0 0
0 1
1 0
1 1
1 0 0
1 0 0
1 0 0
1 0 0
总线数据 A口
总线数据 B口
总线数据 C口
总线数据 控制字寄存器
╳ ╳
1 1
╳ ╳
╳ ╳ 1
0 1 0
1 1 0
数据总线 三态
非法状态
数据总线 三态
表3.38055各端口的工作状态
本系统采用方式0工作,通过控制字设PB口为输入,检测哪个键被按下,将数据通过P0口送给单片机处理。
第四章系统的软件实现
4.1主程序的流程图
图4.1主程序的流程图
4.2按键的流程图
图4.2按键的流程图
4.3时间功能的流程图
图4.3时间功能的流程图
第五章环境温度检测系统显示
5.1应用DXP2004绘制环境温度检测及显示原理图
我们设计的是一种有P89V51单片机控制的OCM4X8C汉字液晶屏。
采用串行扫描方式进行显示,有占用I/O口小的特点。
整个系统由单片机、74HC138、74HC373、OCM4X8C液晶屏,8255A和按键组成,以P89V51单片机为控制核心。
5.1.1电路原理图的PCB显示
显示如下:
图5.1电源及单片机等模块
图5.2按键及8255等模块
图5.3串行口及液晶显示等模块
5.2环境温度显示
5.2.1环境温度显示使用和操作说明
我们使用的开发环境为Flashmagic,打开Flashmagic,打开附录里的工程文件,编绎出hex文件,将hex文件下载到单片机里,复位一下。
此时液晶屏会出现如图所示:
图5.4智能仪器实训图显示图5.5主界面(或者按键)显示
按液晶屏上的提示,按K4键。
如按下K4,会出现:
图5.6设计人员的显示
如按下K5,会出现:
图5.7当前温度的显示
如按下K6,会出现动画:
图5.8动画“谢谢”的显示
如按K7,则显示时间:
图5.9时间的显示
总的实物图:
图5.10总的实物图
参考文献
[1]祁伟.单片微型计算机原理与接口技术教程[M].北京:
北京航空航天大学出版社,2007.
[2]马忠梅.单片机的C语言应用程序设计[M].北京:
北京航空航天大学出版社,2007.
[3]杨欣荣.智能仪器原理、设计与发展.中南大学出版社,2006.7.
[4]李朝青.单片机原理及接口技术(修订版)[M].北京:
北京航空航天大学出版社,1998.
[5]何立民.单片机高级教程[M].北京航空航天大学出版社,2000年5月第一版.
附录
程序代码
1.头文件
#include"REG51.h"
#include
#include
#include<12864.h>
#include
#include<8255.h>
#include<时钟.h>
#include<图片.h>
2.DS18B20的主要程序代码
/********定义通信端口*******/
sbitDQ=P3^4;
/***********1us延时子函数***************/
voiddelay(unsignedinti)
{
while(i--);
}
/*********1ms延时子函数*********/
voiddelay1(unsignedintz)
{
unsignedintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/********初始化函数*********/
Init_DS18B20(void)
{
unsignedcharx=0;
DQ=1;//DQ复位
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(80);//精确延时大于480us
DQ=1;//拉高总线
delay(14);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay(20);
}
/*********读一个字节******/
ReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay(10);
}
return(dat);
}
/***********写一个字节*********************/
WriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(10);
DQ=1;
dat>>=1;
}
}
/************读取温度*********************/
floatReadTemperature(void)
{
unsignedchara=0;
unsignedcharb=0;
unsignedintt=0;
floattt=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0x44);//启动温度转换
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
//t=tt*10+0.5;//放大10倍输出并四舍五入---此行没用
return(tt);
}
3.12864的主要程序代码
sbitLCD_RS=P1^4;//定义引脚
sbitLCD_RW=P1^5;
sbitLCD_E=P1^6;
sbitPSB=P1^7;//PSB脚为12864-12系列的串、并通讯功能切换,我们使用8位并行接口
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 环境温度 检测 显示 教材