最近设计了一个项目基于单片机的智能电子元器件自动储存柜的系统设计,与大家分享一下:
一、基本介绍
项目名:存储柜
项目编号:mcuclub-fz-018
单片机类型:STC89C52
具体功能:
1、通过4个红外避障管和四个舵机模拟四个储物柜,当触发红外避障管时,柜门打开,柜内的LED照明灯打开;当未触发红外避障管时,柜门关闭,柜内的LED照明灯熄灭
2、通过LCD1602可显示四个柜门的类型(上衣、裤子、帽子、饰品)
3、通过蓝牙模块,手机端可远程打开关闭存储柜
二、仿真图
三、原理图
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图
四、系统框图
本设计以单片机为核心控制器,加上其他模块一起组成此次设计的整个系统,其中包括中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由两部分组成,第一部分是红外避障模块,通过该模块控制柜门开关;第二部分是供电模块,通过该模块可给整个系统进行供电。输出由三部分组成,第一部分是显示模块,通过该模块显示四个柜门的类型;第二部分是舵机模块,该模通过4个红外避障管和四个舵机模拟四个储物柜;第三部分是指示灯模块,当触发红外避障管时,柜门打开,柜内的LED照明灯打开,当未触发红外避障管时,柜门关闭,柜内的LED照明灯熄灭。除此之外,蓝牙模块既作为输入又作为输出,蓝牙模块和手机进行连接,可以将监测的数据传输到用户手机端,用户也可以通过手机端发送指令打开关闭存储柜。具体系统框图如图3.1所示。
五、软件设计流程
六、部分程序展示
软件版本:keil5
逻辑程序和驱动程序分开,分布于main.c和其他.c文件
*******处理函数
*****/
void Manage_function(void)
{
if(mode == 0)
{
if(HONG1 == 0) //HONG1触发,开灯,开柜门
{
LED1 = 0;
serv1_pwm = 10;
}
else
{
LED1 = 1;
serv1_pwm = 5;
}
if(HONG2 == 0) //HONG2触发,开灯,开柜门
{
LED2 = 0;
serv2_pwm = 10;
}
else
{
LED2 = 1;
serv2_pwm = 5;
}
if(HONG3 == 0) //HONG3触发,开灯,开柜门
{
LED3 = 0;
serv3_pwm = 10;
}
else
{
LED3 = 1;
serv3_pwm = 5;
}
if(HONG4 == 0) //HONG4触发,开灯,开柜门
{
LED4 = 0;
serv4_pwm = 10;
}
else
{
LED4 = 1;
serv4_pwm = 5;
}
}}