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

六、资料分享

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

相关推荐
up向上up6 小时前
基于STM32温湿度采集Proteus仿真设计
stm32·单片机·proteus
d111111111d8 小时前
江协科技-PID基本原理-(学习笔记)-主页有所有STM32外设的笔记基本都是万字起步。
笔记·科技·stm32·单片机·嵌入式硬件·学习
wotaifuzao8 小时前
Nordic-nRF54L 系列架构全景:从蓝牙 6.0 到超低功耗设计详解
单片机·物联网·硬件架构·蓝牙·nordic
xiaohai@Linux8 小时前
STM32上使用HAL库驱动9针FC手柄实现游戏自由!
stm32·fc游戏手柄
1+2单片机电子设计10 小时前
基于 STM32 的太阳能 MPPT 充电控制器设计
stm32·单片机·嵌入式硬件
Stanford_sun10 小时前
基于Zigbee的无线火灾报警系统(云平台版)
网络·嵌入式硬件·物联网·zigbee
CFZPL10 小时前
espidf用CMake文件构建项目
单片机·esp32
猪八戒1.011 小时前
9.5 【定时器】输入捕获
单片机·嵌入式硬件
xiaohai@Linux11 小时前
STM32之移植原生的infoNES nes游戏模拟器源码实现游戏自由!!!(原生纯C版,非汇编版)
stm32·游戏·模拟器·infones·nes游戏机