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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

2021電賽周期信號波形識別及參數測量 STM32源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:811102 發表于 2021-11-15 09:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
2021電子設計大賽周期信號檢測和參數檢測
自己用STM32寫的
可以參考

單片機源程序如下:
  1. #include "stdio.h"
  2. #include "main.h"
  3. #include "math.h"
  4. #include <ctype.h>
  5. #include "stm32f4xx.h"
  6. #include "input.h"
  7. #include "oscilloscope.h"
  8. #include "digital_multimeter.h"
  9. #include "stm32f4xx.h"
  10. #include "led.h"

  11. u16 buff[400];//存儲ADC所采集到的波形數據
  12. float buf[400],buf1[400];
  13. float Vpp_p; //存儲峰峰值
  14. long long indata=0;
  15. u8  Vpp_buff[20] = {0};//sprintf數據輸出
  16. int str[20],c_1=0,str_max=0;
  17. //全局變量
  18. int key_val=0;
  19. int key_c=0;
  20. int key_d=0;
  21. float vpp;
  22. //函數聲明
  23. //int flag=0;
  24. void Square_wave(void);  //方波


  25. void Kai_display()  //矩形
  26. {
  27.         POINT_COLOR = RED;
  28.         POINT_COLOR = 0x5510;
  29.     LCD_Clear(BLACK);        
  30.         LCD_DrawRectangle(350,200,0,300);//矩形
  31.         
  32. }
  33. void Kai_display_1()  //矩形
  34. {
  35.         POINT_COLOR = RED;
  36.         POINT_COLOR = 0x5510;
  37.     LCD_Clear(BLACK);        
  38.         LCD_DrawRectangle(350,0,0,200);//矩形        
  39.         
  40. }
  41. void Init(void){//初始化
  42.         SysTick_Init(168);
  43.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中斷優先級分組 分2組
  44.         LED_Init();
  45.         LCD_Init();                //LCD初始化
  46.         KEY_Init();
  47.         LCD_Clear(WHITE);//BLACK:黑
  48.         Hwjs_Init();
  49.         USART1_Init(115200);
  50.         uart2_init(9600);
  51.         Kai_display_1();//開機顯示
  52.         Adc_Init();//初始化ADC
  53.         TIM3_Int_Init(10000-1,8400-1);        
  54.         extix_init();        
  55.         TIM5_CH1_Input_Init(0xffffffff,83);  //以1M頻率計數
  56. }        

  57. int main()
  58. {        
  59.         int adcx,key=0,key_1=0,i=0;
  60.         float temp;        
  61.         Kai_display_1();
  62.         Init();//初始化
  63.         
  64.         BACK_COLOR= BLACK;        
  65.         POINT_COLOR = RED;
  66.         LCD_DrawRectangle(350,200,0,350);//矩形
  67.         while(1)
  68.         {
  69.                 key = Hw_Scan();
  70.                 if(key == 1){key_val = 1;}
  71.                 if(key == 2){key_val = 2;}
  72.                 if(key == 3){key_val = 3;}
  73.                 if(key == 4){key_val = 4;}
  74.                 if(key == 5){key_val = 5;key_c =1;}
  75.                 if(key == 6){key_val = 6;}
  76.                 if(key == 7){key_val = 7;}
  77.                 if(key == 8){key_val = 8;}
  78.                 if(key == 9){key_val = 9;}
  79.                 if(key == 12){key_val = 3;key_d =2;}
  80.                 if(key == 13){key_val = 3;key_d =3;}
  81.                 if(key == 14){key_val = 3;key_d =4;}
  82.                 if(key == 15){key_val = 3;key_d =5;}
  83.                 if(key == 16){key_val = 3;key_d =6;}
  84.                 if(key == 17){key_val = 3;key_d =7;}               
  85.                 if(key == 10){NVIC_SystemReset(); }
  86.                         
  87.                 if(key_val == 8)
  88.                 {
  89.                         adcx = Get_Adc_Average(ADC_Channel_5,200);
  90.                         temp = (float)adcx*(3.3/4096);          //獲取計算后的帶小數的實際電壓值,比如3.1111        
  91.                         sprintf((char*)Vpp_buff,"V: %.2f    V",temp);
  92.                         LCD_ShowString(10,290,210,16,16,Vpp_buff);                        
  93.                         delay_ms(500);
  94.                 }
  95.                 if(key_val == 3)
  96.                 {
  97.                         get_vpp_fb(buff);                                
  98.                 }               
  99.                 if(key_val == 4)
  100.                 {
  101.                         get_vpp_fb(buff);                        
  102.                         sprintf((char*)Vpp_buff,"Vpp:%0.2f V",Vpp);
  103.                         LCD_ShowString(10,230,210,16,16,Vpp_buff);        
  104.                         delay_ms(200);
  105.                 }
  106.                 if(key_val == 5)
  107.                 {
  108.                         get_vpp_fb(buff);        
  109.                         str[c_1] = num1;
  110.                         c_1++;
  111.                         if(c_1 == 20)
  112.                         {        
  113. //                                for(i=0;i<20;i++)
  114. //                                {
  115. //                                        if(str[i] > str_max)
  116. //                                                str_max = str[i];
  117. //                                }
  118. //                                printf("%d  ",str_max);
  119. //                                if(0.8<(freq_1/1000) <1.2 )
  120. //                                {
  121. //                                        if(str_max == 9){key_d =2;}
  122. //                                        if( str_max>=7 && str_max<=8){key_d =4;}               
  123. //                                        if( str_max>=4 && str_max<=5){key_d =3;}
  124. //                                }                                       
  125.                                 c_1 =  0;
  126.                                 str_max = 0;
  127.                         }
  128.                 }        
  129.                 if(key_val == 7) //全部顯示
  130.                 {
  131.                         key_c =1;
  132.                         LCD_ShowString(10,250,210,16,16,"FREQ:");
  133.                         LCD_ShowString(10,270,210,16,16,"Dcycle:");
  134.                         LCD_ShowString(120,270,210,16,16,"%");
  135.                         get_vpp_fb(buff);        
  136.                         sprintf((char*)Vpp_buff,"Vpp:%0.2f V",Vpp);
  137.                         LCD_ShowString(10,230,210,16,16,Vpp_buff);        
  138.                         delay_ms(200);                        
  139.                 }               

  140.                 if(key_val == 9)
  141.                 {
  142.                         get_vpp_fb(buff);                        
  143.                         sprintf((char*)Vpp_buff,"fudu: %.2f V",fudu);
  144.                         LCD_ShowString(10,290,210,16,16,Vpp_buff);                                
  145.                 }               
  146.                
  147.                 if(TIM5_CH1_CAPTURE_STA&0x80) //成功捕獲
  148.                 {
  149.                         indata=TIM5_CH1_CAPTURE_STA&0x3f;
  150.                         indata*=0xffffffff; //溢出次數乘以一次的計數次數時間 us
  151.                         indata+=TIM5_CH1_CAPTURE_VAL;//加上高電平捕獲的時間
  152.                         TIM5_CH1_CAPTURE_STA=0; //開始下一次捕獲
  153.                 }
  154.         }
  155. }

  156. //----------------------------函數-----------------------//
復制代碼

Keil代碼下載: 周期波形信號識別和參數測量.7z (484.61 KB, 下載次數: 51)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:988833 發表于 2021-12-7 21:32 | 只看該作者
請問一下大佬信號有經過處理才輸入到單片機的嗎
回復

使用道具 舉報

板凳
ID:876099 發表于 2022-5-25 11:43 | 只看該作者
波形怎么識別的可以說明一下嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久岛一牛影视 | 成人一区av偷拍 | 欧美在线a | 日韩精品一区二区三区高清免费 | 97视频在线观看网站 | 亚洲成人一区二区三区 | 日本激情视频中文字幕 | 在线亚洲电影 | 久久久久久久久久久福利观看 | 男女爱爱网站 | 日韩在线一区二区 | 久久久一区二区 | 国产亚洲精品区 | 国产玖玖 | 国产露脸国语对白在线 | 91精品国产综合久久久动漫日韩 | 91成人在线 | av资源中文在线 | 中文字幕日韩欧美一区二区三区 | 欧美成人专区 | 91精品久久久久 | 欧美中文字幕一区二区 | 日一区二区 | 国产成人精品久久久 | 蜜桃传媒av | av片在线免费看 | 亚洲欧美日韩在线不卡 | 91原创视频 | 91精品在线播放 | 久草网址| 欧美成人高清 | 91精品国产综合久久小仙女图片 | 国产精品电影在线观看 | 国产午夜精品一区二区三区嫩草 | 久久99国产精品久久99果冻传媒 | 国产一区二区三区四区三区四 | 久久精品久久精品久久精品 | 97色在线观看免费视频 | 日日日干干干 | 亚洲欧美国产毛片在线 | 日韩国产黄色片 |