在单片机系统中,数码管(LED)是一种常用的显示器。一般的显示器为4位或8位,实现这种显示的方法比较多,也比较简单。但是,对于多个LED显示,由于单片机本身提供的1/O口有限,就必须采取必要的措施才能实现。本文介绍一种设计方法,利用该方法设计的多路LED显示系统具有硬件结构简单,软件编程方便,价格低廉等特点,经常应用在车站、银行的显示屏中,效果很好。
1硬件电路的设计
AT
其中的
2时序分析
当89051单片机复位时,串行口为方式0状态,即工作在移位寄存器方式,TXD作同步移位脉冲,RXD作数据端;发送/接受8位数据,低位在前,高位在后;时钟速率为单片机晶振频率的十二分之一。单片机执行MOV SBUF,A指令的S6P2时.出现写SBUF信号。一个机器周期后,TXD输出移位脉冲,RXD同步串行发送SBUF中的数据。每个机器周期TXD发送一个移位脉冲,每个移位脉冲RXD发送一位数据。发送完8位数据后自动置TI为1,请求中断。时序如图2‑
第一个74LS164把第一帧数据并行输出,LED1显示该数据.然后,在中断服务程序中用软件将竹清零,发送第二帧数据。第二帧数据发送完毕,LED1显示第二帧数据,第一帧数据串行输入给第二个74LS164;LED2显示第一帧数据,以此类推。
3参考程序
电路如图1所示,
驱动10个LED循环显示数字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,OF9H旧A4H,OBOH,99H,92H‑82H,OF8H,80H,90H
END
4结束语
采用74LS164驱动多个LED,有效地解决了动态显示需要CPU时刻对显示器进行数据刷新。显示数据有闪烁感,占用的CPU时间多的弊端。其不足之处是使用硬件电路较多,并且速度慢,所以适用于速度要求不是很快的场合。.
参考文献
[1]傅扬烈.单片机原理与应用教程[M]电子工业出版社,2002.
[2]何立民.单片机应用系统设计[M]一北京航空航天大学.2000.
关键字:单片机 串行口 LED显示 89C51『本文转载自网络,版权归原作者所有,如有侵权请联系删除』