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

六、资料分享

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

相关推荐
chao1898449 小时前
STM32 HAL库驱动AT24C02 EEPROM例程
stm32·单片机·嵌入式硬件
猫猫的小茶馆12 小时前
【Python】函数与模块化编程
linux·开发语言·arm开发·驱动开发·python·stm32
feifeigo12312 小时前
STM32矩阵键盘驱动(库函数版)实现
stm32·矩阵·计算机外设
嵌入式小站13 小时前
STM32 零基础可移植教程 05:按键消抖,为什么按一次会触发好几次
chrome·stm32·嵌入式硬件
拾知_H14 小时前
STM32/Delay延时函数编程思路
stm32·单片机·时钟·延时
2zcode15 小时前
基于STM32的智能扫地机器人设计与实现
stm32·嵌入式硬件·机器人
jllllyuz16 小时前
单相并网逆变器控制代码实现(STM32版)
stm32·单片机·嵌入式硬件
冉卓电子17 小时前
GD32C103RBT6 misc 内核驱动库极简解析
单片机·嵌入式硬件
yongui4783417 小时前
MAX6675 K型热电偶温度采集程序(Keil环境)
单片机·嵌入式硬件
豆包公子17 小时前
AUTOSAR CP XCP 移植到裸机 MCU-实践篇
单片机·嵌入式硬件