【单片机毕业设计2-基于stm32c8t6的智能台灯系统】

news2024/11/26 22:41:38

【单片机毕业设计2-基于stm32c8t6的智能台灯系统】

  • 前言
  • 一、功能介绍
  • 二、硬件部分
  • 三、软件部分
  • 总结


前言

🔥这里是小殷学长,单片机毕业设计篇2 基于stm32的智能台灯系统
🧿创作不易,拒绝白嫖
企鹅号:2836235214

在这里插入图片描述


一、功能介绍

------------------------------------------智能台灯系统-----------------------------------------
1.按键进行模式的切换 以及亮度调节 定时时间设置 和实时时间设置 报警距离和有效距离设置
2.光敏自动调节灯光亮度
3.定时模式 显示时间 到时自动熄灭
4.设置当前时间 进行实时显示
5.蓝牙和语音与其他模式互不影响
6.超声波感应到人则打开灯光 如果距离过近则蜂鸣器报警提示
8.学习时长(久坐)提醒功能 可通过按键改变时间


🔥 实物展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、硬件部分

下面为该毕设中所用到的相关硬件说明,具体参数不做细节描述

硬件材料

在这里插入图片描述
在这里插入图片描述

PCB和原理图

在这里插入图片描述

在这里插入图片描述

三、软件部分

在这里插入图片描述

main.c部分代码

int main(void)
{
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4	 
	delay_init();	    			     	 //延时函数初始化	 
	Init_Usart();					         //初始化串口
	LED_Init();		  					     //初始化LED
	Exit_Init();                             //按键外部中断控制
	Buzzer_GPIO_Init();                      //蜂鸣器初始化
	Lsens_Init();                            //光敏初始化
	TIM3_PWM_Init();                         //定时器初始
    HC_SR04_init();                          //超声波初始化
	OLED_Init();			                //初始化OLED  
	OLED_Clear(0);	
	Init_interface(); 						 //初始化界面只显示一次
	printf("===============HardWare Init Finished============\r\n");
	Buzzer_Voice();
	Buzzer_Voice();
  while(1)
	{
		interface_task(work_mode);                //界面切换处理
		ldr_task();                              //光敏处理任务
	    csb_task();                              //红外处理任务
		clock_Action();                          //定时处理任务
		usart_task();	                           //串口处理任务
		TIM_SetCompare2(TIM3,100-current_duty);	
	}
}

void interface_task(unsigned char interface)
{
	static unsigned char temp_interface = 0; //临时缓存当这次值和上次不同时进行清屏处理
	if(temp_interface != interface)
	{
		delay_ms(500);
		OLED_Clear(0);	
	}
	temp_interface = interface;
	switch(interface)
	{
		case 0:Init_interface();break;     //初始化界面 
		case 1:KEY_Display();break;        //手动模式显示
		case 2:LDR_Display();break;        //自动模式显示
		case 3:Time_Display();break;       //定时模式显示
		case 4:Interface_SetT();break;     //设置当前时间显示
		case 5:Interface_Dis();break;      //设置距离相关
		case 6:Study_time();break;         //学习时长界面显示
		default:break; //error
	}
}

/*-------------------------------串口中断服务函数-------------------------*/
//串口1接收  PA9 PA10   蓝牙模块
void USART1_IRQHandler(void)
{
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
	{
		Usart1_cmd = USART_ReceiveData(USART1);
		//USART_SendData(USART1,Usart1_cmd);    //打开可通过串口观察接收的数据
		USART_ClearFlag(USART1, USART_FLAG_RXNE);
	}
}

//语音 RX-  PA2  TX-PA3
void USART2_IRQHandler(void)
{
    if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET)
    {
       Usart1_cmd = USART_ReceiveData(USART2);				
			 USART_ClearFlag(USART2, USART_FLAG_RXNE);
    }
}

void TIM3_IRQHandler(void)   //TIM3中断
{
	static unsigned int count = 0,t = 0,t1 = 0;
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
		{		
			if(set_timer == 1)
			{
					count++;
					if(count == 100)
					{
						count = 0;		
						sec++;
						if(sec == 60)
						{
							sec = 0;
							min++;
							if(min== 60)
							{
								min = 0;
								hour++;
								if(hour == 24)
								{
									hour = 0;
								}
							}
						}
					//sprintf(str_t,"%02d:%02d:%02d\r\n",hour,min,sec);
					//printf("%s\r\n",str_t);
					}					
				}
			//下面为定时处理
			if(clock_start == 1)  //开始计时
			{
				if(current_duty == 0)
				{
						current_duty = 80;
				}
				t++;
				if(t == 100) //1s
				{
					t = 0;
					set_time--;
					if(set_time == 0)  //时间到
					{
						clock_flag = 1;           //标志置1 根据此标志进行其他功能响应 蜂鸣器提示
						clock_start = 0;          //停止计时
						set_time = 10;            //再次恢复默认值10s	
						current_duty = 0;
					}
				}
			}
			if(clock_start == 0 && work_mode == 3)
			{
					current_duty = 0;
			}
			if(sit_flag == 1)
			{
				t1++;
				if(t1 == 100)   //1s
				{
					 t1 = 0;
					 sit_t++;
					  if(sit_t > sit_time)
						{
							//进行警报提示 蜂鸣器响5次
							Buzzer_Voice();
							Buzzer_Voice();
							Buzzer_Voice();
							Buzzer_Voice();
							Buzzer_Voice();
						}
				}
			}
			else
			{
				sit_flag = 0;            //等待下次重新开始
				sit_t = 0;         //等待下一次
			}
			dis_count++;
			TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx更新中断标志  //10ms	
		}
}

总结

上面为基于stm32f103c8t6的智能台灯系统相关的大致介绍,源码,pcb和原理图以及相关文档说明做了详细说明

🧿创作不易,拒绝白嫖

实物+资料

在这里插入图片描述

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

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

相关文章

Java IO流——【从零构建信息管理系统】

Java I/O流——【从零构建信息管理系统】 文章目录 什么是Java I/O流介绍理解字节流和字符流的区别 Java I/O流的作用Java I/O流方法InputStream方法Reader方法OutputStream方法Writer方法Java I/O体系的全体类 使用示例Java I/O流在实际应用中使用效果 什么是Java I/O流 介绍…

多线程事务怎么回滚?

项目中用到了多线程去批量处理一些数据,当时想当然认为只要方法上加上Transactional注解就好了,实际并未达到想要的处理效果。特此去学习了下关于多线程事务回滚相关方案,参考了网上其他资料,这里整理并记录下学习历程。 站在巨人…

在 IntelliJ IDEA 中使用 Docker 开发指南

目录 一、IDEA安装Docker插件 二、IDEA连接Docker 1、Docker for Windows 连接 2、SSH 连接 3、Connection successful 连接成功 三、查看Docker面板 四、使用插件生成镜像 一、IDEA安装Docker插件 打开 IntelliJ IDEA,点击菜单栏中的 "File" -&g…

山西电力市场日前价格预测【2023-08-14】

日前价格预测 预测明日(2023-08-14)山西电力市场全天平均日前电价为322.03元/MWh。其中,最高日前电价为366.98元/MWh,预计出现在19: 30。最低日前电价为286.57元/MWh,预计出现在13: 15。 价差方向预测 1: 实…

腾讯出了一个新聊天软件M8

众所周知,如今国内互联网,微信和QQ无疑是社交领域的霸主。 下载:https://www.123pan.com/s/BP5A-RW4xh.html 不过,它们也有各自局限性,比如难以结识新朋友、功能过于复杂等。 这让用户产生厌倦,再加上近几年AI、元宇…

标记垃圾,有三种色彩:四千长文带你深入了解三色标记算法

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

SCSS的基本用法

1、声明变量 $ 声明变量的符号 $ 下面这张图左半部分是scss的语法,右半部分是编译后的css。(整篇文章皆是如此) 2、默认变量 !default sass 的默认变量仅需要在值后面加上 !default 即可。 如果分配给变量的值后面添加了 !default 标志…

jmeter通过BeanShell对接口参数进行MD5和HmacSHA256加密【杭州多测师_王sir】

一、在eclipse里面编写MD5加密算法 package com.Base64;import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class Md5Utils {public static String md5(String sourceStr) {String result "";try {MessageDigest md Mess…

教你10分钟内学习如何CSS 设置网页打印时的样式

本文将教您开始为要打印的页面编写CSS所需要的一切提供帮助。 media 规则 If you’ve done any responsive design, you’ll already know about the media rule. As well as different screen sizes, media also lets you target “print” media. Here’s an example: 如果…

【CTF-web】修改请求头(XFF)

题目链接:https://ctf.bugku.com/challenges/detail/id/79.html 随意输入后可以看到需要本地管理员登录,得知这是一道需要修改XFF头的题。 XFF即X-Forwarded-For,该请求标头是一个事实上的用于标识通过代理服务器连接到 web 服务器的客户端的…

腾讯轻量云服务器搭建Node.js开发环境

1.购买腾讯云轻量应用服务器,登录 轻量应用服务器控制台,在 服务器 页面单击 新建。安装运行环境,选择为应用模板 > Web 开发场景 > Node.js 应用模板。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Chrome V…

分布式文件存储系统-FastDFS

前言:FastDFS 是一个分布式文件存储系统,主要用于存储和管理大规模的文件数据,如图片、视频、文档等,是淘宝前架构师为了存储图片用C语言开发出来的系统。 服务端有两个组件 Tracker Server 与 Storage Server ,对应两…

​API网关类型与区别​

什么是API网关? 在现代软件架构中,API(应用程序编程接口)网关起着重要的作用。它是一个中间层,用于管理和控制应用程序之间的通信。API网关可以提供一些关键功能,如流量控制,安全认证&#xff…

java项目打包运行报异常:Demo-1.0-SNAPSHOT.jar中没有主清单属性

检查后发现pom文件中有错误&#xff0c;需要添加build内容才能恢复正常。 添加下面文件后再次启动恢复正常。 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactI…

Docker安装nacos v2.1.1

目录 前言安装nacos安装步骤1&#xff1a;准备1. 安装docker2. 搜索可以使用的镜像。3. 选择合适的redis镜像。3. 也可从docker hub上搜索镜像。 安装步骤2&#xff1a;拉取镜像拉取镜像查看已拉取的镜像 安装步骤3&#xff1a;创建容器创建容器方式1&#xff1a;快速创建容器创…

C语言实现扫雷游戏(附完整代码)

大家好&#xff0c;欢迎来到Mr.kanglong的CSDN博客&#xff0c;这篇博客来讨论一下如何使用C语言实现扫雷游戏&#xff0c;其实扫雷游戏和我之前写的三子棋游戏大体实现框架一样&#xff0c;只是逻辑有所不同。 目录 扫雷游戏介绍 游戏效果 实现代码 game.c game.h test.c 扫…

React学习之路 - 上传代码到GitCode

Git 全局设置 git config --global user.name "AnyaPapa" git config --global user.email "fangtaihongqq.com" 添加SSH密钥 Mac终端输入命令 cd existing_folder git init git remote add origin gitgitcode.net:Java_1710/test.git git add . git com…

msvcr120.dll丢失怎样修复?总结三个dll修复方法

当我遇到msvcr120.dll丢失的问题时&#xff0c;我感到有些困惑和焦虑。因为这个问题会导致我无法运行依赖这个文件的应用程序。msvcr120.dll是运行时库文件的一部分&#xff0c;为应用程序提供了必要的运行时支持。它的丢失会导致应用程序无法正常运行&#xff0c;这让我意识到…

【单片机毕业设计3-基于stm32c8t6的智能家居系统】

【单片机毕业设计3-基于stm32c8t6的智能家居系统】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 &#x1f525;这里是小殷学长&#xff0c;单片机毕业设计篇3 基于stm32的智能家居控制系统 &#x1f9ff;创作不易&#xff0c;拒绝白嫖&#xff08;有需可点击最后链接&a…

[C++] 一篇带你了解C++中动态内存管理,new让大家都有对象

目录 1、C/C内存分布 2.、C语言中动态内存管理方式&#xff1a;malloc、calloc、realloc 3、C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 3.3 malloc与new的异常处理机制 4、operator new与operator delete函数 4.1 operator new与operat…