加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

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

07/08 09:29
5916
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱
本设计:
基于STM32模拟电磁炮设计_STM32F103ZET6(程序+原理图+PCB+论文报告)
原理图:Altium Designer
程序编译器:keil 5
编程语言:C语言
编号C0029

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

原理图:
在这里插入图片描述

源程序:

#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(keyKEY0_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) ; //归位
}
}

论文报告:
在这里插入图片描述

百度云下载链接:

https://pan.baidu.com/s/1adjxcHvdFvpS4LuL0nWA_A?pwd=chqk

  • 设计资料获取联系方式.doc

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ATXMEGA128A4U-MHR 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PQCC44, 7 X 7 MM, 1 MM HEIGHT, 0.50 MM PITCH, GREEN, PLASTIC, MO-220VKKD-3, VQFN-44
$4.48 查看
ATSAMA5D35A-CN 1 Atmel Corporation RISC Microprocessor, 536MHz, CMOS, PBGA324, 15 X 15 MM, 1.40 MM HEIGHT, 0.80 MM PITCH, GREEN, MO-275KAAE-1, LFBGA-324
$13.79 查看
ATXMEGA64A4U-CU 1 Microchip Technology Inc IC MCU 8BIT 64KB FLASH 49VFBGA
$4.53 查看

相关推荐

电子产业图谱