微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LED流水灯和数码管该如何去用锁存呢?

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

时间:10-02 整理:3721RD 点击:
#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;   
           
   }
}

看程序就头疼。

资源很好。学习51中的朋友们值得一看。记得转存,别等连接失效了。

什么情况!                                 

51本身就具有锁存功能,这个不用去考虑它。

锁存器很好用的啊。假如你的是P1口接两个锁存器,锁存器1接流水灯,锁存器2接数码管。当流水灯的值要换时打开锁存器1,关闭锁存器2,对P1口赋值,然后关闭锁存器1

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top