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

六、资料分享

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

相关推荐
芯岭技术1 天前
低成本315/433M接收芯片 XL420 SOP8封装,支持 1527 等常见 OOK编码
单片机·嵌入式硬件
Wangshanjie_981 天前
【通讯协议】-01、Modbus协议
单片机·信息与通信
听风吹雨yu1 天前
STM32F407-MD5码计算/Digest认证计算
stm32·单片机·嵌入式硬件
yugi9878381 天前
RN8302B电表芯片驱动开发指南(基于SPI通信)
驱动开发·单片机·嵌入式硬件
youcans_1 天前
【STM32-MBD】(15)Simulink 模型开发之三相互补 PWM
stm32·单片机·嵌入式硬件·matlab·foc
hrw_embedded1 天前
基于CH395Q网卡移植ftplib的FTP客户端
网络·stm32·ftp·linux库
萧曵 丶1 天前
MongoDB 核心原理 + 高频面试题
数据库·mongodb
逐步前行1 天前
STM32_内部结构
网络·stm32·嵌入式硬件
青树寒鸦1 天前
wsl的docker备份mongo和迁移
运维·mongodb·docker·容器
我是一棵无人问荆的小草1 天前
STM32标准库与HAL库编程差异分析
stm32·单片机·嵌入式硬件