找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32f103ret6單片機增量式速度傳感器程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:355127 發(fā)表于 2019-1-27 10:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
某校一次·實訓的題目
上傳出來分享一下
是600脈沖每轉(zhuǎn)的傳感器

    *正交編碼器模塊
   
    *輸入引腳PB->6 PB->7
   
    *2倍頻上升沿、下降沿均捕捉,所得數(shù)值為編碼器本身分辨率x2
   
    *數(shù)值由串口1打印出來,接上液晶也會顯示結(jié)果

單片機源程序如下:
  1. #include "STM32F1.h"

  2. u16        Parameter = 600;                                                                                //設(shè)置編碼器線數(shù)
  3. u16 Count,flag=0;//
  4. int one_s=0,rpm = 0,rpmx = 0,j = 0,f = 0,i = 0,k=0;

  5. int main(void)
  6. {
  7.   SystemInit();        //System init.
  8.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
  9.   delay_init(72);//Delay init.
  10.         Lcd_Init();
  11.         TIM4_Init();      //初始化TIM4編碼器模式   
  12.         LED_Init();
  13.         TIM3_Int_Init(5999,7199);//每半秒刷新一次,計算出轉(zhuǎn)速
  14.         LCD_LED_SET;//通過IO控制背光亮       
  15.         Lcd_Clear(BRRED);//清屏
  16.        
  17.                                 DisplayButtonDown(0,75,128,100);
  18.                                 DisplayButtonUp(0,75,128,100); //x1,y1,x2,y2
  19.                                 DisplayButtonUp(15,38,113,58); //x1,y1,x2,y2
  20.                                 Gui_DrawFont_GBK16(16,0,BLUE,BRRED, "基于單片機的"); //點
  21.                                 Gui_DrawFont_GBK16(36,20,BLUE,BRRED, "轉(zhuǎn)速表"); //點
  22.                                 Gui_DrawFont_GBK16(20,40,RED,BRRED, "單位:轉(zhuǎn)/min"); //點
  23.                                 Gui_DrawFont_GBK16(20,110,GREEN,BRRED, "方向:"); //點
  24.                                 Gui_DrawFont_GBK16(90,80,BLUE,BRRED, "."); //點       
  25.                                 LCD_ShowNum24(10,80,0,5,RED);        //預(yù)顯示正數(shù)部分            
  26.                            LCD_ShowNum24(106,80,0,1,RED);        //預(yù)顯示小數(shù)部分        
  27.                                
  28.         for(;;)//一直讀取數(shù)據(jù)
  29.   {
  30.                   k++;
  31.                 if(k>50)//LED閃動,為了好玩
  32.                 {k=0;
  33.                    LED=!LED;
  34.                 }
  35.             if (0x11==TIM4->CR1) //判斷正反 由CR1寄存器顯示
  36.                     Gui_DrawFont_GBK16(68,110,RED,BRRED, "正");       
  37.             else      
  38.                     Gui_DrawFont_GBK16(68,110,RED,BRRED, "反");
  39.   if(i != rpmx)//轉(zhuǎn)速刷新   if語句是為了在數(shù)據(jù)不變的情況下使LCD不更新 減少刷新  使其更美觀
  40.                          {
  41.                                                 i=rpmx;
  42.                                                 LCD_ShowNum24(10,80,i,5,RED);        //顯示正數(shù)部分            
  43.                                                 LCD_ShowNum24(106,80,i,1,RED);        //顯示小數(shù)部分        
  44.                          }
  45.   }

  46. }
復制代碼

所有資料51hei提供下載:
增量式編碼器.rar (308.76 KB, 下載次數(shù): 29)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表