3.7 小结
本设计主要有主控模块、显示模块、温湿度采集模块、串口通信模块、复位电路和时钟电路六大模块。其中主控模块STC12C5A60S2的晶振电路采用11.0592MHz的无源晶振,微调电容大小取30pF。显示模块选用OLED12864。温湿度采集模块所采用的AM2303数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与稳定性;其单线制串行接口,使系统集成变得简易快捷。该设计最终要实现的目标是,温湿度采集数据并传输到单片机,单片机经过数据处理在发送到显示器显示,同时单片机会将采集到的数据同系统设置的值进行比较并在显示器上进行提示。 本设计的最终实物如图3.7.1所示。
图3.7.1 原理图
第4章 系统软件设计
在完成了系统硬件的设计后,再设计系统软件,首先要建立程序框架的流程图,
对整个设计划分模块,逐个模块实现其功能,最终把各个子模块合理的连接起来,构成总的程序,这样能快速准备的进行编程。首先建立主程序框架流程图,弄明白整个系统程序设计,其次再分别设计显示模块和传感器模块的程序,最后在进行整合,形成一个完整的程序。
本系统采用C语言编程。C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。 C语言编程的优点有:
(1)简洁紧凑、灵活方便。C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
(2)运算符丰富。C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
(3)数据类型丰富。C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
(4)语法限制不太严格,程序设计自由度大。虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。
4.1 主程序模块程序设计
本设计的整个程序流程是首先上电,各部分进行初始化,单片机初始化,显示器初始化等。初始化完成后进行信息,然后再进行延时一段时间,供传感器采集数据,延时完成后进行数据的采集并传输到单片机,单片机处理之后传输到显示器,显示器显示温湿度值。并且判断温度和湿度是否在设定值范围内,如果在,就继续执行数据采集程序并显示提示,如果不在,则执行数据采集程序并显示其它提示。主程序流程图如图4.1所示。
开始初始化显示信息是否超过上限值延时是否提示2提示1清屏温湿度检测并发送到单片机提示3显示器显示温湿度数据判断是否在范围值内是否
图4.1 主程序流程图
4.2 液晶显示模块程序设计
显示模块在执行每条指令之前要确认模块的忙标志为低电平,表示不忙,则此指令失效,要显示字符时要先输入显示字符地址,告诉模块在哪里显示了字符。OLED12864的显示数据过程是首先液晶初始化,初始化完成后执行延时程序,等待数据的采集,延时完成后OLED会先写入一些指令和显示字符的地址,在这完成后
单片机会向OLED发送数据即写数据,数据发送完OLED就会读取写入的地址并显示出来,最后返回。软件流程图如图4.2所示。
开始写指令写数据初始化写显示行列地址读数据并显示延时取显示首地址返回 图4.2显示模块程序流程图
4.3 传感器模块程序设计
根据传感器的通信协议,首先由单片机通过I/O口主动产生要求的激发信号,然后将数据线的控制权交给传感器,接着单片机通过while语句不间断的检查I/O口的高低电平,从而达到对时序的正确把握,解析出准确的传输数据。 AM2303传感器模块的软件流程图如图4.3所示。
开始从机80us高电平是否结束否延时40usP3.4输出低电平是单片机进行数据接收延时500us读P3.4引脚判断是否为低电平是否否将数据按十进制存入数组P3.4输出高电平从机80us低电平是否结束是结束并等待
图4.3传感器模块程序流程图
4.4 小结
本课程设计的软件设计采用了C语言编程,只需对温度和湿度进行相应的采集处理后,即可让显示器实时显示当前的温度与湿度值。
本设计在完成硬件电路设计并焊接好电路硬件的基础上,通过串口模块将软件代码下载至STC12C5A60S2单片机中完成系统集成。由于采用了STC12C5A60S2单片机,性能可靠、电路简单,系统中还可充分利用STC12C5A60S2中先进的软件硬件资源,便于软件系统的升级,操作方便。
第5章 Protues仿真
由于Protues上没有AM2303传感器和OLED12864显示器,且若采用数码管进行动态扫描在仿真上将会出现闪烁现象,故本次采用DS18B20温度传感器和LCD1602进行仿真,如图5。
图5 仿真测试