基于51单片机的通风电路的设计.docx
《基于51单片机的通风电路的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的通风电路的设计.docx(43页珍藏版)》请在冰豆网上搜索。
基于51单片机的通风电路的设计
阳泉职业技术学院
毕业论文
毕业生姓名
:
钟毅芳
专业
:
应用电子技术
学号
:
080724015
指导教师
乔永凤
所属系(部)
:
信息系
二〇一一年五月
阳泉职业技术学院
毕业论文评阅书
题目:
基于51单片机的通风电路设计
信息系 应用电子技术 专业姓名 钟毅芳
设计时间:
2011年3月7日~2011年5月6日
评阅意见:
成绩:
指导教师:
(签字)
职 务:
2011年月 日
阳泉职业技术学院
毕业论文答辩记录卡
信息系 应用电子技术专业姓名 钟毅芳
答辩内容
问题摘要
评议情况
记录员:
(签名)
成绩评定
指导教师评定成绩
答辩组评定成绩
综合成绩
注:
评定成绩为100分制,指导教师为30%,答辩组为70%。
专业答辩组组长:
(签名)
2011年 月 日
基于51单片机的通风电路设计
摘要:
本设计采用STC89S51单片机为控制核心,电机的硬件驱动采用ULN2003芯片,由单片机输出信号控制电机转动,利用温度传感器模块实现智能检测当前环境温度,整个系统的电路结构简单,可靠性高。
设计测试结果满足要求,设计原理简明,方案正确。
关键词:
通风系统STC89S51DS18B20ULN2003驱动自动测温
DesignofanalogbusstopsystemBasedonsingle-chip——bodybuscampaign
MajorofAppliedElectronicTechnologyInformationandEngineeringCollegeWanghui
Abstract:
Thedesignforthecontrolofsingle-chipcoreSTC89C51,electricalhardwaredriversusingtheULN2003chip,single-chipoutputbythePWMcontrolofmotorspeed,theuseofinfrareddetectionmodulebusintelligentautomatictracing,thecircuitstructureofthewholesystemissimple,highreliability.Experimentaltestresultsmeettherequirements,designprinciplesofsimplicity,theprogramcorrectly.
Keyword:
IntelligentventilationsystemSTC89S51DS18B20ULN2003Automatictemperature
引言
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中智能通风系统就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从属于单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计所介绍的液晶温度控制直流电机与传统的手动控制直流电机及测温电路相比,具有读数方便,显示的信息比较多,测温范围广,测温比较准确,实现了智能化,其输出温度采用液晶1602显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机STC89S51,测温传感器使用DS18B20,用液晶芯片LCD1602实现温度显示,能准确到小数点后一位达到以上要求。
单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于STC89S51单片机的测温控制电机风扇系统,详细描述了利用温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要发光报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度比较高、体积小、功耗低环保实惠廉价等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。
DS18B20与STC89S51结合实现最简温度检测系统和具有智能化的控制风扇的开启与关闭,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
1方案的选择及认证
1.1电源方案选择
由于本系统需要+5V电源供电,我们考虑了如下几种方案为系统供电。
方案1:
采用4节1.5V干电池供电,电压达到12V,经7805稳压后给直流电机供电及单片机系统和其他芯片供电。
由于干电池电量有限,使用大量的干电池将会给系统调试带来不便,而且电池对环境产生污染源。
因此,我们放弃了这种方案。
方案2:
采用变压器整流滤波再经过7805稳压稳定后再给直流电机供电及单片机和其他芯片供电,。
此方案是自制一个+5v电源,电路比较简单,而且元件也比较廉价,电路板小而易携带。
因此,这种方案比较可行,因此我们选择了此方案。
综上考虑,我们选择了方案2。
1.1测温传感器模块
方案1:
使用热敏电阻设计
由于本设计是测温控制直流电机电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦而且测量的精度不够,抗干扰能力比较差,受各方面因素的影响较多,所以此方案不可取。
方案2:
使用DS18B20传感器设计
采用STC89C51单片机作控制器,温度传感器选用DS18B20来对环境温度采集,测温电路由温度传感器DS18B20实现,本设计所介绍的DS18B20温度采集与传统的热敏电阻之类的利用感温效应相比,具有温度采集数据处理方便,测温范围广,测温准确,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机STC89S51,测温传感器使用DS18B20,用,实现温度显示,能准确达到以上要求。
故选择方案二。
1.2显示模块
方案1:
用四位七段数码管,对于数码显示,显示的数据信息比较有限,而且显示的控制比较繁琐,因此我们放弃了这种方案。
方案2:
用液晶LCD1602显示,可以显示的数据信息比较多,对液晶现实的控制写入比较简单,而且它的价格然我们接受的起,所以我们选择了方案2。
1.4电机驱动模块的选择
方案1:
采用专用芯片L298N作为直流电机驱动芯片。
L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率比较高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。
用该芯片作为电机驱动,操作方便,稳定性好,性能优良,但芯片比较贵。
方案2:
用分立元件制作直流电机驱动电路。
由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中比较广泛。
但是这种电路工作性能不够稳定。
方案3:
用ULN2003反相器作为直流电机驱动芯片,ULN2003也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,而且价格低廉。
因此我们选用了方案3。
能够较好地满足系统的要求,因此我们选择了此方案。
2硬件系统设计与电路设计
硬件设计系统主要包括了测温系统的设计以及单片机应用系统设计。
一个单片机应用系统的硬件电路设计主要包含有两部分内容:
一是系统扩展,即单片机内部的功能单元,如ROM﹑RAM﹑I/O口﹑定时/计数器﹑中断系统等,当不能满足应用系统的要求时,还必须在片外进行扩展,选择适当的芯片,设计相应的电路。
二是系统配置,既按照系统功能要求配置外围设备,并要考虑设计合适的接口电路。
2.1通风电路组成框图
通风系统的控制核心是STC89S51单片机,系统由测温模块、直流电机驱动模块、LCD显示模块、LED灯光报警指示模块、电源模块等几部分构成。
系统框图如图2-1所示。
图2-1通风系统框图
2.2STC89C51单片机硬件结构
STC89C51单片机是把那些控制应用所必需的基本内容都集成在一个尺寸有限的电路芯片上。
如果按照功能的划分,它主要由微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器组成。
它们都是通过片内单一总线连接而成,其基本结构仍旧是采用CPU加上外围芯片的传统模式。
但对各种功能部件的控制是则采用特殊功能寄存器的集中控制方式。
STC89C51单片机的硬件结构具有功能部件种类齐全,功能强等特点。
特别值得一提的是该单片机中CPU中的位处理器,它实际上是一个完整的一位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。
1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。
MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精妙之处。
2.3最小应用系统设计
STC89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单可靠。
用STC89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图2-3所示。
由于集成度的限制,最小应用系统只能用作一些小型的控制单元。
其应用特点如下:
(1)有可供用户使用的大量I/O口线。
(2)内部存储器容量有限。
(3)应用系统开发具有特殊性。
图2-2STC89C51单片机最小系统
2.3.1时钟电路
STC89C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。
STC89C51单片机产生时钟的方法有两种。
内部时钟方式和外部时钟方式。
本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。
本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。
振荡晶体频率选择11.0592MHz。
电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,但在20pF到30pF时振荡器有较高的频率稳定性。
所以本设计中,电容选择22pF。
在设计印刷电路板时,晶体和电容应尽可能地靠近单片机芯片,以减少寄生电容的产生,更好的保证振荡器稳定和可靠地工作。
2.3.2复位电路
STC89C51的复位是由外部的复位电路来实现的。
复位引脚RST通过一个施密特触发器来抑制噪声,在每个机器周期的S5P2,复位电路采样施密特触发器的输出电平一次,然后才能得到内部复位操作所需要的信号。
复位电路通常采用上电自动复位和按钮复位两种方式。
最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
上电复位电路见图2-4。
图2-3上电复位
2.4温度测量电路单元模块设计
测温所采用的电路如下图2-5所示:
图2-4测温电路原理
我们采用DS18B20温度传感器实物如图2-4-1所示:
图2-4-1-1ds18b20的8角封装
图2-4-1ds18b20实物
DS18B20输出地数据格式说明在下图2-4-2中具体表现出来,其中MS表示数据的高8位,LS表示数据的低8位。
由于温度在0℃以上为正温度,而在0℃以下为负温度,因此在计算温度时必须在温度转换之前应先对正负数进行判别,然后再进行转换。
当S=0时,表示正数;S=1时,表示负数。
对于负数,在处理时是采用了“先取反再加一”.即将补码转换为原码的方法。
同时,为了提高测量的精度,DS18B20采用了12位数据转换的方式,其中,符号位占l位,整数占7位,小数占4位。
因此,在计算与处理时,还必须将整数和小数分开进行处理。
通过对百分位数据的“四舍五入”处理。
其引脚说明如下表2-4-1
8引脚SOIC封装
TO92
符号
说明
5
1
GND
地
4
2
DQ
数据输入/输出,常态下高电平
3
3
VDD
可选电源
表2-4-1
DS18B20的存储器由暂存RAM和非易失的EEPRAM构成。
暂存RAM共9个存储单元,其结构图如图2-4-2所示。
暂存RAM中TH、TL、配置字节的拷贝。
改变TH、TL的值,可以改变DS18B20的上下限的温度。
通过设置配置字节的第67位,可完成温度值的分辨率的配置。
温度值低字节
0
温度值高字节
1
TH/用户字节1
2
TL/用户字节2
3
配置字节
4
保留字节
5
保留字节
6
保留字节
7
CRC
8
CRC值为前8个字节的校验位。
温度值的高低字节位结构如表2-4-2-1:
表2-4-2-1
本通风系统的温度测量温度显示的整数温度值取值时采取:
“高字节的低三位,低字节的高四位”;小数部分:
“低字节位的低四位”列表查表。
完成DS18B20操作指令集如下列表2-4-2-2:
命令
说明
协议
总线数据操作
温度转换
开始温度转换
44H
将转换状态发送给主设备
读寄存器
读所有寄存器,包括CRC字节
BEH
将9字节的数据发送给主设备
写寄存器
数据写入寄存器(TH、TL)
4EH
主设备向ds18b20发送3字节数
复制
将寄存器TH、TL恢复到EEPROM
48H
无
回调
由EEPROM向寄存器恢复TH、TL和配置寄存器数据
B8H
将恢复状态发送给主设备
读电源
读取电源模式
B4H
向主设备发送电源状态
表2-4-2-2
2.5电机驱动单元模块设计
从单片机输出的信号功率很弱,即使在没有其它外在负载时也无法带动电机,所以在实际电路中我们加入了电机驱动芯片用来提高输出电机信号的功率,从而能够根据实际需要来控制电机转动。
根据驱动功率大小以及连接电路的简化要求我们选择了ULN2003芯片,其外形、管脚分布如图2-7所示。
图2-5ULN2003管脚分布图
从图中可以知道,一块ULN2003芯片能够驱动两个电机转动,它的使能端可以外接高低电平,也可以利用单片机进行软件控制,极大地满足各种复杂电路需要。
另外,ULN2003的驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决负载能力不足的问题。
电机驱动电路如下图2-8所示。
图2-6电机驱动电路
ULN2003的1~8个引脚接到单片机上,通过对单片机的编程可以实现直流电机正停转的功能。
2.6液晶LCD1602显示模块硬件电路设计
图2-7通风系统显示图及仿真效果图
3软件设计
3.1软件程序设计
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个对象的实际需要设计应用程序。
在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。
数据处理包括:
数据的采集、数字处理、数据变换,显示处理等。
过程控制程序主要是使单片机按一定的方法进行计算,然后再输出信号,以便控制生产。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。
所谓“模块”,实质上就是完成一定功能,相对独立的程序段。
模块程序设计法的主要优点是:
(1)单个模块比起一个完整的程序易编写及调试;
(2)模块可以共存,一个模块可以被多个任务在不同条件下调用;
3.2主程序流程图
主程序流程图3-2如下所示:
图3-2程序流程图
3.3读取温度流程图
测温流程图3-2如下:
图3-2读取温度流程图图3-2-1温度报警的流程图
3.4温度报警控制电机流程图
温度报警控制流程图如图3-4:
报警温度原理图如图3-4-1:
图3-4-1温度报警原理图
当温度值大于35度时,电机转动绿灯闪烁报警;当温度大于10度小于35度时,电机停止转动;当温度小于10度时,电机转动,红灯闪烁报警。
3.5液晶LCD1602显示温度
液晶显示流程图如图3-5:
图3-5液晶LCD1602显示流程图
3.6报警温度上下限设置和按键处理
报警温度上下限设置和按键处理流程图如下
图3-6-1按键处理图3-6-2报警温度上下限设置
结论:
本设计通风控制系统经过论证,证明运行可靠,操作方便,节省人力投入,提高了自动化控制水平和工作效率,方便了调试和维护,符合智能通风技术的要求,真正做到既经济又实用的控制目的,具有推广价值。
随着生活水平的提高,人们对室内空气的要求已从保暖降温发展到要求高品质。
在自然通风达不到要求时,强制通风的空气质量控制系统则成为建筑必不可少的设施,而这方面我国才刚刚起步,中低端市场更是空白。
本设计已成功地应用于车间的通风机控制中,应用前景广阔,可以大量推广到需要低成本通风系统的场合,如学校、医院、家庭、商场及工厂等。
致谢:
在这段时间里,乔老师严谨的治学态度和热忱的工作作风令我十分钦佩,她的指导使我们受益匪浅。
通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年的学习成果。
虽然在这次设计中对于知识的运用和衔接还不够熟练。
但是我将在以后的工作和学习中继续努力、不断完善。
这段时间的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。
由于自身水平有限,设计过程中存在了一些不足之处,敬请各位老师批评指正。
参考文献
[1]王靖胡特谢玉川等.现代住宅室内通风方式探讨.制冷与空调.2003
(2).
[2]侯哲生李聪张伏等.基于单片机的通风机控制器的设计.2005-09-13.
[3]王成福,赵云等.一种简单的实用LCD数显温度计.2002.
[4]宋亚伟李恒宗基于DS18B20的温度采集控制电路.2008,3,7(9).
[5]肖晴液晶显示温度的控制.2005
(2).
[6]沈兰宁窗户自动控制管理系统的控制与设计.2009(22).
[7]张菁基于单片机温度控制系统方案的研究.2007(9).
[8]党峰王敬农高国旺基于DS18B20的数字式温度计的设计.2007(3).
附件1.通风电路主板、串口的原理图
主板的电路图
电源及串口电路图
附件电路图4LCD显示模块电路图
附件2.通风电路主板、串口的PCB图
附件电路图4LCD显示模块电路图
附件3.实物图
附件4.程序清单
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
voiddelayNOP()
{
_nop_();
_nop_();
_nop_();
_nop_();
}
ucharflag=0;//按键标识符
sbitDQ=P3^3;//温度传感器数据口
sbitLCD_RS=P1^2;
sbitLCD_RW=P1^1;
sbitLCD_EN=P1^0;
sbitForward=P1^3;//高温报警
sbitStop=P1^1;
sbitReveral=P1^5;//低温报警
sbitMA=P2^5;//电机驱动
sbitbeep=P2^7;//蜂鸣器报警
sbitbutton=P2^6;//按键
sbitk1=P2^0;
sbitk2=P2^1;
sbitk3=P2^2;
sbitk4=P2^3;
ucharcodespeak[]="Hottemp!
!
!
!
";
ucharcodespeak1[]="coldtemp!
!
!
";
ucharcodehelloword[]={"Wellcomeyou!
"};
ucharcodehelloword1[]={"Temperaturetest"};
ucharcodehelloword2[]={"Thetestisend"};
ucharcodeTemp_Disp_Title[]={"CurrentTemp:
"};
ucharCurrent_Temp_Display_Buffer[]={"TEMP:
"};
ucharalarm[]="HI:
LOW:
";
ucharalarm_temp[2]={15,10};
uchargao,di;
ucharng=0;//负温度标识符
//温度字符
ucharcodeTemperature_Char[8]={0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00};
//温度小数位对照表
ucharcodedf_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
//当前读取的温度整数部分
ucharCurrentT=0;
//有符号温度值
charSigned_Temp=0;
//从DS18B20读取的温度值
ucharTemp_Value[]={0x00,0x00};
//温度数据备份
ucharBack_Temp_Value[]={0xFF,0xFF};
//待显示的各温度数位
ucharDisplay_Digit[]={0,0,0,0};
//传感器正常标志
bitDS18B20_IS_OK=1;
//voiddisplay_alarm_temp(ucharhigh,ucharlowe);
//-----------------------------------------------------------------
//延时1
//-----------------------------------------------------------------
voidDelayXus(intx)
{
uchari;
while(x--)for(i=0;i<200;i++);
}
//-----------------------------------------------------------------
//LCD忙检测
//--------