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

六、资料分享

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

相关推荐
fie88892 天前
基于51单片机的航模遥控器6通道接收机程序
单片机·嵌入式硬件·51单片机
llilian_162 天前
选择北斗导航卫星信号模拟器注意事项总结 北斗导航卫星模拟器 北斗导航信号模拟器
功能测试·单片机·嵌入式硬件·测试工具·51单片机·硬件工程
Yyq130208696822 天前
MH2457,‌国产 32 位屏驱 MCU‌芯片,支持‌1080P 高清显示‌与‌以太网通信‌,广泛应用于两轮车仪表盘及工控屏等领域
单片机·嵌入式硬件
爱分享的阿Q2 天前
STM32现代化AI开发环境搭建:从Keil到VSCode+AI的范式转移
人工智能·vscode·stm32
爱吃程序猿的喵2 天前
南邮计科电工电子实验B《RLC串联谐振电路》实验报告
单片机·嵌入式硬件
gihigo19982 天前
基于MSComm控件的PC串口通信程序(中断方式接收数据)
数据库·mongodb
bubiyoushang8882 天前
利用STM32实现Modbus通信(RTU从机方案)
stm32·单片机·嵌入式硬件
知识分享小能手2 天前
MongoDB入门学习教程,从入门到精通,MongoDB的分片管理(17)
数据库·学习·mongodb
cmpxr_2 天前
【单片机】常用设计模式
单片机·嵌入式硬件·设计模式
杰杰桀桀桀2 天前
4*4无时延矩阵键盘(非阻塞)--附代码链接
stm32·单片机·嵌入式硬件·矩阵·计算机外设·无时延矩阵键盘