基于51单片机的温度控制系统的设计.docx

上传人:b****8 文档编号:9982745 上传时间:2023-02-07 格式:DOCX 页数:33 大小:389.48KB
下载 相关 举报
基于51单片机的温度控制系统的设计.docx_第1页
第1页 / 共33页
基于51单片机的温度控制系统的设计.docx_第2页
第2页 / 共33页
基于51单片机的温度控制系统的设计.docx_第3页
第3页 / 共33页
基于51单片机的温度控制系统的设计.docx_第4页
第4页 / 共33页
基于51单片机的温度控制系统的设计.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

基于51单片机的温度控制系统的设计.docx

《基于51单片机的温度控制系统的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度控制系统的设计.docx(33页珍藏版)》请在冰豆网上搜索。

基于51单片机的温度控制系统的设计.docx

基于51单片机的温度控制系统的设计

基于单片机的温度控制系统设计

1、设计要求

要求设计一个温度测量系统,在超过限制值的时候能进行声光报警。

具体设计要求如下:

1数码管或液晶显示屏显示室内当前的温度;

2在不超过最高温度的情况下,能够通过按键设置想要的温度并显示;设有四个按键,分别就是设置键、加1键、减1键与启动/复位键;

3DS18B20温度采集;

4超过设置值的芳C时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用黄灯指示,正常用绿灯指示。

2、方案论证

根据设计要求,本次设计就是基于单片机的课程设计,由于实现功能比较简单我们学习中接触到的51系列单片机完全可以实现上述功能,因此可以选用AT89C51单片机。

温度采集直接可以用设计要求中所要求的DS18B20。

报警与

指示模块中,可以选用3种不同颜色的LED灯作为指示灯,报警鸣笛采用蜂鸣器。

显示模块有两种方案可供选择。

方案一:

使用LED数码管显示采集温度与设定温度;

方案二:

使用LCD液晶显示屏来显示采集温度与设定温度。

LED数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选与段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬件支持。

LCD显示屏可识别性较好,背光亮度可调,而且比LED数码管显示更多字符,但就是编程要求比LED数码管要高。

综合考虑之后,我选用了LCD显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒值设定时同样可以采集并显示当前温度,可以直观的瞧到实际温度与警戒温度的对比。

LCD显示模块可以选用RT1602C。

3、硬件设计

根据设计要求,硬件系统主要包含6个部分,即单片机时钟电路、复位电路、键盘接口模块、温度采集模块、LCD显示模块、报警与指示模块。

其相互联系如下图1所示:

图1硬件电路设计框图

3、1单片机时钟电路

图2单片机内部时钟方式电路

形成单片机时钟信号的方式有内部

时钟方式与外部时钟方式。

本次设计采用内部时钟方式,如图2所示。

单片机内部有一个用于构成振荡器

的高增益反相放大器,引脚XTAL1与XTAL2分别为此放大器的输入端与输出端,其频率范围为1、2~12MHz,经由片外晶体振荡器或陶瓷振荡器与两个匹配电容一起形成了一个自激振荡电路,为单片机提供时钟源。

3、2复位电路

图3单片机按键复位电路

复位就是单片机的初始化操作,其作用就是使CPU与系统中的其她部件都处于一个确定的初始状态,并从这个状态开始工作,以防止电源系统不稳定造成CPU工作不正常。

在系统中,有时会出现工作不正常的情况,为了从异常状态中恢复,同

时也为了系统调试方便,需要设计一个复位电路。

单片机的复位电路有上电复位与按键复位两种形式,因为本次设计要求需要有启动/复位键,因此本次设计采用按键复位,如图3。

复位电路主要完成系统的上电复位与系统在运行时用户的按键复位功能。

3、3键盘接口模块

本次设计需要的按键有4个,除去圖

一个复位按键外,还有3个功能按键,因千口

S3

图4键盘接口模块

此选择独立式键盘。

如图4,将键盘直接与单片机P1口的P1、0、P1、1、P1、2相连。

3个键设计思路如下:

当按下S1键时,系统进入上下限警戒值调整状态;当第一次按下S1键时,进行上限警戒值设定,当第二次按下S1键时,进行下限警戒值设定,当第三次按下S1键时,回到正常工作状态。

在警戒值调整状态下,按下S2键,上下限警戒值加1,按下S3键,上下限警戒值减1,正常工作状态下,按下S2与S3键无作用。

3、4温度采集模块

本次设计中的温度传感器使用的就是DALLAS公司的单总线数字温度传感器DS18B20,这就是一种常用的温度传感器,具有体积小、硬件开销低、抗干扰能力强、精度高的特点。

DS18B20采用独特的一线接口,具有只需要一条口线通信多点的能力,简化了分布式温度传感应用,无需外部元件。

可用数据总线供电,电压范围为3、0V至5、5V,测量温度的范围为-55C至+125C,在-10C至+85C范围内精度为±)、5C。

温度传感器可编程的分辨率为9~12位,温度转换为12位数字格式最大值为

DALLAS

DS1B20

123

sh

】1NC

7

1NC

©

]NC

5

可脚

功能

GND

接地

DQ

数掳输入丿输出,对于单线操作,漏概幵路°当工作在寄生电源棋式时用来提供电瀬<■

VDD

可选的VDD引即。

工作于寄生电源橫式时VDD必须接地心

HOTTCJMVII-W

DSIKB20To-^2

NC口1NCIIIvmczn

DU["[J

750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系

统、消费电子产品温度计、或任何热敏感系统。

由于DS18B20就是一条口线通

信,所以中央微处理器与DS18B20只有一个一条口线连接。

因为每一个DS18B20的包含一个独特的序号,多个DS18B20可以同时存在于一条总线,这使得温度传感器放置在许多不同的地方。

它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测与控制。

图5DS18B20封装及引脚

DS18B20的核心功能就是它的直接读数字的温度传感器。

温度传感器的精

度为用户可编程的9、10、11或12位,分别以0、5C,0、25C,0、125E与0、0625C增量递增。

在上电状态下默认的精度为12位。

DS18B20启动后保持低功耗等待状态;当需要执行温度测量与AD转换时,总线控制器必须发出[44h]命令。

在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器

中QS18B20继续保持等待状态。

当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”QS18B20正在温度转换中返回0,转换结束返

回1。

如果DS18B20由寄生电源供电,除非在进入温度转换时总线被一个强上拉拉高,否则将不会由返回值。

在硬件上QS18B20与单片机的连接有两种方法:

一种就是VDD接外部电源,GND接地,DQ与单片机的I/O口相连;另一种就是用寄生电源供电,此时,VDD、

GND接地,DQ接单片机的I/O口。

无论就是接外部电源还就是用内部寄生电源,I/O口线要接5kQ左右的上拉电阻。

本次设计中,采用外部电源方式,其连

GND

接方式如图6所示。

单总线DQ端接单片机的P1、7口,DQ端接一个4、7kQ的上拉电阻,这样单总线DQ在闲置状态时为高电平。

图6DS18B20外部电源连接方式

3、5LCD显示模块

在本次设计中,使用RT1602C字符型液晶显示模块(LCM)来设计当前温度与上下限警戒值的显示电路。

RT1602C字符型液晶显示模块就是16字X2行的采用5X7点阵图形来显示字符的液晶显示器,采用标准的16脚接口,其引脚定义如图7所示。

引脚号

引脚名

说明

引脚号

引脚名

说明

1

GND/Vss

电源地

7

D0

8位双向数据线

2

Vdd

+5V电源

8

D1

3

Vl

液晶显示偏压信号

9

D2

4

RS

数据/命令控制,H/L

10

D3

5

R/W

读/写控制,H/L

11

D4

6

E

使能端

12

D5

15

BLA

背光源正极

13

D6

16

BLK

背光源负极

14

D7

图7RT1602C的引脚定义

RT1602C的内部结构可以分为3个部分:

LCD控制器、LCD驱动器、LCD

显示器,其中LCD控制器采用的就是HD44780。

RT1602C与单片机的连线如图8所示。

发光二极管,蜂鸣器发出响

声;温度在正常范围内时,点

图9报警与指示模块

LCM的数据总线与单片机的P0口通过一个上拉电阻排相连丄CM的三条控制线RS、RW、EN分别与单片机的I/O口P2、0、P2、1、P2、2相连,第1、2引脚分别与地、电源相连,第3引脚使用一个10kQ的可调电阻对显示屏的明亮进行调整。

3、6报警与指示模块

亮黄色发光二极管。

整个报警与指示电路如图9所示,其中绿、红、黄色指示灯分别接单片机P2、0、P2、1、P2、2口,电平拉低时点亮LED,蜂鸣器电路接单片机的P2、7口,电平拉高时蜂鸣器响。

至此便完成了整个硬件电路的设计工作,整个系统的原理图见附录二,系统

I/O分配表如下:

I/O口

功能说明

I/O口

功能说明

PO、0~P0、7

LCM数据口

P2、1

LCM读/写控制

P1、0~P1、3

键盘输入

P2、2

LCM使能

P1、7

DS18B20温度米集

P2、4~P2、6

LED信号输出

P2、0

LCM数据/命令控制

P2、7

报警信号输出

4、软件设计

图10软件设计框图

单片机应用系统的设计中,软件设计占有重要的位置。

在本次设计中,根据功能要求,可以把系统程序划分为5个模块,即主程序模块、显示模块、温度测量模块、键盘扫描模块、其它子程序模块,如图10所示。

4、1主程序设计

.主稈^序************/

主程序的内容包括单片机初始化、相关部件初始化与一些其它子程序的调用等。

主程序清单如下,程序流程图如图11所示。

voidmain(void)

P1=0xff;

//初始化P1口以便读入

P2|=0x70;

P2&=0x7f;

Temp_set仁90;

Temp_set2=10;

Delay(500);

init_LCD();

init_18B20();

Display_str(0,0,str2);

Display_str(0,1,str2);

Delay(2000);

Display_str(0,0,str0);

//上限报警温度初值90

//下限报警温度初值10

//延时500ms启动

//LCD初始化//DS18B20初始化

//开机界面

//开机界面

图11主程序流程图

Display_str(0,1,str1);

while

(1)

{

Key_scan();

//扫描键盘

Read_temp();

〃读取温度

Change();

Display();

//显示

Alarm();

//指示灯与报警程序

Delay(1000);

}

}

4、2显示模块

显示程序主要完成的功能就是模式、上下限警戒值与测量温度值的显示

,模

块中包含LCD初始化、显示单个字符子函数、显示一个字符串子函数。

程序流

程图如图12所示丄CD初始化程序如下,其它子函数程序详见附录一。

*LCD

初始化

voidinit_LCD(void)

{

 

P0=0;

Delay(15);

LCD_Command(0x38,0);

Delay(5);

LCD_Command(0x38,0);

图12显示程序流程图

Delay(5);

LCD_Command(0x38,0);

Delay(5);

LCD_Command(0x38,1);〃8位数据传送,2行显示,5*7字形

LCD_Command(0x08,1);//关闭显示

LCD_Command(0x01,1);//清屏

LCD_Command(0x06,1);//显示光标右移设置

LCD_Command(0x0c,1);//显示屏打开,光标不显示不闪烁

}

4、3温度测量模块

温度测量程序主要功能就是读出数字温度传感器的温度值。

要正确地读出温度值必须严格遵守单总线器件的命令序列,否则单总线器件不会响应主机。

单总线器件的命令序列如图13所示。

DS18B20

初始化

***********

*/

温度测量模块程序流程图如图14所示QS18B20初始化程序如下,其它子程序详见附录一。

Y

voidinit_18B20(void)

{

DS18B20

存在?

N

ucharx=0;

DQ=1;〃DQ复位

Delay_us(4);//延时

DQ=0;//将DQ拉低

Delay_us(250);//精确延时大于480us

DQ=1;//拉高总线

Delay_us(40);

x=DQ;

本次设计中使用了4个按键,除了

图14温度测量程序流程图

1个复位键还有3个功能键,具体功能前面

4、4键盘扫描模3块单总线命令序列

Delay_us(20);

键盘扫描

已介绍。

键盘扫描程序如下,其它子程序详见附录一,相关流程图如图15所示

voidKey_scan(void)

{

uchartemp;

P1=0xff;

if(P1!

=0xff)

{

Delay(20);//延时消抖

if(P1!

=0xff)

{

temp=P1;

switch(temp)

{

case0xfe:

Key_set();break;

〃P1、0按下,功能选择

case0xfd:

Key_inc();break;

caseOxfb:

Key_dec();break;

〃P1、2按下,数字减一

default:

break;

}

}

}

}图15键盘扫描程序流程图

4、5其它子程序

程序中使用的其它子程序,包括延时子程序、显示字符转换子程序等,具体详

见附录一。

5、仿真分析

在本次的设计中,使用了Proteus仿真软件进行了功能测试,具体仿真步骤及

分析如下

(1)按照原理图,从Proteus元件库中找出对应元件,搭建硬件仿真电路,将程序烧写到单片机中,仿真图见附录三。

(2)

式为N正常工作,绿灯亮,蜂鸣器不响,如图16

0

bDnrDph,can

RF1

点击运行按钮开始仿真,初始上下限值为90C与10C,当前温度为25C,当前模

图16正常模式下仿真图

(3)按下S1键,进入上限警戒值设置模式H,此时按S2、S3键可以进行上限值设定

同时温度正常显示,设置上限值80C,如图17

(4)再次按下S1键,进入下限图戒值设置模值设定仿真时按S2、S3键可以进行下限值

设定,同时温度正常显示,设置下限值20C,如图18

图18下限值设定仿真图

■-■4I

rnr*»a

FT、yr“Y亠YKV

护J叶』

KiimD冉I巴2电In<3i«jnp>3

Eh赋■対

I3F.lN・

(5)再次按下S1键,返回正常模式N,调节DS18B20温度,测量温度随之改变,降低温度,超过下限值5C以下时黄灯亮,蜂鸣器报警,如图19。

图19下限报警仿真图

r

^ss

p-i-ygSE■I

■1"!

«M

•'FT

^VW

(6)升高温度,超过上限值5C以上时黄灯亮,蜂鸣器报警,如图20。

(7)按下S4键,单片机复位。

图20上限报警仿真图

在本次仿真中,可以瞧出,本次设计的硬件电路与软件程序均能成功仿真出来设计要求的各种功能均已达到。

6、总结

本次课程设计为期一周,到此已全部结束。

回想一周中的设计过程,我深深感觉收获良多。

由于从前只就是在理论上学习了单片机以及各种其它知识,即使就

是实验也只就是按照实验指导书进行操作,并没有实际的独立设计一个系统,因此在刚开始接触本次课程设计时,有一点无从下手的感觉。

后来通过查阅相关资料,渐渐开始了解课程设计的一般过程,开始明白一些元器件的相关作用与编程实现方法,并在此期间通过不断深入的学习与锻炼,开始渐渐能熟练运用与熟练编程起来。

通过本次计算机控制技术的课程设计,我更深层次的把理论知识与实际设计结合在一起,锻炼了我的综合运用所学的专业基础知识与解决实际工程问题的能力。

同时也提升了我查阅文献资料、设计手册、设计规范以及电脑制图等其她知识能力水平。

对各种系统的适用条件,各种设备的选用标准,各种管道的安装方式,我都就是随着设计的不断深入而逐渐熟悉并学会应用的。

并且,通过对整体的掌

控,对局部的取舍,对细节的斟酌处理,以及绘图的技巧都使我在设计领域的能力得到了锻炼,得到了较丰富经验。

最后,通过这次的课程设计,我也深刻地认识到,只有将书本与具体的实践相结合,才会有真正的收获,才能巩固自己的所学,认识到自己的不足,同时我们也要有一种积极学习的态度,时代在进步我们也要跟着时代前进,要不断学习,不断创新,用自己的知识与行动来证明自己的价值。

本次课程设计以单片机为核心,介绍了用DS18B20温度传感器进行温度采集并将其传输给AT89C51单片机进行处理再送到LCD显示屏显示。

在此期间可以

通过按键进行上下限警戒值设置,通过LED与蜂鸣器进行指示与报警。

本文就是采用模块化的方式进行叙述,对各模块的设计进行了比较详细地阐述,并着重分析硬件搭建过程与系统软件的设计过程,使用单片机C语言进行程序没计。

本次设计的基于DS18B20的温度测量系统就是一个分布式的温度测量系统,它可以远程

对温度实现测量与监控,广泛应用于电力工业、煤矿、森林、火灾、高层建筑等场合。

本设计应用性比较强,可以应用在仓库温度、大棚温度、机房温度、水池等的监控。

当然,本次设计还存在一些不足,例如在本次设计中,由于时间较短,警戒值只就是在1~99C之间,没有能够扩展到负温度与100C以上;在本次设计中只就是用了4个独立按键,实现简单的上下限警戒值设定,操作较麻烦,如果能够设计出多按键的矩阵式键盘,则能够对温度进行很方便的设定。

此外如果把本设计方案扩展为多点温度控制,加上上位机,则可以实现远程温度监控系统,将具有更大的应用价值。

7、参考文献

[1]潘新民,王燕芳、微型计算机控制技术[M]、北京:

电子工业出版社,2014

[2]王迎旭、单片机原理与应用[M]、北京:

机械工业出版社,2013

[3]康华光、电子技术基础[M]、北京:

高等教育出版社,2013

[4]周正华,唐宁RT1602C与FPGA接口技术[J]、中国科技信息,2008(10)

[5]廖琪梅,韩彬等、基于DS18B20的温度测量仪[J]、国外电子元器件,2008

(2)

附录一:

程序清单

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineBUSY0x80

voidDelay(uint);

voidinit_LCD(void);

voidLCD_Command(uchar,uchar);

voidLCD_Data(uchar);

voidReadyLCD(void);

voidDisplay_char(uchar,uchar,uchar);

voidDisplay_str(uchar,uchar,ucharcode*Data);

voidChange(void);

voidDisplay(void);

voidinit_18B20(void);

ucharRead_18B20(void);

voidWrite_18B20(uchar);

voidRead_temp(void);

voidDelay_us(uchari);voidKey_scan(void);voidKey_set(void);voidKey_inc(void);

voidKey_dec(void);voidAlarm(void);

sbitLCD_RS=P2P;

sbitLCD_RW=P2A1;

sbitLCD_EN=P2A2;

sbitDQ=P1A7;

sbitNormal=P2A4;

sbitAlarm_H=P2A5;

sbitAlarm_L=P2A6;sbitAlarm_BEEP=P2A7;

ucharSet_flag=0;

ucharTemp_mea,Temp_set1,Temp_set2;

ucharTemp_high_1,Temp_high_2;

ucharTemp_low_1,Temp_low_2;

ucharTemp_true_1,Temp_true_2;

externucharcodestr0[]={"High:

CLow:

C"};externucharcodestr1[]={"Mode:

Deg:

C"};

externucharcodestr2[]={"Hellow!

!

"};externucharcodestr3[]={"0123456789"};externucharcodemode[]={"NHL"};

 

主程序

voidmain(void)

//上限报警温度初值90

//下限报警温度初值10

//延时500ms启动

//LCD初始化//DS18B20初始化

//开机界面

//开机界面

P1=0xff;

P2|=0x70;

P2&=0x7f;

Temp_set1=90;

Temp_set2=10;

Delay(500);

init_LCD();

init_18B20();

Display_str(0,0,str2);

Display_str(0,1,str2);

Delay(2000);

Display_str(0,0,str0);

Display_str(0,1,str1);

while

(1)

Delay(1000);

{

Key_scan();

Read_temp();

Change();Display();Alarm();

//扫描键盘

//读取温度

//显示

//指示灯与报警程序

}

}

 

延时kms

voidDelay(uintk){

uinti,j;

for(i=0;i

for(j=0;j<60;j++)

{

}

voidinit_LCD(void)

{

P0=0;

Delay(15);

LCD_Command(0x38,0);

Delay(5);

LCD_Command(0x38,0);

Delay(5);

LCD_Command(0x38,0);

Delay(5);

LCD_Command(0x38,1);//8位数据传送,2行显示,5*7字形

LCD_Command(0x08,1);//关闭显示

LCD_Command(0x01,1);//清屏

LCD_Command(0x06,1);//显示光标右移设置

写指令数据到LCD********/

LCD_Command(0x0c,1);//显示屏打开,光标不

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

当前位置:首页 > 农林牧渔 > 林学

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

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