基于单片机的四位BCD编码器电路设计,
基于单片机的四位BCD编码器电路设计
本文以常见的8421码为例介绍电路的实现和程序的编写。如果对程序略加修改则可以很方便地实现其他类型的编码方式。本电路以
AT89C2051为核心设计了4×4的矩阵键盘,这样只需在键盘上按下相应的按键即可以产生一个对应的BCD码,通过设置切换按键可以随意地控制4位中任意的一位,期间用数码管实时地显示当前BCD码对应的十进制数。电路功能和特点:4位BCD编码输出,利用单片机口线可以扩展位数。改变软件中键号0-键号9的程序可以实现其他编码形式。参见软件部分。电路以常用的8421码为例,并有数码显示出对应的十进制数。完整的4×4的矩阵键盘扫描执行程序,可以移植到其他应用电路中。BCD编码由锁存器实现信号锁存,并引出接口,方便连接其他电路。“位”控制和0-9编码输出互不影响,直接按下功能键就可以得到需要的BCD编码输出和“位数”选择。2电路框图电路原理图如图1所示。
电路分析
AT89C2051的P1口组成4×4矩阵键盘,其中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锁存器,通过S10-S13来切换,对于4个D锁存器每次只有一个有效而把P3.3-P3.0的数据“读入”然后锁存。实际上S10-S13控制P3.4和P3.5的状态并通过2-4线译码器得到对应的U3-U6的有效信号,表1是S10-S13控制所对应的各芯片状态,可见,U3-U6中任意一个处于有效状态而“读入”P3.3-P3.0数据时,其余的处于锁存状态,保留原来数据,因此使用者可以在任意一位中改变所希望的BCD码输出。
U3-U6是D锁存器,主要是其中的5脚和6脚关系决定他们的工作状态,查阅资料得知,当5脚和6脚逻辑电位相同时,该芯片可以把D3-D0数据输出到Q3-Q0;当5脚和6脚逻辑电位不同时,该芯片处于锁存原来数据的状态,而不会“读入”当前的D3-D0数据,电路中把U3-U6的6脚固定接低电位,而5脚分别用U2的输出信号来控制,不难实现“可以单独实现对各位BCD码的设置”。4511是译码驱动,接共阴数码管显示当前每位的BCD码所对应的十进制数,方便观察,显示部分很简单,此处不在赘述,同时,显示部分在电路上不是必须的,可省略,BCD码通过J3和J2引出,之所以用两个链接器是为了更灵活、方便使用。4软件设计主要是实现键盘处理,程序中必须确认是哪一个按键被按下,然后转到相应的处理程序中执行,实际上该程序是一个完整的键盘扫描程序,如果改动其中的处理子程序完全可以应用到其他的控制电路中,下文附有详细的程序和说明供参考,图2是流程图。