完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近一个项目要用到旋转开关,因为我也是第一次接触这个东西,所以就在网上查了一下它的原理。发现网上相关的资料很多都没说清楚,我也搞了几个小时才弄明白,在此分享一下旋转开关的原理。为了使程序结果更加直观,我打算用两位的数码管来显示数值A,当旋转开关正转的时候A加,当旋转开关反转的时候A减。
|
|
相关推荐
15个回答
|
|
在此说明一下旋转开关的原理,当A端口下降沿时,如果B端口的电平为高则是反转,为低则为正转。
单片机用的是STC15W408AS,P1口接数码管的a~h,P2^7口接数码管第一位公共端,P2^6口接数码管第二位公共端。网上很多资料都没标明哪里是A端,哪里是B端,所以我将旋转开关三脚那边的上下两个脚分别接单片机的两个外部中断I/O口。这样就算接错了,只要修改一下程序就可以了。A端口接P3^3,B端口接P3^2。同时A,B两个端口要接上拉电阻,除此之外A,B两个端口也要接电容滤波。还有另外两边的两个脚跟轻触开关的原理是一样的。 |
|
|
|
#include "STC15.h"
#define uchar unsigned char //0--255 #define uint unsigned int //0--65535 #define ulong unsigned long uchar a1 = 98; ***it led1 = P2^7; ***it led2 = P2^6; code uchar num_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x73};//共阴数码管段码表 /*---------------------------- 软件延时 ----------------------------*/ void Delay(uchar n) { uint x; while (n--) { x = 1000; while (x--); } } //----------------------------------------- //中断服务程序 void exint1() interrupt 2 //INT1中断入口 { if(P32 == 1) { a1--; //反转 } if(P32 == 0) { a1++; //正转 } } void main() { P1M1 = 0x00; P1M0 = 0xFF; INT1 = 1; IT1 = 1; //设置INT1的中断类型 (1:仅下降沿 0:上升沿和下降沿) EX1 = 1; //使能INT1中断 EA = 1; while (1) { P1 = num_code[a1/10]; led1 = 0; Delay(2); led1 = 1; P1 = num_code[(a1/1)%10]; led2 = 0; Delay(2); led2 = 1; } } |
|
|
|
|
|
|
|
emmmmmm我还以为你是在问。。然后发现你是在分享。。。
|
|
|
|
你这张图比较好懂,网上那些真的不好看懂,对于新手来说。
|
|
|
|
emmmmmm我自学能力还是不错的
|
|
|
|
当初我了解到这个东西之后,听名字“旋转编码器”感觉很高大上,结果就是一个轴里面装两个不同区域导通金属圈,然后刻几个凹槽产生顿挫感。然后就能每一个step产生两个方波。
其实, 也就是那么回事啦。 |
|
|
|
给你点赞赞
|
|
|
|
我第一次看到这个东西也觉得挺高级的,正转反转。。。
|
|
|
|
|
|
原理图附上
|
|
|
|
兄dei,这叫编码开关,不叫旋转开关。原理还是很简单的,看一下其时序就明白了!
程序使用它只需要开两个外部中断,然后判断其边沿变化即可。而且使用它最好在外部中断里面加上消抖处理,不然会存在抖动现象! |
|
|
|
看原理图,有电容
|
|
|
|
这里的电容是起到了什么作用啊?
|
|
|
|
利用电容两端的电压不能突变的特性,将其并联在机械触点两端,消除接触抖动产生的毛刺电压。
|
|
|
|
只有小组成员才能发言,加入小组>>
3322 浏览 9 评论
3000 浏览 16 评论
3497 浏览 1 评论
9070 浏览 16 评论
4090 浏览 18 评论
1190浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2341浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 09:49 , Processed in 1.389598 second(s), Total 106, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号