(a)时钟电路 (b)复位电路
图2-5 STC89C52的复位模块和时钟模块电路
图中电容C1和电阻R1构成了上电复位,利用电容充电来实现重置功能。
本次的设计系统采用的是内部时钟的方式,利用单片机内部的高增益反相放大器构成时钟电路,它的外部电路简单,只需要电容(C2和C3)和12M的晶振即可,其具体接法如时钟电路图2-5(a)所示。
时钟电路中电容C3和C2可以用来微调振荡的频率,其取值范围一般为30±10pF,本次的设计系统选择的电容值是30pF;石英晶振的值可以选择的范围是0到24MHz,它对单片机电路产生的时钟信号的振荡频率起决定性作用,在本次的设计系统中选择的是12MHz,所以单片机时钟信号的震荡频率就是12MHz。 5、LCD1602显示模块
为了方便读写温湿度值,这里选用LCD1602液晶显示器来显示温湿度值,该模块主要是将传感器测量的温湿度值在显示屏上清晰的显示出来,分两行显示,温度和湿度各显示一行。其具体电路图2-6所示。
图2-6 显示模块电路
LCD1602有三个存储器,分别是CGROM、CGRAM、DDRAM,第一个用来存储LCD1602固定的一些字符模式,第二个用来存储用户自己设置的字符,第三个用来存储
9
要显示的字符。 (四)总电路原理图
综上对各模块电路的设计,绘制基于单片机的大棚温湿度控制系统的设计的总原理图,详见附录一。
三、软件设计
软件设计相对于硬件设计,其灵活性非常大,它可以根据系统的不同要求对程序进行相应的改变。让我们在不改变硬件结构的情况下,只需要改变一下软件程序就能实现各种想要的功能。单片机的很多功能都是通过软件来控制完成的。在本设计中,软件结构采用模块化设计方法,主要包括SHT10温湿度采集子程序、LCD1602液晶显示子程序、输出控制子程序、键盘扫描子程序等几个子程序模块,各子程序模块最终由主程序来调用。
(一)软件设计总方案
程序主要包括主程序、SHT10温湿度采集子程序、LCD1602液晶显示子程序、蜂鸣器报警子程序、键盘扫描子程序组成:
1)主程序:进行缓存初始化,以及对各个子程序进行合理运用; 2)SHT10温湿度采集子程序:收集测量得到的数据;
3)LCD1602液晶显示子程序:将测量得到的结果,清晰的在液晶显示屏上显示出来; 4)蜂鸣器报警子程序:判断温湿度是否在用户设置的界限值内,是否需要启动报警装置;
5)键盘扫描子程序:设定温湿度的界限值。
(二)软件程序流程图
10
图3-1 软件程序流程图
(三)程序设计 1. 主程序
主程序进行缓存初始化,以及对各个子程序进行合理运用,该模块流程图设计如图3-2所示。
11
图3-2 主程序流程图
2. SHT10温湿度采集子程序
温湿度采集的功能是测量大棚的温度和湿度并将其结果转换为数字量送给单片机。SHT10通过依次拉低或拉高时钟线和数据线来实现复位时序和启动传输时序,这个相对简单;但读时序和写时序有点复杂,程序开始时由写时序来发送命令,等测量结束后,由读时序来读回测量数据。该模块流程图设计如图3-3所示。
12
部分源程序如下:{
3-3 SHT10温湿度采集子程序流程图
unsign char i,error=0;
for (i=0x80;i>0;i/=2)
if (i & value) DATA=1;
else DATA=0; SCK=1;
_nop_( );_nop_( );_nop_( ); SCK=0;
}
DATA=1; SCK=1;
13
图