【TB作品】智能台灯控制器,ATMEGA128单片机,Proteus仿真

题目 8 :智能台灯控制器
基于单片机设计智能台灯控制器,要求可以调节 LED 灯的亮度,实现定时开启与关闭,
根据光照自动开启与关闭功能。
具体要求如下:
(1)通过 PWM 功能调节 LED 灯亮度,亮度由高到低可分为 3 档,通过按键进行调节
并对当前档位进行指示。
(2)具有手动开启和关闭功能。
(3)能够显示并修改当前时间(如时分显示)
(4)可设置自动开启和关闭的时间,当到达开启时间时,LED 自动开启;当到达关闭
时间时,LED 自动关闭。
(5)通过光敏电阻感知外界光照条件,在光照模式开启的情况下,光照较低则 LED 自
动点亮,光照较高,LED 自动熄灭。(LED 开启和关闭的光照阈值尽量能够由用户定义)
可添加符合题目背景的其它功能。

智能台灯控制器

1 分为 定时开关机的自动模式、手动模式、光敏电阻控制模式,使用按键1切换模式,每个模式都有对应显示,可以方便看出当前是什么模式。三种模式平行存在,无包含关系。还有一个修改当前时间模式平行。

2 单片机采用定时器走时,有时分秒的时间显示,可以按键修改时分秒,设置当前的时间。

3 定时开关机的自动模式功能解释:按键设置开机时间点和关机时间点,当当前的时间处于时间段内小灯点亮,否则小灯熄灭。

4 手动模式功能解释:按键可以调节档位,也有相对应显示。

5 光敏电阻控制模式功能解释:光敏电阻检测到的电压来控制台灯亮度。
光照较低则 LED 自动点亮,光照较高,LED 自动熄灭

6 LED 开启和关闭的光照阈值能够由用户定义

7 按键规划

K1 切换模式:自动模式 手动模式 光敏电阻控制模式
K5 进入或者退出修改当前时间模式

定时开关机的自动模式下按键功能:
K2 切换选项
K3 加法
K4 减法

手动模式下按键功能:
K2 无作用
K3加档位
K4 减档位

光敏电阻控制模式下按键功能:
K2 无作用
K3 加光照阈值
K4 减光照阈值

修改当前时间模式下按键功能:
K2 切换选项
K3 加法
K4 减法

在这里插入图片描述

这段代码是一个基于AVR单片机的项目,用于实现LCD显示、ADC0832数据采集、PWM控制和按键输入功能。下面我将对其主要功能和实现方法进行详细介绍。

项目简介

该项目的核心功能包括:

  1. LCD显示:用于显示当前时间、模式和相关参数。
  2. ADC0832数据采集:通过ADC0832芯片采集模拟信号。
  3. PWM控制:用于调节输出PWM信号的占空比。
  4. 按键输入:实现多种模式切换和参数设置。

LCD显示功能

LCD显示模块用于显示各种信息,包括当前时间、模式状态和传感器数据。代码中通过SetCurPosition函数设置LCD光标位置,LCD_write_comLCD_write_str函数用于发送指令和字符串到LCD。LCD显示部分的代码示例如下:

void display(void) {// 省略部分代码...if (mode == 0) {// 显示当前时间// 省略部分代码...} else if (mode == 1) {// 显示手动模式// 省略部分代码...} else if (mode == 2) {// 显示光强模式// 省略部分代码...} else if (mode == 3) {// 显示时间设置模式// 省略部分代码...}
}

ADC0832数据采集

ADC0832是一个8位模数转换器,用于将模拟信号转换为数字信号。通过SPI协议与单片机进行通信。数据采集的核心函数是Get_AD_Result,其实现如下:

unsigned char Get_AD_Result(unsigned char ch) {// 省略部分代码...return dat1; // 返回转换结果
}

PWM控制

PWM控制部分用于调节输出信号的占空比,从而控制连接设备的工作状态。通过设置OCR1A寄存器来调整占空比。设置PWM占空比的函数如下:

void setPWM(unsigned int zhankongbi) {OCR1A = zhankongbi; // 设置占空比
}

按键输入

按键输入部分用于实现模式切换和参数设置。通过读取PINF寄存器的值来检测按键状态,并根据按键的不同执行相应操作。按键检测的核心函数如下:

unsigned char getkey(void) {// 省略部分代码...return 0; // 返回按键值
}

主控制逻辑

主控制逻辑位于main函数中,通过无限循环不断检测按键输入,更新显示和控制输出。其主要逻辑如下:

void main(void) {system_init(); // 系统初始化while (1) {unsigned char key = getkey();// 根据按键值更新模式和参数if (key) {// 省略部分代码...}display(); // 更新显示contorl(); // 控制输出}
}

具体功能实现

  1. 时间显示和设置:通过定时器中断更新当前时间,并通过按键设置定时时间。
  2. 自动模式:根据预设时间范围控制输出状态。
  3. 手动模式:用户通过按键手动设置输出状态。
  4. 光强模式:通过ADC0832采集光强信号,根据设定阈值控制输出状态。

通过这种模块化的设计,该项目能够实现多种模式下的灵活控制和显示功能,适用于需要多种输入输出控制的嵌入式系统应用。

资源:

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

娱乐圈发生震动,AI大模型技术已经取代了SNH48的小偶像?

自2023年以来,全球都被包裹在AI的惊天大潮之中,所有行业都在主动或被动地迎接改变。目前,各行业已经有大量公司正在把AI作为自身发展的最佳路径。其中,娱乐行业作为最被人们熟知的行业也在面对AI的发展时,发生着巨大变…

GMSB文章九:微生物的相关关系组间波动

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 计算配对微生物在组间的相关关系波动情况进而评估不同分组的微生物状态。secom_linear 函数…

线性表与顺序存储结构(下)

前言 接上文(线性表与顺序存储结构(上))。 这些顺序存储结构的方法在顺序表上下卷中已经提到过,但是有些许不同,可以为理解顺序表提供更丰富的视角。(不过最主要的区别在于顺序表上下卷中的顺…

Python | 计算位涡平流项

写在前面 最近忙着复习、考试…都没怎么空敲代码,还得再准备一周考试。。。等考完试再慢慢更新了,今天先来浅更一个简单但是使用的python code 在做动力机制分析时,我们常常需要借助收支方程来诊断不同过程的贡献,其中最常见的一…

51单片机-点亮LED灯

目录 新建项目选择型号添加新文件到该项目设置字体和utf-8编码二极管如何区分正负极原理:CPU通过寄存器来控制硬件电路 用P2寄存器的值控制第一个灯亮进制转换编译查看P2寄存器的地址生成HEX文件把代码下载到单片机中 新建项目 选择型号 stc是中国生产的、这个里面…

利用Linked SQL Server提权

点击星标,即时接收最新推文 本文选自《内网安全攻防:红队之路》 扫描二维码五折购书 利用Linked SQL Server提权 Linked SQL server是一个SQL Server数据库中的对象,它可以连接到另一个SQL Server或非SQL Server数据源(如Oracle&a…

初学者轻松搞定19个经典的Python程序以及代码演示

Python的经典程序展示了Python语言基本特性和功能的简单示例,这些程序在学习和理解Python编程语言的过程中起着至关重要的作用. 一些常见的经典Python程序及其在学习Python时的功能: 1.Hello, World! print("Hello, World!")解释:这是Python的基本输出…

primeflex overflow样式类相关的用法和案例

文档地址&#xff1a;https://primeflex.org/overflow 案例1 <script setup> import axios from "axios"; import {ref} from "vue";const message ref("frontend variable") axios.get(http://127.0.0.1:8001/).then(function (respon…

【Flink】Flink SQL

一、Flink 架构 Flink 架构 | Apache Flink 二、设置TaskManager、Slot和Parallelism 在Apache Flink中&#xff0c;设置TaskManager、Slot和Parallelism是配置Flink集群性能和资源利用的关键步骤。以下是关于如何设置这些参数的详细指南&#xff1a; 1. TaskManager 设置 …

【漏洞复现】致远互联FE协作办公平台——SQL注入

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 致远互联FE协作办公平台是一个专注于协同管理软件领域的数智化运…

关于内存和外存文件不同字符集下占用空间大小问题

关于内存和外存不同字符集下文件占用空间大小问题 存储&#xff08;外存&#xff09;的文件中的字符&#xff1a; ASCII&#xff1a;每个字符占用1个字节&#xff0c;用来存储英文字符和常用标点符号。ISO-8859-1&#xff1a;每个字符占用1个字节&#xff0c;向下兼容ASCII。G…

DS18B20单总线数字温度传感器国产替代MY18E20 MY1820 MY18B20Z MY18B20L(一)

前言 DS18B20是全球第一个单总线数字温度传感器&#xff0c;推出时间已经超过30年&#xff0c;最早由美国达拉斯半导体公司推出&#xff0c;2001年1月&#xff0c;美信以25亿美元收购达拉斯半导体&#xff08;Dallas Semiconductor&#xff09;&#xff0c;而美信在2021年8月被…

DM达梦数据库存储过程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

RDMA通信2:RDMA基本元素和组成 通信过程元素关系解析 视频教程

哈哈哈&#xff0c;今天我们把下面这张图理解了&#xff0c;我们的任务就完成了&#xff01; 视频教程在这&#xff1a;1.2 RDMA基本元素和组成 通信过程元素关系解析_哔哩哔哩_bilibili 一、WQ和WQE 工作队列元素(work queue element,WQE)&#xff1a;是软件下发给硬件的任务…

Apache Ranger 2.4.0 集成Hive 3.x(Kerbos)

一、解压tar包 tar zxvf ranger-2.4.0-hive-plugin.tar.gz 二、修改install.propertis POLICY_MGR_URLhttp://localhost:6080REPOSITORY_NAMEhive_repoCOMPONENT_INSTALL_DIR_NAME/BigData/run/hiveCUSTOM_USERhadoop 三、进行enable [roottv3-hadoop-01 ranger-2.4.0-hive…

什么是TOGAF架构框架的ADM方法?

ADM是架构开发方法&#xff08; Architecture Development Method&#xff09;&#xff0c;为开发企业架构所要执行的各个步骤以及它们质检的关系进行详细的定义&#xff0c;它是TOGAF规范中最为核心的内容。 ADM的具体步骤&#xff1a; 预备阶段&#xff08;Preliminary Phas…

STM32第十三课:DMA多通道采集光照烟雾

文章目录 需求一、DMA&#xff08;直接存储器存取&#xff09;二、实现流程1.时钟使能2.设置外设寄存器地址3.设置存储器地址4.设置要传输的数据量5.设置通道优先级6.设置传输方向7.使通道和ADC转换 三、数据处理四、需求实现总结 需求 通过DMA实现光照强度和烟雾浓度的多通道…

【SkiaSharp绘图13】SKCanvas方法详解(二)填充颜色、封装对象、高性能绘制、点(集)(多段)线、圆角矩形、Surface、沿路径绘制文字

文章目录 SKCanvas方法DrawColor 填充颜色DrawDrawable 绘制封装对象DrawImage 高性能绘制图像SKBitmap与SKImage对比DrawPicture 绘制图像SKPicture DrawPoint / DrawPoints 绘制点DrawRoundRect/DrawRoundRectDifference绘制圆角矩形DrawSurface 绘制SurfaceDrawTextOnPath沿…

List接口, ArrayList Vector LinkedList

Collection接口的子接口 子类Vector&#xff0c;ArrayList&#xff0c;LinkedList 1.元素的添加顺序和取出顺序一致&#xff0c;且可重复 2.每个元素都有其对应的顺序索引 方法 在index 1 的位置插入一个对象&#xff0c;list.add(1,list2)获取指定index位置的元素&#…

sheng的学习笔记-AI-聚类(Clustering)

ai目录 sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是聚类 在“无监督学习”(unsupervised learning)中&#xff0c;训练样本的标记信息是未知的&#xff0c;目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律&#xff0c;为进一步的数据分析提供基础。此类学…