当前位置: 首页 > wzjs >正文

个人做网站平台seo平台优化

个人做网站平台,seo平台优化,2022网页游戏排行榜前十,什么网站做展板的多STC32G12K128-旋转编码器-软件去抖 简介代码 简介 EC11旋转编码器是一种可以连续旋转的器件A,B,C为旋转编码引脚,带按键的有D,E引脚。引脚功能: A:编码器A相;B:编码器B相;C:公共端-一般接到GN…

STC32G12K128-旋转编码器-软件去抖

  • 简介
  • 代码

简介

EC11旋转编码器是一种可以连续旋转的器件A,B,C为旋转编码引脚,带按键的有D,E引脚。引脚功能:

  • A:编码器A相;
  • B:编码器B相;
  • C:公共端-一般接到GND;
  • D/E:按键,按下时D,E导通,和普通按键功能相似;

当旋转编码器时:A,B两个端子的开关相继导通。 内部机械结构的设计保证了:顺时针旋转时A超前于B的相位。逆时针旋转时B超前于A的相位。
在这里插入图片描述

在这里插入图片描述

解码原理:

  • A相接单片机外部中断引脚,设为下降沿触发;
  • B相接单片机GPIO引脚,设置为输入引脚;
  • 旋转编码器时A相下降沿触发中断,中断服务程序里延时50us判断A相是否为电平(去抖操作)
  • A相下降去抖后延时100us判断B相电平,低电平是顺时针旋转,高电平是逆时针旋转;
  • 两个延时时间根据实际情况耐心微调,可以达到很好的去抖效果,本例实测超慢速度~超快速度,均能连续正确解码旋转方向值;

代码

drv_encoder.h

#ifndef __DRV_ENCODER_H__
#define __DRV_ENCODER_H__enum {E_ENCODER_N=0,E_ENCODER_L=1,E_ENCODER_R
};void drv_encoder_init(void);uint8_t drv_encoder_value(void);void drv_encoder_notify(void);#endif

drv_encoder.c


#include "STC32G_Timer.h"
#include "STC32G_GPIO.h"
#include "STC32G_NVIC.h"
#include "STC32G_Exti.h"
#include "STC32G_Delay.h"#include "app_config.h"
#include "drv_encoder.h"
#include "debug.h"#if TCFG_DRV_ENCODER_SUPPORT#define D_ENCIO_A   P33     // 编码器A相
#define D_ENCIO_B   P34     // 编码器B相
static uint8_t encoder_value = E_ENCODER_N;void delay_us(unsigned int us)
{unsigned char data i;while(--us) {_nop_();_nop_();i = 3;while (--i);}
}void drv_encoder_init(void)
{EXTI_InitTypeDef	Exti_InitStructure;P3_SPEED_LOW(GPIO_Pin_3|GPIO_Pin_4);// P3_SPEED_HIGH(GPIO_Pin_3|GPIO_Pin_4);P3_DRIVE_MEDIUM(GPIO_Pin_3|GPIO_Pin_4);// P3_DRIVE_HIGH(GPIO_Pin_3|GPIO_Pin_4);// P3_PULL_UP_ENABLE(GPIO_Pin_3|GPIO_Pin_4);P3_PULL_UP_DISABLE(GPIO_Pin_3|GPIO_Pin_4);// P3_MODE_IO_PU(GPIO_Pin_3|GPIO_Pin_4);P3_MODE_IN_HIZ(GPIO_Pin_3|GPIO_Pin_4);P3_DIGIT_IN_ENABLE(GPIO_Pin_3|GPIO_Pin_4);Exti_InitStructure.EXTI_Mode      = EXT_MODE_Fall;//中断模式,   EXT_MODE_RiseFall,EXT_MODE_FallExt_Inilize(EXT_INT1, &Exti_InitStructure);				//初始化NVIC_INT1_Init(ENABLE,Priority_1);		//中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3}/*** @brief   旋转编码器 通知* @param   无* @note    * @return  无
*/
void drv_encoder_notify(void)
{encoder_value = E_ENCODER_N;
}/*** @brief   获取旋转编码器值* @param   无* @note    同时设置编码器值为none* @return  0:无操作,1:左旋转(逆时针),2:右旋转(顺时针)
*/
uint8_t drv_encoder_value(void)
{uint8_t enc_value = encoder_value;    drv_encoder_notify();return enc_value;
}/*** @brief   编码器A相中断处理函数* @note    下降沿触发* @return  无
*/
void INT1_ISR_Handler (void) interrupt INT1_VECTOR		//进中断时已经清除标志
{// TODO: 旋转编码器去抖,A相中断下降沿触发,延时50us判断A相是否为低电平,为低延时100us判断B相电平 0=右旋转(顺时针),1=左旋转(逆时针)D_ENCIO_A = 1;delay_us(50);if (0 == D_ENCIO_A) {D_ENCIO_B = 1;delay_us(100);if (D_ENCIO_B == 0) {encoder_value = E_ENCODER_R;} else {encoder_value = E_ENCODER_L;}}    
}#endif //TCFG_DRV_ENCODER_SUPPORT

main.c

#include "drv_encoder.h"void main(void)
{uint8_t enc_value;// 系统初始化// ......// 旋转编码器drv_encoder_init();enc_value = drv_encoder_value();if (E_ENCODER_N != enc_value) {			if (E_ENCODER_L == enc_value) {log_d("E_ENCODER_L\n");} else if (E_ENCODER_R == enc_value) {log_d("E_ENCODER_R\n");}}
}
http://www.dtcms.com/wzjs/5533.html

相关文章:

  • 上海html5网站建设新冠疫情最新消息今天
  • 外贸做中英文网站最近发生的新闻大事
  • 做网站和推广工资多少钱必应bing搜索引擎
  • 石家庄做网站建设的公司排名cps广告联盟
  • 江苏建设信息网站有时候打不开hao123影视
  • 小吃店网站建设广东seo
  • 如何做服装微商城网站建设西安霸屏推广
  • 网上做游戏赚钱的网站有哪些农产品网络营销方案
  • 张家港网站建设服务怎么自己建网站
  • 2015做网站前景郑州网站seo顾问
  • java网站空间b站推广是什么意思
  • 桐乡建设局网站百度关键词优化软件如何
  • 网站上的客服广告推广图片
  • 武汉百度做网站产品营销
  • 网站开发工程师项目经验游戏代理
  • 大型门户网站建设费用网站软件推荐
  • 外贸网站 源码百度怎么免费推广
  • wordpress主题开发什么叫做seo
  • 山东响应式网站怎么宣传自己的店铺
  • 网站优化排名怎么做百度seo是什么意思呢
  • 平湖网站建设公司如何联系百度人工客服
  • java做网站需要哪些技术药品销售推广方案
  • 沈阳唐朝网站建设网站关键词如何快速上首页
  • 网站建设及管理制度文章东莞网络公司排行榜
  • 昆明 网站建设平台优化
  • 我要建个人网站营销关键词有哪些
  • 邯郸公司网站建设大数据培训班出来能就业吗
  • 湖北做网站价格广告投放数据分析
  • 国外广告设计网站搜索引擎优化的内部优化
  • 定制手机网站建设珠海网站设计