久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2378|回復: 0
打印 上一主題 下一主題
收起左側

2019電設電磁項目 STM32代碼分享

[復制鏈接]
跳轉到指定樓層
樓主
2019年電子設計大賽電磁題目參考代碼,本人參加所用,附作品實物照片一張哈哈,分享學習。電磁采用多匝線圈繞成,用大容量電容充放電。單片機采用stm32f103rct6,電磁發射控制采用繼電器,顯示使用oled,使用矩陣鍵盤進行功能切換和設置。


單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "timer.h"

  3. #include "led.h"
  4. #include "oled.h"
  5. #include "key.h"
  6. #include "delay.h"
  7. #include "Duoji_PWM.h"
  8. #include "delay.h"
  9. #include "sys.h"
  10. #include "usart.h"
  11. #include "adc.h"
  12. #include "oled.h"
  13. #include "bmp.h"
  14. #include "pwm.h"
  15. #include "hc05.h"
  16. //#include "usart2.h"
  17. #include "jidianqi.h"
  18. #include "math.h"

  19. #define  ADC_Channel  7
  20. #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;}
  21. extern u8 num;
  22.   unsigned char key_7=0,key_8=0,key_9=0,kaishi=0;
  23.   unsigned char key_4=0,key_5=0,key_6=0,change_d=0;
  24.   unsigned char key_1=0,key_2=0,key_3=0,change_a=0;
  25.   unsigned char done=0,key_0=0,saomiao=0,saomiao2=0;
  26.   
  27.         unsigned int Compare_ang=110,Compare_dis=83;
  28.         unsigned int Compare_ang_done,Compare_dis_done;
  29.         
  30. extern u32 distance1;
  31.         
  32.   //距離角度
  33.   unsigned int distance=0,angle=0;
  34.   unsigned int dis_1=0,dis_2=0,dis_3=0;
  35.   unsigned int ang_1=0,ang_2=0;
  36.         
  37. extern void Key1_init(void);
  38. extern void Key2_init(void);



  39. void JTAG_Set(u8 mode2)        //配置JTAG/SW
  40. {
  41.         u32 temp;
  42.         temp=mode2;
  43.         temp<<=25;
  44.         RCC->APB2ENR|=1<<0;     //開啟輔助時鐘           
  45.         AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
  46.         AFIO->MAPR|=temp;       //配置JTAG/SW模式
  47. }

  48. int main(void)
  49. {
  50. //        u16 adc0,adc1,adc2,adc3;
  51.         JTAG_Set(0x02); //關閉JTAG調試接口,因為JTAG接口占用了B3、B4、A15。用戶想要更改到的OLED接口可能與JTAG接口沖突,所以關閉JTAG。
  52.         JTAG_Set(0x01); //開啟SWD調試接口。DIO:A13,CLK:A14
  53.         delay_init();                    //延時函數初始化         

  54.         LED_Init();                                  //初始化與LED連接的硬件接口
  55.          Adc_Init();                                  //ADC初始化
  56.         OLED_Init();

  57.         delay_init();
  58.          TIM3_Cap_Init(4999,7199);        
  59.                 uart_init(9600);                 //串口初始化為9600
  60.                 HC05_Init();
  61.                  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級               
  62.         TIM1_PWM_Init(1439,999);        
  63.         TIM8_PWM_Init(1439,999);
  64.         uart_init(9600);
  65.          jidianqi_Init();
  66.          TIM3_Cap_Init(0XFFFF,72-1);
  67. //         TIM_SetCompare1(TIM1,Compare_ang);
  68. //                TIM_SetCompare1(TIM8,Compare_dis);
  69.          chongdian;
  70.                 kaipao;
  71.   while(1)
  72.         {
  73.                 OLED_P6x8Str(0,0,"mode:",F6x8);
  74.                 OLED_P6x8Str(0,20,"distance:",F6x8);
  75.                 OLED_P6x8Str(0,30,"angle:",F6x8);
  76.                 OLED_P6x8Str(0,40,"distance11:",F6x8);
  77.                 Read_Distane();
  78.                 OLED_ShowNum(80,40,distance1,4,F6x8);
  79.                 num=KEY_Scan();
  80.                 switch(num)
  81.                 {
  82. //                        case 1: key_7=1;break;
  83. //                        case 2: key_8=1;break;
  84. //                        case 3: key_9=1;break;
  85.                         case 16: kaishi=1;break;
  86. //                        case 5: key_4=1;break;
  87. //                        case 6: key_5=1;break;
  88. //                        case 7: key_6=1;break;
  89.                         case 15: change_d=1;break;
  90. //                        case 9: key_1=1;break;
  91.                         case 10: saomiao2=1;break;
  92.                         case 13: saomiao=1;break;
  93.                         case 14: change_a=1;break;
  94. //                        case 10: done=1;break;
  95.                         case 12: done=1;break;
  96. //                        case 15: key_7=1;break;
  97. //                        case 16: key_7=1;break;
  98.                 }

  99. //                LCD_ShowNum(20,20,num,3,12);
  100.         OLED_ShowNum(0,60,num,1,F6x8);
  101. //                distance=90;
  102. //                 OLED_ShowNumber(40,40,(u16)distance,5,12);

  103. //                num=0;
  104.                 Compare_ang=83+(int)angle*0.89;
  105.                 Compare_dis=45+asin(distance/1.5)/2;
  106.                
  107.                
  108.            if(kaishi==1)
  109.            {
  110. //                   //30-190  中心110   190、30 180度  范圍 83~137
  111. //                  TIM_SetCompare1(TIM1,190);                  
  112. //                                delay_ms(1000);                              
  113. //                                TIM_SetCompare1(TIM1,30);               
  114. //                                delay_ms(1000);         
  115. //                 //25~150  水平45,垂直望天120
  116. //        TIM_SetCompare1(TIM8,120);
  117. //                   delay_ms(1000);
  118. //                   TIM_SetCompare1(TIM8,45);
  119. //                   delay_ms(1000);
  120. //                key_clear;
  121.                   
  122.                    TIM_SetCompare1(TIM1,Compare_ang);
  123.                    delay_ms(1000);        
  124.                    TIM_SetCompare1(TIM8,Compare_dis);
  125.                    delay_ms(1000);
  126.                   chongdian_stop;
  127.         
  128.                    //tiao
  129.                    delay_ms(1000);
  130.                    delay_ms(1000);
  131.                    delay_ms(1000);
  132.                    delay_ms(1000);
  133.                    delay_ms(1000);
  134.                     delay_ms(1000);
  135.                    delay_ms(1000);
  136.                    delay_ms(1000);
  137.                    delay_ms(1000);
  138.                    delay_ms(1000);
  139.                    delay_ms(1000);
  140.                    delay_ms(1000);
  141.                    delay_ms(1000);
  142.                    delay_ms(1000);
  143.                    delay_ms(1000);
  144.                    delay_ms(1000);
  145.                    delay_ms(1000);
  146.                     delay_ms(1000);
  147.                    delay_ms(1000);
  148.                    delay_ms(1000);
  149.                    delay_ms(1000);
  150.                    delay_ms(1000);
  151.                    delay_ms(1000);
  152.                    delay_ms(1000);
  153.                    delay_ms(1000);
  154.                

  155.         chongdian;
  156.                   
  157.                   
  158.                    kaipao_stop;
  159.                  
  160.                    kaipao;
  161.                    key_clear;
  162.                   
  163.            }
  164.            
  165.            
  166.            if(saomiao==1)
  167.            {
  168.                   
  169.                    Compare_ang=83;
  170.                    while(1)
  171.                    { Read_Distane();OLED_ShowNum(80,40,distance1,4,F6x8);
  172.                    TIM_SetCompare1(TIM1,Compare_ang);
  173.                     delay_ms(800);
  174.                            Compare_ang+=10;
  175.                            if(Compare_ang==133)
  176.                                    while(Compare_ang!=83)
  177.                                    { Read_Distane();OLED_ShowNum(80,40,distance1,4,F6x8);
  178.                                            TIM_SetCompare1(TIM1,Compare_ang);
  179.                                                 delay_ms(800);Compare_ang-=10;
  180.                                            if(distance1<=3500&&distance1>=2500)
  181.                                            {        OLED_P6x8Str(40,60,"find!",F6x8);
  182.                                                    goto K1;}
  183.                                           
  184.                                         }
  185.                                    }
  186.                                           
  187.                   
  188.                
  189.                         K1:chongdian_stop;
  190.         
  191.                    //tiao
  192.                    delay_ms(1000);
  193.                    delay_ms(1000);
  194.                    delay_ms(1000);
  195.                    delay_ms(1000);
  196.                    delay_ms(1000);
  197.                     delay_ms(1000);
  198.                    delay_ms(1000);
  199.                    delay_ms(1000);
  200.                    delay_ms(1000);
  201.                    delay_ms(1000);
  202.                    delay_ms(1000);
  203.                    delay_ms(1000);
  204.                    delay_ms(1000);
  205.                    delay_ms(1000);
  206.                    delay_ms(1000);
  207.                    delay_ms(1000);
  208.                    delay_ms(1000);
  209.                     delay_ms(1000);
  210.                    delay_ms(1000);
  211.                    delay_ms(1000);
  212.                    delay_ms(1000);
  213.                    delay_ms(1000);
  214.                    delay_ms(1000);
  215.                    delay_ms(1000);
  216.                    delay_ms(1000);
  217.                          chongdian;
  218.                    kaipao_stop;
  219.                         
  220.                    kaipao;
  221.                    OLED_CLS_y(40);
  222.                     key_clear;
  223.            }
  224.            //發揮題三
  225.            if(done==1)
  226.            {
  227.                    OLED_P6x8Str(0,0,"mode:",F6x8);
  228.                    OLED_P6x8Str(40,0,"manual operation",F6x8);
  229.                    Compare_ang_done=110;
  230.                    delay_ms(1000);
  231.                    Compare_dis_done=45;
  232.                    delay_ms(1000);
  233.                    key_clear;
  234.                    while(done!=1)
  235.                    {
  236.                            
  237.                            while(1)
  238.                    {
  239.                            num=KEY_Scan();
  240.                            if(num!=0)
  241.                            {  delay_ms(50);
  242.                                    num=KEY_Scan();
  243.                                 if(num!=0)
  244.                                 {num=KEY_Scan();
  245.                                        
  246.                                    while(KEY_Scan()!=0) ;
  247.                                    goto M1;
  248.                                 }
  249.                    }
  250.                   
  251.                   }
  252.                    M1:
  253.                            if(num==4)
  254.                            {Compare_ang_done=Compare_ang_done+8;TIM_SetCompare1(TIM1,Compare_ang_done);delay_ms(1000);num=0;}
  255.                            if(num==6)
  256.                            {Compare_ang_done=Compare_ang_done-8;TIM_SetCompare1(TIM1,Compare_ang_done);delay_ms(1000);num=0;}
  257.                            if(num==8)
  258.                            { Compare_dis_done=Compare_dis_done-8; TIM_SetCompare1(TIM8,Compare_dis_done);delay_ms(1000);num=0;}
  259.                            if(num==5)
  260.                            { Compare_dis_done=Compare_dis_done+8; TIM_SetCompare1(TIM8,Compare_dis_done);delay_ms(1000);num=0;}
  261.                                    
  262.                   
  263.                     
  264.            }
  265.            key_clear;
  266.                     OLED_CLS_y(0);
  267.    }
  268.            
  269.    //掃描2
  270.            if(saomiao2==1)
  271.            {
  272.                    TIM_SetCompare1(TIM8,45);
  273.                    Compare_ang=137;
  274.                    while(1)
  275.                    { Read_Distane();OLED_ShowNum(80,40,distance1,4,F6x8);
  276.                    TIM_SetCompare1(TIM1,Compare_ang);
  277.                     delay_ms(800);
  278.                            Compare_ang-=10;
  279.                            if(Compare_ang==87)
  280.                                    while(Compare_ang!=137)
  281.                                    { Read_Distane();OLED_ShowNum(80,40,distance1,4,F6x8);
  282.                                            TIM_SetCompare1(TIM1,Compare_ang);
  283.                                                 delay_ms(800);Compare_ang+=10;
  284.                                            if(distance1<=3500&&distance1>=2500)
  285.                                            {        OLED_P6x8Str(40,60,"find!",F6x8);
  286.                                                    goto K2;}
  287.                                           
  288.                                         }
  289.                                    }
  290.                                           
  291.                   
  292.                
  293.                         K2:chongdian_stop;
  294.         
  295.                    //tiao
  296.                     delay_ms(1000);
  297.                    delay_ms(1000);
  298.                    delay_ms(1000);
  299.                    delay_ms(1000);
  300.                    delay_ms(1000);
  301.                     delay_ms(1000);
  302.                    delay_ms(1000);
  303.                    delay_ms(1000);
  304.                    delay_ms(1000);
  305.                    delay_ms(1000);
  306.                    delay_ms(1000);
  307.                    delay_ms(1000);
  308.                    delay_ms(1000);
  309.                    delay_ms(1000);
  310.                    delay_ms(1000);
  311.                    delay_ms(1000);
  312.                    delay_ms(1000);
  313.                     delay_ms(1000);
  314.                    delay_ms(1000);
  315.                    delay_ms(1000);
  316.                    delay_ms(1000);
  317.                    delay_ms(1000);
  318.                    delay_ms(1000);
  319.                    delay_ms(1000);
  320.                    delay_ms(1000);
  321.                          chongdian;
  322.                    kaipao_stop;
  323.                         
  324.                    kaipao;
  325.                    OLED_CLS_y(40);
  326.                     key_clear;
  327.            }
  328.            
  329.            
  330.            if(change_d==1)
  331.            {
  332.                    OLED_P6x8Str(0,0,"mode:",F6x8);
  333.                    OLED_P6x8Str(40,0,"change distance",F6x8);
  334.                   
  335.                     while(KEY_Scan()!=0) ;
  336.                    num=0;
  337.                    while(1)
  338.                    {
  339.                            num=KEY_Scan();
  340.                            if(num!=0)
  341.                            {  delay_ms(50);
  342.                                    num=KEY_Scan();
  343.                                 if(num!=0)
  344.                                 {num=KEY_Scan();
  345.                                         dis_1=num;}
  346.                                    while(KEY_Scan()!=0) ;
  347.                                    goto L1;
  348.                                 }
  349.                    }
  350.                   
  351.                   
  352.                    L1: OLED_ShowNum(60,20,dis_1,1,F6x8);
  353.                    delay_ms(100);
  354.                    num=0;
  355.                   
  356.                    while(1)
  357.                    {
  358.                            num=KEY_Scan();
  359.                            if(num!=0)
  360.                            {  delay_ms(50);
  361.                                    num=KEY_Scan();
  362.                                 if(num!=0)
  363.                                 {num=KEY_Scan();
  364.                                         dis_2=num;}
  365.                                    while(KEY_Scan()!=0);
  366.                                         goto L2;
  367.                                          
  368.                                 }
  369.                    }
  370.                   
  371.                    L2: OLED_ShowNum(70,20,dis_2,1,F6x8);
  372.                    delay_ms(100);
  373.                    num=0;
  374.                   
  375.                    while(1)
  376.                    {
  377.                            num=KEY_Scan();
  378.                            if(num!=0)
  379.                            {  delay_ms(50);
  380.                                    num=KEY_Scan();
  381.                                 if(num!=0)
  382.                                 {num=KEY_Scan();dis_3=num;
  383.                                 }
  384.                                    while(KEY_Scan()!=0);
  385.                                 goto L3;
  386.                                 }
  387.                    }
  388.                   
  389.                    L3: OLED_ShowNum(80,20,dis_3,1,F6x8);
  390.                    num=0;
  391.                    distance=100*dis_1+10*dis_2+dis_3;
  392. //                   OLED_P6x8Str(0,40,"hand",F6x8);
  393. //                   OLED_ShowNumber(40,40,distance,5,12);
  394.                    key_clear;
  395.                    OLED_CLS_y(0);
  396. //                   OLED_P6x8Str(30,60,"clear successful",F6x8);
  397.            }
  398.            
  399.            if(change_a==1)
  400.            {
  401.                    OLED_P6x8Str(0,0,"mode:",F6x8);
  402.                    OLED_P6x8Str(40,0,"change angle",F6x8);
  403.                     while(KEY_Scan()!=0) ;
  404.                    num=0;
  405.                    while(1)
  406.                    {
  407.                            num=KEY_Scan();
  408.                            if(num!=0)
  409.                            {  delay_ms(50);
  410.                                    num=KEY_Scan();
  411.                                 if(num!=0)
  412.                                 {num=KEY_Scan();
  413.                                         ang_1=num;}
  414.                                    while(KEY_Scan()!=0) ;
  415.                                    goto A1;
  416.                                 }
  417.                    }
  418.                   
  419.                   
  420.                    A1: OLED_ShowNum(60,30,ang_1,1,F6x8);
  421.                    delay_ms(100);
  422.                    num=0;
  423.                   
  424.                     while(KEY_Scan()!=0) ;
  425.                    num=0;
  426.                    while(1)
  427.                    {
  428.                            num=KEY_Scan();
  429.                            if(num!=0)
  430.                            {  delay_ms(50);
  431.                                    num=KEY_Scan();
  432.                                 if(num!=0)
  433.                                 {num=KEY_Scan();
  434.                                         ang_2=num;}
  435.                                    while(KEY_Scan()!=0) ;
  436.                                    goto A2;
  437.                                 }
  438.                    }
  439.                   
  440.                   
  441.                    A2: OLED_ShowNum(70,30,ang_2,1,F6x8);
  442.                    delay_ms(100);
  443.                    num=0;
  444.                   
  445.                    angle=ang_1*10+ang_2;
  446.                    key_clear;
  447.                    OLED_CLS_y(0);
  448. //                   OLED_P6x8Str(30,60,"clear successful",F6x8);
  449.                 TIM_SetCompare1(TIM1,Compare_ang);
  450.                    delay_ms(1000);        
  451.                    TIM_SetCompare1(TIM8,Compare_dis);
  452.                    delay_ms(1000);   
  453.            }
  454.         }

  455. }
復制代碼

所有資料51hei提供下載:
電磁項目.7z (228.44 KB, 下載次數: 13)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天插天天操 | 一区二区三区免费 | 在线国产一区 | 成人性生交大片免费看r链接 | 国产黄色在线观看 | 日韩精品一区二区三区视频播放 | 97视频免费 | 亚洲精品乱 | 欧美伊人久久久久久久久影院 | 一区二区久久 | av片免费 | 成人久久久 | 国产又爽又黄的视频 | 国产综合欧美 | 久久久亚洲 | 欧美性猛交一区二区三区精品 | 一级欧美一级日韩片免费观看 | 日本在线看片 | 99精品久久久久久中文字幕 | 国产精品久久久久久久久久免费 | 国产91久久精品一区二区 | 成人精品在线观看 | www.久久精品视频 | 国产精品福利在线观看 | 羞羞网站免费观看 | 国产精品久久久久久久粉嫩 | 久久久久一区二区三区 | 精品久久久久久久久久久久久 | 欧美一级免费观看 | 精品国产一区二区三区久久久蜜月 | 免费在线一区二区三区 | 欧美日韩高清 | 美女在线一区二区 | 婷婷激情在线 | 免费视频二区 | 免费av毛片 | 成人精品一区二区三区 | 国产激情在线看 | 在线成人福利 | 国产一区二区三区在线 | 一级二级三级黄色 |