LED流水灯和数码管该如何去用锁存呢?

2019-07-15 21:51发布

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar num,temp,aa;
sbit dula = P1^0;//数码管段控制
sbit wela = P1^1;//数码管位控制
sbit Leden=P1^2;//LED灯控制端  
sbit Line=P1^3;//点阵行控制端
uchar code table[]={
0X3f,0X06,0X5b,0x4f
,0x66,0x6d,0x7d,0x7f
,0x6f,0x77,0x7c,0x39
,0x5e,0x79,0x71,0x00};
void choose();
void delay(uint z);
void main()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
num=0;
aa=0;
choose();
P0=temp;
    temp=0xfe;  
Leden=0;
    wela=1;
P0=0x00;
wela=0;
dula=1;
P0=table[0];
dula=0;
    while(1)
   {
   Leden=1;
   P0=temp;  
   delay(1000);
   temp=_crol_(temp,1);
   Leden=0;
   }      
   
}
  
void choose()
{  
  Line=1;  
P0=0X00;
Line=0;  
/* wela=1;
P0=0xff;
wela=0;      */
Leden=1;
P0=0xff;
Leden=0;     
  }
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
  if(aa==20)
    {
     aa=0;
     num++;
        if(num==16)
      {
       num=0;
      }
     dula=1;
     P0=table[num];
     dula=0;   
           
   }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
冰葑世纪
1楼-- · 2019-07-15 22:27
看程序就头疼。
锁艺人
2楼-- · 2019-07-15 23:35
资源很好。学习51中的朋友们值得一看。记得转存,别等连接失效了。
ren972990934
3楼-- · 2019-07-16 01:41
 精彩回答 2  元偷偷看……
单兵行动
4楼-- · 2019-07-16 05:24
51本身就具有锁存功能,这个不用去考虑它。。。
pusa
5楼-- · 2019-07-16 08:25
锁存器很好用的啊。假如你的是P1口接两个锁存器,锁存器1接流水灯,锁存器2接数码管。当流水灯的值要换时打开锁存器1,关闭锁存器2,对P1口赋值,然后关闭锁存器1

一周热门 更多>