"我们不做一锤子买卖,只做技术成长的长期伙伴!"
目录
一、视频展示
二、项目简介
题目:基于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;
}
}
六、资料分享
点击即可查看当前资料分享。