找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2304|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

stm32測頻測幅程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:394232 發(fā)表于 2019-8-13 12:25 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
采用野火stm32f103zet6霸道開發(fā)板
可以測頻測幅 在板載LCD屏上顯示
燒錄即可使用

單片機(jī)源程序如下:

  1. // TIM—高級定時器-PWM輸入捕獲應(yīng)用,通用定時器產(chǎn)生PWM波,高級定時器則捕獲這個PWM,并測量周期和占空比

  2. #include "stm32f10x.h"
  3. #include "./lcd/bsp_ili9341_lcd.h"
  4. #include "bsp_led.h"
  5. #include "bsp_AdvanceTim.h"
  6. #include "bsp_GeneralTim.h"
  7. #include "bsp_usart.h"
  8. #include "bsp_adc.h"
  9. #include <stdio.h>
  10. extern  float Frequency;
  11. extern  float  DutyCycle ;
  12. static void LCD_Test(void);       
  13. static void Delay ( __IO uint32_t nCount );
  14. extern __IO uint16_t ADC_ConvertedValue;
  15. float adc,high=0,low=100;
  16. float ADC_ConvertedValueLocal;
  17. void Printf_Charater(void);
  18. /**
  19.   * @brief  主函數(shù)
  20.   * @param  無  
  21.   * @retval 無
  22.   */
  23. int main(void)
  24. {       
  25.                 ILI9341_Init ();         //LCD 初始化
  26.         LED_GPIO_Config();
  27.         /* 串口初始化 */
  28.         USART_Config();
  29.         ADCx_Init();
  30.         /* 通用定時器初始化,用于生成PWM信號 */
  31.         GENERAL_TIM_Init();
  32.        
  33.         /* 高級定時器初始化 ,用戶捕獲PWM信號*/
  34.         ADVANCE_TIM_Init();
  35.         ILI9341_GramScan ( 6 );
  36.   while(1)
  37.   {
  38.                 Delay(0xfffff);
  39.                 LCD_Test();
  40.   }
  41. }
  42. /*********************************************END OF FILE**********************/
  43. /*用于測試各種液晶的函數(shù)*/
  44. void LCD_Test(void)
  45. {
  46.         /*演示顯示變量*/

  47.         char dispBuff[100];
  48.        
  49.         ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3;       
  50.        
  51.                         if(high<ADC_ConvertedValueLocal)
  52.                         high=ADC_ConvertedValueLocal;
  53.                 if(low>ADC_ConvertedValueLocal)
  54.                         low=ADC_ConvertedValueLocal;
  55.                 adc=(high-low)/2;
  56.         LCD_SetFont(&Font8x16);
  57.         LCD_SetColors(RED,BLACK);

  58.   ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);        /* 清屏,顯示全黑 */
  59.         /********顯示變量示例*******/
  60.         LCD_SetFont(&Font16x24);
  61.         LCD_SetTextColor(GREEN);

  62.         /*使用c標(biāo)準(zhǔn)庫把變量轉(zhuǎn)化成字符串*/
  63.         sprintf(dispBuff,"ADC: %.2f V ",adc);
  64.   LCD_ClearLine(LINE(3));        /* 清除單行文字 */
  65.        
  66.         /*然后顯示該字符串即可,其它變量也是這樣處理*/
  67.         ILI9341_DispStringLine_EN(LINE(3),dispBuff);
  68.        
  69.         LCD_SetFont(&Font16x24);
  70.         LCD_SetTextColor(GREEN);

  71.         /*使用c標(biāo)準(zhǔn)庫把變量轉(zhuǎn)化成字符串*/
  72.         sprintf(dispBuff,"Fre: %.2f hz ",Frequency);
  73.   LCD_ClearLine(LINE(4));        /* 清除單行文字 */
  74.        
  75.         /*然后顯示該字符串即可,其它變量也是這樣處理*/
  76.         ILI9341_DispStringLine_EN(LINE(4),dispBuff);
  77.   
  78.   ILI9341_Clear(0,16*8,LCD_X_LENGTH,LCD_Y_LENGTH-16*8);        /* 清屏,顯示全黑 */

  79. }


  80. /**
  81.   * @brief  簡單延時函數(shù)
  82.   * @param  nCount :延時計數(shù)值
  83.   * @retval 無
  84.   */       
  85. static void Delay ( __IO uint32_t nCount )
  86. {
  87.   for ( ; nCount != 0; nCount -- );
  88.        
  89. }
復(fù)制代碼

所有資料51hei提供下載:
測頻測幅.7z (221 KB, 下載次數(shù): 27)

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表