标题: stm32f103ret6单片机增量式速度传感器程序 [打印本页]

作者: 梦古无疆    时间: 2019-1-27 10:49
标题: stm32f103ret6单片机增量式速度传感器程序
某校一次·实训的题目
上传出来分享一下
是600脉冲每转的传感器

    *正交编码器模块
   
    *输入引脚PB->6 PB->7
   
    *2倍频上升沿、下降沿均捕捉,所得数值为编码器本身分辨率x2
   
    *数值由串口1打印出来,接上液晶也会显示结果

单片机源程序如下:
  1. #include "STM32F1.h"

  2. u16        Parameter = 600;                                                                                //设置编码器线数
  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); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  9.   delay_init(72);//Delay init.
  10.         Lcd_Init();
  11.         TIM4_Init();      //初始化TIM4编码器模式   
  12.         LED_Init();
  13.         TIM3_Int_Init(5999,7199);//每半秒刷新一次,计算出转速
  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, "转速表"); //点
  22.                                 Gui_DrawFont_GBK16(20,40,RED,BRRED, "单位:转/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);        //预显示正数部分            
  26.                            LCD_ShowNum24(106,80,0,1,RED);        //预显示小数部分        
  27.                                
  28.         for(;;)//一直读取数据
  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)//转速刷新   if语句是为了在数据不变的情况下使LCD不更新 减少刷新  使其更美观
  40.                          {
  41.                                                 i=rpmx;
  42.                                                 LCD_ShowNum24(10,80,i,5,RED);        //显示正数部分            
  43.                                                 LCD_ShowNum24(106,80,i,1,RED);        //显示小数部分        
  44.                          }
  45.   }

  46. }
复制代码

所有资料51hei提供下载:
增量式编码器.rar (308.76 KB, 下载次数: 29)






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1