【51单片机】智能百叶窗项目


文章目录

      • 功能演示:
      • 前置要求:
      • 主要功能:
      • 主要模块:
      • 主函数代码:

具体的仿真程序和代码程序已经免费放置在资源中,如有需要,可以下载进行操作。

功能演示:

前置要求:

编译软件:Keil C51 uvision5.27

仿真软件:Proteus 8.13

主要器件:

  • 数码管:1个
  • 光敏电阻:1个
  • TLC2543ADC芯片:1个
  • 步进电机(六线四相):1个
  • LED灯:1个
  • 按钮:3个
  • 开关:2个

主要功能:

实现智能百叶窗的控制,具体功能:数码管显示测量结果光强,设置三个按键:手动/自动切换、手动正转和手动反转,用一个发光二极管显示手动/自动状态,自动状态时设置一个发光二极管点亮。创新:设置两个极限位置保护行程开关,用于保护百叶窗叶片。当压下正转行程开关时,电机停止正转,但还可以反转;当反转到极限位置压下行程开关时,电机停止反转,但还可以正转。

主要模块:

  1. 模数转换模块:

    光敏电阻传感器可以用于测量光强,然后使用TLC2543 ADC将获取的光强模拟量转换为数字量,便于之后操作。

  2. 按键扫描模块

    三个按键用于手动/自动切换、手动正转和手动反转,使用户可以手动控制百叶窗。

    使用LED来显示手动/自动状态,灯灭为手动状态,灯亮为自动状态。

    按下正转行程开关时,无法正转,但反转可以进行;

    按下反转行程开关时,无法反转,但正转可以进行。

  3. 电机驱动模块

    自动状态时,通过光强大小自动控制电机转向。

    光强越大,电机正转以完成遮阳效果。正转时,百叶窗会一直下放,直到完全遮住。

    光强越小,电机反转以完成照光效果。反转时,百叶窗会一直上升,直到完全展开。

    手动状态时,则通过正反转按键实现控制电机转向。

  4. 光强显示模块

    将转换后的数字量显示在四位数码管上,这样可以实时监测周围光照情况。

在这里插入图片描述

主函数代码:

#include "reg51.h"
#include "Delay.h"
#include "Motor.h"
#include "SegShow.h"
#include "TLC2543ADC.h"
#include "KeyScan.h"

void Init(void);

// 最终光强数据
unsigned int value = 0;

// 记录百叶窗的位置,初始时完全折叠
unsigned int book = 0;

// 用于标志 手动/自动状态
unsigned int flag = 1;

void main(void)
{
    Init();
    while (1)
    {
        KeyScan();
    }
}

void Int1() interrupt 2
{
    flag = ~flag;
}

// 定时器0中断服务程序
void Timer0_ISR() interrupt 1 {
    // 每次定时器中断发生时,延时计数器递减
    TH0 = (65536 - 50000) / 256;  // 设置定时器0初值
    TL0 = (65536 - 50000) % 256;  // 设置定时器0初值

	value = TLC2543_Getdata(0x10);
	SEG_SHOW(value);
}

void Init(void)
{
    /* 初始化中断 */
    EA = 1;
    EX1 = 1;
    IT1 = 1;

    /* 初始化为手动模式(灯灭)*/
    led = 0;

	/* 初始化定时器0 */
    TMOD = 0x01; // 设置定时器0为模式1
    TH0 = (65536 - 50000) / 256;  // 设置定时器0初值
    TL0 = (65536 - 50000) % 256;  // 设置定时器0初值
    ET0 = 1;     // 允许定时器0中断
    EA = 1;      // 允许总中断
    TR0 = 1;     // 启动定时器0
}

相关推荐

  1. 51单片机智能小车

    2024-06-07 19:24:05       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 19:24:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 19:24:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 19:24:05       87 阅读
  4. Python语言-面向对象

    2024-06-07 19:24:05       96 阅读

热门阅读

  1. Ajax入门

    2024-06-07 19:24:05       28 阅读
  2. LeetCode hot100-61-G

    2024-06-07 19:24:05       32 阅读
  3. 汽车电子电器架构深入分析

    2024-06-07 19:24:05       24 阅读
  4. pytest基础

    2024-06-07 19:24:05       28 阅读
  5. docker安装和使用

    2024-06-07 19:24:05       22 阅读
  6. git 报错

    2024-06-07 19:24:05       32 阅读
  7. 网络通信Socket的简单案例

    2024-06-07 19:24:05       20 阅读
  8. docker搭建mongo单机单节点副本集模式

    2024-06-07 19:24:05       32 阅读
  9. 基于人工智能的网络空间内容安全治理方法研究

    2024-06-07 19:24:05       32 阅读