【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
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/676374.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux - 文件管理高级 find、grep

0.管道 | 将前面命令的标准输出传递给管道作为后面的标准输入 1.文件查找 find find 进行文件查找时,默认进行递归查找,会查找隐藏目录下的文件 1.1 用法 # find 查找路径 查找条件... -type // 文件类型 f 普通文件 b 设备 d …

MacOS13-将数据库转为markdown,docx格式

MacOS13-将数据库转为markdown,docx格式 文章目录 先说踩坑点各种模块缺失 代码效果总结参考 先说踩坑点 各种模块缺失 tkinter mysql 没错,你可以直接点击安装; 如果还出现报错 你需要打开终端 pip install mysqlclient再次点进去安…

C语言| 输出菱形*(梳理篇II)

C语言| 输出菱形*-CSDN博客 凡事还是得自己独立思考后,写一遍程序才能发现问题所在。 容易犯的错误: 【完整程序注释】 运行结果 /* 输出菱形 1 总行数 n为奇数,分上三角形下三角形,只考虑左边的空格和星号* 2 上三角形 行数…

toefl listening_托福听力

x.1 课程介绍 x.1.1 课程介绍 考试介绍 注意事项如下, x.1.2 分数设定和方法论 x.2.1 细节题解法 x.2.2 对话主旨题解法 听力对话不要扣分; 内容主旨题,以what开头; 目的主旨题,以why开头; 目的主旨题…

【论文笔记】Content-based Unrestricted Adversarial Attack

图2:Adversarial Content Attack的流程。首先使用Image Latent Mapping将图像映射到潜变量空间。然后,用Adversarial Latent Optimization生成对抗性样本。最后,生成的对抗性样本可以欺骗到目标分类模型。 3.1 Image Latent Mapping 对于扩…

代码随想录算法训练营第四十一天 | 理论基础、509.斐波那契数列、70.爬楼梯、746.使用最小花费爬楼梯

目录 理论基础 509.斐波那契数列 思路 代码 70.爬楼梯 思路 代码 746.使用最小花费爬楼梯 思路 代码 理论基础 代码随想录 视频:从此再也不怕动态规划了,动态规划解题方法论大曝光 !| 理论基础 |力扣刷题总结| 动态规划入门_哔哩哔…

uni微信小程序editor富文本组件如何插入图片

需求 在editor中插入图片,并对图片进行编辑,简略看一下组件的属性,官网editor 组件 | uni-app官网 解决方案 首先要使用到ready这个属性,然后官网有给代码粘过来,简单解释一下这段代码的意思(作用是在不同…

带大家做一个,易上手的家常猪肉炖白菜

今天 带大家做一个 猪肉炖白菜 一块猪肉 切片 一块生姜 两边

20240603在飞凌的OK3588-C开发板上跑原厂IPC方案时确认OV5645

v4l2-ctl --list-devices media-ctl -p -d /dev/media2 20240603在飞凌的OK3588-C开发板上跑原厂IPC方案时确认OV5645 2024/6/3 16:39 确认OV5645已经正常挂载了: Microsoft Windows [版本 10.0.22621.3296] (c) Microsoft Corporation。保留所有权利。 C:\Users\Q…

音频pop音的数学与物理解释

音频数据跳变太大的时候通常会有pop音,此时频谱上看pop音位置能量较高 音频中的“pop”音通常是由于信号的不连续性或瞬态变化造成的。这种不连续性的数学和物理原因可以从以下几个方面解释: 数学解释 信号不连续性 当音频信号发生突变时,…

从 0 到 1 带你认识 Git 在个人和企业开发中的原理及应用

文章目录 学习目标Git 初识提出问题如何解决?—— 版本控制器注意事项 Git 安装Linux CentOSLinux UbuntuWindows Git 基本操作创建 Git 本地仓库配置 Git 认识工作区、暂存区、版本库添加文件——场景一查看 .git 文件 添加文件——场景二 修改文件版本回退 学习目…

一文读懂GDPR

GDPR将对人们的网络足迹、使用的APP和服务如何保护或利用这些数据产生重大影响。 下面我们将对有关GDPR人们最关心的问题进行解读。 GDPR是什么? 一般数据保护条例(General Data Protection Regulation)是一项全面的法律,赋予了…

SaaS增长| 联盟营销经理必须要知道的十个关键指标!

你对你的联盟合作伙伴计划了解多少?这个问题的答案将取决于你的数据有多好,以及你跟踪数据的效率如何。 如果你还在整合各种资源,不必担心。合作伙伴计划需要时间和努力来建立,而且很难立即实施适当的报告制度,尤其是…

Python私教张大鹏万字长文讲解Tailwindcss Flex 和 Grid 布局相关的样式,附完整源码和效果截图

flex-basics 样式类 Utilities for controlling the initial size of flex items. 用于控制伸缩项的初始大小的实用程序。 基础样式 ClassPropertiesbasis-0flex-basis: 0px;basis-1flex-basis: 0.25rem; /* 4px */basis-2flex-basis: 0.5rem; /* 8px */basis-3flex-basis:…

程序员的五大职业素养,你知道吗?

程序员职业生涯的挑战与机遇 在当今这个科技日新月异的时代,程序员作为技术行业的中坚力量,其职业生涯无疑充满了无数挑战与机遇。技术的快速迭代要求他们必须不断学习新知识、掌握新技能,以跟上时代的步伐。同时,云计算、人工智…

python常见数据分析函数

apply DataFrame.apply(func, axis0, broadcastFalse, rawFalse, reduceNone, args(), **kwds) 第一个参数是函数 可以在Series或DataFrame上执行一个函数 支持对行、列或单个值进行处理 import numpy as np import pandas as pdf lambda x: x.max()-x.min()df pd.DataFrame(…

Spring Cloud学习笔记(Nacos):Nacos持久化(未完成)

这是本人学习的总结,主要学习资料如下 - 马士兵教育 1、Overview2、单机使用MySQL 1、Overview 我们关闭单机下的Nacos后,再重新启动会发现之前配置的内容没有被删除。这时因为Nacos有内嵌的数据库derby,会自己持久化。 但是在集群的情况下…

【用户画像】用户偏好购物模型BP

一、前言 用户购物偏好模型BP(Buyer Preferences Model)旨在通过对用户购物行为的深入分析和建模,以量化用户对不同商品或服务的偏好程度。该模型对于电商平台、零售商以及其他涉及消费者决策的商业实体来说,具有重要的应用价值。…

尝试编译 AMD ROCm 的 llvm-project

0,环境 ubuntu 22.04 gcc-11 x86_64 18cores/36threads 256GB RAM rocm 6.0.2 Radeon VII 1,第一次尝试 构建命令: cmake -G "Unix Makefiles" ../llvm \ -DLLVM_ENABLE_PROJECTS"clang;lld;lldb;mlir;openmp" \…

TCP报头

TCP报头 一:TCP报头1.1: 16位源端口号 && 16位目的端口号1.2: 选项1.3: 4位首部长度1.4: 保留位1.5 :标志位1.6: 16位窗口大小1.7: 16位紧急指针1.8: 32位序号 && 32位确认序号1.9: 16位校验和二级目录 一级目录二级目录二级目录二级目录 一级目录一级目录一级…