块分别新建C文件写子程序。某个C文件要调用其它C文件中的函数时,要在当前C语言文件中先进行声明,然后再调用,或者也可以把每个C文件中定义的函数都写到相同名字下的.h头文件中,其他C文件要调用该函数时要在前面加上#include <*.h>,将头文件包括进来。对于变量也是如此,如果某个变量也在其他C文件中使用,那么要在一个C文件总将它定义为全局变量,即在函数外面定义。其他C文件要使用该变量时,要先使用extern将全局变量的作用域扩展到本C语言文件。
页 第 23
4.2 主要模块的设计流程框图
4.2.1 主程序流程图
开始
SHT10复位 初始化LCD1602 测量温湿度 对温湿度数据进行修正 在液晶屏上显示温湿度 将温湿度与设定值比较 Yes 是否超限? No Yes 是否有按键? 进入键盘扫描子程启动温湿度调节设备 No 图4.2 主程序流程图
页 第 24
4.2.2 SHT10子程序流程图
图4.3 SHT10子程序流程图
开始 发送启动时序 发送控制字 测量结束? Yes 接收数据 No 接收校验位 结束 温湿度传感器SHT10使用类似于I2C总线的时序与单片机通信,由于51单片机没有I2C接口,所以需要编写程序,用单片机的某两个I/O口管脚模拟I2C总线的时序,从而与SHT10通信。
SHT10有4种时序:启动传输时序、写字节时序、读字节时序及复位时序。复位时序和启动传输时序可通过依次拉低或拉高时钟线和数据线,因而实现起来比较简单;而写时序和读时序就比较复杂。写时序用来发送控制字,即发送命令,测量结束后,发出读时序读回测量数据。向SHT10的8个数据位的写入,于第9个时钟周期之后,读
页 第 25
取应答位,应答位为0时,表示SHT10正确接收。SHT10读写数据的规则是:在时钟线的下降沿之后数据线改变状态,并在时钟线的上升沿有效。
页 第 26
4.2.3 LCD1602子程序流程图
图4.4 LCD1602子程序流程图
开始 LCD1602初始化 设置首行数据指针 写入首行字符 设置第二行数据指针 写入第二行字符 结束
页 第 27