另外把每个拨码盘的A,B,C,D各串一个二极管二极管的N极接拨码盘的端脚,二极管的P接到单片机的例如P2.0到P2.3,然后P2.0到P2.3都以上拉电阻到5v.这样你要读取第一个拨码盘,只要把P1.0送0其他P1.1到P1.5送1..假设第一个拨码盘的资料例如0011,由于二极管顺相,会把P2.0跟P2.1变成0(二极管顺向电压不足1v)
因此可以读到拨码盘资料..然后就可以位移扫瞄线..然后读取第二个拨码盘...
两个及两个以上的BCD拨码盘可以使用公共引脚A动态扫描的方法所有BCD拨码盘的公共引脚A分别作为不同的扫描线连接单片机。
如果8、4、2、1数据线上拉,则A端采用低扫描如果8、4、2、1数据线下拉,则A端采用高扫描。
这里的低扫描具有两层含义:
第一,任意时刻扫描线中只有一条为低电平,其余扫描线为高电平
第二, 在扫描过程中,扫描线需要周期性地依次变为低电平。高扫描则与低扫描完全相反。
还要注意的就是高扫描时从8、4、2、1引脚上读到的数值即为拨码盘输入对应的BCD码,而低扫描是需要取反才得到正确的BCD码
DialChangeA=1DialChangeB=0//扫描个位
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
val=PINC
val >>= 2
i = val &0x0f//按位与,i得到个位值。
DialChangeA=0DialChangeB=1//扫描十位
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
__no_operation()__no_operation()__no_operation()__no_operation()
val=PINC
val >>= 2
l = val &0x0f//按位与,i得到十位值。
l *= 10//十位值乘以10
i += l//然后与个位值相加。
Dalay=1
return i//将得到的十进制数返回
proteus拨码盘也就是拨码开关(也叫DIP开关,拨动开关,超频开关,地址开关,拨拉开关,数码开关,指拨开关)是一款用来 *** 作控制的地址开关,采用的是0/1的二进制编码原理。拨码开关很多款型号,按照脚位来区分有直插式(DIP) 和贴片式(SMD)之分,按照拨动的方式来分有平拨跟侧拨之分,按照脚间距有2.54mm和1.27mm脚间距之分,按照颜色有黑色,红色,蓝色的区别。根据状态来说还有两态跟三态之分。根据位数来说正常是都是1-10位、12位等11个位数。其实细分下来,还有很多种。
用途
广泛使用于数据处理、通信、遥控和防盗自动警铃系统、风淋室等需要手动程式编制的产品上。
分类
拨码开关作为需要手动 *** 作的一种微型开关,在通讯,安防等诸多设备产品上广泛应用。大部分拨码开关采用直插式(DIP),在两态之间变换,再根据不同的位组成2的N次方的不同状态,实现不同的功能。其实细分下来,还有很多种,下面介绍一些具体的系列。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)