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

六、资料分享

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

相关推荐
charlie11451419142 分钟前
嵌入式C++工程实践第20篇:GPIO 输入模式内部电路 —— 芯片是如何“听“到外部信号的
开发语言·c++·stm32·单片机
三佛科技-134163842121 小时前
PD65W快充电源方案LP8841SD+LP35118N(高频QR反激、BOM简洁,小体积,过认证)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
三佛科技-187366133972 小时前
LP9962AA 集成PFC和高压半桥驱动的LLC谐振控制器(内置碳化硅芯片)
单片机·嵌入式硬件
一味做笔记3 小时前
关于stm32勾选enable烧录失败
stm32·单片机·嵌入式硬件
嵌入式Q3 小时前
FreeRTOS源码解析(4)任务状态查询
stm32·单片机·freertos
杰杰桀桀桀6 小时前
基于stm32ARM库函数的IIR二阶巴特沃斯低通滤波器--附完整代码
arm开发·stm32·嵌入式硬件·数字滤波器·巴特沃斯低通滤波
危桥带雨6 小时前
Freertos——使用队列集优化数据传输
stm32·单片机·嵌入式硬件·freertos
来生硬件工程师7 小时前
【程序库】 MutiButton 按键库
c语言·笔记·stm32·单片机·mcu·嵌入式实时数据库
CodeQingqing7 小时前
反汇编在嵌入式的使用
stm32·嵌入式·反汇编
sweetone7 小时前
好帅(HOST) HS-AF01T电烤炉(空气炸锅)的小修及物联网设备的安全思考
经验分享·单片机·嵌入式硬件·物联网