一个拨盘,它和计算机的接口是并行的四条线,可输入四位的8421码。
它的表面,通常印的符号是十进制数字0~9,也有印着十六进制数字的,更有特制的,印着年月日。
这种小东西,简单可靠,也没有一般的按键所具有的抖动现象。
拼接成多位的也十分方便,数字看着也直观,完全可以省下对应的显示器。
外形图如下:
它正面显示数字和背后引脚所给出信号的关系,可见下面的真值表:
做而论道已经在产品中使用它很多次了,近来才发现,在PROTEUS软件中,也能仿真这种器件。
看看下图,这个器件,在PROTEUS中是什么名称?
在电路图中,共使用了四个拨盘开关,采用了“数据线并联”的方式,节省了不少IO口线。
在软件上,使用了扫描的方法,所以就可以在一个八位的接口,稳定接收它们送来的四位十进制数字。
下面的程序,即不断的扫描拨盘的输入,同时还不断的动态显示输出,能够做到输入什么,马上就显示什么。
;这个程序和电路,经过仿真试验后,证明可以正常工作。
;能够实现拨盘拨几在四位共阳数码管上显示几。
THUMBEQU30H;30H~33HBCD拨盘输入数据
D_BUFEQU34H;34H~37H显示缓冲区
ORG0000H
LJMPSTART
ORG0030H
START:
;-----------------------------
M_LOOP:
CALLTHUMB_SW
CALLDATA_PROC
CALLDISP
JMPM_LOOP
;-----------------------------
THUMB_SW:
MOVR2,#127;位选,低电平有效
MOVR0,#THUMB
MOVP1,R2
MOVA,P1
CPLA
ANLA,#15
MOV@R0,A
MOVA,R2
RRA
MOVR2,A
INCR0
CJNER0,#THUMB+4,$-12;4位
RET
;-----------------------------
DATA_PROC:
MOVD_BUF,THUMB
MOVD_BUF+1,THUMB+1
MOVD_BUF+2,THUMB+2
MOVD_BUF+3,THUMB+3
RET
;-----------------------------
DISP:;共阳数码管,P0:段,P2:位
MOVR2,#1;位选,高电平有效
MOVR0,#D_BUF
MOVA,@R0
ADDA,#(TAB-$-3)
MOVCA,@A+PC
MOVP2,#0
MOVP0,A
MOVP2,R2
DJNZR7,$;显示1ms
DJNZR7,$
MOVA,R2
RLA
MOVR2,A
INCR0
CJNER0,#D_BUF+4,$-19;显示4位
MOVP2,#0
RET;占用时间约为4.1ms
;-----------------------
TAB:;共阳段码
DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H;0~7
DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH;8~F
;-----------------------------
END
在电路中,每个拨盘,都使用了四个二极管,使用一般的1N4148即可。
在拨盘的背面接线处,有8个小孔,就是用于安装二极管的。
但是,如果不是多组拨盘“并联”,也可以不用安装二极管,把安装孔空着就行。