欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
2019電設電磁項目 STM32代碼分享
[打印本頁]
作者:
非一般速度
時間:
2020-1-27 10:00
標題:
2019電設電磁項目 STM32代碼分享
2019年電子設計大賽電磁題目參考代碼,本人參加所用,附作品實物照片一張哈哈,分享學習。電磁采用多匝線圈繞成,用大容量電容充放電。單片機采用stm32f103rct6,電磁發射控制采用繼電器,顯示使用oled,使用矩陣鍵盤進行功能切換和設置。
51hei.png
(843.33 KB, 下載次數: 76)
下載附件
2020-1-27 16:28 上傳
單片機源程序如下:
#include "stm32f10x.h"
#include "timer.h"
#include "led.h"
#include "oled.h"
#include "key.h"
#include "delay.h"
#include "Duoji_PWM.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "adc.h"
#include "oled.h"
#include "bmp.h"
#include "pwm.h"
#include "hc05.h"
//#include "usart2.h"
#include "jidianqi.h"
#include "math.h"
#define ADC_Channel 7
#define key_clear {key_7=0,key_8=0,key_9=0,key_4=0,key_5=0,key_6=0,key_1=0,key_2=0,key_3=0,key_0=0,kaishi=0,change_d=0,change_a=0,done=0,saomiao=0;saomiao2=0;}
extern u8 num;
unsigned char key_7=0,key_8=0,key_9=0,kaishi=0;
unsigned char key_4=0,key_5=0,key_6=0,change_d=0;
unsigned char key_1=0,key_2=0,key_3=0,change_a=0;
unsigned char done=0,key_0=0,saomiao=0,saomiao2=0;
unsigned int Compare_ang=110,Compare_dis=83;
unsigned int Compare_ang_done,Compare_dis_done;
extern u32 distance1;
//距離角度
unsigned int distance=0,angle=0;
unsigned int dis_1=0,dis_2=0,dis_3=0;
unsigned int ang_1=0,ang_2=0;
extern void Key1_init(void);
extern void Key2_init(void);
void JTAG_Set(u8 mode2) //配置JTAG/SW
{
u32 temp;
temp=mode2;
temp<<=25;
RCC->APB2ENR|=1<<0; //開啟輔助時鐘
AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
AFIO->MAPR|=temp; //配置JTAG/SW模式
}
int main(void)
{
// u16 adc0,adc1,adc2,adc3;
JTAG_Set(0x02); //關閉JTAG調試接口,因為JTAG接口占用了B3、B4、A15。用戶想要更改到的OLED接口可能與JTAG接口沖突,所以關閉JTAG。
JTAG_Set(0x01); //開啟SWD調試接口。DIO:A13,CLK:A14
delay_init(); //延時函數初始化
LED_Init(); //初始化與LED連接的硬件接口
Adc_Init(); //ADC初始化
OLED_Init();
delay_init();
TIM3_Cap_Init(4999,7199);
uart_init(9600); //串口初始化為9600
HC05_Init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
TIM1_PWM_Init(1439,999);
TIM8_PWM_Init(1439,999);
uart_init(9600);
jidianqi_Init();
TIM3_Cap_Init(0XFFFF,72-1);
// TIM_SetCompare1(TIM1,Compare_ang);
// TIM_SetCompare1(TIM8,Compare_dis);
chongdian;
kaipao;
while(1)
{
OLED_P6x8Str(0,0,"mode:",F6x8);
OLED_P6x8Str(0,20,"distance:",F6x8);
OLED_P6x8Str(0,30,"angle:",F6x8);
OLED_P6x8Str(0,40,"distance11:",F6x8);
Read_Distane();
OLED_ShowNum(80,40,distance1,4,F6x8);
num=KEY_Scan();
switch(num)
{
// case 1: key_7=1;break;
// case 2: key_8=1;break;
// case 3: key_9=1;break;
case 16: kaishi=1;break;
// case 5: key_4=1;break;
// case 6: key_5=1;break;
// case 7: key_6=1;break;
case 15: change_d=1;break;
// case 9: key_1=1;break;
case 10: saomiao2=1;break;
case 13: saomiao=1;break;
case 14: change_a=1;break;
// case 10: done=1;break;
case 12: done=1;break;
// case 15: key_7=1;break;
// case 16: key_7=1;break;
}
// LCD_ShowNum(20,20,num,3,12);
OLED_ShowNum(0,60,num,1,F6x8);
// distance=90;
// OLED_ShowNumber(40,40,(u16)distance,5,12);
// num=0;
Compare_ang=83+(int)angle*0.89;
Compare_dis=45+asin(distance/1.5)/2;
if(kaishi==1)
{
// //30-190 中心110 190、30 180度 范圍 83~137
// TIM_SetCompare1(TIM1,190);
// delay_ms(1000);
// TIM_SetCompare1(TIM1,30);
// delay_ms(1000);
// //25~150 水平45,垂直望天120
// TIM_SetCompare1(TIM8,120);
// delay_ms(1000);
// TIM_SetCompare1(TIM8,45);
// delay_ms(1000);
// key_clear;
TIM_SetCompare1(TIM1,Compare_ang);
delay_ms(1000);
TIM_SetCompare1(TIM8,Compare_dis);
delay_ms(1000);
chongdian_stop;
//tiao
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
chongdian;
kaipao_stop;
kaipao;
key_clear;
}
if(saomiao==1)
{
Compare_ang=83;
while(1)
{ Read_Distane();OLED_ShowNum(80,40,distance1,4,F6x8);
TIM_SetCompare1(TIM1,Compare_ang);
delay_ms(800);
Compare_ang+=10;
if(Compare_ang==133)
while(Compare_ang!=83)
{ Read_Distane();OLED_ShowNum(80,40,distance1,4,F6x8);
TIM_SetCompare1(TIM1,Compare_ang);
delay_ms(800);Compare_ang-=10;
if(distance1<=3500&&distance1>=2500)
{ OLED_P6x8Str(40,60,"find!",F6x8);
goto K1;}
}
}
K1:chongdian_stop;
//tiao
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
chongdian;
kaipao_stop;
kaipao;
OLED_CLS_y(40);
key_clear;
}
//發揮題三
if(done==1)
{
OLED_P6x8Str(0,0,"mode:",F6x8);
OLED_P6x8Str(40,0,"manual operation",F6x8);
Compare_ang_done=110;
delay_ms(1000);
Compare_dis_done=45;
delay_ms(1000);
key_clear;
while(done!=1)
{
while(1)
{
num=KEY_Scan();
if(num!=0)
{ delay_ms(50);
num=KEY_Scan();
if(num!=0)
{num=KEY_Scan();
while(KEY_Scan()!=0) ;
goto M1;
}
}
}
M1:
if(num==4)
{Compare_ang_done=Compare_ang_done+8;TIM_SetCompare1(TIM1,Compare_ang_done);delay_ms(1000);num=0;}
if(num==6)
{Compare_ang_done=Compare_ang_done-8;TIM_SetCompare1(TIM1,Compare_ang_done);delay_ms(1000);num=0;}
if(num==8)
{ Compare_dis_done=Compare_dis_done-8; TIM_SetCompare1(TIM8,Compare_dis_done);delay_ms(1000);num=0;}
if(num==5)
{ Compare_dis_done=Compare_dis_done+8; TIM_SetCompare1(TIM8,Compare_dis_done);delay_ms(1000);num=0;}
}
key_clear;
OLED_CLS_y(0);
}
//掃描2
if(saomiao2==1)
{
TIM_SetCompare1(TIM8,45);
Compare_ang=137;
while(1)
{ Read_Distane();OLED_ShowNum(80,40,distance1,4,F6x8);
TIM_SetCompare1(TIM1,Compare_ang);
delay_ms(800);
Compare_ang-=10;
if(Compare_ang==87)
while(Compare_ang!=137)
{ Read_Distane();OLED_ShowNum(80,40,distance1,4,F6x8);
TIM_SetCompare1(TIM1,Compare_ang);
delay_ms(800);Compare_ang+=10;
if(distance1<=3500&&distance1>=2500)
{ OLED_P6x8Str(40,60,"find!",F6x8);
goto K2;}
}
}
K2:chongdian_stop;
//tiao
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
chongdian;
kaipao_stop;
kaipao;
OLED_CLS_y(40);
key_clear;
}
if(change_d==1)
{
OLED_P6x8Str(0,0,"mode:",F6x8);
OLED_P6x8Str(40,0,"change distance",F6x8);
while(KEY_Scan()!=0) ;
num=0;
while(1)
{
num=KEY_Scan();
if(num!=0)
{ delay_ms(50);
num=KEY_Scan();
if(num!=0)
{num=KEY_Scan();
dis_1=num;}
while(KEY_Scan()!=0) ;
goto L1;
}
}
L1: OLED_ShowNum(60,20,dis_1,1,F6x8);
delay_ms(100);
num=0;
while(1)
{
num=KEY_Scan();
if(num!=0)
{ delay_ms(50);
num=KEY_Scan();
if(num!=0)
{num=KEY_Scan();
dis_2=num;}
while(KEY_Scan()!=0);
goto L2;
}
}
L2: OLED_ShowNum(70,20,dis_2,1,F6x8);
delay_ms(100);
num=0;
while(1)
{
num=KEY_Scan();
if(num!=0)
{ delay_ms(50);
num=KEY_Scan();
if(num!=0)
{num=KEY_Scan();dis_3=num;
}
while(KEY_Scan()!=0);
goto L3;
}
}
L3: OLED_ShowNum(80,20,dis_3,1,F6x8);
num=0;
distance=100*dis_1+10*dis_2+dis_3;
// OLED_P6x8Str(0,40,"hand",F6x8);
// OLED_ShowNumber(40,40,distance,5,12);
key_clear;
OLED_CLS_y(0);
// OLED_P6x8Str(30,60,"clear successful",F6x8);
}
if(change_a==1)
{
OLED_P6x8Str(0,0,"mode:",F6x8);
OLED_P6x8Str(40,0,"change angle",F6x8);
while(KEY_Scan()!=0) ;
num=0;
while(1)
{
num=KEY_Scan();
if(num!=0)
{ delay_ms(50);
num=KEY_Scan();
if(num!=0)
{num=KEY_Scan();
ang_1=num;}
while(KEY_Scan()!=0) ;
goto A1;
}
}
A1: OLED_ShowNum(60,30,ang_1,1,F6x8);
delay_ms(100);
num=0;
while(KEY_Scan()!=0) ;
num=0;
while(1)
{
num=KEY_Scan();
if(num!=0)
{ delay_ms(50);
num=KEY_Scan();
if(num!=0)
{num=KEY_Scan();
ang_2=num;}
while(KEY_Scan()!=0) ;
goto A2;
}
}
A2: OLED_ShowNum(70,30,ang_2,1,F6x8);
delay_ms(100);
num=0;
angle=ang_1*10+ang_2;
key_clear;
OLED_CLS_y(0);
// OLED_P6x8Str(30,60,"clear successful",F6x8);
TIM_SetCompare1(TIM1,Compare_ang);
delay_ms(1000);
TIM_SetCompare1(TIM8,Compare_dis);
delay_ms(1000);
}
}
}
復制代碼
所有資料51hei提供下載:
電磁項目.7z
(228.44 KB, 下載次數: 13)
2020-1-27 16:31 上傳
點擊文件名下載附件
代碼
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1