基于单片机的四位BCD编码器电路设计0
发布时间:2008/6/3 0:00:00 访问次数:436
    
     1 引言
    bcd码又称二/十进制码,即二进制编码的十进制码,在设计、测试数字电路硬件过程或是面对带有bcd码接口的集成电路时,常常希望方便、快速地产生bcd码来完成当前的工作,检验硬件电路的正确性,例如锁相频率合成集成电路mc145163p带有4位bcd编码接口,用于设置环路n分频器,通过本文介绍而制作完成后的bcd发生器可以提供4位bcd编码输出,方便地控制每位bcd输出,可以快速地得到bcd编码而完成测试或输出bcd编码接到集成电路的bcd编码接口,无需频繁跳线。
    另外,bcd编码有8421码、2421码、余3码等多种形式,本文以常见的8421码为例介绍电路的实现和程序的编写。如果对程序略加修改则可以很方便地实现其他类型的编码方式(如2421码)。本电路以at89c2051为核心设计了4×4的矩阵键盘(s0-s15),这样只需在键盘上按下相应的按键(s0-s9)即可以产生一个对应(十进制0-9)的bcd码,通过设置切换按键(s10-s13)可以随意地控制4位中任意的一位,期间用数码管实时地显示当前bcd码对应的十进制数。
    电路功能和特点:
    4位bcd编码输出,利用单片机口线可以扩展位数。
    改变软件中键号0-键号9(即s0-s9对应功能)的程序可以实现其他编码形式(如2421码)。参见软件部分。
    电路以常用的8421码为例,并有数码显示出对应的十进制数(也可以省略)。
    完整的4×4的矩阵键盘扫描执行程序,可以移植到其他应用电路中。
    bcd编码由锁存器实现信号锁存,并引出接口,方便连接其他电路。
    “位”控制和0-9编码输出互不影响,直接按下功能键就可以得到需要的bcd编码输出和“位数”选择。
    2 电路框图
    电路原理图如图1所示。
    
    3 电路分析
    at89c2051的p1口组成4×4矩阵键盘(s0-s15),其中p1.0-p1.3作为行线,p1.4-p1.7作为列线,设计键盘扫描程序可以达到预先设想的功能(见软件设计部分)。按下s0-s9可以产生0-9十进制数对应的bcd码,s10-s13用作4位bcd码的切换按键,s14、s15暂未使用,可以不安装,p3.3-p3.0是bcd码的数据输出线,从电路中可以看出,因为功用键盘而实现4位bcd编码输出,显然p3.3-p3.0作为数据总线而同时并接在4个d锁存器(4042),通过s10-s13来切换,对于4个d锁存器(u3-u6)每次只有一个有效而把p3.3-p3.0的数据“读入”然后锁存。实际上s10-s13控制p3.4和p3.5的状态(p3.4和p3.5共有4种组合)并通过2-4线译码器(u2;74ls139)得到对应的u3-u6的有效信号,表1是s10-s13控制所对应的各芯片状态,可见,u3-u6中任意一个(例如u3)处于有效状态而“读入”p3.3-p3.0数据时,其余的(u4/u5/u6)处于锁存状态,保留原来数据,因此使用者可以在任意一位中改变所希望的bcd码输出。
     u2(74ls139)是2-4线译码器,功能见表1,他的输入端b,a分别接至p3.4,p3.5,输出端y0-y3取决于输入端的组合,每种组合下只有一个输出端(y0-y3)以低电平有效输出。u3-u6是d锁存器,主要是其中的5脚和6脚关系决定他们的工作状态,查阅资料得知,当5脚和6脚逻辑电位相同时,该芯片可以把d3-d0数据输出到q3-q0;当5脚和6脚逻辑电位不同时,该芯片处于锁存原来数据的状态,而不会“读入”当前的d3-d0数据,电路中把u3-u6的6脚固定接低电位,而5脚分别用u2(74ls139)的输出信号来控制,不难实现“可以单独实现对各位bcd码的设置”。4511是译码驱动,接共阴数码管显示当前每位的bcd码所对应的十进制数,方便观察,显示部分很简单,此处不在赘述,同时,显示部分在电路上不是必须的,可省略,bcd码通过j3和j2引出,之所以用两个链接器是为了更灵活、方便使用。
    4 软件设计
    主要是实现键盘处理,程序中必须确认是哪一个按键被按下,然后转到相应的处理程序中执行,实际上该程序是一个完整的键盘扫描程序,如果改动其中的处理子程序完全可以应用到其他的控制电路中,下文附有详细的程序和说明供参考,图2是流程图。
     键盘扫描程序的任务简单讲就是:首先确认是否有按键按下,然后通过扫描判断来得到是在哪一行的按键,最后通过比较预先设定的4行表格查找并计算得到具体的按键,从而转到相应的功能程序。
    (1)置列线为输入状态(p1.4-p1.7为1),行线(p1.0-p1.3)先为0,即设定的p1.7-p1.0等于f0h并
    
     1 引言
    bcd码又称二/十进制码,即二进制编码的十进制码,在设计、测试数字电路硬件过程或是面对带有bcd码接口的集成电路时,常常希望方便、快速地产生bcd码来完成当前的工作,检验硬件电路的正确性,例如锁相频率合成集成电路mc145163p带有4位bcd编码接口,用于设置环路n分频器,通过本文介绍而制作完成后的bcd发生器可以提供4位bcd编码输出,方便地控制每位bcd输出,可以快速地得到bcd编码而完成测试或输出bcd编码接到集成电路的bcd编码接口,无需频繁跳线。
    另外,bcd编码有8421码、2421码、余3码等多种形式,本文以常见的8421码为例介绍电路的实现和程序的编写。如果对程序略加修改则可以很方便地实现其他类型的编码方式(如2421码)。本电路以at89c2051为核心设计了4×4的矩阵键盘(s0-s15),这样只需在键盘上按下相应的按键(s0-s9)即可以产生一个对应(十进制0-9)的bcd码,通过设置切换按键(s10-s13)可以随意地控制4位中任意的一位,期间用数码管实时地显示当前bcd码对应的十进制数。
    电路功能和特点:
    4位bcd编码输出,利用单片机口线可以扩展位数。
    改变软件中键号0-键号9(即s0-s9对应功能)的程序可以实现其他编码形式(如2421码)。参见软件部分。
    电路以常用的8421码为例,并有数码显示出对应的十进制数(也可以省略)。
    完整的4×4的矩阵键盘扫描执行程序,可以移植到其他应用电路中。
    bcd编码由锁存器实现信号锁存,并引出接口,方便连接其他电路。
    “位”控制和0-9编码输出互不影响,直接按下功能键就可以得到需要的bcd编码输出和“位数”选择。
    2 电路框图
    电路原理图如图1所示。
    
    3 电路分析
    at89c2051的p1口组成4×4矩阵键盘(s0-s15),其中p1.0-p1.3作为行线,p1.4-p1.7作为列线,设计键盘扫描程序可以达到预先设想的功能(见软件设计部分)。按下s0-s9可以产生0-9十进制数对应的bcd码,s10-s13用作4位bcd码的切换按键,s14、s15暂未使用,可以不安装,p3.3-p3.0是bcd码的数据输出线,从电路中可以看出,因为功用键盘而实现4位bcd编码输出,显然p3.3-p3.0作为数据总线而同时并接在4个d锁存器(4042),通过s10-s13来切换,对于4个d锁存器(u3-u6)每次只有一个有效而把p3.3-p3.0的数据“读入”然后锁存。实际上s10-s13控制p3.4和p3.5的状态(p3.4和p3.5共有4种组合)并通过2-4线译码器(u2;74ls139)得到对应的u3-u6的有效信号,表1是s10-s13控制所对应的各芯片状态,可见,u3-u6中任意一个(例如u3)处于有效状态而“读入”p3.3-p3.0数据时,其余的(u4/u5/u6)处于锁存状态,保留原来数据,因此使用者可以在任意一位中改变所希望的bcd码输出。
     u2(74ls139)是2-4线译码器,功能见表1,他的输入端b,a分别接至p3.4,p3.5,输出端y0-y3取决于输入端的组合,每种组合下只有一个输出端(y0-y3)以低电平有效输出。u3-u6是d锁存器,主要是其中的5脚和6脚关系决定他们的工作状态,查阅资料得知,当5脚和6脚逻辑电位相同时,该芯片可以把d3-d0数据输出到q3-q0;当5脚和6脚逻辑电位不同时,该芯片处于锁存原来数据的状态,而不会“读入”当前的d3-d0数据,电路中把u3-u6的6脚固定接低电位,而5脚分别用u2(74ls139)的输出信号来控制,不难实现“可以单独实现对各位bcd码的设置”。4511是译码驱动,接共阴数码管显示当前每位的bcd码所对应的十进制数,方便观察,显示部分很简单,此处不在赘述,同时,显示部分在电路上不是必须的,可省略,bcd码通过j3和j2引出,之所以用两个链接器是为了更灵活、方便使用。
    4 软件设计
    主要是实现键盘处理,程序中必须确认是哪一个按键被按下,然后转到相应的处理程序中执行,实际上该程序是一个完整的键盘扫描程序,如果改动其中的处理子程序完全可以应用到其他的控制电路中,下文附有详细的程序和说明供参考,图2是流程图。
     键盘扫描程序的任务简单讲就是:首先确认是否有按键按下,然后通过扫描判断来得到是在哪一行的按键,最后通过比较预先设定的4行表格查找并计算得到具体的按键,从而转到相应的功能程序。
    (1)置列线为输入状态(p1.4-p1.7为1),行线(p1.0-p1.3)先为0,即设定的p1.7-p1.0等于f0h并