APP下载

旋转编码开关在单片机中的应用

2013-12-01王平安

长江大学学报(自科版) 2013年13期
关键词:电位器中断端口

王平安

(中石化西南石油工程有限公司油田工程服务分公司,四川 绵阳621000)

旋转编码开关又称旋转编码器、数码电位器等,在电子产品中经常使用。该器件具有360°旋转、调节范围广、调节速度可变、可控制、噪音小、寿命长的优点[1],功能在一定程度上类似于电位器,但其结构、工作原理和使用方法与普通电位器完全不同[2],在数字电路中的应用有很多,如改变音量的大小,电机的转速等。

在单片机电路中,通过旋转编码开关来实现相应参数的改变使用起来非常的方便和简单,可有效的改变或调节单片机的内部参数及对外输出参数等。旋转编码开关由于在使用过程中,其方向信号的识别和脉冲计数的增加和减少是整个设计应用中的难点,笔者采用中断方式、硬件自动处理、IO端口等3种方式介绍旋转编码开关在单片机中的具体应用实现。

1 旋转编码开关

旋转编码开关是一种可用于取代模拟电位器的器件,常用的旋转编码开关旋转一周输出20个脉冲,每个脉冲代表编码开关旋转了一定的角度[3]。旋转编码开关有3个和5个引脚的,5脚的比3脚的仅多2个按键引脚,另外3个引脚的功能与只有3个引脚的旋转编码开关功能相同,分别实现旋转时输出脉冲,在对编码器进行左旋和右旋时,其输出波形如图1(a)和图1(b)所示。

旋转编码开关旋转一周分别输出固定数目的脉冲数,通过对其波形的识别,可识别出编码开关是左旋还是右旋,从而实现其输入数值的增加及减少,以实现其在单片机中的调节功能。

图1 旋转编码器旋转方向及旋转脉冲数的识别

2 编码开关信号的处理

左转和右转的信号判别是难点,从图1分析编码开关左旋和右旋的波形可知,当AC相超前BC相,转动方向为右转;当BC相超前AC相,则为左转。在左旋时,BC波形的相位滞后于AC相位一定角度,当AC波形上升沿时,BC波形为低电平;在右旋时,BC波形超前于AC波形相位一定角度,当AC波形为上升沿时,BC波形的电平为高电平。

波形如图1所示,AC信号超前BC信号一个时间Δt,该时间随旋转的快慢而不同,通过检测AC信号上升时BC信号的电平值的高低,便能识别出其旋转方向。在AC信号上升时,BC信号为ON,此时旋转编码开关右旋转;AC信号上升时BC的信号为OFF,此时旋转编码开关左旋转;因此,只需要在AC信号上升沿的瞬间,判断BC信号的高低状态,便可实现旋转编码器的方向识别,通过对AC信号的脉冲数根据旋转方向来实现加减计数,便能实现旋转编码开关信号值的输入。

在使用编程时,只需要判断当输出AC为跳变为高电平时,输出BC当时的电平状态就可以判断出是左旋还是右旋,对于查询方式,无法直接获取AC或BC的电平跳变状态,则通过定时查询AC和BC的状态,便能实时对旋转编码开关的方向识别。由于对其方向的识别和脉冲信号的处理是应用中的主要技术难点,下面介绍旋转编码开关在宏晶STC51单片机上的几种较为典型的硬件接口及软件识别及处理方法。

3 单片机定时器T2处理旋转编码开关输入

STC51单片机的计数器T2本身只有自动递增或递减的功能,利用T2的该功能,便能自动实现对旋转编码开关的方向和脉冲的计数,通过简单的程序便能实现旋转编码开关的正转或反转的计数和方向识别。

3.1 T2处理旋转编码开关的原理

编码开关信号的捕获,通过采用计数器功能来实现。笔者采用STC89C54 RD单片机计数器T2来实现。STC单片机的计数器T2有3种工作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,编码开关的信号处理采用的是自动装载模式,通过递增计数和递减计数实现旋转编码开关正反向计数。定时器的自动重装模式如图2所示。

图2 定时器自动重装模式(DCEN=1)

图3 采用T2读取旋转编码开关的硬件电路

该种方式中未采用计数器T2中断方式,主要是由于要计数器T2产生中断,需要每次中断后改变RCAP2 H、RCAP2L中的值和TH2、TL2中的值,使得产生中断的程序变得较复杂。通过T2的自动递增和递减计数来实现,T2将不会产生中断,在软件中通过读取TH2和TL2的值,便能自动读取出旋转编码开关的调节值,使程序变得更为简单。

3.2 T2旋转编码开关输入的硬件电路

利用宏晶51单片机的T2的自动重装功能,很好的解决旋转编码器的转向及计数的识别,单片机的P1.0脚是T2的计数输入端口,P1.1是T2的方向输入端口,如图3所示,W1为旋转编码器的3个引脚,中间是公共端C脚,上端为A脚,下端为B脚,旋转时AC、BC信号如图1(a)和图1(b)所示,将AC信号输入到单片机的P1.0脚,BC信号输入到单片机的P1.1脚。该电路中,R1和R2是输入的上拉电阻,阻值选择为10kΩ便可以,C1和C2为滤波电容,选择为0.1μF,可以消除A,B信号的抖动,经过实践证明,该电路可保证编码开关的正常工作。

3.3 T2处理旋转编码开关的程序

由于程序中未能使用T2中断,程序只需要初始化T2的工作方式和对TH2、TL2赋值便完成初始化,在主程序中,并没使用中断函数,而是直接通过对T H2、TL2进行访问,仅对TL2进行了数据处理。在该种方式中,TL2相当于一个寄存器使用,通过访问TL2便能实现对旋转编码开关的数据输入。主要实现程序如下:

4 中断方式处理旋转编码开关

由于单片机外部中断可以实现脉冲边沿信号和电平触发信号2种中断功能,可以很方便捕获旋转编码开关输入信号电平的变化,能够及时处理脉冲信号跳变时的方向信号,从而识别旋转编码开关的旋转方向。该电路中采用了单片机的INT0及一个IO脚来实现对旋转编码开关的另一信号的识别,如果中断输入信号AC变化时,根据BC电平信号的高低便能判别旋转编码开关的左旋和右旋,并对中断信号AC的值作增加或减少处理,实现编码开关数值的处理。

4.1 INT0旋转编码开关输入的硬件电路

INT0是单片机的中断电路,利用该端口将在编码开关转动时,会产生中断,由中断程序来实现旋转编码开关输入量的识别,其电路如图4所示,P3.2为MCS51单片机的INT0中断端口,P1.2为普通IO端口。

图4 采用INT0中断方式读取编码开关的硬件电路图

4.2 INT0处理旋转编码开关的程序

INT0作编码开关输入时,采用中断方式,在编写程序时,需要对INT0进行中断和初始化,在INT0产生中断后,其转向由中断程序进行处理,该方式中,如果编码开关没有转动,中断程序将不会执行,可提高单片机处理其他任务的能力,通过占用1个中断IO端口和普通IO端口便可实现其信息的输入。通过中断方式读取的初始化实现程序如下:

5 IO端口处理旋转编码开关的程序

上述编码开关输入方法中,要占用计数器T2、中断INT0等IO端口,由于单片机的计数器、中断端口的数量有限,被输入编码开关占用后,有可能造成单片机该类输入端口数量不够,通过普通IO端口实现旋转编码开关数据输入能够有效解决由于单片机中断资源不足的情况。

5.1 IO端口处理旋转编码开关硬件电路

该方式可采用普通的IO端口作为编码开关的A、B输入,电路硬件图参考图2所示,假设P1.2仍为编码开关的BC端输入,P3.2为AC端输入,程序中不使用中断方式,把P3.2作为普通IO端口方式,其他硬件原理同上面介绍的功能相同。

图5 IO口处理编码开关的流程图

5.2 IO端口处理旋转编码开关的程序

在该种方式下,由于P3.2作为普通的IO端口,普通IO端口只能采用查询方式访问,软件中只能采用查询来进行访问,如果直接采用查询程序,必将耗费大量的单片机运算周期,降低其运行速度。通过定时查询方式,便可有效降低程序查询开销,提高系统效率。定时查询使用定时器产生定时中断,定时查询编码开关AC和BC的输入状态,从而完成对编码开关的输入脉冲及旋转方向的处理。数码电位器的采样频率不能太低,否则会限制旋转编码开关的旋转速度[4],取的时间扫描周期为1 ms,图5是时钟主频为12 MHz的程序流程图。

6 结 语

对于旋转编码开关在单片机的应用中介绍了3种常用方法,根据单片机的资源使用情况,可根据设计中的实际情况采用不同的方法来实现旋转编码开关的输入。通过采用旋转编码开关实现控制参数的变化比采用传统按钮方式更加方便直观。由于其硬件简单,编程也容易实现,且它的软、硬件可移植性强[5],可适用于不同的单片机电路中。

[1]杨绍洲,王胜军,陈宏文 .数码电位器在医学仪器的应用和编程[J].中国医疗器械杂志,2002,26(6):447-448.

[2]陈国杰 .数码电位器的单片机接口方法及其编程[J].计算机应用,2000(4):38-40.

[3]王子博 .编码器四倍频电路的单片机高速算法设计[J].控制与检测,2007(11):73-74,78.

[4]陈国杰 .数码电位器的单片机接口方法及其编程[J].电子技术,2000(4):38-40.

[5]方炜,任一峰 .绝对值型编码器数据采集设计[J].中北大学学报(自然科学版),2007,28(z1):60-62.

猜你喜欢

电位器中断端口
一种端口故障的解决方案
Hepatitis C virus antigens enzyme immunoassay for one-step diagnosis of hepatitis C virus coinfection in human immunodeficiency virus infected individuals
基于FPGA的中断控制器设计*
端口阻塞与优先级
跟踪导练(二)(5)
千里移防,卫勤保障不中断
Mixly开源项目设计10:用自制多量程欧姆表测量电位器的电阻
8端口IO-Link参考设计套件加快开发速度
卫星三端口DC-DC变换器技术综述
Varian Clinic 23EX 加速器电位器故障维修一例