74LS164在2051单片机LED显示电路中的应用

控制/MCU

1876人已加入

描述

74ls164简介

74ls164、74lsT164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。

74HC164、74HCT164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。

时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。

主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,非同步地清除寄存器,强制所有的输出为低电平。

功能图

74LS164

AT89C2051 是一种高性能低价位单片机 ,但因其引脚少 ,给系统设计尤其是 L ED 显示接口电路的设计带来一定难度。笔者采用串入并出移位寄存器 74LS164 圆满地解决了这一问题 ,文中详细介绍了该接口电路的构成原理与软件。实际运行表明 ,该显示电路可以成功地应用到以AT89C2051 单片机为核心的智能仪表中 ,而且 L ED 显示清晰稳定可在线调整发光亮度。

AT89系列单片机[1]是美国ATMEL公司近年来推出的一种新型高性能低价位、低电压低功耗的8位CMOS微型计算机。它的显著优点是:①内含Flash存储器,这在系统的开发过程中,可随意进行程序修改,既便错误编程之后仍可以重新编程,故不存在废品且大大缩短了程序的开发周期;同时在系统工作过程中能有效地保存数据信息。②采用静态时钟方式,节省电能,这对于降低便携式产品的功耗十分有利。③由于它是以8031核构成的,所以它与MCS251系列单片机是兼容的,这对于熟悉MCS251系列的广大用户来说,用AT89系列单片机取代51系列进行系统设计是轻而易举的。

而AT89C2051又是AT89系列中一种更为廉价的单片机,作为一种小型测控系统或便携式智能仪器仪表的核心器件,其性能价格比优于MCS251系列。所不同的是它的引脚只有20根,比标准型的40根少得多,也即并行I/O端口较少。如何利用这较少的几根口线,连接成稳定可靠的L ED显示电路,就是以AT89C2051单片机为核心的应用电路所要解决的瓶颈问题。

本文采用了74LS164这个串入并出的移位寄存器,很好地解决了2051与L ED的显示接口电路。

硬件电路

2051余下的并行I/O口线不足8根,数据的并行输出已不可能,但可以考虑串行输出方法,图1给出串行口扩展的4位L ED显示接口电路。

该电路只使用2051的3个端口,配接4片串入并出移位寄存器74LS164与1片三端可调稳压器LM317T。其中74LS164的引脚Q0~Q7为8位并行输出端;引脚A、B为串性输入端;引脚CL K为时钟脉冲输入端,在CL K脉冲的上升沿作用下实现移位,在CL K=0、清除端M R=1时,74LS164保持原来数据状态;M R=0时,74LS164输出清零。

74LS164

其工作过程如下:2051的串行口设定在方式0移位寄存器状态下,串行数据由P3.0发送,移位时钟由P3.1送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入74LS164中。4片74LS164串级扩展为4个8位并行输出口,分别连接到4个L ED显示器的段选端作静态显示。需要指出的是,由于74LS164无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,造成不应显示的字段仍有较暗的亮度,影响了显示的效果。

以往的做法是在74LS164的输出端加接4片锁存器或三态门,使移位寄存器串行输入数据时其输出端的变化不反映到L ED上,待串行输入结束后再打开锁存器或三态门,将稳定的显示数据送给L ED。

本文电路的独特之处在于仅采用了1片三端可调稳压器LM317T,317T的3、2脚分别是电压输入、输出端,317T的1脚是电压调整端,脚2输出电压随脚1电压而变化。脚1与接地电阻之间并一个NPN三极管,它的基极受P1.7口线控制,串行输入时P1.7口线为高电平,三极管饱和导通使317T的脚1约为0.3 V,脚2输出电压随之下降到1.5 V不足以使共阳极L ED发光,故此时串行输入的影响不会反映到L ED上;串行输入结束后,使P1.7口线为低电平,三极管截止,脚2输出电压因脚1电压增高便上升到2.0 V使L ED正常发光。因此,1片三端可调稳压器LM317T起到了4片锁存器的作用使L ED显示不会闪烁。本电路的另一优点是通过可调电位器P1可在线调整脚2的输出电压,使L ED的显示亮度均匀可调,而且省掉了大量的L ED限流电阻。

软件编程

上述分析表明,移位寄存器74LS164仅有串入并出作用没有译码功能。因此,在编写显示驱动程序之前,首先需要计算列写出与本电路对应的LED段选码,然后由2051的P3.0口送入164的串行输入端,再并行输出到LED的段选端。

需要指出的是,本电路采用TOS28106BHK型号的共阳极LED显示器,根据PCB印制线路板的连线方便,其LED的8个段选端与164的并行输出口即8根段选线的连接没有遵照通常的规律,而是如图1所示的段排列为7、6、4、2、1、9、10、5,相应的段选码也要重新计算,如显示字符0的段选码为11H,显示字符1的段选码为D7H等。

另外,这种稳定的静态显示方式也省去了CPU的动态扫描过程,此为本电路的又一特点。

电路中设计了4位L ED显示器,其功能为:左首位为百位数或标志位,左二位为十位数,左三位为个位数,左四位为小数点后的十分位数。据此,给出如图2所示的显示子程序框图。

74LS164

显示子程序清单如下 :

DISI:

SETB P1. 7 ;灭显示

MOV R0 , # SBCD

MOV A , @R0 ;取出要显示的数

ADD A , # 2DH ;加上偏移量

MOVC A , @A + PC ;查表取出段选码

MOV SBUF ,A ;送出显示

DL1 : JNB TI ,DL1 ;输出完否 ?

CLR TI ;完 ,清中断标志

INC R0

MOV A , @R0

ADD A , # 21H

MOVC A , @A + PC

ANL A , # OEFH ;个位加小数点

MOV SBUF ,A

DL2 : JNB TI ,DL2

CLR TI

INC R0

MOV A , @R0

ADD A , # 13H

MOVC A , @A + PC

MOV SBUF ,A

DL3 : JNB TI ,DL3

CLR TI

MOV A , # 0FFH

MOV SBUF ,A

DL4 : JNB TI ,DL4

CLR TI

CLR P1. 7 ;亮显示

RET

SEGTAB : DB 11H ,0D7H ,32H

DB 92H ,0D4H ,98H

DB 18H ,0D3H ,10H ,0D0H

本串行口扩展的 L ED 显示接口电路已被笔者成功地应用到以 AT89C2051 单片机为核心的智能仪表中 ,如单片机湿度测量仪、单片机温度测量仪等。现场运行表明 ,L ED 显示清晰稳定不闪烁 ,特别是在现场环境如光照强弱不同的情况下 ,可以在线调整 L ED 发光的亮度 ,获得视觉与功耗的最佳效果。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分