基于AT89C2051单片机+74LS164的LED数码管显示电路设计方案


原标题:基于AT89C2051串口的LED数码管显示电路设计方案
基于AT89C2051单片机与74LS164的LED数码管显示电路设计方案
在当今的电子技术领域,LED数码管因其高亮度、低功耗、长寿命和易于驱动等优点,被广泛应用于各种数字显示场合,如仪器仪表、家用电器、工业控制等。本设计方案将深入探讨如何利用经典的AT89C2051单片机与74LS164串入并出移位寄存器相结合,实现稳定、高效的LED数码管动态显示控制。AT89C2051是一款经济高效、功能强大的8位微控制器,其内置的Flash存储器使其程序开发和修改变得异常便捷;而74LS164则是一款常用的串行输入并行输出的移位寄存器,能够有效地扩展单片机的输出端口,简化硬件电路设计,特别适用于多位LED数码管的驱动。本方案将从电路原理、元器件选型、功能分析、设计考虑及软硬件协同等方面进行全面阐述,旨在为读者提供一个清晰、实用的设计指导。
1. 设计目标与系统概述
本设计方案旨在构建一个能够精确显示数字的LED数码管显示系统。该系统将接收来自AT89C2051单片机的控制信号,并通过74LS164进行串行数据到并行数据的转换,最终驱动LED数码管显示预设的数字或字符。考虑到实际应用,我们通常会选择共阴极或共阳极数码管,并相应地调整驱动方式。本方案将以常见的共阴极数码管为例进行阐述。整个系统将由以下几个主要部分组成:核心控制器(AT89C2051单片机)、数据显示驱动(74LS164)、显示单元(LED数码管)、电源模块以及必要的辅助电路(如复位电路、晶振电路等)。通过合理的硬件设计和软件编程,我们将实现多位LED数码管的动态扫描显示,从而最大限度地节约单片机的I/O口资源,并降低系统的整体功耗。动态扫描显示技术,也称为分时复用技术,其核心思想是利用人眼的视觉暂留效应,快速轮流点亮不同位的数码管,使得肉眼看起来所有位都在同时显示,从而避免了为每一位数码管都单独配置一组驱动电路的复杂性和成本。
2. 核心控制器:AT89C2051单片机
元器件型号优选:AT89C2051
选择理由与器件功能: AT89C2051是美国ATMEL公司生产的一款高性能、低功耗CMOS 8位微控制器,它与经典的80C51指令集完全兼容。选择AT89C2051作为核心控制器,主要基于以下几个方面的考量:
引脚数量和成本优势: AT89C2051采用20引脚封装,相比于传统的40引脚51系列单片机,其引脚数量更少,这意味着更小的PCB面积和更低的BOM成本,尤其适合空间受限和成本敏感的应用场景。尽管引脚数量减少,但其核心功能并未缩减,足以满足本次LED数码管显示的需求。
内置Flash存储器: AT89C2051内置2KB的Flash可编程和可擦除只读存储器(EEPROM),这使得程序开发和烧录过程极为方便,无需外部EPROM或EEPROM,简化了硬件设计。Flash存储器可以反复擦写,便于程序的调试和更新。
资源集成度高: 除了Flash存储器,AT89C2051还集成了128字节的内部RAM、15条可编程I/O线(Port 1和Port 3的部分引脚)、一个串行通信接口(UART)、两个16位定时/计数器(Timer 0和Timer 1)以及一个片内振荡器和时钟电路。这些丰富的内置资源为LED数码管的驱动提供了足够的硬件支持,特别是定时器资源,对于实现LED的动态扫描显示至关重要。
低功耗特性: AT89C2051具有空闲模式和掉电模式,可以有效地降低功耗,延长电池供电产品的续航时间,这对于一些便携式或对功耗有严格要求的应用来说是一个显著的优势。
成熟的技术和广泛的应用: 51系列单片机作为嵌入式系统领域最经典的架构之一,拥有大量的开发资料、成熟的开发工具和丰富的应用案例,这大大降低了开发难度和学习成本。对于初学者或需要快速实现原型验证的项目来说,AT89C2051是一个非常友好的选择。
工作电压范围宽: AT89C2051通常支持较宽的工作电压范围(如2.7V至6V),使其能够适应不同的电源环境。
在本次设计中,AT89C2051将负责生成显示数据,并通过其I/O口(通常是P1口)以串行方式将数据发送给74LS164。同时,它还将控制74LS164的时钟线和复位线,并利用定时器中断来精确控制数码管的扫描频率和亮灭时间,确保显示效果的稳定性和无闪烁感。
3. 串行数据到并行数据转换器:74LS164
元器件型号优选:74LS164
选择理由与器件功能: 74LS164是一款八位串行输入/并行输出(SIPO)移位寄存器,它在LED数码管驱动电路中扮演着至关重要的角色。选择74LS164的原因如下:
I/O口扩展: 单片机的I/O口资源有限,特别是对于引脚较少的AT89C2051。74LS164通过串行输入方式,可以将单片机的两个I/O口(一个用于数据输入,一个用于时钟脉冲)扩展为八个并行输出口。这意味着仅仅使用单片机的两个引脚,就可以控制8个LED段或位的通断,大大节省了单片机的宝贵I/O资源。这对于需要驱动多位LED数码管的应用来说是极其高效的。
数据锁存功能: 74LS164内部含有八个D触发器,这些触发器可以将串行输入的数据逐位移入并并行输出。当新的数据被移入时,原有的数据会保持在并行输出端,直到新的时钟脉冲到来,这种锁存功能确保了在移位过程中,输出数据的稳定性,避免了显示闪烁或混乱。
简化布线: 采用串行通信可以减少单片机与外部器件之间的连接线数量,简化PCB的布线难度,降低EMC(电磁兼容性)干扰的风险。
成本效益高: 74LS164是一种非常成熟且广泛应用的数字IC,其生产成本低廉,市场供应充足,价格极具竞争力。
易于驱动: 74LS164是TTL(晶体管-晶体管逻辑)系列的集成电路,其输入输出电平与5V供电的AT89C2051兼容良好,无需额外的电平转换电路。
器件功能详解: 74LS164有两个数据输入端(DATA A和DATA B)和一个时钟输入端(CLK),以及一个清零输入端(CLR)。它的核心功能是将串行输入的位数据,在每个时钟脉冲的上升沿,从DATA A或DATA B输入端移入内部的寄存器,并同时将寄存器中的数据并行输出到QA-QH这八个输出端。
数据输入(DATA A/B): 74LS164通常使用其中一个数据输入端(例如DATA A)来接收来自单片机的数据信号。另一个输入端可以固定为高电平或作为使能端。
时钟输入(CLK): 单片机通过输出时钟脉冲到CLK端,控制数据移位的节奏。每个时钟脉冲的上升沿都会将数据从输入端移入一位。
清零输入(CLR): CLR引脚是异步清零端,当CLR为低电平时,所有输出端(QA-QH)将立即被清零为低电平,不依赖于时钟脉冲。这在初始化或需要快速清除显示时非常有用。
并行输出(QA-QH): 这八个输出端将直接连接到LED数码管的段选线。当对应位被设置为高电平或低电平时,将驱动LED数码管的相应段发光或熄灭。
在本次设计中,AT89C2051将P1口的某个引脚配置为数据输出引脚(例如P1.0),连接到74LS164的DATA A端;将P1口的另一个引脚配置为时钟输出引脚(例如P1.1),连接到74LS164的CLK端。通过这两个引脚的协同工作,AT89C2051可以高效地向74LS164发送8位并行数据。
4. 显示单元:LED数码管
元器件型号优选:共阴极数码管(如F5161AS、5611AS等)
选择理由与器件功能: LED数码管是本显示电路的最终显示载体。选择共阴极数码管主要基于以下原因:
驱动方式的匹配性: 74LS164的并行输出端在正常工作时可以输出高电平或低电平。对于共阴极数码管,当段选线(连接到74LS164的输出端)为高电平且公共阴极接地时,对应的LED段就会点亮。这种驱动方式与74LS164的输出特性非常匹配,使得电路设计更加直观和简洁。
市场普遍性: 共阴极数码管在市场上应用更为广泛,型号选择多样,采购方便,价格合理。
显示效果: LED数码管具有自发光特性,亮度高,视角宽,对比度好,即使在光线较强的环境下也能清晰显示。
器件功能详解: 一个单位的LED数码管通常由7段(a, b, c, d, e, f, g)LED以及一个小数点(dp)LED组成。每个LED段都对应一个发光二极管。
共阴极数码管: 在共阴极数码管中,所有LED段的阴极都连接在一起,形成一个公共阴极引脚。这个公共阴极引脚需要连接到电源的低电平(通常是地)。当需要点亮某个LED段时,需要给对应的段选引脚施加高电平,形成正向偏压,从而使电流流过LED并使其发光。
段选线: 这些引脚(a, b, c, d, e, f, g, dp)分别控制数码管的各个笔段和小数点。在本设计中,它们将连接到74LS164的并行输出端(QA-QH)。
位选线(对于多位数码管): 对于多位LED数码管,除了段选线外,每位数码管还有一个公共引脚(共阴极),称为位选线。在动态扫描显示中,单片机通过控制这些位选线的通断,来决定哪一位数码管被点亮。例如,对于共阴极数码管,位选线通常通过一个PNP型三极管(或PMOS管)连接到电源,单片机通过控制三极管的基极(或MOS管的栅极)来选择导通或截止,从而实现对数码管公共阴极的通断控制。
5. 电源模块与辅助电路
电源模块:元器件型号优选:7805线性稳压器
选择理由与器件功能: 电子电路的稳定运行离不开稳定的电源。7805是一款非常常用的三端正向线性稳压器,能将输入电压(通常高于5V)稳定地输出5V直流电压。
稳压效果好: 7805具有良好的输出电压稳定性,可以有效地滤除输入电压的波动和纹波,为AT89C2051和74LS164提供纯净、稳定的5V工作电压,确保芯片的正常运行和显示效果的稳定性。
使用简单: 7805只需要很少的外围元件(通常是输入和输出端的滤波电容),即可构成一个稳定的5V电源电路,简化了电源部分的设计。
成本低廉: 7805是一款非常成熟且量产的器件,价格非常经济。
过流/过热保护: 7805内部集成了过流和过热保护电路,可以提高电路的可靠性,防止因过载或过热导致的损坏。
辅助电路:
晶振电路:元器件型号优选:11.0592MHz无源晶振,2个22pF陶瓷电容
选择理由与器件功能: 晶振为AT89C2051提供精确的时钟源,决定了单片机运行的速度和定时器的精度。
提供时钟: AT89C2051的运行需要外部时钟信号,晶振配合两个电容构成一个振荡电路,为单片机提供稳定的时钟脉冲,确保指令执行、定时器计数和串行通信的准确性。
标准频率: 11.0592MHz是51系列单片机常用的晶振频率,它能使UART(串行通信)产生标准的波特率,便于与PC或其他设备进行通信。
稳定性: 晶振的频率稳定性直接影响单片机系统的整体性能。无源晶振具有较高的频率精度和稳定性。
复位电路:元器件型号优选:10uF电解电容,10KΩ电阻,复位按钮(可选)
选择理由与器件功能: 复位电路用于在系统上电或出现故障时,将单片机复位到初始状态,确保程序的可靠执行。
上电复位: RC(电阻-电容)复位电路可以在系统上电时,自动产生一个短暂的低电平复位脉冲,使单片机正确启动。10uF电容和10KΩ电阻的组合可以提供足够的复位时间。
手动复位: 加入一个复位按钮,可以在需要时手动复位单片机,方便调试和故障排除。
可靠性: 良好的复位电路是确保单片机系统稳定运行的基础。
限流电阻:元器件型号优选:220Ω - 1KΩ电阻(根据数码管亮度需求和实际测试调整)
选择理由与器件功能: 在每个LED数码管的段选线与74LS164的输出端之间串联一个限流电阻是必不可少的。
保护LED: LED是电流敏感型器件,如果没有限流电阻,当LED两端电压超过其正向导通电压时,电流会急剧增大,可能导致LED过流烧毁。限流电阻可以限制流过LED的电流,使其工作在额定电流范围内,延长其寿命。
控制亮度: 通过调整限流电阻的阻值,可以改变流过LED的电流,从而调节数码管的显示亮度。阻值越大,电流越小,亮度越低;反之,阻值越小,电流越大,亮度越高。
电流均匀: 确保每个LED段的亮度基本一致。
6. 电路原理与连接
以下是基于上述元器件的电路连接示意和原理说明:
AT89C2051单片机:
VCC和GND:连接到5V电源和地。
XTAL1和XTAL2:连接11.0592MHz晶振和两个22pF电容。
RST(复位):连接复位电路,包括10uF电容、10KΩ电阻和可选的复位按钮。
P1.0(或P1.X):配置为串行数据输出引脚,连接到74LS164的DATA A(或DATA B)输入端。
P1.1(或P1.Y):配置为时钟输出引脚,连接到74LS164的CLK输入端。
P3口(或P1口剩余引脚):对于多位数码管,P3口或P1口的其他引脚将用于控制数码管的位选,通常通过PNP三极管驱动。
74LS164移位寄存器:
VCC和GND:连接到5V电源和地。
DATA A(或DATA B):连接到AT89C2051的串行数据输出引脚(例如P1.0)。
CLK:连接到AT89C2051的时钟输出引脚(例如P1.1)。
CLR:连接到高电平(不使用清零功能时)或通过一个I/O口控制(需要清零功能时)。在本设计中,通常连接到高电平,因为清零操作可以通过软件控制数据输出来实现。
QA-QH:连接到LED数码管的段选引脚(a, b, c, d, e, f, g, dp),每个输出端与对应的LED段之间串联一个限流电阻。例如,QA连接到段a,QB连接到段b,以此类推。
LED数码管(共阴极):
段选引脚(a, b, c, d, e, f, g, dp):通过限流电阻连接到74LS164的QA-QH输出端。
公共阴极:对于单位数码管,直接接地。对于多位数码管,每个数码管的公共阴极通过一个PNP三极管(例如S8550或2N3906)或PMOS管连接到电源。单片机通过控制三极管的基极电流(或MOS管的栅极电压)来控制其导通与否,从而选择点亮哪一位数码管。例如,当P3.2输出低电平,通过基极电阻使PNP三极管导通,对应的数码管公共阴极被拉低,该数码管被点亮。
动态扫描显示原理:
假设要显示“123”,需要3位数码管。
步骤1: 单片机将“1”的段码(对应数码管段a-g的亮灭组合)通过串行方式发送给74LS164。
步骤2: 74LS164接收并并行输出这些段码,点亮第一位数码管对应的段。同时,单片机将第一位数码管的位选线置为有效(例如,将控制第一位数码管公共阴极的三极管导通)。此时,只有第一位数码管显示“1”。
步骤3: 经过极短的时间(通常为几毫秒),单片机关闭第一位数码管的位选(三极管截止)。
步骤4: 接着,单片机将“2”的段码发送给74LS164。
步骤5: 74LS164输出“2”的段码,同时单片机将第二位数码管的位选线置为有效。此时,只有第二位数码管显示“2”。
步骤6: 重复上述过程,依次点亮第三位数码管显示“3”。
循环: 单片机以极高的频率(例如,每秒扫描几十次到上百次)在所有数码管之间快速循环执行上述过程。由于人眼的视觉暂留效应,当扫描频率足够高时,人眼无法分辨出数码管是逐位点亮的,而是感觉所有数码管都在同时显示,从而实现了多位显示。
7. 软件设计思路
软件部分是实现LED数码管动态显示的关键。主要包括以下几个模块:
初始化模块:
配置AT89C2051的I/O口:将连接74LS164的P1口引脚设置为输出模式。
配置定时器:选择一个定时器(例如Timer 0)设置为工作模式1(16位定时器/计数器模式),并设置合适的初值,使其能够以所需的扫描频率产生中断。
开启中断:使能定时器中断和全局中断。
数码管段码表:
在程序中定义一个查找表(数组),存储0-9以及小数点等字符对应的7段码。例如,对于共阴极数码管,显示数字“0”的段码可能为0x3F (二进制00111111),其中1表示点亮,0表示熄灭。
显示数据缓冲区:
定义一个数组来存储当前需要显示在每位数码管上的数字或字符。例如,如果显示“123”,则数组可能存储[1, 2, 3]。
动态扫描中断服务程序:
这是软件的核心部分,通常在定时器中断中执行。
扫描指针: 定义一个变量作为扫描指针,每次中断时指向下一位数码管。
位选控制: 根据扫描指针的值,控制对应位选三极管的通断,使其导通(点亮当前位)。同时,关闭前一位数码管的位选。
段码发送: 根据显示数据缓冲区中当前位的数据,从段码表中查找对应的段码。然后,将该段码通过串行方式逐位发送给74LS164。发送过程需要配合时钟脉冲,即每发送一位数据,就产生一个时钟脉冲。
更新扫描指针: 扫描指针递增,如果达到最大位数,则回绕到第一位,实现循环扫描。
主程序:
调用初始化函数。
在主循环中,可以根据需要更新显示数据缓冲区的内容,例如从传感器读取数据,或者进行其他计算。
主循环不直接控制显示,而是通过修改显示数据缓冲区的内容,由中断服务程序来自动刷新显示。
串行发送子程序示例(伪代码):
void Send_74LS164_Data(unsigned char data) {
unsigned char i;
for (i = 0; i < 8; i++) {
// 先发送高位或低位,取决于具体实现,这里假设从最高位开始发送
if (data & 0x80) { // 判断最高位是否为1
P1_0 = 1; // 数据线置高
} else {
P1_0 = 0; // 数据线置低
}
P1_1 = 1; // 时钟脉冲上升沿
Delay_us(1); // 延时一小段时间,确保时钟脉冲宽度
P1_1 = 0; // 时钟脉冲下降沿
Delay_us(1); // 延时一小段时间
data <<= 1; // 数据左移一位,准备发送下一位
}
}
8. 设计考量与注意事项
功耗问题: 虽然LED数码管本身功耗不高,但在多位数码管动态扫描时,瞬时电流可能会较大。需要确保电源模块能够提供足够的电流。同时,合理选择限流电阻,在保证亮度的情况下,尽量降低功耗。
扫描频率: 扫描频率是影响显示效果的关键。过低的扫描频率会导致肉眼感知到明显的闪烁;过高的扫描频率虽然能消除闪烁,但可能会增加单片机的处理负担和功耗。通常,扫描频率设置在50Hz-100Hz以上即可满足人眼的视觉暂留要求。
鬼影现象(Ghosting): 在动态扫描显示中,由于不同位之间的切换速度不够快,或者驱动电路的响应时间不一致,可能会出现“鬼影”现象,即当前不应点亮的数码管上出现微弱的残影。可以通过在位选切换时,先关闭所有位选,再发送下一位的段码,最后再点亮对应位的位选,或者在每位切换时,短暂地关闭74LS164的输出(如果可行),来减轻或消除鬼影。
抗干扰设计: 在电源输入端和芯片VCC引脚附近,应放置0.1uF的去耦电容,用于滤除高频噪声,确保电源的稳定性。合理的地线布局和走线也可以有效减少电磁干扰。
限流电阻的计算: 限流电阻的阻值 R 可以根据以下公式近似计算:R=(VCC−VF)/IF,其中 VCC 是供电电压(5V),VF 是LED的正向导通电压(通常为1.8V-2.2V),IF 是LED的额定工作电流(通常为5mA-20mA)。实际应用中,可根据亮度需求进行微调。
共阴极与共阳极的选择: 本文以共阴极数码管为例,若选择共阳极数码管,则74LS164的输出逻辑需要反转,或者使用PNP型三极管作为段选驱动。位选部分也需要相应调整,共阳极数码管的公共阳极需要通过NPN型三极管接地,单片机输出高电平使其导通。
可靠性: 在实际设计中,应考虑元器件的耐压、功耗等参数,预留一定的裕量,避免长时间工作在极限条件下。焊接质量、PCB板材等也影响系统的长期可靠性。
9. 总结
基于AT89C2051单片机和74LS164的LED数码管显示电路设计方案,充分利用了AT89C2051的微控制器能力和74LS164的I/O扩展功能,实现了高效、稳定的多位LED数码管动态扫描显示。该方案不仅降低了硬件成本和布线复杂度,而且通过软件编程灵活控制显示内容,具有较高的实用价值和学习意义。通过对核心元器件的深入理解和合理选用,以及对电路原理和软件设计的精细把控,可以构建出满足各种需求的LED数码管显示系统。无论是作为教学实验平台,还是应用于实际的产品开发,此设计方案都提供了一个坚实的基础和清晰的指导方向。随着技术的不断进步,虽然有更多集成度更高、功能更强大的显示驱动芯片出现,但基于AT89C2051和74LS164的经典组合依然因其成本效益和易学性,在许多简单的嵌入式显示应用中占据一席之地。深入掌握这种基础设计思想,对于理解更复杂的数字显示系统也具有重要的启示作用。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。