8毕业设计正文.docx

上传人:b****8 文档编号:9911555 上传时间:2023-02-07 格式:DOCX 页数:33 大小:253.55KB
下载 相关 举报
8毕业设计正文.docx_第1页
第1页 / 共33页
8毕业设计正文.docx_第2页
第2页 / 共33页
8毕业设计正文.docx_第3页
第3页 / 共33页
8毕业设计正文.docx_第4页
第4页 / 共33页
8毕业设计正文.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

8毕业设计正文.docx

《8毕业设计正文.docx》由会员分享,可在线阅读,更多相关《8毕业设计正文.docx(33页珍藏版)》请在冰豆网上搜索。

8毕业设计正文.docx

8毕业设计正文

目录

前言1

1总体方案设计2

1.1设计要求2

1.1.1设计背景2

1.1.2具体指标2

1.1.3具体控制要求2

1.2系统框图和软件流程图2

1.3元件选择4

1.3.1温度传感器的选择4

1.3.2显示电路的选择4

1.3.3按键选择4

1.3.4单片机的选择4

1.3.5上拉电阻的选择5

1.4工作原理5

2设计理论基础6

2.1AT89C52单片机6

2.2DS18B206

2.2.1特征6

2.2.2引脚排列7

2.2.3执行序列7

2.2.4单总线信号7

2.3矩阵键盘9

2.4LCD160210

3系统硬件设计12

3.1单片机最小系统设计12

3.2温度传感电路设计12

3.3温度控制电路设计13

3.4矩阵键盘电路设计13

3.5液晶显示电路设计14

4系统软件设计15

4.1延时函数的设计15

4.2DS18B20的初始化与读写设计15

4.3LCD的初始化与读写显示设计17

4.4矩阵键盘输入设计18

4.5主程序设计20

5结论22

致谢23

参考文献24

附录I元器件清单25

附录II设计原理图26

附录III设计仿真图27

 

前言

在化学、化工实验室中实验中,往往需要使用微型加热器对各类反应药品进行加热,如何精确控制微型加热器进行加热,这就需要一种合适的系统对其温度进行精确控制。

由于单片机具有低功耗、高性能、可靠性好、易于产品化等特点,因此采用单片机对温度进行控制不仅节约成本,控制方法灵活多样,并且可以达到较高的控制精度,从而能够大大提高产品的质量,因此单片机被广泛应用在中小型控制系统中。

本文将设计一个温度控制系统利用温度传感器显示实时温度,能够通过按键给需要加热的实验室药品设定给定温度,微型加热器从室温给药品加热当温度等于给定温度时蜂鸣器响并且微型加热器断电,本设计的主要任务是能对温度进行自动的检测和控制。

 

1总体方案设计

1.1设计要求

1.1.1设计背景

温度控制广泛应用于人们的生产和生活中,人们使用温度计来采集温度,通过人工操作加热、通风和降温设备来控制温度,这样不但控制精度低、实时性差,而且操作人员的劳动强度大。

在某些行业中对温度的要求较高,由于工作环境温度不合理而引发的事故时有发生。

对工业生产可靠进行造成影响,甚至操作人员的安全。

为了避免这些缺点,需要在某些特定的环境里安装数字温度测量及控制设备。

本设计由于采用了新型单片机对温度进行控制,以其测量精度高,操作简单。

可运行性强,价格低廉等优点,特别适用于生活,医疗,工业生产等方面的温度测量及控制。

1.1.2具体指标

加热器最大温度范围为0oC~100oC,能设定加热温度并进行控制,上下波动不超过5%,显示实时温度。

1.1.3具体控制要求

根据设计的要求,要利用温度传感器显示实时温度。

能够通过按键给需要加热的实验室药品设定给定温度,微型加热器从室温给药品加热当温度等于给定温度时蜂鸣器响并且微型加热器断电。

毕业设计的主要任务是能对温度进行自动的检测和控制。

设计中采用51单片机来控制温度,因此要有温度传感器,键盘,显示电路,温控电路,报警电路等几个部分。

1.2系统框图和软件流程图

本文所设计温度控制系统主要是通过温度传感器把采集到的温度送到单片机中通过显示电路显示实时温度,目标温度通过键盘送到单片机中控制显示电路显示,当实时温度大于等于目标温度是单片机通过高低电平控制加热器和报警电路。

本文所设计的温度控制系统框图如图1所示,整个系统以单片机(AT89C52)为核心,包括温度传感器,键盘,显示电路,温控电路,报警电路等几个部分。

系统的软件控制流程如图2所示,先进行系统的初始化,温度传感器通过温度测量测出实时温度,并在显示系统中显示,而目标温度则是通过键盘扫描来设定且能通过显示系统显示,当实时温度大于等于目标温度时,加热器断开蜂鸣器响。

图1系统框图

 

温度测量键盘扫描

实时温度目标温度设定

比较若

实>=目

显示系统加热器断开

图2软件设计流程图

1.3元件选择

1.3.1温度传感器的选择

AD590----------------------------DS18B20------------------------

需要模拟转数字电路-------------只需要一个元件

成本低点-----------------------成本高点

精确度低-----------------------精确度高

测温点数量少-------------------单总线可同时连接很多温点

电路繁多-----------------------电路简单

对线阻有要求-------------------信号线距离远

可以说DS18B20的优点都是在弥补AD590的缺点的,ds18B20的唯一缺点是就是价格高一点总的来说性价比还是蛮高的。

用AD590设计的电子数字温度计是需要加模拟和数字转换电路的,电路设计比较麻烦,而DS18B20在芯片的内部自带模拟和数字转换电路的,从电路的复杂性和稳定性上来说,选择ds18b20更好。

综上所述,采用DS18B20作为本实验的温度传感器。

1.3.2显示电路的选择

数码管要3mA电流才能发亮单片机io口驱动能力较弱,电流只有几毫安,所以一般要加一个373芯片放大电流,数据输出时一般还需要一个74LS138译码器译码,显示电路若采用数码管显示则至少4个数码管显示,由于每个数码管静态显示每个数码管必须接一个8位数据线来保持显示字型码首先排除静态显示,而数码管动态显示亮度不够稳定,影响因素较多;编程较复杂,占用CPU时间较多。

Lcd1602采用并口传输,速度比12864串口快只需一个口无需外加电路其内部有显示芯片可以识别英文字母、阿拉伯数字,其控制简单且有带有背光。

从电路的复杂性和稳定性上来说采用LCD1602更好。

1.3.3按键选择

独立按键:

一个按键占用单独的一个I/O口。

矩阵键盘:

为了节省I/O口,矩阵形式的按键排列,在交叉点水平线和垂直线不能连接,一般用一个按键来连接。

输入设定温度要用到1~9,考虑到节省IO口采用矩阵键盘更好。

1.3.4单片机的选择

由于作者是初学者对于c系列单片机较熟悉,at89c51最多支持4KB的程序,at89c52则最多支持8KB的程序。

他们是互相兼容的,可以相互替换就是52的RAM多点,程序可以大点,还有就是52多个定时器T2都是51内核,封装一致,多是dip40的,管脚顺序一模一样,通属AT89C系列单片机唯一不同,ROM不同,前者4k,后者8K。

本文中DS18B20、LCD1602、矩阵键盘的驱动程序约各为1K再加上主程序1K左右,总共程序大小在4K左右所以本文采用At89c52单片机。

1.3.5上拉电阻的选择

因为单片机P0口没有上拉电阻为了保护单片机通常要外接上拉电阻,通常在1k到10k之间选取。

1.4工作原理

该温控系统采用AT89C52单片机进行控制。

采用4X4矩阵键盘把设定的目标温度存入单片机的数据存储器,。

单片机把温度传感器采集的信号与单片机里的数据相比较来控制微型加热器。

根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C52为温控系统的核心来完成数据采集、处理、显示、报警、控制等功能。

选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。

该系统的总体设计思路如下:

温度传感器DS18B20把所测得的温度发送到AT89c52单片机上,经过单片机处理,将把温度在显示电路上显示,本系统显示器为LCD1602液晶。

本系统除了显示温度以外还可以设置一个目标温度值,对所测温度进行监控,当温度等于目标温度时,蜂鸣器响微型加热器断电,从而控制温度。

 

2设计理论基础

2.1AT89C52单片机

工作特性:

片内FLASH程序存储器有8KB大小,寿命为可擦写1000次;

片内数据存储器RAM有256字节大小;

可编程I/O口线有32根;

可编程定时器有3个;

中断系统中、级优先权的中断结构有2个中断源有8个、中断矢量有6个;

有一个全双工的可编程串行通信口的串行口;

有一个数据指针(DPTR);

单片机正常工作时,都需要有一个时钟电路和一个复位电路。

本设计中选择了内部时钟方式和按键电平复位电路,来构成单片机的最小电路。

AT89C52有引脚40个,有外部双向IO口32个,有外部中断口两个,有定时计数器3个。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

2.2DS18B20

2.2.1特征

仅需一个端口引脚就可以进行通讯的单线接口;

每个器件有唯一的64位的序列号存储在内部存储器中;

供电范围为3.0V到5.5V;

测温范围为-55~+125℃(-67~+257℉);

在-10~+85℃范围内精确度为±5℃;

温度计分辨率可以被使用者选择为9~12位;

最多在750ms内将温度转换为12位数字;

非易失性温度报警设置用户自己可以定义;

应用包括温度控制、工业系统、消费品、温度计或任何热感测系统。

2.2.2引脚排列

图3DS18B20引脚排列图

说明

DS18B20数字温度计提供9至12位的摄氏温度测量,并具有易失性的用户可编程触发点的上限和下限报警功能,其引脚排列如图3所示。

DS18B20单总线通信按定义只需要一条数据线(和地线)与中央微处理器进行通信。

它具有工作温度范围55°C+125°C和准确±0.5°C范围-10°C+85°C.此外,DS18B20可以导出功率直接从数据线(“寄生虫”),消除了外部电源需要。

每个DS18B20都有一个唯一的64位串行码,它允许多个DS18B20在同一根总线功能。

因此,它是用一个简单的微处理器控制,大面积分布的许多DS18B20s。

应用程序可以受益于这个功能包括空调环境控制,建筑物内的温度监控系统,设备,或机械,和过程监控控制系统。

2.2.3执行序列

通过单线总线端口访问DS18B20的协议如下:

步骤1.初始化;

步骤2.ROM操作指令;

步骤3.DS18B20功能指令;

每一次DS18B20的操作都必须满足以上步骤,当顺序混乱或缺少步骤,该器件不会有返回值。

例如这样的顺序:

发起ROM搜索指令[F0h]和报警搜索指令[ECh]之后,总线控制器必须返回步骤1。

2.2.4单总线信号

DS18B20需要严格的单总线协议以确保数据的完整性。

协议包括集中单总线信号类型:

复位脉冲、存在脉冲、写0、写1、读0和读1。

所有这些信号,除存在脉冲外,都是由总线控制器发出的。

图4初始化时序

读/写时序

DS18B20的数据读写是通过时序处理位来确认信息交换的。

写时序

由两种写时序:

写1时序和写0时序。

总线控制器通过写1时序写逻辑1到DS18B20,写0时序写逻辑0到DS18B20。

所有写时序必须最少持续60us,包括两个写周期之间至少1us的恢复时间。

当总线控制器把数据线从逻辑高电平拉到低电平的时候,写时序开始(图4)。

总线控制器要生产一个写时序,必须把数据线拉到低电平然后释放,在写时序开始后的15us释放总线。

当总线被释放的时候,5K的上拉电阻将拉高总线。

总控制器要生成一个写0时序。

若线上是高电平,就是写1。

若线上是低电平,就是写0。

读时序

当控制器发起读时序,DS18B20只用来给控制器传输数据。

所有读时序必须最少60us,包括两个读周期间至少1us的恢复时间。

当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持1us,然后总线被释放(图5)。

在总线控制器发出读时序后,DS18B20通过拉高或拉低总线上来传输1或0。

当传输逻辑0结束后,总线将被释放,通过上拉电阻回到上升沿状态。

从DS18B20输出的数据在读时序的下降沿出现后15us内有效。

因此,总线控制器在读时序开始后必须停止把I/O脚驱动为低电平15us,以读取I/O脚状态。

图5读/写时序

2.3矩阵键盘

4根行线与4根列线交叉构成4*4矩阵键盘,其16个按键在行列的交叉点上。

4*4矩阵键盘的每条行线都和4条列线相交,该键所在行线与列线的电平受交点按键的按下影响,各按键间将相互影响,键分析时必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。

按键的特点与去抖

按键在释放和按下时,受机械弹性作用,通常有一定时间的抖动,然后其触点才能逐渐稳定如下图所示。

抖动时间的长短和开关机械特性有关系,其时间一般为5~10ms左右如图6所示。

在抖动期间按下或者释放经常被认为是多次操作按键这很明显是错误的,要怎么样才能避免这种错误呢这就必须采用去抖操作通常考虑软件去抖和硬件去抖,硬件去抖通常在按键较少时采用,软件去抖通常在按键较多时采用很明显本设计应该考虑的是软件去抖。

图6按键的去抖

2.4LCD1602

管脚功能

1602采用标准的16脚接口,其中:

第1脚:

VSS是一个电源地引脚;

第2脚:

VDD引脚应该接+5V电源;

第4脚:

RS是一个寄存器选择引脚;

第5脚:

RW是一个读写信号线引脚;

第6脚:

E是一个使能引脚;

第15脚是一个背光正极引脚;

第7~14脚:

D0~D7是一个8位双向数据引脚。

操作控制

 

表1操作控制表

操作控制

操作

读状态

写指令

读数据

写数据

输入

RS=0

RW=1

E=1

RS=0

RW=0

D0~7=指令码

E=H脉冲

RS=1

RW=1

E=1

RS=1

RW=0

D0~7=数据

E=H脉冲

  注:

关于E=H脉冲——开始时初始化E为0,然后置E为1,再通常推荐的初始化过程:

延时15ms

写指令38H

  延时5ms

  写指令38H

  延时5ms

  写指令38H

  延时5ms

  (以上都不检测忙信号)

  (以下都要检测忙信号)

  写指令38H

  写指令08H关闭显示

  写指令01H显示清屏

  写指令06H光标移动设置

  写指令0cH显示开关及光标设置

  完毕

读写操作时序如图所示

 

              图7读操作时序

              图9写操作时序

3系统硬件设计

3.1单片机最小系统设计

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统如下图所示其中XTAL1与XTAL2接晶振通过电容接地形成时钟电路给单片机提供时钟脉冲具体如下图10所示。

图10单片机最小系统

3.2温度传感电路设计

如下图11所示DS18B20采用单总线连接只需将DQ引脚接到单片机的一个IO口上(P2.1)VCC接电GND接地I/O口线要接5KΩ左右的上拉电阻以保护温度传感器。

图11温度传感电路

 

3.3温度控制电路设计

如下图12所示温度控制电路采用三极管来控制微型加热器,当温度达到目标温度时单片机io口有高电平变为低电平三极管断开微型加热器不断电从而控制温度。

图12温度控制电路

3.4矩阵键盘电路设计

如下图13所示4×4的矩阵式键盘由4根行线和4根列线交叉构成,按键位于行列的交叉点上,这样就构成了16个按键,其中交叉点的行列线是不连接的。

图13键盘电路

Lcd1602上显示每个按键的“0~F”序号,对应的按键的序号排列如图14所示:

图14键的序号排列图

3.5液晶显示电路设计

如图15所示PO口接D0~D7为8位双向数据端,VDD接电VSS接地VEE通过电阻接地456引脚接单片机的三个IO引脚。

图15液晶显示电路

 

4系统软件设计

4.1延时函数的设计

在延时头文件中主要制作了50us延时函数和50ms延时函数方便其他函数调用。

/*************delay.h************//delay头文件

#ifndef__DELAY_H__

#define__DELAY_H__//防重复包含指令

#defineucharunsignedchar 

#defineuintunsignedint

voiddelay_50us(uintt);//50us延时函数

voiddelay_50ms(uintt);//50ms延时函数

#endif

//************************delay.c****************

#include”delay.h”

voiddelay_50us(uintt)

{

 ucharj;

 for(;t>0;t--)

       for(j=19;j>0;j--);

}

voiddelay_50ms(uintt)

{

 uintj;

 for(;t>0;t--)

 for(j=6245;j>0;j--);

}

4.2DS18B20的初始化与读写设计

在ds18b20模块中主要是ds18b20的初始化函数,读温度函数以及在lcd1602的显示以方便在主函数当中调用。

//****************ds18b20.h*****************

#ifndef__DS18B20_H__

#define__DS18B20_H__//防重复包含指令

#include

#defineucharunsignedchar 

#defineuintunsignedint

sbitDQ=P2^1;//定义P2^1

voidinit_ds18b20(void);

voiddelay(uintt);

voidwrite_byte(uchardat);

ucharread_byte(void);

ucharreadtemperature(void);

voiddisplay(void);

#endif

//**********************ds18b20.c************

#include”ds18b20.h”

#include”delay.h”

#include”lcd1602.h”

#include

voiddelay(uintt)

{

 while(t--); 

}

voidinit_ds18b20(void)//ds18b20初始化函数

{

 ucharn;

 DQ=1;

 delay(8);

 DQ=0;

 delay(80);

 DQ=1;

 delay(8);

 n=DQ;

 delay(4);

}

voidwrite_byte(uchardat)//写字节

{

 uchari;

 for(i=0;i<8;i++)

 {

  DQ=0;

  DQ=dat&0x01;

  delay(4);

  DQ=1;

  dat>>=1;

 }

 delay(4);

}

ucharread_byte(void)//读字节

{

 uchari,value;

 for(i=0;i<8;i++)

 {

  DQ=0;

  value>>=1;

  DQ=1;

  if(DQ)

  value|=0x80;

  delay(4);

 }

 returnvalue;

}

ucharreadtemperature(void)//读温度

{

 uchara,b;

 init_ds18b20();

 write_byte(0xcc); //跳过ROM

 write_byte(0x44); //启动温度测量

 delay(300);

 init_ds18b20();

 write_byte(0xcc);

 write_byte(0xbe);

 a=read_byte();

 b=read_byte();

 b<<=4;

 b+=(a&0xf0)>>4;

 returnb;

}

voiddisplay(void)//lcd1602显示温度

{write_data(readtemperature());

   

}

4.3LCD的初始化与读写显示设计

在lcd1602模块主要是1602的初始化,写命令,写字符函数以方便在主函数当中调用。

//*************lcd1602.h************

#ifndef__LCD1602_H__

#define__LCD1602_H__//防重复包含指令

#include

#defineucharunsignedchar 

#defineuintunsignedint

sbitrs=P2^3;//定义接口

sbitrw=P2^4;

sbite=P2^5;

voidwrite_com(ucharcom);

voidwrite_data(uchardat);

voidinit(void);

#endif

//************************lcd1602.c****************

#include”lcd1602.h”

#include”delay.h”

#include

voidwrite_com(ucharcom)//写命令程序

{

 e=0;

 rs=0;

 rw=0;

 P0=com;

 delay_50us(10);

 e=1;

 delay_50us(20);

 e=0;

}

voidwrite_data(uchardat)//写字符

{

 e=0;

 rs=1;

 rw=0;

 P0=dat;

 delay_50us(10);

 e=1;

 delay_50us(20);

 e=0; 

}

voidinit(void)//lcd1602初始化函数

{

 delay_50us(300);

 write_com(0x38);

 delay_50us(100);

 write_com(0x38);

 delay_50us(100);

 write_com(0x38);

 write_com(0x38);

 write_com(0x08);

 write_com(0x01);

 write_com(0x06);

 write_com(0x0c);

}

4.4矩阵键盘输入设计

矩阵模块主要包括键盘扫描和按键的去抖。

//*************keyscan.h************

#ifndef__KEYSCAN_H__

#def

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1