新闻  |   论坛  |   博客  |   在线研讨会
利用单片机串口实现多个LED的显示
szyth | 2008-08-15 10:38:31    阅读:2973   发布文章

利用89051单片机串行口和74LSi64移位寄存器实规多个LED显示的一种方法.利用该方法设计的多路LED显示系统具有硬件结构简单、软件编程容易和价格低廉等特点。

关键词:单片机;串行口;LED显示;89C51

在单片机系统中,数码管(LED)是一种常用的显示器。一般的显示器为4位或8位,实现这种显示的方法比较多,也比较简单。但是,对于多个LED显示,由于单片机本身提供的1/O口有限,就必须采取必要的措施才能实现。本文介绍一种设计方法,利用该方法设计的多路LED显示系统具有硬件结构简单,软件编程方便,价格低廉等特点,经常应用在车站、银行的显示屏中,效果很好。

1硬件电路的设计

    AT89C51单片机是美国ATMEL公司生产的51系列单片机,应用广泛。89051单片机串行口除了可用于串行通讯,它在方式0状态下,还可以扩展并行I/O口,能够实现多个LED显示,其硬件原理如图1所示。其中,74LS1648位串入并出移位寄存器,可以级连使用二LED采用LG5011AG型共阴极数码管。

其中的74L5164引脚功能为;QO-Q7并行输出端;A,   B串行输入端;CR清除端,低电平时输出端清零;CLK时钟脉冲输入端,在脉冲的上升沿实现移.位,当CLK=0CR=1时,74LS164保持原有的数据状态。

2时序分析

    89051单片机复位时,串行口为方式0状态,即工作在移位寄存器方式,TXD作同步移位脉冲,RXD作数据端;发送/接受8位数据,低位在前,高位在后;时钟速率为单片机晶振频率的十二分之一。单片机执行MOV SBUF,A指令的S6P2.出现写SBUF信号。一个机器周期后,TXD输出移位脉冲,RXD同步串行发送SBUF中的数据。每个机器周期TXD发送一个移位脉冲,每个移位脉冲RXD发送一位数据。发送完8位数据后自动置TI1,请求中断。时序如图2‑

第一个74LS164把第一帧数据并行输出,LED1显示该数据.然后,在中断服务程序中用软件将竹清零,发送第二帧数据。第二帧数据发送完毕,LED1显示第二帧数据,第一帧数据串行输入给第二个74LS164;LED2显示第一帧数据,以此类推。

 

3参考程序

    电路如图1所示,驱动10LED循环显示数字0-9(每秒移动一位)的部分参考程序如下:

    主程序为:

    START:MOV SP,#30H

    MOV TMOD ,#01H;定时器0方式1

    MOV TLO,#OOH

    MOV THO,#4BH;初值,定时SOms

    MOV R0,#OOH

    MOV TIMER,#20

    MOV SCON,#OOH;串口的工作方式0

CLR TI

CLR RI;清发送接受标志位

SETB TRO;启动定时

SETB ETO;开中断

SETB EA

S1MP$

中断服务程序:

INTTO:PUSH ACC

PUSH PSW

CLR EA

CLR TRO

MOV TLO,#OOH

MOV THO,#4BH

SETB TRO   

DJNZ TIMER,EXIT

    MOV TIMER,#20

    MOV DPTR,#TABLE

    MOV A,RO

    MOVC A,@A+DPTR

    CLR TI

    MOV SBUF ,A

    INC RO

    CJNE R0,#OAH,EXTT

    MOV R0,#OOH

    TABLE:DB OCOH,OF9HA4H,OBOH,99H,92H‑82H,OF8H,80H,90H

END

4结束语

    采用74LS164驱动多个LED,有效地解决了动态显示需要CPU时刻对显示器进行数据刷新。显示数据有闪烁感,占用的CPU时间多的弊端。其不足之处是使用硬件电路较多,并且速度慢,所以适用于速度要求不是很快的场合

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客