资讯详情

STM32模拟电磁炮设计_STM32F103ZET6(程序+原理图+PCB+论文报告)

本设计: 基于STM32模拟电磁炮设计_STM32F103ZET6(程序 原理图 PCB 论文报告) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 编号C0029

设计说明: 该系统方案主要由 STM32f103zet6单片机最小系统控制电路、储能电路、电压检测电路、电磁枪发射电路、舵机云台、TFT由显示屏、虚拟键盘等组成。 利用电磁感应原理产生电磁场,给弹丸一个磁场力。液晶屏上的虚拟按钮手动输入靶中心与固定标点之间的距离 以及与中心轴的偏差角,驱动舵机云台调整电磁炮的仰角和水平方向STM32f103zet6控制器计算弹道,实时测量1500uf 电容充电电压,电容充电达到计算电压后,控制云台到达指定位置,瞬间放电电容器,产生强磁场,发射弹丸命中目标。目标中心坐标位置、仰角信息、电容电压等信息也可在液晶屏上显示。

链接https://pan.baidu.com/s/1eWRf62yc7vdPWy4AYVp5PA?pwd=mna2  

在这里插入图片描述

原理图(提供源文件):

PCB(提供源文件):

源程序(提供源文件):

复制到浏览器https://docs.qq.com/sheet/DS0xIa0llTmtNakRW #include "sys.h" #include "delay.h" #include "stm32f10x_adc.h" #include "stm32f10x_rcc.h" #include "port_init.h" #include "key.h" #include "lcd.h" #include "usart.h"  #include "timer_pwm.h"  #include "24cxx.h" #include "adc.h" #include "touch.h"  void Delay(u32 count)  { 
           u32 i=0;    for(;i<count;i );  }    ///清空屏幕,显示在右上角"RST" void Load_Drow_Dialog(void) { 
         LCD_Clear(WHITE); //清屏    POINT_COLOR=BLUE; //设置蓝色字体   LCD_ShowString(lcddev.width-24,0,200,16,16,"ok");//显示清屏区域
  	POINT_COLOR=RED;	//设置画笔蓝色 
}


//两个数之差的绝对值 
//x1,x2:需取差值的两个数
//返回值:|x1-x2|
u16 my_abs(u16 x1,u16 x2)
{ 
       			 
	if(x1>x2)return x1-x2;
	else return x2-x1;
}  
  

 //5个触控点的颜色 
const u16 POINT_COLOR_TBL[CT_MAX_TOUCH]={ 
       RED,GREEN,BLUE,BROWN,GRED};  
//电阻触摸屏测试函数
void rtp_test(void)
{ 
       
	u8 key;
	u8 i=0;	  
	while(1)
	{ 
       
	 	key=KEY_Scan(0);
		tp_dev.scan(0); 		 
		if(tp_dev.sta&TP_PRES_DOWN)			//触摸屏被按下
		{ 
       	
		 	if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
			{ 
       	
				if(tp_dev.x[0]>(lcddev.width-24)&&tp_dev.y[0]<16)Load_Drow_Dialog();//清除
				else TP_Draw_Big_Point(tp_dev.x[0],tp_dev.y[0],RED);		//画图 
			}
		}else delay_ms(10);	//没有按键按下的时候 
		if(key==KEY0_PRES)	//KEY0按下,则执行校准程序
		{ 
       
			LCD_Clear(WHITE);//清屏
		    TP_Adjust();  	//屏幕校准 
			Load_Drow_Dialog();
		}
		i++;
		if(i%20==0)LED1=!LED1;
	}
}
//主函数
 int main(void)
 { 
       	 
	u16 led0pwmval=50;
	u8 dir=1;	
	 
	delay_init();	    	 //延时函数初始化 
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 	//串口初始化为115200
	  delay_ms(300) ;  //上电缓冲
	Adc_Init();		  		//ADC初始化 
	  delay_ms(300) ;  //上电缓冲
 	port_Init();			     //LED端口初始化
	  delay_ms(300) ;  //上电缓冲
	LCD_Init();	         //液晶屏初始化
	  delay_ms(300) ;  //上电缓冲
	KEY_Init();	 	
	TIM5_PWM_Init(1999,719);	 //不分频。PWM频率=100000/2000=50hz 20ms分成2000分2ms占200份 200/180 
 	 // protect=0; //断开升压电源
	 tp_dev.init();  //触摸屏初始化
	  delay_ms(300) ;  //上电缓冲
 	POINT_COLOR=BLUE;//设置字体为红色 simulated electromagnetic curved cannon
	  delay_ms(300) ;  //上电缓冲
	LCD_ShowString(0,0,240,16,16,"Anyang Institute Of Technology");
	LCD_ShowString(0,15,240,16,16,"Electromagnetic Curved Cannon");	  //Design of Simulated Electromagnetic Curved Cannon Based on STM32
	LCD_ShowString(55,30,200,16,16,"Design by Yibo_Liu");	
	 LCD_ShowString(10,50,200,16,16,"Input coor:( , )"); 
	 LCD_ShowString(10,70,200,16,16,"Vol set value : V");   //Real value
	 LCD_ShowString(10,90,200,16,16,"Vol Real value: V");   //Real value
	 Servo_work(142,150) ;  //初始化云台 原来左右是150
	 virtual_keyboard_init(); //虚拟键盘
	 while(1)
	 { 
       
  	 coordinate_transformation() ; //将按键值转换为坐标值,进行计算脉冲宽度和电容电压 子程序
		 launch_jud();  //准备发射子程序
// Servo_work(150,150) ; //归位
	 }
}

论文报告:

资料清单如下:

标签: 电容电磁触控屏

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台