基于AT89C52的温度检测设计xy.docx
- 文档编号:6579841
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:31
- 大小:870.30KB
基于AT89C52的温度检测设计xy.docx
《基于AT89C52的温度检测设计xy.docx》由会员分享,可在线阅读,更多相关《基于AT89C52的温度检测设计xy.docx(31页珍藏版)》请在冰豆网上搜索。
基于AT89C52的温度检测设计xy
YibinUniversity
基于AT89C52的温度检测设计
题目基于AT89C52的温度检测设计
院别物理与电子工程学院
专业电子信息科学与技术
学生姓名胥云
学号110303031班级11级励志班
指导教师甘德成
2013年06月16日
目录
1设计思想3
2设计方案与要求3
3器件选择与需求分析3
3.1AT89C523
3.1.1概述3
3.1.2CPU的时钟电路和时序定时单位4
3.1.3复位电路5
3.2数字温度传感器DS18B20介绍6
3.2.1DS18B20的主要特性6
3.2.2DS18B20的外形和内部结构6
3.2.3DS18B20的时序图7
3.2.4DS18B20的指令集9
3.3液晶显示器16029
3.3.11602的引脚分配9
3.3.21602时序图10
3.3.31602指令集11
4硬件设计部分说明12
4.1核心电路AT89C5112
5实际硬件电路13
5.1核心控制器件AT89C5213
5.2显示器1602LCD14
5.3温度传感器DS18B2014
5.4整体显示电路15
6程序代码16
7实验总结16
基于AT89C52的温度检测设计
--单片机原理及应用期末
1设计思想
近年来单片机系统在工业测控领域的应用越来越广泛,它既可以测量电信号,又可以测量温度、湿度等非电信号,在日常生活及工农业生产等许多领域,经常要用到温度的检测及控制,所以设计一种采用数字温度传感器实现的基于单片机的数字温度计。
2设计方案与要求
设计一个基于单片机的DS18B20数字温度计。
课程设计要求:
1.5V供电;
2.温度采集采用DS18B20;
3.一个液晶显示器1602
4.设计温度控制器原理图,学习用PROTEL画出该原理图,并用proteus进行仿真;设计和绘制软件流程图,用C语言进行程序编写;焊接硬件电路,进行调试。
3器件选择与需求分析
3.1AT89C52
3.1.1概述
89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
3.1.2CPU的时钟电路和时序定时单位
MCS—51系列单片机的时钟电路是产生单片机工作所需要的时钟信号,而时序是指令执行中各信号之间在时间上的相互关系。
单片机就象是一个复杂的同步时序电路,应在时钟信号控制下严格地按时序进行工作。
3.1.2.1时钟电路
(1)内部时钟信号的产生
MCS—51系列单片机芯片内部有一个高增益反相放大器,输入端为XTAL1,输出端为XTAL2,一般在XTAL1与XTAL2之间接石英晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,就是单片机的内部时钟电路,如图2—8所示。
时钟电路产生的振荡脉冲经过二分频以后,才成为单片机的时钟信号。
电容C1和C2为微调电容,可起频率稳定、微调作用,一般取值在5~30pf之间,常取30pf。
晶振的频率范围是1.2MHz~12MHz,典型值取6MHz。
(2)外部时钟信号的引入
由多个单片机组成的系统中,为了保持同步,往往需要统一的时钟信号,可采用外部时钟信号引入的方法,外接信号应是高电平持续时间大于20ns的方波,且脉冲频率应低于12MHZ。
如图2—9和图2—10所示。
3.1.2.2时序定时单位
时序是用定时单位来说明的。
MCS—51系列单片机的时序定时单位共有四个,从小到大依次是拍节,状态,机器周期,指令周期。
下面分别加以说明:
(1)拍节,状态:
把振荡器发出的振荡脉冲的周期定义为拍节(用P表示),振荡脉冲经过二分频以后,就是单片机的时钟信号,把时钟信号的周期定义为状态(用S表示)。
(2)机器周期
MCS—51系列单片机采用定时控制方式,它有固定的机器周期,一个机器周期宽度为6个状态,依次表示为S1~S6,由于一个状态有两个节拍,一个机器周期总共有12个拍节,记作:
S1P1,S1P2,…S6P2。
因此,机器周期是振荡脉冲的十二分频。
当振荡脉冲频率为12MHz,一个机器周期为1μs。
机器周期如下图所示:
图2—11机器周期示意图
(3)指令周期。
指令周期是最大的时序定时单位,执行一条指令所需的时间称之为指令周期。
MCS—51的指令周期根据指令的不同,可分为一,二,四个机器周期三类。
复位信号输入引脚,高电平有效。
在该引脚上输入持续2个机器周期以上的高电平时,单片机系统复位。
3.1.3复位电路
复位是单片机系统的初始化操作,系统复位后会对专用寄存器和单片机的个别引脚信号有影响,复位后对一些专用寄存器的影响情况如下:
PC
0000H
TCON
00H
ACC
00H
TL0
00H
PSW
00H
TH0
00H
SP
07H
TL1
00H
DPTR
0000H
TH1
00H
P0~P3
FFH
SCON
00H
IP
××000000B
SBUF
不定
IE
0×000000B
PCON
0×××0000B
TMOD
00H
其中(PC)=0000H,系统复位后,使单片机从0000H单元开始执行程序。
当由于程序运行出错或操作错误使系统处于死循环状态时,可按复位电路以重新启动单片机。
(SP)=07H,单片机自动把堆栈的栈底设置在内部RAM07H单元,从08H单元开始存储数据。
(P0~P3)=0FFH,系统复位后,对P0~P3的内部锁存器置“1”,
其余的专用寄存器在复位后都全部清“0”。
此外,复位操作还对单片机的个别引脚信号有影响,如把ALE和PSEN信号变为无效状态,即ALE=1,PSEN=1。
复位操作对内部RAM不产生影响。
对于使用6MHZ的晶振的单片机,复位信号持续时间应超过4μs才能完成复位操作。
产生复位信号的电路有上电自动复位电路和按键手动复位电路两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,该电路通过电容充电在RST引脚上加了一个高电平,高电平的持续时间取决于RC电路的参数。
上电自动复位电路如图2—6(a)所示。
按键手动复位是通过按键实现人为的复位操作,按键手动复位电路如图2—6(b)所示:
3.2数字温度传感器DS18B20介绍
DS18B20温度传感器是采用美国DALLAS公司生产的S18B20可组网数字温度传感器芯片,经焊接,外加不锈钢保护管封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
3.2.1DS18B20的主要特性
1、适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电
2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
5、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
6、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温
7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
8、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
9、负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
3.2.2DS18B20的外形和内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的外形及管脚排列如下图1:
图1:
DS18B20外形及管脚排列
引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
图2:
DS18B20内部结构图
3.2.3DS18B20的时序图
3.2.3.1DS18B20的初始化,其时序如图3所示。
(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)
(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60微妙时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
3.2.3.2DS18B20的写操作,DS18B20的写操作时序图如图4所示。
(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上
(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
3.2.3.3DS18B20的读操作,DS18B20的读操作时序图如图5所示。
(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时3微秒。
(5)将数据线拉高“1”。
(6)延时5微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时60微秒。
3.2.4DS18B20的指令集
3.3液晶显示器1602
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
3.3.11602的引脚分配
第1脚:
VSS为电源地
第2脚:
VCC接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳变时执行指令。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
LCD1602引脚图如图所示:
3.3.21602时序图
1、读时序
2、写时序
3.3.31602指令集
指令码
功能
令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清除显示
0
0
0
0
0
0
0
0
0
1
将DDRAM填满"20H",并且设定DDRAM的地址计数器(AC)到"00H"
地址归位
0
0
0
0
0
0
0
0
1
X
设定DDRAM的地址计数器(AC)到"00H",并且将游标移到开头原点位置;这个指令不改变DDRAM的内容
显示状态开/关
0
0
0
0
0
0
1
D
C
B
D=1:
整体显示ONC=1:
游标ONB=1:
游标位置反白允许
进入点设定
0
0
0
0
0
0
0
1
I/D
S
指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位
游标或显示移位控制
0
0
0
0
0
1
S/C
R/L
X
X
设定游标的移动与显示的移位控制位;这个指令不改变DDRAM的内容
功能设定
0
0
0
0
1
DL
X
RE
X
X
DL=0/1:
4/8位数据RE=1:
扩充指令操作RE=0:
基本指令操作
设定CGRAM地址
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
设定CGRAM地址
设定DDRAM地址
0
0
1
0
AC5
AC4
AC3
AC2
AC1
AC0
设定DDRAM地址(显示位址)第一行:
80H-87H第二行:
90H-97H
读取忙标志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值
写数据到RAM
1
0
数据
将数据D7——D0写入到内部的RAM(DDRAM/CGRAM/IRAM/GRAM)
读出RAM的值
1
1
数据
从内部RAM读取数据D7——D0(DDRAM/CGRAM/IRAM/GRAM)
4硬件设计部分说明
4.1核心电路AT89C51
在本设计中,采用了AT89C52单片机作为本电路的核心电路的设计。
AT89C52是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机硬件最小系统原理图如图6所示,没有连接1602又外电路扩展。
单片机PCB图如图7所示。
图6单片机硬件最小系统原理图
图7单片机PCB图
5实际硬件电路
5.1核心控制器件AT89C52
5.2显示器1602LCD
5.3温度传感器DS18B20
5.4整体显示电路
6程序代码
#include"reg52.h"
#include"DS18B20.h"//见附件一
#include"1602.h"//见附件二
voidmain()
{while
(1)
{
uchartable[]="xianzaiwendu:
";
init();
writeComm(0x80);
writeString(table,16);
while
(1)
{
delayMs(1000);//温度转换时间需要750ms以上
writeComm(0xc0);
display(ds18b20_rwd());
}
}
}
7实验总结
在设计电路的时候,本打算先设计一个单片机最小系统,所以没有设计外扩的接口,由于各种原因,导致我不能在用PCB画电路板出来制作,只有如图所示的那样外借一个扩展电路,这样来显示。
首先是测试显示电路的正确性,根据硬件写好一段显示程序,写入单片机中。
安装好硬件,上电,显示正常,达到预期效果。
证明显示电路正常。
按下复位按键,LED无显示,松开,显示正常,证明复位电路正常。
然后测试得到温度程序,将初始化程序,DS18B20正常工作的初始化程序、写DS18B20程序、读DS18B20程序,得到温度子程序,温度转换子程序,数据转换子程序,显示子程序正确编排后写入单片机中,上电,显示不正常。
重新读取源程序,经检查后发现问题在于DS18B20初始化程序有错,修改后重新编译并写入单片机。
上电后,显示当前温度。
证明温度传感器DS18B20工作正常,各部分子程序运行正常。
参考资料
单片机原理与应用主编:
甘德成2013.3
传感器与传感器技术主编:
何道清2008.3
附件一:
//-------------------------头文件DS18B20.h-------------------------
#include"intrins.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitwd=P0^0;
/*ms延时函数*/
voiddelay_ms(unsignedintuiMs)
{
unsignedinti;
for(;uiMs>0;uiMs--)
{
for(i=1498;i>0;i--);
}
}
/*us延时函数*/
voiddelay_us(unsignedintuiUs)
{
for(;uiUs>0;uiUs--)
{
_nop_();
}
}
/*ds18b20初始化*/
voidds18b20_init()
{
wd=1;
delay_us(5);
wd=0;
delay_us(550);
wd=1;
delay_ms
(2);
wd=1;
}
/*ds18b20读一个字节*/
uchards18b20_rbyte(void)
{
uchardat;
uinti=0;
for(i=8;i>0;i--)
{
wd=1;
dat>>=1;
wd=0;
delay_us(6);
wd=1;
delay_us(4);
if(wd)//如果ds18b20没有被拉低代表是高电平
dat=dat|0x80;
delay_us(30);
}
return(dat);
}
/*ds18b20写一个字节*/
voidds18b20_wbyte(uchardat)
{
uinti=0;
for(i=8;i>0;i--)
{
wd=0;
delay_us(15);
wd=dat&0x01;
delay_us(66);
wd=1;
dat>>=1;
}
}
/*ds18b20读温度*/
uintds18b20_rwd(void)
{
ucharL,H;
uintdat;
intvalue;
floatt;
ds18b20_init();
ds18b20_wbyte(0xcc);
ds18b20_wbyte(0x44);
ds18b20_init();
ds18b20_wbyte(0xcc);
ds18b20_wbyte(0xbe);
L=ds18b20_rbyte();
H=ds18b20_rbyte();
dat=H;
dat<<=8;
dat=dat|L;
value=dat;
t=value*0.0625;
value=t*100+(value>0?
0.5:
-0.5);//大于0加0.5,小于0减0.5
return(value);
附件二:
//-------------------------头文件1602.h-------------------------
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRS=P3^5;
sbitLCDEN=P3^4;
voiddelayUs()
{
_nop_();
}
voiddelayMs(uinta)
{
uinti,j;
for(i=a;i>0;i--)
for(j=100;j>0;j--);
}
voidwriteComm(ucharcomm)
{
RS=0;
P0=comm;
LCDEN=1;
delayUs();
LCDEN=0;
delayMs
(1);
}
//写数据:
RS=1,RW=0;
voidwriteData(uchardat)
{
RS=1;
P0=dat;
LCDEN=1;
delayUs();
LCDEN=0;
delayMs
(1);
}
voidinit()
{
writeComm(0x38);
writeComm(0x0c);
writeComm(0x06);
writeComm(0x01);
}
voidwriteString(uchar*str,ucharlength)
{
uchari;
for(i=0;i { writeData(str[i]); } } voiddisplay(intv) { unsignedcharcount; unsignedchardatas[]={0,0,0,0,0}; unsignedinttmp=abs(v); datas[0]=tmp/10000; datas[1]=tmp%10000/1000; datas[2]=tmp%1000/100; datas[3]=tmp%100/10; datas[4]=tmp%10; writeComm(0xc0+3); if(v<0) { writeString("-",2); } else { writeString
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C52 温度 检测 设计 xy