单片机课程设计报告温度报警器资料Word文档下载推荐.docx
《单片机课程设计报告温度报警器资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告温度报警器资料Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
在日常生活中,温度对于我们并不陌生,它是一个时时刻刻存在的物理量在我们的日常生活中占据了十分重要的地位。
温度的大小时刻与我们的生产、生命、安全息息相关。
因此对温度的测量与控制对各个行业领域有着很及其重要的作用尤其是在金属冶炼、化学研究、建材生产、食品加工、机械制作、石油提炼等工业领域,占据不可忽视的作用。
众所周知,当我们进行陶瓷烧烤,制作陶瓷工艺时,必须很精确的控制其烧烤温度,只要我们控制好其温度,这样才能创造出完美的、无瑕疵的艺术品,一旦温度控制不佳,将会一件次品;
另外当我们进行酿酒时,同样也需要对温度进行合理适当的控制,只有这样,我们才能够生产出大家公认的好酒。
如此可见,对于温度的检测与把控在我们日常生活以及工业生产占据着举足轻重的地位。
目前,在日新月异的生活变化中,工业和农业领域得到了快速的发展与进步,人们的需求也是不断地扩张,对于电子工业领域,自动化的产品无疑是得到大家的欢迎,随着微型处理器功能的不断强大,单片机无疑成了人们心目中最美好的选择,它的出现为人民的生活带来了不可否认利益,对于工业领域,提高了生产效率,方便了人民的生活。
然而随着人们的要求越来越高,对现代科学研究,工作,生活,提供更便利的设施需要从单片机技术开始,向着数字控制系统,智能控制方向不断地发展。
目前,我们在科技迅速发展的现在社会中不断成长,信息技术已经不知不觉的渗透到我们生活的各个方面。
为了确保这些科技产品的安全,减少其对我们生命和财产造成损失,我们首先需要控制它们的温度,确保它们在正常的温度之间正常运行,因研究兼备经济实用为一体的温度报警装置具有重要的意义
1.3温度报警器的现状及发展趋势
在现代社会中,由于工业过程控制系统的不断发展,特别是计算机领域中微电子技术以及自动控制理论和设计方法的快速发展,相对中国而言,国外一些发达国家在温度监控系统研究中已经成功取得了超前的成绩,具体的表现其自适应、智能化、参数自整定的特点。
以德国、日本、美国等发达国家为例,在上个世纪,他们已经成功生产出了一批商业化的、性能优异的温度监控器以及仪表设备,并且已经投入市场,在工业、家庭等领域得到了广泛的应用,而中国才处于研究的初级阶段。
2系统整体方案设计
2.1设计目标
本设计采用STC89C52单片机为主控芯片,结合外围电路矩阵键盘、液晶显示器LCD1602等部分组成。
其中矩阵键盘用于输入数字密码和进行各种功能的实现。
由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,组成的温度报警器系统,能够实现:
1.DS18B20不断采集周围环境温度;
2.单片机处理温度的数据显示在DS18B20;
3.用户设定温度报警的上限和下限;
系统整体设计框图如图2-1所示:
图2-1系统整体设计框图
2.2系统的基本方案
2.2.1系统方案选择
采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。
便于单片机处理及控制,节省硬件电路。
且该芯片的物理化学性很稳定,此元件线形性能好,在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度装置,它直接输出温度的数字信号到微控制器。
每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。
这样一条总线上可挂接多个DS18B20传感器,实现多点温度测量,轻松的组建传感网络。
2.2.2各模块方案选择
2.2.2.1单片机的选择
采用STC89C52单片机,它是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
2.2.2.2温度传感器的选择
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。
DS18B20的管脚排列如图3.5所示。
64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。
不同的器件地址序列号不同。
2.2.2.3显示模块的选择
液晶显示采用LCD液晶显示,显示的位数多,由单片机驱动。
此方案有美观、显示清晰多样的优点。
2.2.2.4报警模块的选择
采用有源蜂鸣器来报警(需要一定的频率才可以驱动),可以发出声音报警且降低了成本。
2.3主要元器件介绍
2.3.1STC89C52的简介
STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
STC89C52具体介绍如下:
①主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源
GND(Pin20):
接地线
②外接晶振引脚(2根)
XTAL1(Pin19):
片内振荡电路的输入端
XTAL2(Pin20):
片内振荡电路的输出端
③控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号
PSEN(Pin29):
外部存储器读选通信号
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
④可编程输入/输出引脚(32根)
STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
P0口(P39~P32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(P1~P8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(P21~P28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(P10~P17):
8位准双向I/O口线,名称为P3.0~P3.7
2.3.2LCD1602的简介
本设计所使用的是不带字库的LCD1602液晶显示屏,因为其可以在proteus中仿真,便于设计,其引脚表如2-3所示。
表2-312864引脚
3系统的硬件设计与实现
3.1系统硬件概述
本系统是通过键盘扫描模块,既能够显示数据并且还能修改密码,开锁密码,具有强大的功能,通过键盘扫描模块输入到单片机控制系统STC89C52中。
然后通过LCD显示模块来显示我们所要有数据,还有一个就是报警模块,当输入的密码相同时,则显示模块的灯点亮,当输入的密码是错误时,重新输入,三次出错蜂鸣器响,发出报警。
为了达到设定的功能,本装置键盘扫描模块、单片机控制模块、LCD显示模块,报警模块等4模块组成。
3.2主要单元电路的设计
3.2.1温度采集模块电路的设计
3.2.2单片机控制模块电路的设计
单片机作为本装置的核心器件,在系统中起到控制报警、以及LCD显示的作用,其中采用的是STC89C52是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。
第20引脚为接地端;
第40引脚为电源端;
第31引脚需要接高电位使单片机选用内部程序存储器;
第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号;
第9脚为复位脚,当其接高电位时,单片机停止工作。
P1口接LCD控制引脚,P0口连接一LCD1602显示屏数据输入端,P3口与12个阵列式按键相连实现对键盘的扫描。
如图3-2所示。
图3-2主控电路图
3.2.3报警模块电路的设计
本模块的作用是当开锁按钮被按下时,如果LCD当前显示值相同,则红灯点亮,当输入的数与密码不同时,则蜂鸣器立刻发出声音报警。
如图3-3所示。
图3-3报警电路图
3.2LCD1602显示模块电路的设计
本模块主要用于显示指示用户密码输入要求。
根据管脚要求连接电路,P0口接上拉电阻,并与LCD数据输入端口连接,控制管脚与P1口连接。
如图3-4所示。
3-4显示模块电路图
4系统的软件设计与实现
4.1KEIL软件介绍
Keil是美国Keil公司的C51编译器,它被嵌入到了KeiluVision集成开发环境中。
Keil是目前最常用的编译器,支持浮点等到类型,支持多维数组,能生成对应的汇编代码,能直接编译汇编代码程序和内嵌多种工具,可以方便的链接,生成可执行文件。
KeiluVision2IDE是Keilsoftware公司的产品,它集项目管理、编译工具、代码编写工具、代码调试以及完全仿真于一体,适合个人开发或人数少、对开发过程的管理还不成熟的开发团体。
这一功能强大的软件提供简易的开发平台,可以让开发者在开发过程中集中精力于项目本身,加快开发速度。
4.2系统程序设计流程图
4.2.1主程序软件设计
通过上述原理,已对密码锁整体运行环境有了充分认识,绘制主程序和子程序流程图,利用Keil软件,对单片机进行编程,如图4-1为主程序功能流程图:
4-1主程序功能流程图
4.2.2温度采集的软件设计
如图4-2为温度采集的软件设计,主要功能是完成DS18B20的初始化工作,并进行读温度,将温度转化成为压缩BCD码并在显示器上显示传感器所测得的实际温度。
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,校验有错时不进行温度数据的改写。
4-2温度采集的软件设计流程图
4.2.3温度采集算法软件设计
如图4-3为温度采集算法流程图,计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图。
4-3温度采集算法流程图
4.2.4温度转换命令子程序软件设计
如图4-4为温度转换命令子程序流程图,温度转换命令子程序主要是发温度转换开始命令,当采用12位分辩率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
4-4温度转换命令子程序流程图
5系统仿真设计
5.1Proteus软件介绍
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;
在单片机课程设计和全国大学生电子设计竞赛中,我们使用Proteus开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。
实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。
因此,Proteus有较高的推广利用价值。
5.2Proteus仿真图
图5-1为正常温度界面图,图5-2为报警温度界面,实现实时显示和温度报警。
图5-1正常温度界面图
图5-2报警温度界面
5.3硬件调试
硬件调试主要是测试各硬件部分能否完成设计功能。
系统的性能调试以主程序为主。
硬件调试比较简单,直接插上电,软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、从程序的编写和调试,由于DS18B20与单片机采用串行数据传送,因此对DS18B20进行编程时必须严格地保证读写时序,否则将无法读取测量结果。
在焊接的过程中,每接一根线都用万用表测试是否短路或开路。
这样焊接完了之后,就不必怀疑线路不通的问题了,由于线路很繁琐也免去了大量排查的工作。
最初焊接最小系统,查看二极管能否正常闪烁,以此判断单片机是否正常工作。
整体电路焊接完后,通电测试所有硬件芯片的输入输出电压是否在设计要求的范围内,判断单片机的工作与否。
5.4调试结果
在调试中出现的很多问题,开始显示屏不显示,经排查是一处地线没连接,导致显示屏供不上电。
连接后显示屏正常亮了,但是显示不出想要的结果,调节可变电阻,改变背光度,依然不显示。
经过和班级同学的讨论,我们知道是程序的问题。
于是我们修改了程序,并最终调试出想要的效果。
6结论
本次的课程设计共一周时间,分别进行了BS18D20电路原理图的设计,电路仿真图的设计以及实物电路板的演示三个过程。
经过这次的课程设计,我们不仅加深了对 Proteus仿真软件的了解和使用,还学到了许多课本上没有涉及知识,练习了电路原理图的设计和仿真运行,同时对上学期学习的单片机课程进行了一次全面的复习和巩固,收益很大。
我们知道,课程设计一般强调能力培养为主,在独立完成设计任务的同时,还要注意其他几方面能力的培养与提高,如独立工作能力与创造力;
综合运用专业及基础知识的能力,解决实际工程技术问题的能力;
查阅图书资料、产品手册和各种工具书的能力;
工程绘图的能力;
书写技术报告和编制技术资料的能力。
在专业知识与研究方法方面为日后的毕业设计乃至毕业后的工作奠定良好的基础
这次课设让我对单片机有了进一步的了解,而且对Proteus仿真软件的有了一定了解。
体会到了Proteus仿真软件的强大。
通过本次课设,能够使我们熟练掌握单片机控制电路的设计、程序编写和系统调试,从而全面地提高我们对单片机的软件、硬件等方面的理解,进而增强我们在实践环节的动手操作能力。
譬如,我们可以根据实验指导书的要求,完成DS18B20电路的硬件设计、电路器件的选择、单片机软件的运行、以及整体系统调试,并写出完善的设计报告。
在进行课设之前,要求我们具备数字电路、模拟电路、电路基础、微机原理、电力电子、电机学和单片机等相关课程的知识,并具备一些基本的实践操作水平,为以后的就业打好一定的基础。
总的来说,这次的课程设计自己还是很满意的,感觉收获了不少东西,相信此次学到的知识在以后的生活和学习中对我会有很大的帮助!
参考文献
[1]高玉芹.单片机原理及应用及C51编程技术.北京:
机械工业出版社,2011.6
[2]赵文博,刘文涛.单片机语言C51程序设计[M].北京:
人民邮电出版社,2005,10.
[3]孙育才.MCS-51系列单片微型计算机及其应用[M].东南大学出版社,2004,6.
[4]沈红卫.单片机应用系统设计实力与分析[M].北京:
北京航空航天大学出版社,2003.
[5]徐爱钧,彭秀华.单片机高级语言C51应用程序设计[M].北京航空航天大学出版社,2006.
[6]曾一江.单片微机原理与接口技术[M].北京:
科技出版社,2009,12.
[7]康华光.电子技术基础(模拟部分)[M].北京:
高等教育出版社,2004,4.
[8]江晓安,董秀峰.模拟电子技术[M].西安电子科技大学出版社,2001.10
[9]戴佳,苗龙,陈斌.51单片机应用系统开发典型实例[M].中国电力出版社,2005.9
[10]荣贵.电子制作[M].科学技术文献出版社,2003
[11]刘建清.轻松玩转51单片机:
魔法入门·
实例解析·
开发揭秘全攻略[M].北京航空航天大学出版社,2011
附录
附录1硬件图
附录2C语言源程序
主函数:
/****************************************************************************
*实验名:
18B20温度显示试验
*实验说明:
LCD1602显示温度值。
*连接方式:
见连接图
*注意:
****************************************************************************/
#include<
reg51.h>
#include"
lcd.h"
temp.h"
voidLcdDisplay(int);
sbitBeep=P1^5;
voiddelay(unsignedinti);
voiddelay(unsignedinti)
{
charj;
for(i;
i>
0;
i--)
for(j=200;
j>
j--);
}
/*******************************************************************************
*函数名:
main
*函数功能:
主函数
*输入:
无
*输出:
*******************************************************************************/
voidmain()
TMOD=0x01;
TH0=60536/256;
TL0=60536%256;
EA=1;
ET0=1;
LcdInit();
//初始化LCD1602
LcdWriteCom(0x88);
//写地址80表示初始地址
LcdWriteData('
C'
);
while
(1)
{
LcdDisplay(Ds18b20ReadTemp());
if(Ds18b20ReadTemp()>
=400)//25
{
TR0=1;
}else{
TR0=0;
}
//Delay1ms(1000);
//1s钟刷一次
}
定时器0中断服务程序
v
voidTimer0(void)interrupt1
//产生发声100Hz的平率
Beep=~Beep;
LcdDisplay()
LCD显示读取到的温度
voidLcdDisplay(inttemp)//lcd显示
unsignedchardatas[]={0,0,0,0,0};
//定义数组
floattp;
if(temp<
0)//当温度值为负数
LcdWriteCom(0x80);
//写地址80表示初始地址
LcdWriteData('
-'
//显示负
//因为读取的温度是实际温度的补码,所以减1,再取反求出原码
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
//算由?
.5,还是在小数点后面。
else
{
+'
//显示正
//因为数据处理有小数点所以将温度赋给一个浮点型变量
//如果温度是正的