旋转编码器计次+keil源代码+易上手+保姆及教程

项目内容:
基于KEIL平台进行源代码编写开发
包含旋转编码器模块的函数编写(详细注释教程)
还有OLED屏的附带驱动函数和显示函数
主函数的逻辑实现语句

实现思路:
利用MCU主控板对于旋转编码器的输出的方波信号进行辨别分析,是正方波还是逆方波。以及计算出编码器旋转的速度。然后在OLED屏将数据处理辨析后的结果显示显示出来。

旋转编码器的工作原理

  • 按码盘的刻孔方式不同分类编码器可分为增量式和绝对式两类。

增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。

旋转增量式编码器以转动时输出脉冲,通过计数设备来知道其位置,当编码器不动或停电时,依靠计数设备的内部记忆来记住位置。这样,当停电后,编码器不能有任何的移动,当来电工作时,编码器输出脉冲过程中,也不能有干扰而丢失脉冲,不然,计数设备记忆的零点就会偏移,而且这种偏移的量是无从知道的,只有错误的结果出现后才能知道。

工程配置

源代码
Encoder.c

开启RCC时钟,同时开启AFIO的时钟(用在外部中断通道上)
对GPIO端口进行初始化,配置输出模式,输出端口和输出速率。
AFIO选择中断引脚,对应的后面就会选择使用什么中断通道
中断通道的选择和配置:

获取增量值的函数:

中断回调函数(反转)

中断回调函数(正转)

主函数实现
#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Encoder.h"

int16_t Num;			//定义待被旋转编码器调节的变量

int main(void)
{
	/*模块初始化*/
	OLED_Init();		//OLED初始化
	Encoder_Init();		//旋转编码器初始化
	
	/*显示静态字符串*/
	OLED_ShowString(1, 1, "Num:");			//1行1列显示字符串Num:
	
	while (1)
	{
		Num += Encoder_Get();				//获取自上此调用此函数后,旋转编码器的增量值,并将增量值加到Num上
		OLED_ShowSignedNum(1, 5, Num, 5);	//显示Num
	}
}

最终效果实现图

最近更新

  1. Aeron:Online Resources

    2024-06-09 07:34:02       0 阅读
  2. 安卓gradel下载失败解决方案

    2024-06-09 07:34:02       0 阅读
  3. 实战

    实战

    2024-06-09 07:34:02      0 阅读
  4. 力扣719.找出第K小的数对距离

    2024-06-09 07:34:02       0 阅读
  5. 10月,2024北京养老展,北京老年生活用品展览会

    2024-06-09 07:34:02       0 阅读
  6. python之面向对象编程

    2024-06-09 07:34:02       0 阅读

热门阅读

  1. 安装 hbase(伪分布式)

    2024-06-09 07:34:02       4 阅读
  2. 密码学基本概念

    2024-06-09 07:34:02       4 阅读
  3. Python为项目中添加上彩色日志

    2024-06-09 07:34:02       5 阅读
  4. perl use HTTP::Server::Simple 轻量级 http server

    2024-06-09 07:34:02       3 阅读
  5. 面试 Redis 八股文十问十答第二期

    2024-06-09 07:34:02       3 阅读
  6. ASP.NET Core 中使用基本消息的 RabbitMQ 消费者

    2024-06-09 07:34:02       4 阅读
  7. 第十一章:净世山的考验

    2024-06-09 07:34:02       3 阅读
  8. 力扣每日一题 6/8

    2024-06-09 07:34:02       5 阅读
  9. web前端 麦子学院:探索前端技术的无尽奥秘

    2024-06-09 07:34:02       4 阅读
  10. conda env list,列出来的环境怎么删除掉

    2024-06-09 07:34:02       4 阅读
  11. 阿里云 动态ddns

    2024-06-09 07:34:02       3 阅读
  12. MySQL Show命令集

    2024-06-09 07:34:02       5 阅读