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

现代建设公司网站一键制作网站

现代建设公司网站,一键制作网站,报个电脑培训班多少钱,用自己电脑做网站 dns1.增量型旋钮编码器原理 该编码器有A,B两相,当顺时针旋转时 B相会提前A相90度(匀速转的时候),也就是A相上升沿时,B相对应高电平,计数器会1,A相下降沿时,B相为低电平时&…

1.增量型旋钮编码器原理

该编码器有A,B两相,当顺时针旋转时
在这里插入图片描述
B相会提前A相90度(匀速转的时候),也就是A相上升沿时,B相对应高电平,计数器会+1,A相下降沿时,B相为低电平时,计数器也会+1;
当逆时针转时
在这里插入图片描述
B相会落后A相90度(匀速转的时候),也就是A相上升沿时,B相对应低电平,计数器会-1,A相下降沿时,B相为高电平时,计数器也会-1;
编码器旋转一圈,会有20个脉冲信号,360°分20,一个脉冲是18°。
而单片机有他的编码器模式,只需要将编码器的A,B相接入TI1,TI2。

2.配置实现编码器调节灯亮度以及屏幕上进度条的进度

在这里插入图片描述
根据原理图可知编码器的A,B相分别对应的是PA8,PA9口。
在这里插入图片描述
在这里插入图片描述
而PA8,PA9分别对应着定时器1的通道1和通道2
在这里插入图片描述
在这里插入图片描述
将PB_15设置为输入模式,使用编码器按键来切换灯的颜色
在这里插入图片描述
这三个口分别是定时器3的通道1,2,3
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2a751643740a4108b941ecdb51c4eb2b.png
i2c配置要使用显示屏
在这里插入图片描述
代码:

int count=0;
char message[50]="";
int main(void)
{OLED_Init();HAL_TIM_Encoder_Start(&htim1,TIM_CHANNEL_ALL);//开启定时器1的编码器HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);//先开启定时器3的通道1,蓝灯while (1){count=__HAL_TIM_GET_COUNTER(&htim1);if(count>60000)//逆时针{count=0;__HAL_TIM_SET_COUNTER(&htim1,0);}else if(count>100)//顺时针{count=100;//count也要作为灯的占空比0~100__HAL_TIM_SET_COUNTER(&htim1,100);}__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,count);//只是改变蓝灯占空比OLED_NewFrame();sprintf(message,"count:%d",count);OLED_PrintString(10,10,message, &font16x16, OLED_COLOR_NORMAL);OLED_DrawRectangle(10,30, 100,10,OLED_COLOR_NORMAL);//绘制进度条外边框(宽102,高10)OLED_DrawFilledRectangle(10,30 ,count, 10, OLED_COLOR_NORMAL);//进度条,宽随count变化0~100OLED_ShowFrame();}}

旋转编码器1

根据视频我们发现有两个问题
1.每次扭动,count+2,或-2
2.顺时针是减,逆时针是+。
因为对上下边沿都敏感,A相的一个脉冲会计数两次,我们采用2分频即可
在这里插入图片描述
对于顺时针还是逆时针,我们需要将A相或B相任意一个反相即可
在这里插入图片描述

旋转编码器2

然后需要加旋转编码器的按键来切换三个灯,每次按下按钮,需要停止对应定时器通道下的PWM,开启另一个,在此之前,我们需要将PB15配置上拉模式,要不然,按钮不好识别
在这里插入图片描述

int count=0;
char message[50]="";
uint32_t chan[3]={TIM_CHANNEL_1,TIM_CHANNEL_2,TIM_CHANNEL_3};
int ins=0;
int main(void)
{OLED_Init();HAL_TIM_Encoder_Start(&htim1,TIM_CHANNEL_ALL);//开启定时器1的编码器HAL_TIM_PWM_Start(&htim3,chan[ins]);//先开启定时器3的通道1,蓝灯while (1){count=__HAL_TIM_GET_COUNTER(&htim1);if(count>60000)//逆时针{count=0;__HAL_TIM_SET_COUNTER(&htim1,0);}else if(count>100)//顺时针{count=100;//count也要作为灯的占空比0~100__HAL_TIM_SET_COUNTER(&htim1,100);}if(HAL_GPIO_ReadPin(Key_GPIO_Port,Key_Pin)==GPIO_PIN_RESET){HAL_Delay(10);if(HAL_GPIO_ReadPin(Key_GPIO_Port,Key_Pin)==GPIO_PIN_RESET){HAL_TIM_PWM_Stop(&htim3,chan[ins]);//关闭当前通道的PWMins=(ins+1)%3;//通道下标HAL_TIM_PWM_Start(&htim3,chan[ins]);//打开下一个通道的PWMwhile(HAL_GPIO_ReadPin(Key_GPIO_Port,Key_Pin)==GPIO_PIN_RESET);}}__HAL_TIM_SET_COMPARE(&htim3,chan[index],count);OLED_NewFrame();sprintf(message,"count:%d",count);OLED_PrintString(10,10,message, &font16x16, OLED_COLOR_NORMAL);OLED_DrawRectangle(10,30, 100,10,OLED_COLOR_NORMAL);//绘制进度条外边框(宽102,高10)OLED_DrawFilledRectangle(10,30 ,count, 10, OLED_COLOR_NORMAL);//进度条,宽随count变化0~100OLED_ShowFrame();}}

旋转编码器3

http://www.dtcms.com/wzjs/360710.html

相关文章:

  • 登录背景图片素材济南seo网站排名关键词优化
  • 湛江宇锋网站建设厦门小鱼网
  • 网站建设项目及费用如何进行网站推广?网站推广的基本手段有哪些
  • 网站建设与管理 ppt模板今日竞彩足球最新比赛结果查询
  • 南京网站开发公司西部数码域名注册
  • 重庆建立公司网站免费下载b站视频软件
  • mamp+wordpress湖南专业关键词优化
  • 设计型网站今日新闻内容摘抄
  • 网站建设怎么寻找客户51链
  • 自动的小企业网站建设线上营销渠道主要有哪些
  • 个人可以做淘宝客网站吗原创代写文章平台
  • 推广策略的英文关键词的优化方法
  • 专做生存设计的网站债务优化是什么意思
  • 做婚纱的网站天津债务优化公司
  • 深圳惠州网站建设公司推广app的软文案例
  • 有模板如何做网站百度指数怎么看地域数据
  • 在建设工程信息网东莞网站优化关键词排名
  • 包装设计网站哪个好用培训课程设计
  • 网站建设套餐价格腾讯网网站网址
  • 宁德网站建设维护百度知道一下
  • 暴雪回归网站优化员seo招聘
  • 中国建设银行网站企业网银今日国内新闻大事20条
  • frontpage网站模板创网站永久免费建站
  • 祥云县网站山东百度推广代理
  • 可信网站logo梧州网站seo
  • 西宁政府网站建设一个好的产品怎么推广
  • 做个人网站的步骤seo排名快速
  • 扬州网站制作哪家好如何查看百度搜索指数
  • cloudflare免费域名申请优化设计高中
  • 外贸平台哪个好河北网站seo外包