在单片机应用中常需要输入一些控制参数,供单片机读取并作相应的运算或控制,拨盘由于体积小、可靠性高、显示直观、输入与更改非常方便等优点获得了十分广泛的应用。现就拨盘的工作原理以及在单片机系统中的使用方法作一简单介绍。
一、BCD码拨盘及工作原理
拨盘的种类很多,但工作原理大同小异。使用最广的是十进制输入,BCD码输出的BCD码拨盘。图1为4片BCD码拨盘组成的4位十进制输入拨盘组。每片BCD码拨盘都具有0~9十个位置,并且在每个位置都具有相应的数字显示,代表拨盘输入的十进制数。在实际应用中根据需要选择几个BCD码拨盘进行拼接。

在BCD码拨盘后面有5个接点,中央A为输入控制端,其余4根是BCD码输出信号端,当拨盘拨到不同位置时,输入控制端A分别与4根BCD码输出线中的某根或某几根接通。例如,当拨盘拨至3,则A和输出线2、l相通,拨至6,则A和输出线2、4相通。由此不难得到BCD码拨盘真值表,如表1、2所示。

二、BCD码拨盘与单片机的接口
1.单片BCD码拨盘与单片机的接口
单片BCD码拨盘可以与任何一个4位I/O口或扩展的单片机I/O口相连,当单片BCD码拨盘和单片机I/O口直接连接时,如将控制端A接+5V(见图2),则输出8、4、2、1应分别接电阻并将另一端接地,否则在工作时,未和A端相通的信号线均处于悬空状态,单片机将误判为1。这种连接中拨盘输出的BCD码为正逻辑,即原码。反之,如将A接地,8、4、2、1输出端通过电阻上拉置高电平时,拨盘输出的BCD码为负逻辑,即反码。

2.多片BCD码拨盘与单片机接口
在单片机应用中,如要输入多位十进制数,则要将多片BCD码拨盘拼接。如果按照图2的连接方式,则N位十进制拨盘务必要占用4×N根I/O口线,为了减少I/O线占用数量,一般将拨盘的4根输出线分别通过4个与非门与单片机的I/O口相连,而每片拨盘的控制端A则分别与I/O口线相连,用来控制选择多片拨盘中的某一片,这样,N位十进制拨盘需占用4+N根I/O口线,图3是8031单片机通过P1口与4片BCD码拨盘相连的4位BCD码输入电路。

现以图3为例分析其工作原理。4片拨盘的BCD码输出端相同的同接一个四输入与非门输入端,四个与非门输出端分别接入P1.3~P1.0,它们表示8、4、2、1。P1.7~P1.4分别与拨盘的控制端A相连,我们不妨将其定义为千、百、十、个位,当单片机需读入千位数据时,将P1.7置0,P1.4~P1.6置1,此时4个与非门所有与其它位相连接的输入端均为1状态,4个与非门输出就完全取决于千位BCD码拨盘的输出状态,前已述及,拨盘输出由其位置所定,A为0,拨盘输出为BCD反码,再经过与非门取非输出为BCD原码,利用送数指令可将端口数据即千位拨盘预置数读入累加器A。同样,将P1.6置0,P1.7、P1.5、P1.4置1,四个与非门输出即为百位拨盘所显示的数值。依次可读出四片BCD码拨盘上的数。按照上述思路即可编写出对应的拨盘输入程序。(仲爱民 姜双宁)