模块说明:
-
STC89C52:主控芯片,用于存储程序以及运行程序的逻辑判断
-
LCD12864:用于整体的显示,显示数据以及设备状态
-
4相步进电机:模拟遮光帘的关闭和开启,使用ULN2003A电机驱动芯片来驱动
-
DS1302:获取时间,内置纽扣电池,断电时也会自动走时
-
JDY-31蓝牙模块:用于和手机APP进行数据传输
-
ADC0832:数模转换芯片,用于获取光照强度,将光敏电阻的电压模拟量转换为数字量
功能介绍:
-
显示实时时钟(通过DS1302模块获取);
-
具有手动自动模式;
-
监测两个区域( ①区和②区)的光照强度以及光照时间、遮光帘开启状态及补光灯开启状态;
-
设置当天某区域光照最长时间;
-
蓝牙APP可以控制某一区域遮光帘以及补光灯,还能修改设置的数据以及查看当前所有数据;
-
所有设置数据均有掉电保存功能,及设置以后下次开启电源也无需重新设置;
具体说明补充:
-
晚上补光时间为下午18点以后,达到凌晨0点后如果还未达到光照时长也会继续补光,此次补光算在前一天的时间上,与0点以后的补光时长不同。
-
自动模式下,当白天光照时间达到设定最长时间则打开遮光帘。如果白天光照时间未达到设定最长时间则在晚上18点以后打开继电器控制补光灯进行补光。-3-另,自动模式下达到晚上18点以后遮光帘都会自动打开,因为晚上不需要进行遮光的操作。
-
手动模式下,可以对某一区域的遮光帘以及补光灯进行手动开关操作。
-
光照时长计时是以监测到的光照数值大于150为限制的,也就是只要光强大于150则统计为有效光照时长。
硬件框图:
软件流程图:
原理图:
使用立创EDA格式打开,打开方式为将文件夹内 .json 后缀文件拖入https://lceda.cn/editor 立创EDA编辑网站中即可
本次原理图使用立创EDA画出的,对于新手较为方便,全中文易上手,不需要安装任何软件。另,Altium Designer 格式打开后标注会有所丢失,建议使用立创EDA
Proteus仿真图:
实物正反图:
元器件清单:
如果您不能独自完成焊接,我这边也提供付费焊接服务以及调试,完成后第一时间通过快递寄给您。
主要代码展示:
/********************* 函数声明 *******************/
//显示 数据
void Dis_Dat();
//获取数据
void Get_Dat();
//按键扫描
void Key_Scan();
//读取掉电保存的内容
void Read_e2();
//将数据保存在芯片中
void Write_e2();
//处理外部设备工作状态
void ProcDevice();
void Bluetooth_Data_Send();//蓝牙数据发送
void main()
{
DelayMs(100);//等待系统稳定
LcmInit();//初始化液晶显示
LcmClearTXT();//清屏
init_ds1302();//初始化1302
timer0_init();//定时器0初始化
Uart_init();//串口初始化
Read_e2();//读取掉电保存的内容
while (1)
{
Get_Dat();//获取数据 并显示
ProcDevice();//处理外部设备工作状态
Key_Scan();//按键扫描
Bluetooth_Data_Send();//蓝牙数据发送
}
}
工程管理展示:
APP界面展示:
APP部分主要代码展示:
事件 蓝牙1.收到数据(数据 为 字节型(),设备名称 为 文本型,设备地址 为 文本型)
变量 数据分割 为 文本型(8)
变量 指定数据 为 文本型
'标签10.标题 = 字节到文本(数据 ,"GBK")
如果 接收头标志 = 0 则
如果 寻找文本(字节到文本(数据 ,"GBK"),头文本,0) <> 0 则
接收数据 = " "
否则
接收数据=字节到文本(数据 ,"GBK")
如果 寻找文本(字节到文本(数据 ,"GBK"),尾文本,0) > 0 则
接收完成 = 1
否则
'标签10.标题 = 接收数据
接收头标志 = 1
结束 如果
结束 如果
否则
如果 寻找文本(字节到文本(数据 ,"GBK"),头文本,0) <> -1 则
接收数据 = " "
接收头标志 = 1
否则
如果 寻找文本(字节到文本(数据 ,"GBK"),尾文本,0) <> -1 则
接收完成 = 1
接收数据 = 接收数据 & 字节到文本(数据 ,"GBK")
否则
接收数据 = 接收数据 & 字节到文本(数据 ,"GBK")
结束 如果
结束 如果
结束 如果
如果 接收完成 = 1 则
指定数据=取指定文本2(接收数据,":",尾文本)
数据分割=分割文本(指定数据,",")
标签3.标题="设备1光照时间:"&数据分割(0) &" : "&数据分割(1)
标签4.标题="设备2光照时间:"&数据分割(2) &" : "&数据分割(3)
标签5.标题="设备1光照时间上限:"&数据分割(6) &" : "&数据分割(7)
标签9.标题="设备2光照时间上限:"&数据分割(8) &" : "&数据分割(9)
标签10.标题="设备1当前光照值:"&数据分割(4) &" Lux"
标签11.标题="设备2当前光照值:"&数据分割(5) &" Lux"
本APP由易安卓E4A生成,中文代码理解容易上手简单,更适合短时间进行开发验证,不需要长时间的学习成本。
E4A是可视化自定义布局开发环境,以及强大的智能语法提示功能。纯中文编写代码,比英文更具亲和力,也无需为记不住英文关键词而烦恼。
下载内容展示: