打印

拨码开关.怎么用**

[复制链接]
9368|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
HWM| | 2011-1-6 20:46 | 只看该作者
“拨码开关”也就是一组开关的组合,通常按BCD码处理。若接口够的话,直接接入。

使用特权

评论回复
板凳
Galway-Zhang|  楼主 | 2011-1-7 08:18 | 只看该作者
本帖最后由 Galway-Zhang 于 2011-1-7 08:27 编辑

大概知道是8421二进制跟16进制的对换.16进制跟十进制的对换..

但我也想知道拨码开头出来的有几根线?怎么接**


但是.我在想.如上图中的有三位数.那么一位就有10个数(0-9)十进制.

是不是8421已经固定.然后还要再加上3位选位线?一共是7根连线吗?

非常感谢.HWM的回答.


8421码是中国大陆的叫法,

  即BCD代码。Binary-Coded Decimal‎,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。   由于十进制数共有0、1、2、……、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/(16-10)!约等于2.9乘以10的10次方种方案。常用的BCD代码列于末。
编辑本段常用BCD编码方式
  最常用的BCD编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在中国大陆称之为“8421码”。除此以外,对应不同需求,各人亦开发了不同的编码方法,以适应不同的需求。这些编码,大致可以分成有权码和无权码两种:   有权BCD码,如:8421(最常用)、2421、5421…   无权BCD码,如:余3码、格雷码…   以下为三种常见的BCD编码的比较。   
十进数 8421-BCD码 余3-BCD码 2421-A码   
(M10) D C B A C3 C2 C1 C0 a3 a2 a1 a0  
 0 0 0 0 0 0 0 1 1 0 0 0 0   
   1 0 0 0 1 0 1 0 0 0 0 0 1  
 2 0 0 1 0 0 1 0 1 0 0 1 0   
   3 0 0 1 1 0 1 1 0 0 0 1 1   
   4 0 1 0 0 0 1 1 1 0 1 0 0   
   5 0 1 0 1 1 0 0 0 0 1 0 1   
   6 0 1 1 0 1 0 0 1 0 1 1 0   
   7 0 1 1 1 1 0 1 0 0 1 1 1   
   8 1 0 0 0 1 0 1 1 1 1 1 0   
   9 1 0 0 1 1 1 0 0 1 1 1 1
编辑本段常用BCD码
十进制数 8421码 5421码 2421码 余3码 余3循环码   
     0      0000     0000    0000    0011   0010   
     1      0001     0001    0001    0100   0110   
     2      0010     0010    0010    0101    0111   
     3      0011     0011    0011    0110    0101    
     4      0100     0100    0100    0111    0100   
     5      0101     1000    1011    1000    1100   
     6      0110     1001    1100    1001    1101   
     7      0111     1010    1101    1010    1111   
     8      1000     1011    1110    1011    1110   
     9      1001     1100    1111    1100    1010   
-----------------------   
什么是BCD码?  

bcd码也叫8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,着十个数每个数都有自己的8421码:   
0=0000   
1=0001   
2=0010   
3=0011   
4=0100   
5=0101   
6=0110   
7=0111   
8=1000   
9=1001   
举个例子:   
            321的8421码就是   3 2 1   0011 0010 0001   

具体:   bcd码是十位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,

对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 ....... 9 1001 接下来的10就有两个上述的码来表示 10 表示为00010000 也就是BCD码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000   

举例:   某二进制无符号数11101010,转换为三位非压缩BCD数,按百位、十位和个位的顺序表示,
应为<U>__C</U>__。   
A.00000001 00000011 00000111 B. 00000011 00000001 00000111   C.00000010 00000011 00000100 D. 00000011 00000001 00001001   解:(1)11101010转换为十进制:234   (2)按百位、十位和个位的顺序表示,应为<U>__C</U>__。   附注:压缩BCD码与非压缩BCD码的区别—— 压缩BCD码的每一位用4位二进制表示,一个字节表示两位十进制数。例如10010110B表示十进制数96D;非压缩BCD码用1个字节表示一位十进制数,高四位总是0000,低4位的0000~1001表示0~9.例如00001000B表示十进制数8.

使用特权

评论回复
地板
huangqi412| | 2011-1-7 08:55 | 只看该作者
突然想起俺手上还有几个这样东东,大学在实验室捡的

使用特权

评论回复
5
puppyh| | 2011-1-7 09:42 | 只看该作者
大学在实验室捡的???

顺的吧!

使用特权

评论回复
6
Galway-Zhang|  楼主 | 2011-1-7 13:24 | 只看该作者
大学实验室?我做硬件的.现在在学软件.

上面是百度过来的.暂时没有实物.所以先研究下这个8421拨码开关的接法..有接法.大概知道怎么用法了.

使用特权

评论回复
7
Galway-Zhang|  楼主 | 2011-1-7 13:25 | 只看该作者
5# puppyh

哈哈...估计是顺过来的..

改天在华强买个几个.

使用特权

评论回复
8
Galway-Zhang|  楼主 | 2011-1-19 08:31 | 只看该作者
如图。做了实验。可能是程序不对。现在四个开关是按拨码开关8421去拨的时候。四位数都不对。而且拨第二位时。第三位也跟着显示一样的。
程序如下:
void IN_sky_one()
{
        if(K1==0)
        {
                temp0=8;
        }
        else
        {
                temp0=0;
        }
        if(K2==0)
        {
                temp1=4;
        }
        else
        {
                temp1=0;
        }
        if(K3==0)
        {
                temp2=2;
        }
        else
        {
                temp2=0;
        }
        if(K4==0)
        {
                temp3=1;
        }
        else
        {
                temp3=0;
        }
}
//*************************************
//------------数码管显示子程序---------
void display_1()
{
        P2=0xf7;                                        //开第一位数显示
        P0=tab[temp_one];                        //P0输出第一位数     P1^0-P1^3 为K1-K4,temp_oen
        Disp_delay();
       
        P2=0xfe;                                        //开第二位数显示
        P0=tab[temp_two];                        //P0输出第二位数
        Disp_delay();

        P2=0xfd;
        P0=tab[temp_three];
        Disp_delay();

        P2=0xfb;                                        //开第四位数显示
        P0=tab[temp_four];                                //P0输出第四位数
        Disp_delay();
}
//------------数字输入-----------------
void IN_sky()
{
        K5=1;K6=0;K7=0;K8=0;
        IN_sky_one();
        temp_one=temp0+temp1+temp2+temp3;
        display_1();

        K5=0;K6=1;K7=0;K8=0;
        IN_sky_one();
        temp_two=temp0+temp1+temp2+temp3;
        display_1();

        K5=0;K6=0;K7=1;K8=0;
        IN_sky_one();
        temp_three=temp0+temp1+temp2+temp3;
        display_1();

        K5=0;K6=0;K7=0;K8=1;
        IN_sky_one();
        temp_four=temp0+temp1+temp2+temp3;
        K8=0;
        display_1();
}

使用特权

评论回复
9
nevsayno| | 2011-1-19 08:36 | 只看该作者
小黄“人品爆发”:lol

使用特权

评论回复
10
huangqi412| | 2011-1-19 08:51 | 只看该作者
真是地上捡的。。。有焊过痕迹。

使用特权

评论回复
11
Galway-Zhang|  楼主 | 2011-1-19 09:28 | 只看该作者


这样实验后。发现。仿真的IO_P1口为H电平时..输出的电流好大...用一个IO口拉低都拉不到L.

这应该是仿真的原因吧?51的上拉电阻都是10K的.哪有几百MA那么大.

使用特权

评论回复
12
aihe| | 2011-1-19 15:41 | 只看该作者
三菱PLC书上有例子

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:LED电源,移动电源,充电器开发,PCBlayout, 电池研发设备开发,动力电池保护板 电池测试仪 QQ:551708558 E-mail:dy188@qq.com 淘宝:http://diy-power.taobao.com

0

主题

267

帖子

2

粉丝