STM32项目分享:基于stm32的自动升降棋系统

"我们不做一锤子买卖,只做技术成长的长期伙伴!"

目录

一、视频展示

二、项目简介

三、原理图设计

四、PCB硬件设计

五、程序设计

六、资料分享


一、视频展示

基于stm32的自动升降棋系统 -视频分享

二、项目简介

题目:基于stm32的自动升降棋系统

主控:STM32

oled显示

雨滴传感器

步进电机(转动模拟升旗)

JQ8400语音播报

遥控模块

功能:

1、可以一键升旗降旗(升旗时播放国歌,降旗不播放)

2、可以一键升降半旗(不播放)

3、雨滴传感器检测到下雨,自动降旗。

4、屏幕显示当前旗子状态。

5、步进电机正转二圈代表升旗到顶,一圈代表半旗,反之同理。

三、原理图设计

四、PCB硬件设计

五、程序设计

复制代码
#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "lcd.h"
#include "IOput.h"
#include "usart.h"
#include "timer.h"
#include "STEPMOTOR.h"
#include "jq8400.h"   
#include "IRC.h"
#include "adc.h"

extern u8 res;

u8 rain,on_flag=0,half=0;
u8 show_flag,show1_flag,max_wd=30,dec_wd=20,max_sd=60,dec_sd=40;

void beep_()
{
	BEEP=0;
	Delay_50ms(200);
	BEEP=1;
}


int main (void)
{
	delay_init();
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	OLED_Init();
	delay_ms(1);
	OLED_Clear();
	output_init();
	input_init();
	TIM2_Int_Init(71,9999);
	stepmotor_init();
	USART_Config();
	Drv_Hw_Init ();
	Adc_Init();
	while(1)
	{
		Med_Hw_ReadKeyValue();
		rain= 100- Get_Adc_Average(0,10)*100/4096;
		key_scan(1,0,0);
		if(set_flag==1)
		{
			beep_();
			set_flag=0;
			show_flag++;
			if(show_flag>=1)
			{
			show_flag=0;
			}
		}
		if(show_flag==0)
		{
			OLED_ShowCH(0,0,"  自动升旗系统  ");
			OLED_ShowCH(0,2,"雨情:");
			OLED_ShowNum(40,2,rain,2,16);
//			OLED_ShowNum(64,2,remote_val,2,16);
			OLED_ShowCH(0,4,"全旗:");
			OLED_ShowCH(0,6,"半旗:");
			if((add_flag==1 || remote_val==15) && half==0)
			{
				beep_();
				remote_val=0;
				add_flag=0;
				on_flag++;
				if(on_flag>=2)
					on_flag=0;
				OLED_ShowCH(40,4,"运行中");
				if(on_flag==1)
				{
					playsong(1);
					MotorCW(1200,1280);
					MotorStop();
				}
				else if(on_flag==0)
				{
					MotorCCW(1200,1280);
					MotorStop();
				}
			}
			else
			{
				if(remote_val==15)
					remote_val=0;
				add_flag=0;
			}
			if(on_flag==1)
			{
				OLED_ShowCH(40,4,"升起  ");
			}
			else
			{
				OLED_ShowCH(40,4,"收起  ");
			}
			if((dec_flag==1 || remote_val==16 ) && on_flag==0)
			{
				beep_();
				remote_val=0;
				dec_flag=0;
				half++;
				if(half>=2)
					half=0;
				OLED_ShowCH(40,6,"运行中");
				if(half==1)
				{
					MotorCW(1200,640);
					MotorStop();
				}
				else if(half==0)
				{
					MotorCCW(1200,640);
					MotorStop();
				}
			}
			else
			{
				remote_val=0;
				dec_flag=0;
			}
			
			if(half==1)
			{
				OLED_ShowCH(40,6,"升起  ");
			}
			else
			{
				OLED_ShowCH(40,6,"收起  ");
			}
			
			if(rain>=50 && on_flag==1)
			{
				on_flag=0;
				MotorCCW(1200,1280);
				MotorStop();
			}
			else if(rain>=50 && half==1)
			{
				half=0;
				MotorCCW(1200,640);
				MotorStop();
			}
			
			
		}
		
	}
}

六、资料分享

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

相关推荐
UTP协同自动化测试3 小时前
物联网模组测试难点 |APP指令下发+UART 响应+GPIO 电平变化,如何一次性验证?
功能测试·嵌入式硬件·物联网·模块测试
yoyobravery4 小时前
蓝桥杯第15届单片机满分
单片机·职场和发展·蓝桥杯
4caf16 小时前
作业2:6位数码管静态显示
嵌入式硬件·51单片机
不做无法实现的梦~6 小时前
STM32解析PPM协议
stm32·单片机·嵌入式硬件
czhaii7 小时前
基于Arm Cortex-M7内核GD32H7
单片机·嵌入式硬件
番茄灭世神7 小时前
MCU开发常见软件BUG总结(持续更新)
c语言·stm32·单片机·嵌入式·gd32
wanghanjiett7 小时前
双轮平衡车建模及控制 2 PID控制原理与调参
嵌入式硬件·控制算法
EVERSPIN7 小时前
SQPI PSRAM为单片机提供RAM扩展方案
单片机·嵌入式硬件·psram·sqpi psram
Ar-Sr-Na8 小时前
STM32现代化AI开发指南-VSCode环境配置(macOS)
c语言·人工智能·vscode·stm32·嵌入式硬件·硬件工程
进击的小头8 小时前
第6篇:嵌入式芯片算力核心来源:多级流水线架构与指令并行机制详解
单片机·嵌入式硬件·架构