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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于stm32的車流量統(tǒng)計keil實(shí)現(xiàn) 源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:842909 發(fā)表于 2020-11-13 03:19 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
這是基于stm32的通過頻率比較法來進(jìn)行車流量統(tǒng)計的設(shè)計

單片機(jī)源程序如下:
  1. /*********************************************************
  2. 脈沖輸入 --> PA0 (TIM8_ETR)
  3. 按鍵清零 --> KEY0按鍵,按一下變量SUM清零
  4. 程序原理:使用定時器8的ETR測量脈沖的個數(shù),使用滴答定時器1秒精確延時
  5. 得出頻率,并和上次的頻率值比較,程序默認(rèn)是數(shù)值比較,即兩次的頻率絕對值
  6. 大于FrqValThr即設(shè)定的1KHZ,則計數(shù)加1,同時液晶顯示上次和當(dāng)前的脈沖頻率
  7. 單位HZ,以及顯示不同的字符串"Over"和"Normal";
  8. 如果按下了KEY0按鍵,則計數(shù)自動清零;

  9. 如果想改成1秒內(nèi)的變化率,則while循環(huán)里改成Check_Frq_Ch(0)即可
  10. 即成了兩次測量差值絕對值和當(dāng)前頻率的比值,也就是變化率,如果超出
  11. FrqPerThr 即設(shè)定的0.1,則自動加1
  12. ***************************************************/
  13. #include "led.h"
  14. #include "delay.h"
  15. #include "sys.h"
  16. #include "usart.h"
  17. #include "lcd.h"
  18. #include "Key.h"
  19. #define FrqValThr   200
  20. #define FrqPerThr   0.1
  21. #define ABS(x) ((x)>=0?(x):(-(x)))
  22. #define BEEP PBout(8)        // BEEP,蜂鳴器接口                  
  23. u16 Sum;
  24. u16 NowFrq;//當(dāng)前的頻率
  25. u16 PrvFrq=65535;//上次的頻率
  26. u8 ErrF;
  27. u8 KeyF;
  28. void TIM8_ETR_GetDropCounts_Configuration(void);
  29. void Check_Frq_Ch(u8 Cmpr);
  30. void Measr_PlusFrq(void);
  31. void Show_Data_LCD(u16 PFrq,u16 NFrq,u16 tSum);
  32. void BEEP_Init(void);       
  33. int main(void)
  34. {         
  35.         delay_init();                     //延時函數(shù)初始化       
  36.   TIM8_ETR_GetDropCounts_Configuration();
  37.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
  38.         uart_init(115200);                 //串口初始化為115200
  39.         LED_Init();                             //LED端口初始化
  40.         LCD_Init();
  41.         POINT_COLOR=RED;
  42.         LCD_Clear(WHITE);
  43.           while(1)
  44.         {                 
  45.                 Measr_PlusFrq();//測量頻率
  46.                 Show_Data_LCD(PrvFrq,NowFrq,Sum);//顯示數(shù)值
  47.                 LED0=!LED0;         
  48.                 Check_Frq_Ch(1);//默認(rèn)數(shù)值比較
  49.                 KEY_Handle();               
  50.                 delay_ms(1000);       

  51.         }
  52. }
  53. /*******************************************************************************
  54. * 函數(shù)名          : Show_Data_LCD(float Data1,float Data2,float Data3,float Data4)
  55. * 函數(shù)描述  : 液晶屏顯示數(shù)據(jù) 溫度 濕度 PM2.5  
  56. *******************************************************************************/
  57. void Show_Data_LCD(u16 PFrq,u16 NFrq,u16 tSum)
  58. {
  59.           char Data1Buff[20]="";
  60.           char Data2Buff[20]="";
  61.           char Data3Buff[20]="";
  62.     LCD_Clear(WHITE);//設(shè)置背景顏色白色
  63.           sprintf(Data1Buff,"%s%d%s","PrvF :  ",PFrq," HZ");        //顯示上次的HZ
  64.           sprintf(Data2Buff,"%s%d%s","NowF  :  ",NFrq," HZ");        //顯示當(dāng)前的HZ
  65.           sprintf(Data3Buff,"%s%d%s","Sum:  ",tSum," Tik");        //顯示變量
  66.                 LCD_ShowString(30,40,210,24,24,Data1Buff);
  67.                 LCD_ShowString(30,70,200,16,16,Data2Buff);
  68.                 LCD_ShowString(30,90,200,16,16,Data3Buff);
  69.           if( ErrF)
  70.                 {
  71.                         LCD_ShowString(30,130,200,12,12,"Over");
  72.                         BEEP=1;   
  73.                 }
  74.           if(!ErrF)
  75.                 {
  76.                         LCD_ShowString(30,130,200,12,12,"Normal");
  77.                         BEEP=0;
  78.     }                       
  79. }
  80. /*******************************************************************************
  81. * 函數(shù)名                  : TIM8_ETR
  82. * 函數(shù)描述            : 使8 PA0的外部脈沖計數(shù)
  83. *******************************************************************************/
  84. void TIM8_ETR_GetDropCounts_Configuration(void)
  85. {        
  86.                 GPIO_InitTypeDef GPIO_InitStructure;
  87.                 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  88.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_TIM8, ENABLE);        //時鐘
  89.                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // PA0 為浮空輸入
  90.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  91.                 GPIO_Init(GPIOA, &GPIO_InitStructure);
  92.                 TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
  93.                 TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
  94.                 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
  95.                 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  96.                 TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);  // Time base configuration
  97.                 TIM_ETRClockMode2Config(TIM8, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);  //不反相
  98.                 TIM_SetCounter(TIM8, 0);   
  99.                 TIM_Cmd(TIM8, ENABLE);        
  100. }
  101. /*******************************************************************************
  102. * 函數(shù)名                  : Measr_PlusFrq(void)
  103. * 函數(shù)描述            : 測量當(dāng)前的頻率
  104. *******************************************************************************/
  105. void Measr_PlusFrq(void)
  106. {
  107.   TIM_SetCounter(TIM8, 0);
  108.         delay_ms(1000);       
  109.         NowFrq=TIM_GetCounter(TIM8);  //獲取計數(shù)值
  110. }
  111. /*******************************************************************************
  112. * 函數(shù)名                  : Check_Frq_Ch(void)
  113. * 函數(shù)描述            : 檢查頻率的變化 Cmpr=1 數(shù)值比較  Cmpr=0 比值比較
  114. *******************************************************************************/
  115. void Check_Frq_Ch(u8 Cmpr)
  116. {
  117.   if(NowFrq-PrvFrq>=FrqValThr && Cmpr)
  118.   {
  119.           Sum++;
  120.                 ErrF=1;
  121.         }
  122.   if(NowFrq-PrvFrq<FrqValThr && Cmpr)
  123.         {
  124.           ErrF=0;
  125.         }
  126.         if(KeyF)
  127.         {
  128.           KeyF=0;
  129.                 Sum=0;
  130.         }       
  131.   if(ABS(NowFrq-PrvFrq)/NowFrq>=FrqPerThr && !Cmpr)
  132.   {
  133.           Sum++;
  134.         }
  135.   if(ABS(NowFrq-PrvFrq)/NowFrq<FrqPerThr && !Cmpr)
  136.   {
  137.           ErrF=0;
  138.         }
  139.         PrvFrq=NowFrq;
  140. }


  141. /*******************************************************************************
  142. * 函數(shù)名                  : BEEP_Init(void)
  143. * 函數(shù)描述            : 蜂鳴器初始化
  144. *******************************************************************************/

  145. void BEEP_Init(void)
  146. {
  147. GPIO_InitTypeDef  GPIO_InitStructure;
  148. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);         //使能GPIOB端口時鐘
  149. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                                 //BEEP-->PB.8 端口配置
  150. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
  151. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //速度為50MHz
  152. GPIO_Init(GPIOB, &GPIO_InitStructure);         //根據(jù)參數(shù)初始化GPIOB.8
  153. GPIO_ResetBits(GPIOB,GPIO_Pin_8);//輸出0,關(guān)閉蜂鳴器輸出

  154. }
復(fù)制代碼

所有資料51hei提供下載:
STM32_MAIN_BEEP.7z (223.59 KB, 下載次數(shù): 16)


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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2020-11-13 22:07 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 性在线 | 国产乱码精品1区2区3区 | 美国黄色一级片 | 成人黄色在线视频 | 天天射网站 | 自拍 亚洲 欧美 老师 丝袜 | 欧美国产日韩在线观看 | 成人在线观看免费 | 久久手机视频 | 国产精品久久久久久久午夜片 | 久久久久久久香蕉 | 日本一区二区三区四区 | 国产日韩欧美中文 | 久热9| 99国产精品久久久久久久 | 亚洲视频在线播放 | 欧美在线视频观看 | 欧美九九九 | 综合国产第二页 | 黄色日批视频 | 一级毛片成人免费看a | 午夜电影网址 | 欧美在线观看一区 | 91一区二区三区 | 亚洲视频区 | 国产精品一区二区在线播放 | 91亚洲精 | 特一级毛片 | 欧美日韩在线电影 | 欧美99久久精品乱码影视 | 精品综合在线 | 毛片网站免费观看 | 日本久久精品视频 | 91视频久久| 精品产国自在拍 | www日| 成人精品鲁一区一区二区 | 国产成人精品网站 | 亚洲成人二区 | 成人在线视频免费观看 | 亚洲一区二区三区在线观看免费 |