#include <reg52.h>
sbit LED0=P1^0
unsigned int t=0,k
void dalay1ms (unsigned int i) //晶振选用11.0592
{
unsigned int j
for(ii>0i--)
for(j=922j>0j--)
}
void main ()
{
EA=1
ES=1
TMOD=0x20 //定时器T1方式为2
TH1=0xfa //波特率设定为9600
TL1=0xfa
while(1)
{
if(t!=0)
{
k=2000/t
dalay1ms (k)
LED0=!LED0
}
if(t==0)
LED0=0
}
}
void counter4(void) interrupt 4
{
while(RI==0)
RI = 0
t= SBUF
}
在多位LED显示时,为了简化电路,降低成本,节省系统资源,将所有升首尺的N位段选码并联在一吵高起,由一片74HC595控制。由于所有LED的段选码皆由一个74HC595并行输出口控制,因此,在每一瞬间,N位LED会显示相同的字符。想要每位显示不同的字符,就必须采用扫描的方法,即在每一瞬间只使用一位显示字符。在此瞬间,74HC595并行输出口输出相应字符段选码,而位选则控制I/O口在该显示位送入选通电平,以保证该位显示相应字符。如此轮流,使每位分时显示该位应显示字符。由于74HC595具有锁存功能,而且串行输入段选码需要一定时间,因此,不需要延时,即可形成视觉暂留效果。N位LED显示时,只需要一片74HC595即可完成,成本芹铅最低实践证明,此多位LED显示方法性能稳定,如再级联一片74HC595,在不需要增加I/O口线的情况下,即可实现32位LED显示。笔者做过48位LED显示,应稳定可靠。详情请上 http://molihong.cn/rjyv/30145.html欢迎分享,转载请注明来源:内存溢出
评论列表(0条)