资源描述
沈阳航空航天大学电子信息工程学院毕业设计(论文)
第一章 绪论
本章介绍了温度采集与控制系统设计的背景与意义,通过本章,可以了解温度传感器和单片机的发展状况以及相关技术的发展状况。
1.1 课题背景与意义
温度控制无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用,而在当今,我国农村锅炉取暖,农业大棚等多数都没有实时的温度监测和控制系统,还有部分厂矿,企业还一直沿用简单的温度设备和纸质数据记录仪,无法实现温度数据的实时监测与控制。随着社会经济的高速发展,越来越多的生产部门和生产环节对温度控制精度的可靠性和稳定性等有了更高的要求,传统的温度控制器的控制精度普遍不高,不能满足对温度要求较为苛刻的生产环节。
人们对于温度监测技术的要求日益提高,促进了温度传感器技术的不断发展进步。温度传感器主要经历了三个发展阶段:模拟集成温度传感器、模拟集成温度控制器、智能温度传感器。温度传感器的发展趋势:进入21世纪后,温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片机测温系统等高科技的方向迅速发展。
自从1976年Intel公司推出第一批单片机以来,80年代的单片机技术进入了快速发展的时期。近年来,随着大规模集成电路的发展,单片机继续朝着快速,高性能的方向发展,从4位、8位单片机发展到16位、32位单片机。单片机主要用于控制,它的应用领域遍及各个行业,大到航天飞机,小至日常生活中的冰箱、彩电,单片机都可以大显其能。单片机在国内的主要的应用领域有三个:第一是家用电器业,例如全自动洗衣机、智能玩具;第二是通讯业,包括手机、电话和BP机等等;第三是仪器仪表和计算机外设制造,例如键盘、收银机、电表等。除了上述应用领域外,汽车、电子行业在外国也是单片机应用很广泛的一个领域。它成本低、集成度高、功耗低、控制功能多、能灵活的组装成各种智能控制装置,由它构成的智能仪表解决了长期以来测量仪表中的误差的修正、线性处理等问题。
1.2 本课题的研究内容与目标
设计以STC89C52单片机为系统控制核心,结合DS18B20温度传感器、12864液晶显示、BM100无线模块、报警、升温和降温指示灯几部分电路,构成了一整套温度检测,报警及控制系统。DS18B20进行温度采集,然后将温度数据送入单片机进行处理通过串口和无线模块发送出去,另一边单片机串口和无线模块接收然后在12864液晶上显示出来,达到了实时监控的目的,具有巡检速度快,扩展性好,成本低的特点。在报警系统中,对于超过此限的温度数据将产生报警信号并进行相应的升温或降温操作。本设计采用两片STC89C52单片机实现,单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现较简单,方便。设计温度采集系统充分发挥了STC89C52单片机的特点,结合现有技术,大大降低了电路的设计复杂度,该系统具有温控准确、操控界面良好、稳定性高、抗干扰能力强等优点。温度采集系统的设计必将给生产生活带来一定的飞跃,大大促进了生产的需要,在以后的发展中更进一步提高效率。
本设计的实现目标如下:
(1).温度实时监测
本系统在接收端用到了中文点阵式液晶显示器,显示清晰,能够把温度传感器采集来的温度实时显示在屏幕上,达到实时监测的目的。
(2)温度远程无线可靠传输
BM100模块是高度集成半双工微功率无线数据传输模块,嵌入高速单片机和高性能射频芯片。BM100模块采用高效交织纠错算法,具有抗干扰和高灵敏度等特点。BM100模块提供了多个频道的选择,可在线修改串口速率,发射功率,通信速率等各种参数。BM100模块能够透明传输任何大小数据,而用户无须编写复杂的设置与传输程序,同时体积小、传输距离较远,丰富便捷的配置功能,能够应用非常广泛的智能化通信领域。
(3)各种附加功能及控制功能完善
由单片机分别设置温度报警上下限,超过预定的温度值时报警灯就会亮,相应的给出升温或降温的控制信号。
1.3 论文的详细内容安排
本文共分5章。第一章绪论,首先介绍了本文设计的课题背景,然后介绍了温度传感器和单片机的发展状况,最后介绍了论文的内容安排。第二章首先是对温度采集与控制系统的任务分析,对任务明确之后,才能更加准确的进行设计。接着阐述了系统方案的设计,对方案进行了详细分析。第三章介绍了温度采集与控制系统的硬件设计,这些硬件设计是软件编程的基础。第四章阐述了软件的设计过程,也是本毕设所要做的关键性工作。包括软件结构说明,主程序与子程序的设计。第五章则是对软件和硬件进行调试、分析,解决出现的各种问题。之后,对本次毕业设计做出了总结并给出了重要结论,最后做出了社会经济效益分析。
第二章 系统方案设计
本章主要内容是对设计任务书进行分析和为完成任务所需要掌握的知识,之后就要从成本、设计周期、等方面进行方案设计。
2.1 任务分析
1. 主要内容:设计一个基于单片机的远程无线温度采集与监控系统。该系统硬件设计主要包括:主控单元、温度数据采集单元、数据传输单元、电源单元等。软件部分包括:温度数据的采集收发存储与处理、温度控制指令的处理等。
2. 主要功能:完成远程温度的数据监测与传输,并能进行报警和相应的温度控制操作。
3. 主体思路:熟悉科研课题的环境及毕业设计的具体要求,收集相关资料和调研,熟悉硬件和软件设计环境并完成硬件和软件的设计,完成远程温度采集与控制系统的软硬件设计和调试,最后是工作总结和撰写论文。
为完成以上任务,首先要学习51单片机的相关知识:I/O口的输入输出操作、单个I/O的操作、定时器中断、外部中断、串口等。然后是DS18b20的工作原理、管脚意义,如何初始化、读数据、数据处理等。还有对12864液晶的学习,如何写指令、写数据、初始化、设定显示位置等。学会了单个器件的使用还要将他们整合到一起,由于整个系统使用C语言编程,所以要学习并掌握单片机C语言的基本知识。
2.2 设计方案
本系统设计方案主要包括硬件和软件两个部分。
硬件部分包含两个子系统,温度采集系统和温度监测与控制系统,其整体框图如图2.1所示。其中在温度采集模块中有STC89C52单片机、DS18B20温度传感器、以及无线模块BM100。其工作方式是DS18B20将采集的温度通过一个I/O口送到单片机进行数据处理,然后将处理好的数据通过串口和无线模块BM100发送出去。温度监控与控制系统的核心同样是一个STC89C52单片机,它将通过无线模块BM100和串口接收到的温度值在12864液晶屏上显示出来,达到实时监控的目的。另外通过单片机设置温度报警阀值,超过报警阀值时则进行报警提示并进行相应的升温和降温控制信号输出,达到控制的目的。
图2.1 整体结构
软件设计是驱动这些硬件正常工作的关键。软件部分要分为温度采集程序设计和温度监测与控制程序设计。温度采集子系统程序中包含串口的初始化,即设定好波特率(本系统选用的是9600b/s),然后调用温度处理子程序,在温度处理子程序中系统会用到读温度子程序将温度按位处理,读温度子程序包含DS18B20的初始化、读写子程序等,其流程图如图2.2所示。温度监测与控制子系统程序中要设定相同的波特率,这样才能够接收到数据且不丢失。在接收数据时,系统采用串口中断的方式进行接收,当进入串口中断后,判断起始标志位数据,当判断起始标志位数据成功后,开始按顺序接收数据,并送入存储数组,然后送入显示子程序进行送显,如果判断起始标志位数据失败,则等待并继续进行起始标志位数据判断直至判断成功。报警装置使用的是LED灯,当超过所设定的32℃,LED将被点亮,并发出降温操作信号;如果低于所设定的30℃,报警灯也会亮起,并发出升温操作信号,其流程图如图2.3所示。
图2.2 温度采集流程图
图2.3 温度监测与控制流程图
论证该方案的可行性,主要从成本、设计周期等方面进行考虑,分析如下:
1、成本分析
本设计的核心是2片STC89C52单片机、12864液晶、DS18B20温度传感器、2个BM100无线模块等。经过市场调研,STC89C52单片机单价在4元左右,12864液晶大约40元,DS18B20价位在5元左右,BM100无线模块单价是70元,其他电阻、电容、晶振等也都比较便宜。所以本硬件设计成本相对合理。
2、设计周期
该设计方案的硬件部分是在学习各单个器件的工作原理后设计出来的,时间主要放在资料的理解和应用上,硬件设计以及制作的时间会随着所收集的资料的理解来进行调整。软件工作的设计重点是C语言的学习,以及时序图的理解和读写操作。设计周期的长短取决于软件的理解及掌握程度。
经过分析,此方案成本较低,设计周期合理,并且能较好的达到任务指标,因此设计执行此方案。
第三章 硬件设计
本章主要阐述了两部分内容,温度采集子系统的设计和温度监测及控制子系统的设计,同时对各个单元进行了详细说明。在温度采集子系统中,DS18B20将采集的温度通过一个I/O口送到STC89C52单片机进行数据处理,然后将处理好的数据通过串口和无线模块BM100发送出去。温度监测与控制子系统的核心同样是一个STC89C52单片机,它将通过无线模块BM100和串口接收到的温度值在12864液晶屏上显示出来,达到实时监测的目的。另外通过单片机分别设置温度报警上下限,超过预定的温度阀值时进行报警,并发出相应的升温或降温控制信号,达到温度控制的目的。单片机的最小系统与其他单元分开设计,以便进行实验和修改。
3.1 温度采集传输子系统
3.1.1 STC89C52单片机最小系统的设计
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz, 6T/12T。其管脚如图3.1所示。
基于STC89C52单片机最小系统的设计包括以下2个部分:
图3.1 STC89C52管脚图
1、复位电路部分
复位是STC89C52的初始化操作,只需给复位引脚RST加上一个高电平就可以使其复位,原理图如图3.2所示。
图3.2 最小系统复位电路设计原理图
2、振荡电路
每个单片机系统里面都有震荡电路,STC89C52系统既可以选用内部震荡电路,也可以选用外部震荡电路,本系统选用外部震荡电路。外部震荡电路主要基于一个晶振,该晶振结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快,本系统中所选用的晶振是11.0592MHz。原理图如图3.3所示。
图3.3 最小系统震荡电路设计原理图
3.1.2 DS18B20接口设计
DS18B20是Dallas半导体公司生产的数字化温度传感器,是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而经济的特点,使用户可以轻松的组建传感器网络,为测量引入全新的概念。新一代的“DS18B20”体积更小、更经济、更灵活,使用户可以充分发挥一线总线的长处[5]。
DS18B20支持“一线总线”接口,测量温度范围为-55℃~+125℃,在-10℃~+85℃范围内,精度为±0.5℃。现场温度范围以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如设备控制、设备或过程控制、测温类消费电子产品等。其管脚图如表3.1所示。
表3.1 DS18B20管脚说明
引脚
符号
说明
1
GND
地
2
DQ
单线应用的数据输入输出引脚
3
VCC
电源
1、DS18B20的主要操作过程及原理
DS18B20测温原理如图3.4所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3.4中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图3.4 DS18B20测温原理图
DS18B20得到的16位数据,存储在两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FE6FH,-55℃的数字输出为FC90H 。其温度数据关系如表3.2所示。
表3.2 温度数据关系
TEMPERATURE
DIGITAL OUTPUT(Binary)
DIGITAL OUTPUT(Hex)
+125℃
0000 0111 1101 0000
07D0h
+85℃
0000 0101 0101 0000
0550h
+25.0625℃
0000 0001 1001 0001
0191h
+10.125℃
0000 0000 1010 0010
00A2h
+0.5℃
0000 0000 0000 1000
0008h
0℃
0000 0000 0000 0000
0000h
-0.5℃
1111 1111 1111 1000
FFF8h
-10.125℃
1111 1111 0101 1110
FF5Eh
-25.0625℃
1111 1110 0110 1111
FE6Fh
-55℃
1111 1100 1001 0000
FC90h
2、DS18B20接口设计
DS18B20正常的工作电压范围在3~5.5 V,本系统采用5V电源供电。由于DS18B20一线总线的特点,所以我只需用单片机的一个I/O口就能对其操作。其连接如图3.5所示。
图3.5 DS18B20接口设计图
3.1.3 BM100无线模块接口设计
BM100模块是高度集成半双工微功率无线数据传输模块,嵌入高速单片机和高性能射频芯片。BM100模块采用高效交织纠错算法,具有抗干扰性强和高灵敏度等特点。BM100模块提供了多个频道的选择,可在线修改串口速率,发射功率,通信速率等各种参数。BM100模块能够透明传输任何大小数据,而用户无须编写复杂的设置与传输程序,同时体积小、传输距离较远,丰富便捷的配置功能,使其能够应用于非常广泛的智能化通信领域。管脚说明如表3.3所示:
表3.3 管脚说明(方形孔为1脚)
管脚
定义
说明
1
VCC
电源+3.6V~+8V
2
GND
电源地
3
TXD
串行数据发送端
4
RXD
串行数据接收端
5
SLEEP
休眠控制(输入)TTL 休眠信号 低电平休眠
在串口发送数据过程中,STC89C52单片机发送数据,所以相对于单片机而言BM100无线模块相当于接收数据,因此单片机的11脚(TXD脚)与无线模块的4脚相连,才能完成串口发送,如图3.6所示。
图3.6 温度采集子系统无线模块接口电路设计图
而在接收端无线模块发送数据,单片机接收数据,因此无线模块的3脚与单片机的10脚相连,才能完成串口接收,如图3.7所示。通过管脚说明可以看出,系统使用5V电源为其供电,而本系统不使用无线模块的睡眠模式,所以对于5管脚只有接高电平才能使其正常工作。
图3.7 温度监控子系统无线模块接口电路设计图
3.2 温度监测与控制子系统
3.2.1 12864液晶接口设计
带中文字库的128×64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面,可以显示8×4行16×16点阵的汉字,也可完成图形显示。低电压、低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。其引脚说明如表3.4所示:
表3.4 12864液晶引脚说明
引脚
名称
方向
说明
引脚
名称
方向
说明
1
VSS
-
GND
11
DB4
I
数据4
2
VDD
-
电源(+3.3V)
12
DB5
I
数据5
3
VO
-
悬空
13
DB6
I
数据6
4
RS
O
H:Data L:Instruction Code
14
DB7
I
数据7
5
R/W
O
H:Read L:Write
15
PSB
O
H:Parallel Mode
L:Serial Mode
6
E
O
Enable Signal
16
NC
-
悬空
7
DB0
I
数据0
17
/RST
O
复位
8
DB1
I
数据1
18
NC
-
悬空
9
DB2
I
数据2
19
LEDA
-
背光源负极(0V)
10
DB3
I
数据3
20
LEDK
-
背光源正极(+5V)
根据其管脚定义,系统设计采用单片机的P0口作为数据口,且加上拉电阻。P0口作为I/O口输出时,输出低电平为0 ,输出高电平为高组态(并非5V,相当于悬空状态)。也就是说P0 口不能真正的输出高电平给所接的负载提供电流,因此必须接上拉电阻,由电源通过这个上拉电阻给负载提供电流。另外,液晶的RS端用P2^0控制,RW用P2^1控制,E用P2^2控制,再配合适当的软件编程,就能使液晶正常工作。其接口如图3.8所示。
图3.8 液晶显示接口电路设计图
3.2.2 报警与控制系统接口设计
在报警与控制系统中设计了三个LED灯进行报警提示和升温、降温操作信号演示。报警灯用P1^0控制,降温操作提示灯用P1^1控制,升温操作提示灯用P1^2控制。本设计将LED正极与电源相连,负极接到I/O口上,当I/O上的电压由高变低时,LED灯将被点亮。其接口如图3.9所示。
图3.9 报警与控制系统接口电路设计图
3.3 系统电源设计
7805三端稳压集成电路有三条引脚,分别是输入端、接地端和输出端。使用三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。7805输入电压的范围在7~36V,极限电流1000mA,输出为+5V稳定电压。系统的供电电源设计如图3.10所示。
图3.10 系统电源电路设计图
第四章 软件设计
本章分为三大部分:Keil与Proteus连接调试、温度采集与发送程序和温度监测与控制程序,其中每个程序包括主程序和若干子程序,程序用C语言,下面进行详细介绍。
4.1 Keil与Proteus连接调试
4.1.1 Proteus简介
Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
① 实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
② 支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、Z80系列、HC11系列以及各种外围芯片。
③ 提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。
④ 具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
4.1.2 Proteus与Keil的连接
(1) 假若Keil与Proteus均已正确安装在C:\Program Files的目录里,把C:\Program Files\Labcenter Electronics\Proteus 6 Professional\MODELS\VDM51.dll(可能没有这个文件,本压缩包里有)复制到C:\Program Files\keilC\C51\BIN目录中。
(2) 进入KeilC μVision4开发集成环境,创建一个新项目(Project),并为该项目选定合适的单片机CPU器件(如:Atmel公司的AT89C52)。并为该项目加入Keil源程序。
(3)编译通过后单击“Project菜单/Options for Target”选项,在Output中找到Greate Hex File在前面打钩然后确定,再次编译通过后打开Proteus在连接好的单片机上双击导入刚才生成的.hex文件确定后就完成Proteus与Keil的连接。运行Proteus就能看到仿真结果。
4.2 温度采集与发送程序
4.2.1 温度采集与发送主程序
在该主程序中主要完成温度数据的采集,然后按位发送出去。
在发送过程中用到了串口通信,想要使发送和接收的数据不丢失双方必须要达成一定的约定,即通信协议。因此在串口初始化过程中,设定串口工作在方式1,定时器1工作在方式2,波特率为9600b/s,8为数据位,1位停止位,无奇偶校验位。在发送过程中,设定第一个数组为起始数据标志位,以便接收端接收到正确顺序的数组。采集与发送流程图如图4.1所示。
图4.1 采集与发送流程图
4.2.2 DS18B20初始化子程序
单片机在一开始发送一复位脉冲(最短为480us的低电平信号),延时之后释放总线并进入接收状态,DS18B20在检测到总线的上升沿之后,等待15~60us,接着DS18B20发出存在脉冲(低电平持续60~240us),也就是说如果DS18B20存在60~240us的低脉冲则初始化成功,否则失败。初始化时序如图4.2所示。
图4.2 DS18B20初始化时序
4.2.3 DS18B20写操作子程序
当单片机将总线从高电平拉至低电平时,就产生写时间隙。DS18B20在15~60us间对总线进行采样。若低电平则写入的位是0;若高电平则写入的位是1.连续写2位间的间隙应大于1us。写操作时序如图4.3所示。
图4.3 写操作时序图
4.2.4 DS18B20读操作子程序
当单片机将总线从高电平拉到低电平时,总线只需保持低电平4us之后,将总线拉高,产生读时间隙。读时间在总线拉高后有效,也就是说在高电平时完成读位,并在60~120us内释放总线。读操作时序图如图4.4所示。
图4.4 读操作时序图
4.2.5 DS18B20读温度值子程序
在读温度之前要进行温度转换,有3个步骤:
1、初始化DS18B20
2、发出Skip ROM命令(CCH)(其中Skip ROM命令仅适用于总线上只有1个DS18B20时的情况)
3、发出Convert命令(44H)
在温度转换之后就可以读取温度,有5个步骤:
1、初始化DS18B20
2、发出Skip ROM命令(CCH)
3、发出Read命令(BEH)
4、读两字节的温度
5、温度格式转换
4.3 温度监测与控制程序
4.3.1 温度监测与控制主程序
在该主程序中主要完成从串口接收数据并在液晶屏上显示出来,达到实时监控的目的。同时通过单片机分别设置温度报警上下限,超过预定的温度值时报警灯就会进行报警提示,并且系统也会发出相应的升温与降温控制操作信号,达到温度控制的目的。温度监测与控制流程图如图4.5所示。
图4.5 温度监测与控制流程图
在这里串口初始化的设定要与发送段相同,即串口工作在方式1,定时器1工作在方式2,波特率为9600b/s,8为数据位,1位停止位,无奇偶校验位。这样才能达到同步接收的目的,数据才不会丢失。
4.3.2 12864液晶写指令和写数据子程序
对于12864液晶写指令和写数据,只需通过时序图就能完成。即先让3个使能端为低电平,然后将要写入的命令送到数据口,延时一会将E使能端拉高,延时一会再将E使能端拉低就完成了写指令操作。写数据和写指令操作十分相似,只是一开始让RS为高电平,其余和写指令一样,写数据就完成了。其写数据时序图如图4.6所示。
图4.6 12864液晶写数据时序图
4.3.3 12864液晶初始化子程序
12864液晶初始化操作如下:
1、给芯片上电
2、延时40ms以上
3、复位操作:RST出现一个上升沿(RST=1;RST=0;RST=1)
4、功能设定,如表4.1所示
5、延时100us以上
6、再次进行功能设定
7、延时37us以上
8、显示开关控制,如表4.2所示
9、延时100us以上
10、清除显示,如表4.3所示
11、延时10ms以上
12、初始化结束
表4.1 功能设定
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
H
DL
X
RE
X
X
功能:DL=1(必须设为1) RE=1;扩充指令集动作 RE=0:基本指令集
表4.2 显示状态
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
L
L
H
D
C
B
功能: D=1;整体显示ON C=1;游标ON B=1;游标位置ON
表4.3 清除显示
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
L
L
L
L
L
H
功能:清除显示屏,把DDRAM位置计数器调整为“00H”
4.3.4 12864液晶汉字坐标
本系统设计可以在12864液晶的不同位置显示汉字,其位置地址如表4.4所示。由于12864液晶是自带字库的,所以将要显示的汉字放在一个数组里,再设定好位置地址就可以在屏幕上显示出来。
表4.4 位置坐标
X坐标
Line1
80H
81H
82H
83H
84H
85H
86H
87H
Line2
90H
91H
92H
93H
94H
95H
96H
97H
Line3
88H
89H
8AH
8BH
8CH
8DH
8EH
8FH
Line4
98H
99H
9AH
9BH
9CH
9DH
9EH
9FH
4.3.5 报警与控制子程序
该子程序是为了达到控制温度的目的,由于在温度采集传输子系统中已经将温度数据进行了处理,所以设定温度阀值时,需进行按位设定。本系统所设定的高温阀值为32.0℃,所以先进行十位的比较,如果十位大于3,将进行报警,即给P1^0一个低电平;如果十位等于3个位大于2,报警灯会亮;如果十位等于3个位等于2小数位大于0,报警灯也会亮;其余情况灯不会亮。在报警灯亮的同时,降温操作提示灯也会亮。本系统所设的低温阀值为30℃,同样需要进行按位比较,当低于30℃时,报警灯亮的同时,升温操作提示灯将亮起。
第五章 系统的调试与测试
在系统开发过程中,无论是软件还是硬件都难免会遇到一些问题,可能要进过反复调试才能使系统正常工作。因此,对于系统的调试工作是很有必要的。在调试过程中根据提示和观察,及时、准确的发现错误并对错误的地方进行修改。
5.1 系统硬件调试
硬件调试主要就是电路的焊接,就是按照硬件仿真的电路图进行连接,然后检查是否有虚焊短接的地方。在焊电路过程中要先想好布局,保证连接方便而且美观。
发现的问题:在焊芯片的管脚座时,有时会把旁边排针的眼堵死,这样排针就无法焊在原来设想位置。
解决方法:以后焊管脚座时,旁边先插上排针。
5.2 系统软件调试
在软件调试过程中,我遇到了很大麻烦,有很多知识我掌握的并不牢靠,所以得花费大量时间去解决。
1、软件问题一
发现的问题:在串行数据发送的过程中,通过串口精灵的观察窗口发现,发送的数据总是存在大量乱码,通过单步调试发现,进行递减发送数组就会出现乱码。
解决方法:尝试改成加法,这个问题就得到了解决。
2、软件问题二
发现的问题:在接收数组时,接收的顺序产生了错误。
解决方法:在发送端设定起始数据标志位,在接收时要先进行标志位的判断,是想要的接收顺序再进行数据存储并送显示否则不予处理。
5.3 系统测试
首先将程序烧入单片机后,把采集温度的系统接通电源,引出单片机的TXD引脚通过串口精灵观察窗口就能看到他发出的温度数值,证明采集温度单元模块是正常工作的,再接入BM100无线模块,这样温度采集模块就完成了。
然后对液晶进行测试,将一些正常显示汉字的程序用仿真头测试,液晶好使后将温度采集单片机的TXD引脚与温度监控单片机的RXD引脚相连,在Keil的观察窗口中观察接收数组里是否是我们想要的数据,然后接入液晶使其能够显示出来,最后接入无线模块,温度监控模块就完成了。
对于报警系统,由于设置的低温阀值为30℃,室温可能低于30℃,所以报警灯和升温操作提示灯会亮起,我们只需握住DS18B20,使其升温上升,当温度大于30℃时小灯会熄灭;当温度继续上升到达32℃以上时,报警灯和降温操作提示灯就会亮起,这样就完成了系统的测试工作。
结 论
本文应用STC89C52单片机作为系统控制核心,整个系统由STC89C52单片机、DS18B20温度传感器、12864液晶、LED灯、BM100无线模块和报警电路几个模块组成。
(1)温度采集与发送系统主要由STC89C52单片机、BM100无线模块、DS18B20温度传感器组成。
(2)温度监控与控制主要系统由STC89C52单片机、BM100无线模块、12864液晶组成。
(3)报警是通过LED灯提示的。
(4)应用一条总线的思想,通过DS18B20进行现场总线的温度采集,然后将温度数据送入单片机进行数据处理,具有巡检速度快,扩展性好,成本低的特点。
(5)本系统检测温度的范围为-55℃~+125℃,精度为0.5。
(6)BM100通信距离为1km以内,从通信效率、节点数、通信距离等综合考虑选用9600b/s。通信距离1km以上时,应考虑通过增加中继模块或降低速率的方法提高数据传输的可靠性。
该设计充分体现了STC89C52单片机的特点,结合现有技术,大大降低了电路的设计复杂度,该系统具有温控准确、操控界面良好、稳定性高、抗干扰能力强等优点。温度采集系统的设计必将给生产生活带来一定的飞跃,大大促进了生产的需要,在以后的发展中更进一步提高效率。
社会经济效益分析
基于单片机远程无线温度采集与监控系统,能够对温度进行实时监控,和及时的处理,能够广泛应用于工业、农业以及日常生活中。
从经济角度来看,本体统的核心元件是2片STC89C52单片机,单片机能够通过I/O对其他元器件进行操作,系统的可靠性高,成本低,能够达到我们预期的目标,是一个性价比比较高的系统。
从社会效益来看,本系统只是用了LED灯进行演示,在实际应用中可以连接真正的降温升温设备,像空调、电暖气等就可以快速投入到实际生活中,所以本体统有一定的社会经济效益。
致 谢
本设计(论文)的工作是在我的导师徐嵩老师的悉心指导下完成的,经过几个月的查资料、整理材料、写作论文,今天终于可以顺利的完成论文的最后的谢辞了。本论文从选题到完成,每一步都是在徐嵩老师的悉心指导下完成的,倾注了徐老师大量的心血。徐老师为我提供了单独的实验室供我研究学习,在硬件的需求上也能及时拿给我,徐老师学识渊博,治学严谨,在软件调试中给我最大帮助,辅导我时循循善诱、极其认真耐心,让我深刻地体会到真正的为人师表的风范。
在毕业设计中我不仅锻炼了自己的动手能力,认清了自己的不足,更重要的是学习了应该怎样做事做人。我所取得的进步和徐老师的谆谆教导和悉心指导是分不开的,在这里我真诚地感谢徐老师!
另外,要感谢在大学期间所有传授我知识的老师,是你们的悉心教导使我有了良好的专业课知识,这也是论文得以完成的基础。同时,论文的顺利完成,离不开其它各位老师、同学的关心和帮助。在整个的论文写作中,各位老师、同学积极的帮助我查找资料并提供有利于论文写作的建议和意见,在他们的帮助下,论文得以不断的完善,最终成为一篇合格的毕业论文。
再一次对徐嵩老师表示崇高的敬意和衷心的感谢!
参考文献
[1] 清华大学电子教研组编 阎石主编:《数字电子技术基础》(第四版),高等教
育出版社,1998年12月
[2] 张永瑞 等编:《电子测量技术基础》,西安电子科技大学出版社,2004年12
月
[3] 孙肖子、张企民编:《模拟电子技术基础》,西安电子科技大学出版社,2001
年1月
[4] 张毅刚 等编:《新编MCS-51单片机应用设计》,哈尔滨工业大学出版社,2003
年7月
[5] 佟学俭、罗涛编:《单片机原理与应用》(第一版),人民邮电出版社,2003年
[6] 谭浩强 著.C程序设计[M] .清华大
展开阅读全文