基于单片机的温度报警器文档格式.docx
- 文档编号:4381554
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:32
- 大小:221.18KB
基于单片机的温度报警器文档格式.docx
《基于单片机的温度报警器文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度报警器文档格式.docx(32页珍藏版)》请在冰点文库上搜索。
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
2、DS18B20产品的特点
(1).只要求一个端口即可实现通信。
(2).在DS18B20中的每个器件上都有独一无二的序列号。
(3).实际应用中不需要外部任何元器件即可实现测温。
(4).测量温度范围在-55。
C到+125。
C之间。
(5).数字温度计的分辨率用户可以从9位到12位选择。
(6).内部有温度上、下限告警设置。
3、DS18B20引脚图及引脚功能介绍
TO-92封装的DS18B20的引脚排列见图1,其引脚功能描述见表1。
(底视图)图
表1DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
4.DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
DS18B20的复位时序
DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
12864简介
12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
主要技术参数和显示特性:
电源:
VDD3.3V~+5V(内置升压电路,无需负压);
显示内容:
128列×
64行
显示颜色:
黄绿
显示角度:
6:
00钟直视
LCD类型:
STN
与MCU接口:
8位或4位并行/3位串行
配置LED背光
多种软件功能:
光标显示、画面移位、自定义字符、睡眠模式等
外形尺寸
主要外形尺寸
项目
标准尺寸
单位
模块体积
113.0×
65.0×
12.8
mm
定位尺寸
105.0×
55.0
视域
73.4×
38.8
行列点阵数
128×
64
dots
点距离
0.52×
0.52
点大小
0.48×
0.48
模块引脚说明
128X64引脚说明
引脚号
引脚名称
方向
功能说明
VSS
-
模块的电源地
模块的电源正端
V0
LCD驱动电压输入端
4
RS(CS)
H/L
并行的指令/数据选择信号;
串行的片选信号
5
R/W(SID)
并行的读写选择信号;
串行的数据口
6
E(CLK)
并行的使能信号;
串行的同步时钟
7
DB0
数据0
8
DB1
数据1
9
DB2
数据2
10
DB3
数据3
11
DB4
数据4
12
DB5
数据5
13
DB6
数据6
14
DB7
数据7
15
PSB
并/串行接口选择:
H-并行;
L-串行
16
NC
空脚
17
/RET
复位低电平有效
18
19
LED_A
背光源正极(LED+5V)
20
LED_K
背光源负极(LED-OV)
逻辑工作电压(VDD):
4.5~5.5V
电源地(GND):
0V
工作温度(Ta):
0~60℃(常温)/-20~75℃(宽温)
接口时序
模块有并行和串行两种连接方法(时序如下):
8位并行连接时序图
MPU写资料到模块
MPU从模块读出资料
串行数据连接时序图
具体指令介绍:
1、清除显示
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
H
功能:
清除显示屏幕,把DDRAM位址计数器调整为“00H”
2、位址归位
X
把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM
3、位址归位
I/D
S
把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM功能:
执行该命令后,所设置的行将显示在屏幕的第一行。
显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。
Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。
4、显示状态开/关
D
C
B
D=1;
整体显示ONC=1;
游标ONB=1;
游标位置ON
5、游标或显示移位控制
S/C
R/L
X
设定游标的移动与显示的移位控制位:
这个指令并不改变DDRAM的内容
6、功能设定
DL
0RE
DL=1(必须设为1)RE=1;
扩充指令集动作RE=0:
基本指令集动作
7、设定CGRAM位址
AC5
AC4
AC3
AC2
AC1
AC0
设定CGRAM位址到位址计数器(AC)
8、设定DDRAM位址
AC6
设定DDRAM位址到位址计数器(AC)
9、读取忙碌状态(BF)和位址
BF
读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值
10、写资料到RAM
D7
D6
D5
D4
D3
D2
D1
D0
写入资料到内部的RAM(DDRAM/CGRAM/TRAM/GDRAM)
11、读出RAM的值
从内部RAM读取资料(DDRAM/CGRAM/TRAM/GDRAM)
12、待命模式(12H)
H
进入待命模式,执行其他命令都可终止待命模式
13、卷动位址或IRAM位址选择(13H)
SR
SR=1;
允许输入卷动位址SR=0;
允许输入IRAM位址
14、反白选择(14H)
R1
R0
选择4行中的任一行作反白显示,并可决定反白的与否
15、睡眠模式(015H)
SL
SL=1;
脱离睡眠模式SL=0;
进入睡眠模式
16、扩充功能设定(016H)
1RE
G
L
RE=1;
扩充指令集动作RE=0;
基本指令集动作G=1;
绘图显示ONG=0;
绘图显示OFF
17、设定IRAM位址或卷动位址(017H)
AC0
功能:
AC5~AC0为垂直卷动位址SR=0;
AC3~AC0写ICONRAM位址
18、设定绘图RAM位址(018H)
设定GDRAM位址到位址计数器(AC)
4.各部分电路简介
1.最小系统介绍
最小系统由单片机,时钟电路和复位电路组成:
如下图所示
时钟电路复位电路
时钟电路为单片机工作提供时序,电路复位时单片机程序指针指向初始位置
2.数据采集电路
3.显示电路
4.报警电路
5.总原理图
五.程序清单
#include<
reg51.h>
intrins.h>
stdlib.h>
math.h>
//要用到取绝对值函数abs()
#defineucharunsignedchar
#defineuintunsignedint
/*端口定义*/
#defineLCD_dataP0//数据口
sbitLCD_RS=P3^5;
//寄存器选择输入
sbitLCD_RW=P3^6;
//液晶读/写控制
sbitLCD_EN=P3^4;
//液晶使能控制
sbitLCD_PSB=P3^7;
//串/并方式控制
sbitkey1=P2^4;
sbitkey2=P2^5;
sbitkey3=P2^6;
sbitkey4=P2^7;
sbitLED0=P1^0;
sbitLED1=P1^1;
sbitLED2=P1^2;
sbitds=P2^2;
sbitbeep=P2^3;
inttempValue1;
unsignedinttemp;
ucharcodeth0=(65535-3000)/256;
ucharcodetl0=(65535-3000)%256;
uchardisbuf[7];
uchardis1[]="
温度报警器的设计"
;
uchardis2[]={"
温度上限:
C"
};
uchardis4[]={"
温度:
.C"
uchardis3[]={"
温度下限:
ucharwenmax=20,wenmin=10;
voiddelay_1ms(uintx)
{
uinti,j;
for(j=0;
j<
x;
j++)
for(i=0;
i<
110;
i++);
}
voidwrite_cmd(ucharcmd)
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
P0=cmd;
delay_1ms(20);
LCD_EN=1;
/*******************************************************************/
/**/
/*写显示数据到LCD*/
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。
*/
voidwrite_dat(uchardat)
LCD_RS=1;
P0=dat;
/*********************************************************/
/*设定显示位置*/
voidlcd_pos(ucharX,ucharY)
ucharpos;
if(X==0)
{X=0x80;
elseif(X==1)
{X=0x90;
elseif(X==2)
{X=0x88;
elseif(X==3)
{X=0x98;
pos=X+Y;
write_cmd(pos);
//显示地址
/*LCD初始化设定*/
voidlcd_init()
LCD_PSB=1;
//并口方式
write_cmd(0x30);
//基本指令操作
write_cmd(0x0C);
//显示开,关光标
write_cmd(0x01);
//清除LCD的显示内容
/**/
/*主程序*/
voidceshi()
{
//清除显示,并且设定地址指针为00H
//DS18B20
//延时函数,对于11.0592MHz时钟,例i=10,则大概延时10ms.
voiddelay(unsignedinti)
{
unsignedintj;
while(i--)
for(j=0;
j<
125;
j++);
}
voiddsInit()
//对于11.0592MHz时钟,unsignedint型的i,作一个i++操作的时间大于?
us
unsignedinti;
ds=0;
i=100;
//拉低约800us,符合协议要求的480us以上
while(i>
0)i--;
ds=1;
//产生一个上升沿,进入等待应答状态
i=4;
voiddsWait()
while(ds);
while(~ds);
//检测到应答脉冲
while(i>
0)i--;
//向DS18B20读取一位数据
//读一位,让DS18B20一小周期低电平,然后两小周期高电平,
//之后DS18B20则会输出持续一段时间的一位数据
bitreadBit()
bitb;
i++;
//延时约8us,符合协议要求至少保持1us
//延时约16us,符合协议要求的至少延时15us以上
b=ds;
i=8;
//延时约64us,符合读时隙不低于60us要求
returnb;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 温度 报警器
![提示](https://static.bingdoc.com/images/bang_tan.gif)