基于51单片机的温度控制系统设计方案Word格式.docx
- 文档编号:17505817
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:27
- 大小:1.36MB
基于51单片机的温度控制系统设计方案Word格式.docx
《基于51单片机的温度控制系统设计方案Word格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度控制系统设计方案Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
3个键设计思路以下:
当按下S1键时,系统进入上下限戒备值调整状态;
当第一次按下S1键时,进行上限戒备值设定,当第二次按下S1键时,进行下限戒备值设定,当第三次按下S1键时,回到正常工作状态。
在戒备值调整状态下,按下S2键,上下限戒备值加1,按下S3键,上下限戒备值减1,正常工作状态下,按下S2和S3键无作用。
本次设计中的温度传感器使用的是DALLAS企业的单总线数字温度传感器DS18B20,这是一种常用的温度传感器,拥有体积小、硬件开支低、抗扰乱能力强、精度高的特色。
DS18B20采纳独到的一线接口,拥有只要要一条口线通讯多点的能力,简化了散布式温度传感觉用,无需外面元件。
,丈量温度的范围为-55℃至+125℃,在-10℃至+85℃℃。
温度传感器可编程的分辨率为9~12位,温度变换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包含恒温控制、工业系统、花费电子产品温度计、或任何热敏感系统。
因为DS18B20是一条口线通讯,所以中央微办理器与DS18B20只有一个一条口线连结。
因为每一个DS18B20的包含一个独到的序号,多个DS18B20能够同时存在于一条总线,这使得温度传感器搁置在很多不一样的地方。
它的用途好多,包含空调环境控制,
感测建筑物内温设施或机器,并进行过程监测和控制。
图5DS18B20封装及引脚
℃℃℃℃增量递加。
在上电状态下默认的精度为12位。
DS18B20启动后保持低功耗等候状态;
当需要履行温度丈量和AD变换时,总线控制器一定发出[44h]命令。
在那以后,产生的温度数据以两个字节的形式被储存到高速暂存器的温度存放器中,DS18B20持续保持等候状态。
当DS18B20由外面电源供电时,总线控制器在温度变换指令以后倡始“读时序”,DS18B20正在温度变换中返回0,变换结束返回1。
假如DS18B20由寄生电源供电,除非在进入温度变换时总线被一个强上拉拉高,不然将不会由返回值。
在硬件上,DS18B20与单片机的连结有两种方法:
一种是VDD接外面电源,GND接地,DQ与单片机的I/O口相连;
另一种是用寄生电源供电,此时,VDD、GND接地,DQ接单片机的I/O口。
不论是接外面电源仍是用内部寄生电源,I/O口线要接5kΩ左右的上拉电阻。
kΩ的上拉电阻,这样单总线DQ在闲置状态时为高电平。
图6DS18B20外面电源连结方式
3.5LCD显示模块
在本次设计中,使用RT1602C字符型液晶显示模块(LCM)来设计目前温度和上下限戒备值的显示电路。
RT1602C字符型液晶显示模块是16字×
2行的采纳5×
7点阵图形来显示字符的液晶显示器,采纳标准的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所示。
图8RT1602C与单片机连线
LCM的数据总线与单片机的P0口经过一个上拉电阻排相连,LCM的三条控制线RS、RW、EN分别与单片机的I/O口P2.0、P2.1、P2.2相连,第1、2引脚分别与地、电源相连,第3引脚使用一个10kΩ的可调电阻对显示屏的光明进行调整。
在本次设计中,采纳LED发光二极管作为系统指示灯,采纳蜂鸣器作为报警鸣笛。
当温度高于上限戒备值时,点亮红色发光二极管,蜂鸣器发出响声;
当温度低于下限戒备值时,点亮黄色发光二极管,蜂鸣器发出响声;
温度在正常范围内时,点亮黄色发光二极管。
整个报警与指示电路如图9所示,此中绿、红、黄色指示灯分别接单片机P2.0、P2.1、P2.2口,电平拉低时点亮LED,蜂鸣器电路接单片机的P2.7口,电平拉高时蜂鸣器响。
至此便达成了整个硬件电路的设计工作,整个系统的原理图见附录二,系统I/O分派表以下:
I/O口
功能说明
LCM数据口
LCM读/写控制
键盘输入
LCM使能
DS18B20温度收集
LED信号输出
LCM数据/命令控制
报警信号输出
单片机应用系统的设计中,软件设计据有重要的地点。
在本次设计中,依据功能要求,能够把系统程序区分为5个模块,即主程序模块、显示模块、温度丈量模块、键盘扫描模块、其余子程序模块,如图10所示。
图10软件设计框图
主程序的内容包含单片机初始化、有关零件初始化和一些其余子程序的调用等。
主程序清单以下,程序流程图如图11所示。
/************主程序************/
voidmain(void)
{
P1=0xff;
//初始化P1口以便读入
P2|=0x70;
P2&
=0x7f;
Temp_set1=90;
//上限报警温度初值90
Temp_set2=10;
//下限报警温度初值10
Delay(500);
//延时500ms启动
init_LCD();
//LCD初始化
init_18B20();
//DS18B20初始化
Display_str(0,0,str2);
//开机界面
Display_str(0,1,str2);
图11主程序流程图
Delay(2000);
Display_str(0,0,str0);
Display_str(0,1,str1);
while
(1)
{
Key_scan();
//扫描键盘
Read_temp();
//读取温度
Change();
Display();
//显示
Alarm();
//指示灯与报警程序
Delay(1000);
}
}
显示程序主要达成的功能是模式、上下限戒备值和丈量温度值的显示,模块中包含LCD初始化、显示单个字符子函数、显示一个字符串子函数。
程序流程图如图12所示,LCD初始化程序以下,其余子函数程序详见附录一。
/************LCD初始化************/
voidinit_LCD(void)
P0=0;
Delay(15);
LCD_Command(0x38,0);
Delay(5);
图12显示程序流程图
LCD_Command(0x38,1);
//8位数据传递,2行显示,5*7字形
LCD_Command(0x08,1);
//封闭显示
LCD_Command(0x01,1);
//清屏
LCD_Command(0x06,1);
//显示光标右移设置
LCD_Command(0x0c,1);
//显示屏翻开,光标不显示不闪耀
温度丈量程序主要功能是读出数字温度传感器的温度值。
要正确地读出温度值一定严格恪守单总线器件的命令序列,不然单总线器件不会响应主机。
单总线器件的命令序列如图13所示。
温度丈量模块程序流程图如图14所示,DS18B20初始化程序以下,其余子程序详见附录一。
/************DS18B20初始化************/
voidinit_18B20(void)
ucharx=0;
DQ=1;
//DQ复位
Delay_us(4);
//延时
DQ=0;
//将DQ拉低
Delay_us(250);
//精准延时大于480us
//拉高总线
Delay_us(40);
x=DQ;
Delay_us(20);
本次设计中使用了4个按键,除了1个复位键还有3个功能键,详细功能前方已介绍。
键盘扫描程序以下,其余子程序详见附录一,有关流程图如图15所示。
/************键盘扫描************/
voidKey_scan(void)
uchartemp;
P1=0xff;
if(P1!
=0xff)
Delay(20);
//延时消抖
if(P1!
temp=P1;
switch(temp)
{
case0xfe:
Key_set();
break;
//P1.0按下,功能选择
case0xfd:
Key_inc();
//P1.1按下,数字加一
case0xfb:
Key_dec();
//P1.2按下,数字减一
default:
}
图15键盘扫描程序流程图
程序中使用的其余子程序,包含延时子程序、显示字符变换子程序等,详细详见附录一。
在本次的设计中,使用了Proteus仿真软件进行了功能测试,详细仿真步骤及剖析以下。
(1)依据原理图,从Proteus元件库中找出对应元件,搭建硬件仿真电路,将程序烧写到单片机中,仿真图见附录三。
(2)点击运转按钮开始仿真,初始上下限值为90℃和10℃,目前温度为25℃,目前模式为N正常工作,绿灯亮,蜂鸣器不响,如图16。
图16正常模式下仿真图
(3)按下S1键,进入上限戒备值设置模式H,此时按S2、S3键能够进行上限值设定,同时温度正常显示,设置上限值80℃,如图17。
(4)再次按下S1键,进入下限戒备值设置模式L,此时按S2、S3键能够进行下限值设定,同时温度正常显示,设置下限值20℃,如图18。
图18下限值设定仿真图
(5)再次按下S1键,返回正常模式N,调理DS18B20温度,丈量温度随之改变,降低温度,超出下限值5℃以下时,黄灯亮,蜂鸣器报警,如图19。
图19下限报警仿真图
(6)高升温度,超出上限值5℃以上时,黄灯亮,蜂鸣器报警,如图20。
(7)按下S4键,单片机复位。
在本次仿真中,能够看出,本次设计的硬件电路和软件程序均能成功仿真出来,设计要求的各样功能均已达到。
本次课程设计为期一周,到此已所有结束。
回忆一周中的设计过程,我深深感觉收获良多。
因为以前不过在理论上学习了单片机以及各样其余知识,即便是实验也不过依据实验指导书进行操作,并无实质的独立设计一个系统,所以在刚开始接触本次课程设计时,有一点无从下手的感觉。
以后经过查阅有关资料,逐渐开始认识课程设计的一般过程,开始理解一些元器件的有关作用与编程实现方法,并在此时期经过不停深入的学习和锻炼,开始逐渐能娴熟运用和娴熟编程起来。
经过本次计算机控制技术的课程设计,我更深层次的把理论知识和实质设计联合在一同,锻炼了我的综合运用所学的专业基础知识和解决实质工程问题的能力。
同时也提高了我查阅文件资料、设计手册、设计规范以及电脑制图等其余知识能力水平。
对各样系统的合用条件,各样设施的采纳标准,各样管道的安装方式,我都是跟着设计的不停深入而逐渐熟习并学会应用的。
并且,经过对整体的掌控,对局部的弃取,对细节的商酌办理,以及画图的技巧都使我在设计领域的能力获得了锻炼,获得了较丰富经验。
最后,经过此次的课程设计,我也深刻地认识到,只有将书籍与详细的实践相联合,才会有真实的收获,才能稳固自己的所学,认识到自己的不足,同时我们也要有一种踊跃学习的态度,时代在进步我们也要跟着时代行进,要不停学习,不停创新,用自己的知识与行动来证明自己的价值。
本次课程设计以单片机为中心,介绍了用DS18B20温度传感器进行温度收集,并将其传输给AT89C51单片机进行办理再送到LCD显示屏显示。
在此时期能够经过按键进行上下限戒备值设置,经过LED和蜂鸣器进行指示和报警。
本文是采纳模块化的方式进行表达,对各模块的设计进行了比较详尽地论述,并侧重剖析硬件搭建过程和系统软件的设计过程,使用单片机C语言进行程序没计。
本次设计的鉴于DS18B20的温度丈量系统是一个散布式的温度丈量系统,它能够远程对温度实现丈量和监控,宽泛应用于电力工业、煤矿、丛林、火灾、高层建筑等场合。
本设计应用性比较强,能够应用在库房温度、大棚温度、机房温度、水池等的监控。
自然,本次设计还存在一些不足,比如在本次设计中,因为时间较短,戒备值不过在1~99℃之间,没有能够扩展到负温度和100℃以上;
在本次设计中不过用了4个独立按键,实现简单的上下限戒备值设定,操作较麻烦,假如能够设计出多按键的矩阵式键盘,则能够对温度进行很方便的设定。
别的假如把本设计方案扩展为多点温度控制,加上上位机,则能够实现远程温度监控系统,将拥有更大的应用价值。
[1]潘新民,王燕芳.微型计算机控制技术[M].北京:
电子工业第一版社,2014
[2]王迎旭.单片机原理与应用[M].北京:
机械工业第一版社,2013
[3]康华光.电子技术基础[M].北京:
高等教育第一版社,2013
[4]周正华,唐宁RT1602C与FPGA接口技术[J].中国科技信息,2008(10)
[5]廖琪梅,韩彬等.鉴于DS18B20的温度丈量仪[J].外国电子元器件,2008
(2)
附录一:
程序清单
#include<
reg51.h>
intrins.h>
absacc.h>
#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=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_EN=P2^2;
sbitDQ=P1^7;
sbitNormal=P2^4;
sbitAlarm_H=P2^5;
sbitAlarm_L=P2^6;
sbitAlarm_BEEP=P2^7;
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:
externucharcodestr2[]={"
Hellow!
!
"
externucharcodestr3[]={"
0123456789"
externucharcodemode[]={"
NHL"
/********主程序********/
/********延时kms********/
voidDelay(uintk)
uinti,j;
for(i=0;
i<
k;
i++)
for(j=0;
j<
60;
j++)
;
/********显示模块********/
/********LCD初始化********/
/********写指令数据到LCD********/
voidLCD_Command(ucharLC,ucharBC)
if(BC)ReadyLCD();
P0=LC;
LCD_RS=0;
//选中指令存放器
LCD_RW=0;
//写模式
LCD_EN=1;
_nop_();
LCD_EN=0;
/********写显示数据到LCD********/
voidLCD_Data(ucharLD)
ReadyLCD();
P0=LD;
LCD_RS=1;
//选中数据存放器
/********检测LCD忙状态********/
voidReadyLCD(void)
P0=0xff;
LCD_RW=1;
while(P0&
BUSY)
LCD_EN=0;
_nop_();
LCD_EN=1;
/********显示一个字符********/
voidDisplay_char(ucharX,ucharY,ucharData)
Y&
=0x01;
X&
=0x0f;
if(Y)X|=0x40;
X|=0x80;
LCD_Command(X,0);
LCD_Data(Data);
/********显示一串字符*****
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 温度 控制系统 设计方案