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

六、资料分享

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

相关推荐
LCG米4 分钟前
STM32串口接收卡死根因排查:ORE溢出标志陷阱、错误标志清除顺序与中断恢复实测
stm32·单片机·嵌入式硬件·串口·嵌入式
创界工坊工作室2 小时前
38-基于单片机的老人健康监测系统
单片机·嵌入式硬件·51单片机·proteus
三佛科技-134163842124 小时前
20W~200W副边反馈SSR隔离方案HN1562+碳化硅MOS(含光耦817,431)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
恒锐丰科技林技术员5 小时前
EG2103 高压 MOS/IGBT 驱动芯片解析:半桥驱动的高性价比之选
经验分享·嵌入式硬件·硬件工程
_Ningye7 小时前
STM32 — 11.5 硬件SPI读写W25Q64
stm32·单片机·嵌入式硬件
inrichtt7 小时前
第九课时:STM32 SPI实战:按键消抖与FLASH断电保护
stm32·单片机·嵌入式硬件
优信电子8 小时前
STM32 驱动 SHT35 温湿度传感器:从 I²C 通信到 CRC 校验的完整实战
单片机·嵌入式
尼喃9 小时前
两节两串锂电池保护板原理图+充电电路二合一电路图
嵌入式硬件
深圳市恒锐丰科技杨生10 小时前
SS6208L 12V 集成 MOS 半桥功率芯片|LeadPower 率能半导体
嵌入式硬件·硬件工程
zhangzhangkeji10 小时前
stm32, HAL 库,WDG,复位分类,硬件看门狗相关,
stm32