基于单片机的四位BCD编码器电路设计

发布者:Qinghua2022最新更新时间:2007-01-15 来源: 现代电子技术关键字:AT89C2051  矩阵 手机看文章 扫描二维码
随时随地手机看文章

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并把该状态保存,接这读入当前P1口状态,不难理解,只要有按键(任何一个)按下,P1口的状态肯定不是原来设定的P1.7-P1.0等于F0H,通过判断就可以实现第一步的目的:首先确认是否有按键按下?

(2)从第一行(P1.0行)开始一步步扫描,找出并确认按键在哪一行,扫描的方法步骤见表2。行线每次只有一个为0,例如第1次扫描时设定P1.0为0,而P1.1-P1.3为1,显然,在当前扫描过程中按下按键如果不是P1.0行,那么P1口状态始终是FEH,因此表2说明中强调“只有任一次比较P1口不等于该数值,说明当前按键就在该行”就是这样的含义,其余各次比较也是一样道理,通过这样的判断,可以实现查找按键所在得行数。

(3)程序中定义了4个表KEYVALTAB1-KEYVALTAB4,分别存放的数据用来为比较程序服务而指示出各行的按键具体位置,表3列出按键标号和比较数据对应关系,在R2中存放行号的起始值,R0用来存放在每一行中查到按键的具体位置(R0范围是0-3),各行查找时比较的数据见表(3)。读写可以简单分析就可以得到结果,假设通过程序先判断按键在第一行,显然如果S0按下,P1.7-P1.0的状态是11101110(S1连接于P1.0和P1.4),也就是表3中S0→EEH。

(4)KEYCALCU子程序中通过乘3运算用于散转指令JMP,注意LJMP是3字节指令,各按键对应的功能程序安排在一起串LJMP,所以通过乘3运算才能正确对应到各按键的执行目标功能程序。

关于各键的相应处理功能就较简单,只要对应不同的按键输入相应的控制命令,对于S0-S9是控制P3.3-P3.0不同的状态以得到所对应的BCD编码,对于S10-S13则是控制P3.4,P3.5的状态以实现对U3-U6的控制,限于篇幅,详细内容可以参见程序,程序开始执行时是逐个控制4位BCD编码输出,对应的数码管依次显示,初始状态为0001,0000,0000,0000 4位BCD码分别从J3,J2引出,数码管显示为1,0,0,0。

5 4×4键盘扫描程序

关键字:AT89C2051  矩阵 引用地址:基于单片机的四位BCD编码器电路设计

上一篇:8051、ARM和DSP指令周期的测试与分析
下一篇:基于单片机的四位BCD编码器电路设计

推荐阅读最新更新时间:2024-03-16 12:18

51单片机STC89C52矩阵键盘之扫描法检测
程序源码 /*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------数据类型定义区域-----------------------*/ typedef unsigned char u8; //定义类型unsigned char别名为u8 typedef unsigned int u16; //定义类型unsigned int别名为u16 /*-----------------------用户自定义数据区域---------------------*/
[单片机]
51单片机STC89C52<font color='red'>矩阵</font>键盘之扫描法检测
avrstudio 5 矩阵键盘
关键点: 先给PC口的低4为为输出高4位为输入,来判断是那一列,后交叉来赋值来判断是那一行 源代码: #include avr/io.h #include util/delay.h #define F_CPU 8000000UL const unsigned char table = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71 }; char key_num; unsigned char check(); void key_scan(); void beep(); int main(void) {
[单片机]
avrstudio 5 <font color='red'>矩阵</font>键盘
“三大关键”解决矩阵式LED封装技术难题
  近几年发光二极管(LED)的应用在不断增长,其市场覆盖范围很广,包括像指示灯、聚光灯和头灯这样的汽车照明应用,像显示背光和照相机闪光灯这样的照相功能,像LED显示器背光和投射系统这样的消费产品,像建筑物的特色照明和标志这样的建筑应,以及许多其他方面的应用。LED亮度高、发光效率高且反应速度快。由于耗能低,使用寿命长,放热少且可发出彩色光的特点,已经在很多方面替代了白炽灯。   随着LED效率的不断提高,产生的每瓦特流明量不断增大,利用LED进行通用照明变得越来越接近实际。比如在2003年,一个相当于3000流明的荧光灯管需要采用超过1300个效率为30流明/瓦的LED才能获得相当的效果。但到2005年,获得同样的荧光灯管发光效
[电源管理]
PIC16F877矩阵键盘的识别
关于矩阵键盘的识别方法在51矩阵键盘识别中已经说过,现在要说的是PIC单片机与51单片机的区别,主要是PIC单片机的口子的输入输出需要TRISn寄存器设置,具体如下: 扫描法: #include pic.h #define uchar unsigned char #define uint unsigned int uchar num; const ucharSSEG ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay1ms(uint z) { uint x; uchar y; for(x
[单片机]
PIC16F877<font color='red'>矩阵</font>键盘的识别
ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器
一 矩阵键盘控制蜂鸣器原理: 1.1 本实验实现8*7矩阵键盘上按键控制蜂鸣器响。 1.2 实验思路:根据电路图原理,找出矩阵键盘行列所对应的引脚,赋予对应的按键值,然后控制蜂鸣器响。 1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 二 实验步骤: 2.1 key.h代码: #ifndef __KEY_H #define __KEY_H #include”sys.h” #define ROWPINS GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_3|GPIO_Pin_2 |GPIO_Pin_1|GPIO_Pin_0//矩阵键盘行引脚 #defi
[单片机]
开关电源设计中有源驱与动无源驱动矩阵的比较
一.结构的不同 无源驱动 矩阵的像素由阴极和阳极单纯基板构成,阳极和阴极的交叉部分可以发光,驱动用IC需要由TCP或COG等连接方式进行外装。 有源驱动的每个像素配备具有开关功能的低温多晶硅薄膜晶体管(Low Temperature Poly-Si Thin Film Transistor, LT P-Si TFT),而且每个象素配备一个电荷存储电容,外围驱动电路和显示阵列整个系统集成在同一玻璃基板上。与LCD相同的TFT结构,无法用于OLED。这是因为LCD采用电压驱动,而OLED却依赖电流驱动,其亮度与电流量成正比,因此除了进行ON/OFF切换动作的选址TFT之外,还需要能让足够电流通过的ON阻抗较低的小型驱动TFT。
[电源管理]
stm32 总线矩阵介绍
主系统由 32 位多层 AHB 总线矩阵构成,可实现以下部分的互连: ● 八条主控总线: — Cortex™-M4F 内核 I 总线、D 总线和 S 总线 — DMA1 存储器总线 — DMA2 存储器总线 — DMA2 外设总线 — 以太网 DMA 总线 — USB OTG HS DMA 总线 ● 七条被控总线: — 内部 Flash ICode 总线 — 内部 Flash DCode 总线 — 主要内部 SRAM1 (112 KB) — 辅助内部 SRAM2 (16 KB) — 辅助内部 SRAM3 (64 KB)(仅适用于 STM32F42xxx 和 STM32F43xxx 器件) — AHB1 外设(包括 AHB-
[单片机]
将基于AT89C2051的解码器应用于安防系统
1 引 言      目前,我国应用极广的编解码器是Princeton公司生产的具有531441(3 12 )种状态的PT2262编码芯片和与之配套的PT2272解码芯片。但一片PT2272只能对一种地址的PT2262的15种状态进行解码,对于较大的编解码保安防盗控制系统,常使用多片PT2272组合解码,但仍远远满足不了大中型安防系统的设计要求。因此,采用AT89C2051单片机,实现了PT2262的大容量解码功能。 2 PT2262的编码原理      PT2262(可参阅http://www.princeton.com.tw)的工作原理如图1所示,图中K0~K7为地址端,应该预置其状态;K8~K11为数据端,按下按钮开
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved