点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87708680?spm=1001.2014.3001.5503
源码获取
主要内容:
本系统的设计主要是了解了单片机微型计算机,根据现实生活的需要以及已掌握的理论知识,制定出单片微型计算机实时控制的温度报警系统设计方案,把温度传感器这个单独的器件,配以一些其他电路,让它实现探测温度、显示温度、并且超高温、低温报警,并进行调试验证方案的可行性,最终完成设计。
基本要求:
1、温度检测及报警系统电路设计图;
2、温度检测及报警系统设计源程序;
2、keil运行源程序;
3、protus中仿真;
4、运行结果分析。
主要参考资料:
[1]曹巧媛. 单片机原理及应用[M].北京:电子工业出版社,2002:1-351
[2]周坚.单片机C语言轻松入门[M]. 北京:北京航空航天大学出版社,2006.
[3]曹天汉.单片机原理与接口技术[M]. 北京:电子工业出版社,2006.
[4]张秀国.单片机C语言程序设计教程与实训[M]. 北京:北京大学出版社,2008.
[5]赵文博,刘文涛.单片机语言C51程序设计[M]. 北京:人民邮电出版社,2005.
完 成 期 限:12 月 11 日 - 12 月 26 日
指导教师签名:
课程负责人签名:
摘 要
在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。
本文采用美国DALLAS半导体公司推出的一种改进型温度传感器DS18B20作为检测元件,温度范围为-55~125ºC,最高分辨率可达0.0625ºC。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
本文介绍一种基于STC89C51单片机的温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围-55℃-~+125℃,使用液晶模块显示,能设置温度报警上下限。正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,STC89C51单片机功能和应用。该电路设计合理、功能实用、结构简单。
关键词:STC89C52RC单片机;温度传感器DS18B20;lcd液晶显示器
目录
摘 要 I
1概述 1
1.1选题的背景和意义 1
1.2设计任务与要求 1
1.3设计目的 1
2总体设计方案 2
2.1 方案阐述 2
2.2 基本思路 2
2.3系统设计原理 2
2.4系统组成 2
3硬件设计 3
3.1硬件原理框图 3
3.2硬件结构及原理 3
4软件设计 7
4.1设计方案 7
4.2软件编写工具 7
4.3 总体设计 7
4.4主程序流程 8
4.5程序分析 9
5系统调试 14
5.1仿真软件 14
5.2调试结果 15
5.3结论 15
6心得体会 16
参考文献 17
1概述
1.1选题的背景和意义
随着社会的发展特别是工业的发展,人民生活的改善,安全问题变得更加重要。目前,在许多情况下都需要对环境的温度进行限定,其中包括人的生活工作环境、仪器设备的工作环境以及动植物的生长环境等。如果环境温度超过或者低于限制值,必定对所处环境的人或设备造成影响,甚至给个人和社会造成巨大的损失。因此,在某些特定环境内使用温度报警器来对温度进行实时监控并做到超温报警,而使用单片微型计算机实时控制温度报警系统则是其中的一种重要方式。本方案的设计主要是了解了单片机微型计算机实时控制的温度测量报警系统的历史与现状,根据现实生活的需要以及已掌握的理论知识,制定出单片微型计算机实时控制的温度报警系统硬件、软件的设计方案,把温度传感器这个单独的器件,配以一些其他电路,让它实现探测温度、显示温度、并且超高温、低温报警,并进行调试验证方案的可行性,最终完成设计。
1.2设计任务与要求
(1)温度检测:通过传感器和系统连接,能实时准确检测到现场温度。
(2)温度显示:把现场实时检测到的温度值显示出来。
(3)报警温度设定和报警:根据需要可以设置报警温度,并且当达到报警温度时会发出报警提示。
1.3设计目的
(1)通过对温度报警电路的设计、安装和调试,掌握温度报警电路的工作原理和运算放大器在实际电子电路中的应用。
(2)学会运用keil软件编写程序,提高分析程序的能力。
(3)进一步熟悉STC89C52RC单片机外部引脚的线路连接方法。
(5)学会使用Proteus仿真软件对设计的电路进行仿真。
(6)学会使用DXP制作电路图。
2总体设计方案
2.1 方案阐述
通过分析可以知道,所要设计温度检测与报警装置的温度测量范围为-55~125℃,在lcd上并能设置上下限报警温度,超过或低于限制温度发出报警提示。该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种在日常生活中和工农业生产中经常用到的实现方案。
2.2 基本思路
利用单片机的P2.5、P2.6、P2.7作为LCD1602的控制位,P0口作为数据位控制LCD1602,用LCD1602显示被测量温度的数值、上下限报警温度;P3.4、P3.5 、P3.6、P3.7口控制手动控制按键,用来调节上下限报警温度;P2.0口作为18b20的接入端;P2.口作为蜂鸣器的接入端。
2.3系统设计原理
利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。同时处理后的数据送到LCD中显示。
2.4系统组成
本课题以是STC89C52RC单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。
系统框图主要由主控制器STC89C52RC、单片机复位、报警按键设置、时钟振荡、LCD显示、温度传感器组成。
3硬件设计
3.1硬件原理框图
温度检测与报警系统设计由主控制器STC89C52RC、单片机复位、报警温度按键设置、时钟振荡、LCD1602显示、温度传感器及蜂鸣器组成。
原理框图如图3-1所示:
图3-1原理框图
3.2硬件结构及原理
3.2.1 STC89C52RC单片机工作电路
本设计的核心是单片机电路,考虑到需要一个中断输入,存储容量、外部接口对单片机端口的需要以及兼顾到节约成本的原则,选用了常用的STC89C52RC单片机。STC89C52RC是低功耗、高性能、经济的8位CMOS微处理器,工作频率为0—40MHz,内置8K字节可编程只读闪存,512位的内部RAM,16位可编程I/O总线。它采用Atmel公司的非易储器制造技术,与MCS-51的指令设置和芯片引脚可兼容。STC89C52RC可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。STC89C52RC工作的最简单的电路是其外围接一个晶振和一个复位电路,给单片机接上电源和地,单片机就可以工作了。如图3-2-1所示
图3-2-1 STC89C52RC工作电路
3.2.2 STC89C52RC复位电路
在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。无图3 STC89C52RC工作电路论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。
而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态, 并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。如图3-2-1所示:
图3-2-2 复位电路
3.2.3 STC89C52RC时钟电路
时钟在单片机中非常重要,单片机各功能部件的运行都是以时钟频率为基准。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。内部时钟方式电路图如图3-2-3所示:
图3-2-3 时钟电路
3.2.4 STC89C52RC显示电路
1602字符型LCD模块的应用非常广泛,而各种液晶厂家均有提供几乎都是同样规格的1602模块或兼容模块,尽管各厂家的对其各自的产品命名不尽相同;1602字符型LCD模块最初采用的LCD控制器采用的是HD44780,在各厂家生产的1602模块当中,基本上也都采用了与之兼容的控制IC,所以从特性上基本上是一样的;当然,很多厂商提供了不同的字符颜色、背光色之类的显示模块。
图3-2-4 液晶显示电路
3.2.5 DS18B20
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20测温原理:低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。如图3-2-5所示:
图3-2-5 DS18B20电路
3.2.6蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。如图3-2-6所示:
图3-2-6 蜂鸣器电路图
4软件设计
4.1设计方案
本设计智能温度报警系统由温度采集、信号处理、温度监测、输出控制四部分组成。它通过预先设在单片机中的高低温度值来对非常温度值进行报警,也可以通过安检的控制对温度进行高低的设定最低可以由0℃开始进行温度的设定,从DSI8B20 采集到的温度经信号调理电路处理后直接送入单片机进行刷新。微控制器根据信号数据及设定的各种控制参数,按照嵌入的软件控制规律执行计算与处理,自动显示温度值、输出相应的控制信号,并根据当前状态输出正常、报警等信号,同时将各种数据通过数码管进行显示监控。
4.2软件编写工具
编写工具选用美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统Keil C51,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。
4.3 总体设计
该温度检测的设计采用C51语言编程。系统程序由主程序、温度设定子程序、温度采集子程序、温度刷新子程序、液晶显示程序和按键子程序等部分组成(程序流程图如图4-3所示)。
图4-3系统设计流程图
4.4主程序流程
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,其程序流程见图4-4所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/e8ac95ced3d64233b63ea583a732219a.png)
图4-4主程序流程
4.5程序分析
4.5.1 读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
程序如下:
void ReadTemperature(void)
{unsigned char L=0;unsigned char H=0;Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换delay_18B20(100);Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器前两个就是 温度 L=ReadOneChar();H=ReadOneChar();if(H>0xf8) //高位前五位为1时温度是负{L=~L+1;H=~H; f=0; //读取温度为负时fg=0sdata = L/16+H*16; //整数部分xiaoshu1 = (L&0x0f)*10/16; //小数第一位xiaoshu2 = (L&0x0f)*100/16%10; //小数第二位}
//传感器返回值除16得实际温度值
//为了得到2位小数位,先乘100,再除16,考虑整型数据长度,else{f=1;sdata = L/16+H*16; //整数部分xiaoshu1 = (L&0x0f)*10/16; //小数第一位xiaoshu2 = (L&0x0f)*100/16%10; //小数第二位}
}
4.5.2 显示数据刷新子程序
显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示。
程序如下:
void display(unsigned int date) //显示温度,
{if(date/100==0) //100度内{write_com(0x84);write_data(shuzu[date/10]);//十位write_com(0x85);write_data(shuzu[date%10]);//个位write_com(0x86);write_data(shuzu[13]);//小数点write_com(0x87);write_data(shuzu[xiaoshu1]);//小数点后一位write_com(0x88);write_data(shuzu[xiaoshu2]); //小数点后二位write_com(0x89);write_data(shuzu[12]);}else if(date/100==1) //100度上{write_com(0x84);write_data(shuzu[date/100]);//百位write_com(0x85);write_data(shuzu[(date-100)/10]);//十位write_com(0x86);write_data(shuzu[date%10]);//个位write_com(0x87);write_data(shuzu[13]);//点write_com(0x88);write_data(shuzu[xiaoshu1]);//小数点后一位write_com(0x89);write_data(shuzu[xiaoshu2]);//小数点后二位}
}
4.5.3按键扫描子程序
第一步:平时没有按键被触发时,不会执行程序。
第二步:一旦有按键被按下,执行去抖动延时,再判定。
第三步:如果按键按下的时间超过了去抖动延时,则触发按键,马上把按键值锁定,防止按住按键不松手后一直触发。
第四步:等按键松开后,自锁不执行,为下一次自锁做准备。
第五步:以上整个过程,就是识别按键IO口下降沿触发的过程。
程序如下:
void key() //按键加减标尺{ if(keym==0)//判定{delay_50us(100);//延时if(keym==0){y++;//转换加减的数值if(y==2)m=1;else if(y==3)m=5;//数值5else if(y==4)m=10; //数值10else if(y>=5)y=1; //数值1while(keym==0);//自锁}}if(keyh==0)//上下限转换按键{delay_50us(100);if(keyh==0){o++;if(o>=3)o=0;//1为上限选中,2为下限选中,0为隐藏while(keyh==0);}}
/调节上限温度 if(keyu==0&o==1)//上限加按键{delay_50us(100);if(keyu==0&o==1){u=u+m; while(keyu==0);}}if(keyl==0&o==1) //上限减按键{delay_50us(100);if(keyl==0&o==1){u=u-m; while(keyl==0);}}
调节下限温度if(keyu==0&o==2)//下限加按键{delay_50us(100);if(keyu==0&o==2){l=l+m;while(keyu==0);}}if(keyl==0&o==2)//下限减按键{delay_50us(100);if(keyl==0&o==2){l=l-m;while(keyl==0);}}
}
5系统调试
5.1仿真软件
随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,仿真的结果与测试结果较为接近。Proteus软件是英国L阿宝center electronics公司出版的EDA工具软件。它不仅具有其他EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。该软件功能强大。先在proteus上按照电路图连接好电路图,打开程序HEX文件进行仿真。仿真结果如下,lcd能正常显示温度和上下限温度,按键可以准确调节上下限温度,仿真结果与理论接近。
图5-1仿真图
5.2调试结果
开启电源,打开开关,LCD1206显示欢迎并开始测温。当温度超过上限温度或低于下限温度时报警提示正常,以下是实时温度的一些测量值,因1602的显示屏大小不能设置到小数部分的报警温度,只能设定到整数部分的报警温度。
表5.2 温度测试结果
温度测量
温度计温度 10.3℃ 23.6℃ 31.2℃ 42.1℃ 54.3℃ 62.1℃ 73.8℃
测量值 10.2℃ 23.3℃ 31.0℃ 41.8℃ 54.8℃ 61.5℃ 74.1℃
相对误差 0.9% 0.8% 0.6% 0.7% 0.9% 0.9% 0.4%
上限报警温度测量
上限设定报警温度 50℃ 55℃ 60℃ 65℃ 70℃ 75℃ 80℃
报警温度 >=50.0℃ >=55.0℃ >=60.0℃ >=65.0℃ >=70.0℃ >=75.0℃ >=80.0℃
下限报警温度测量
下限设定报警温度 10 15 20 25 30 35 40
报警温度 <=10.0℃ <=15.0℃ <=20.0℃ <=25.0℃ <=30.0℃ <=35.0℃ <=40.0℃
5.3结论
该智能温度报警系统结构简单,具有一定的实际应用价值。该智能温度报警系统只是DS18B20在温度控制领域的一个简单实例,此外,还能广泛地应用于各种工业生产领域,如建筑,仓储等行业,特别是在蔬菜大棚的应用上,本次设计虽然完成了,但是次设计也还是有些许不足的地方,与实际温度计测量到的温度还是有差距,因为能力的问题,该智能温度报警系统精确度最高可达到相差0.1℃,最大误差为1.5℃;能够设定的上限温度范围为0℃到120℃,下限温度为-50℃到99℃。
6心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。它为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生运用所学知识解决实际问题的能力。课程设计这类实践训练是我们迈向社会,从事职业工作前一个必不少的过程。“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
单片机作为一种最简单的软件,与我们的日常生活息息相关,了解一些单片机程序的简单录入是非常必要的。如:LED显示器、键盘和显示器的应用和原理。
在本次课程设计的制作中,使我深深地体会到了单片机在现实生活中的小小应用,既增强了我的好奇心,又巩固了我的理论知识。更让我们体会到了单片机手动的开始平台的完善与成熟。只要你有想法,单片机就有可能让他成为现实。这里我学习完protues 软件后的第一感觉是,虽然这软件工作不稳定,但是会有相当不错的效果出来。这对我以后的工作一定会有帮助的。在这次课程设计中不仅只对单片机编程有了新的认识,还对整个单片机的开发平台都有了一厅的了解,这是一笔不错的收获。
参考文献
[1]曹巧媛. 单片机原理及应用[M].北京:电子工业出版社,2002:1-351
[2]周坚.单片机C语言轻松入门[M]. 北京:北京航空航天大学出版社,2006.
[3]曹天汉.单片机原理与接口技术[M]. 北京:电子工业出版社,2006.
[4]张秀国.单片机C语言程序设计教程与实训[M]. 北京:北京大学出版社,2008.
[5]赵文博,刘文涛.单片机语言C51程序设计[M]. 北京:人民邮电出版社,2005.
[6]沈文,詹卫前. 单片机C语言开发入门指导[M].北京:清华大学出版社,2003:17-131
[7]耿德根,宋建国. AVR高速嵌入式单片机原理与应用[M].北京:北京航空航天大学出版社,05:358-410