1853【毕设课设】基于单片机智能百叶窗卷帘门自动门设计

基于单片机智能百叶窗卷帘门自动门设计

摘要

本论文介绍了一种基于单片机的智能电动百叶窗系统的设计与实现。该系统通过单片机控制电机,实现百叶窗的自动和手动控制。系统包括两种模式:自动模式和手动模式。在自动模式下,通过光敏电阻检测光照强度,自动控制电机正反转;在手动模式下,通过按键控制电机正反转。系统还包括限位开关和模式切换功能。

在这里插入图片描述
在这里插入图片描述
仿真、代码等资料下载地址:
https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

系统总体设计

本系统主要由单片机模块、光敏电阻检测模块、电机驱动模块、按键控制模块和限位开关模块组成。单片机作为核心控制器,通过读取光敏电阻的电压值,控制电机的正反转,实现百叶窗的自动和手动控制。

系统框架图

单片机
光敏电阻检测模块
电机驱动模块
按键控制模块
限位开关模块
PCF8591 ADC
电机
按键K2, K3
限位开关1, 2

硬件设计

单片机模块

本系统采用AT89C52单片机作为核心控制器。其主要功能包括读取光敏电阻的电压值、控制电机正反转、处理按键输入和限位开关信号。

光敏电阻检测模块

光敏电阻检测模块通过PCF8591 ADC将光敏电阻的模拟电压值转换为数字信号,并传递给单片机,用于检测光照强度。

电机驱动模块

电机驱动模块通过两个控制信号IN1和IN2控制电机的正反转,实现百叶窗的开关操作。

按键控制模块

按键控制模块包括两个按键K2和K3,用于手动控制电机的正反转。

限位开关模块

限位开关模块包括两个限位开关,用于限制电机的转动,防止百叶窗超出预定范围。

软件设计

主程序流程图

系统初始化
进入主循环
检测模式
自动模式
手动模式
读取光敏电阻值
判断光照强度
电机正转
电机反转
电机停止
检测按键输入
按键K2控制正转
按键K3控制反转
电机停止
检测限位开关
停止电机
检测中断0切换模式
切换模式

各模块功能实现

系统初始化

系统初始化包括单片机的初始化、外部中断的初始化和I2C通信的初始化。通过这些初始化操作,确保系统能够正常工作。

自动模式

在自动模式下,系统通过光敏电阻检测光照强度,并根据光照强度控制电机的正反转。当光照强度低于设定值时,电机正转;当光照强度高于设定值时,电机反转;当光照强度在中间范围时,电机停止转动。

手动模式

在手动模式下,系统通过按键K2和K3控制电机的正反转。按下K2时,电机正转;按下K3时,电机反转;未按下按键时,电机停止转动。

限位开关

系统通过限位开关检测电机的转动范围,当电机达到限位开关位置时,停止电机转动,防止百叶窗超出预定范围。

模式切换

系统通过外部中断0实现模式切换。按下中断0按键时,系统在自动模式和手动模式之间切换。

代码实现

#include <reg52.h>
#include <intrins.h>
#include "I2C.h"

unsigned char GetADCValue(unsigned char chn); // PCF8591读取光敏电阻电压值
unsigned char M[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; // 数码管显示当前值0-9
void System_Init(); // 外部中断初始化
bit flag = 0; // 模式选择
sbit LED = P2^0;
sbit IN1 = P2^6; // 电机
sbit IN2 = P2^7; 
sbit K2 = P3^3; // 按键控制正反转
sbit K3 = P3^4;
sbit xianwei1 = P3^6; // 限位开关
sbit xianwei2 = P3^7;

void main() {
  //省略
}

void System_Init() {
    EA = 1;
    IT0 = 1;
    EX0 = 1;
}

unsigned char GetADCValue(unsigned char chn) {
    unsigned char val;
    I2CStart();
    if (!I2CWrite(0x48 << 1)) {
        I2CStop();
        return 0;
    }
    I2CWrite(0x40 | chn);
    I2CStart();
    I2CWrite(0x48 << 1 | 0x01);
    I2CReadACK();
    val = I2CReadNAK();
    I2CStop();
    return val;
}

void Int0() interrupt 0 {
    flag = ~flag; // 模式变换
}

结论

本文设计并实现了一种基于单片机的智能电动百叶窗系统。通过单片机控制电机,实现了百叶窗的自动和手动控制。系统包括两种模式:自动模式和手动模式。在自动模式下,通过光敏电阻检测光照强度,自动控制电机正反转;在手动模式下,通过按键控制电机正反转。系统还包括限位开关和模式切换功能,为智能家居应用提供了一种高效且智能的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值