STM32项目分享:基于stm32单片机控制的自动翻书装置

"我们不做一锤子买卖,只做技术成长的长期伙伴!"

目录

一、视频展示

二、项目简介

三、原理图设计

四、PCB硬件设计

五、程序设计

六、资料分享


一、视频展示

基于stm32单片机控制的自动翻书装置-视频分享

二、项目简介

题目:基于stm32单片机控制的自动翻书装置

主控:STM32

显示:OLED显示屏

人体红外传感器

6舵机

光线传感器

USB小灯

语音控制模块

三按键

DC供电

功能:

1.分为自动模式和手动模式 自动模式会10秒后自动翻页 手动模式可以按键控制翻下一页和上一页,手动模式下可语音控制翻页

2.检测到人的时候屏幕显示准备工作,检测不到人的时候显示休息中

3.自动计算翻页,开机默认为第一页。

4.根据光线,光线强的时候关灯,光线弱地时候开灯。

三、原理图设计

四、PCB硬件设计

五、程序设计

复制代码
#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "lcd.h"
#include "timer.h"
#include "IOput.h"
#include "pwm.h"
#include "usart.h"
#include "pwm.h"
 #include "adc.h"




extern u8 res;
u8 guangzhao,mode_flage=0,number1=0,count;

void next()
{
	TIM_SetCompare3(TIM2,5);
	TIM_SetCompare3(TIM3,5);
	delay_ms(1000);
	TIM_SetCompare2(TIM2,18);
	delay_ms(1000);
	TIM_SetCompare1(TIM2,18);
	delay_ms(1000);
	TIM_SetCompare2(TIM2,5);
	delay_ms(1000);
	TIM_SetCompare1(TIM2,5);
	delay_ms(1000);
	TIM_SetCompare3(TIM2,18);
	TIM_SetCompare3(TIM3,18);
}

void on()
{
	TIM_SetCompare3(TIM3,5);
	TIM_SetCompare3(TIM2,5);
	delay_ms(1000);
	TIM_SetCompare4(TIM3,18);
	delay_ms(1000);
	TIM_SetCompare4(TIM2,18);
	delay_ms(1000);
	TIM_SetCompare4(TIM3,5);
	delay_ms(1000);
	TIM_SetCompare4(TIM2,5);
	delay_ms(1000);
	TIM_SetCompare3(TIM3,18);
	TIM_SetCompare3(TIM2,18);
}

int main (void)
{
	delay_init();
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	OLED_Init();
	delay_ms(1);
	OLED_Clear();
	Usart1_Init(9600);

	input_init();
	output_init();
	
	Adc_Init();
	TIM2_Int_Init(71,9999);
	
	TIM_PWM_Init(199,7199);
	TIM_PWM1_Init(199,7199);
	delay_ms(10);
	
	TIM_SetCompare1(TIM2,5);
	TIM_SetCompare2(TIM2,5);
	TIM_SetCompare3(TIM2,18);
	
	TIM_SetCompare4(TIM2,5);
	TIM_SetCompare4(TIM3,5);
	TIM_SetCompare3(TIM3,18);
	
	while(1)
	{
		if(res==0x01)
		{
			res=0;
			next();
			number1++;
		}
		else if( res==0x02)
		{
			res=0;
			on();
			if(number1>=1)
					number1--;
		}
		else if( res==0x03)
		{
			res=0;
			mode_flage=0;
		}
		else if( res==0x04)
		{
			res=0;
			mode_flage=1;
		}
		
		key_scan();
		
		guangzhao=100-Get_Adc_Average(4,10)*100/4096;
		OLED_ShowCH(0,0,"    Զ          ");
		OLED_ShowCH(0,2,"ģʽ:");
		OLED_ShowCH(0,4,"ҳ  :");
		OLED_ShowNum(40,4,number1,2,16);
//		OLED_ShowNum(64,4,count,2,16);
		
		if(REN==1)
		{
			OLED_ShowCH(0,6,"  ׼            ");
		}
		else
		{
			OLED_ShowCH(0,6,"      Ϣ        ");
		}
		
		if(key1_flag==1)
		{
			time_count=0;
			key1_flag=0;
			mode_flage++;
			if(mode_flage>=2)
				mode_flage=0;
		}
		
		if(mode_flage==0)
		{
			OLED_ShowCH(40,2," ֶ ");
			if(key2_flag==1)
			{
				key2_flag=0;
				next();
				number1++;
			}
			
			if(key3_flag==1)
			{
				key3_flag=0;
				on();
				if(number1>=1)
					number1--;
			}
		}
		
		if(mode_flage==1)
		{
			if(time_count>=1000)
			{
				time_count=0;
				next();
				number1++;
			}
			OLED_ShowCH(40,2," Զ ");
			
			
		}
		
		if(guangzhao<=60)
			DENG=1;
		else
			DENG=0;
		
		
	}
}

六、资料分享

点击即可查看当前资料分享。

相关推荐
youcans_4 小时前
【STM32C5教程】(3)GPIO 按键输入实验
stm32·单片机·嵌入式硬件
北京盛世宏博6 小时前
通信异常深度排查:以太网温湿度设备 TCP 粘包、UDP 丢包根治方案
单片机·网络协议·tcp/ip·udp·以太网·传感器·温湿度
ly76896 小时前
MongoDB 事务开销实测:快照隔离下的写冲突、重试与分片事务边界
数据库·mongodb·事务·分片集群·快照隔离·写冲突
蓝天居士6 小时前
PY32F系列MCU在串口接收时跑飞的根因分析(2)
单片机·嵌入式硬件
wuyk5559 小时前
嵌入式驱动开发:量产级工程化实战(第9篇)——低功耗下的通信可靠性
c语言·驱动开发·stm32·单片机·嵌入式硬件
ly76899 小时前
Spring Data MongoDB 批量写入实践:BulkOperations 批大小与写关注权衡
java·mongodb·spring·批量写入·bulkoperations·写关注·mongotemplate
创界工坊工作室10 小时前
24-基于单片机的仓鼠养殖环境监控系统设计
stm32·单片机·嵌入式硬件·proteus
comyccccc11 小时前
PCB走线设计秘籍:从载流到3D预览全解析学习笔记
单片机·嵌入式硬件
endeavor1211 小时前
can总线(五)
c语言·stm32·单片机·can
深圳市尚想信息技术有限公司12 小时前
TM52F1376海速芯HITENX Flash-8位MCU单片机,多通道ADC + 段码显示一体化主控芯片
单片机·嵌入式硬件·mcu·flask·芯片·控制器