led流水灯 动态数码管 52单片机

#include "reg52.h"			 
#include<intrins.h>		
void delay(int i)
{
	while(i--);	
}
void main()
{
	char i;
	led=0xfe;
	delay(50000); 	
	while(1)
	{	
		for(i=0;i<7;i++)	 
		{
			P2=_crol_(P2,1);
			delay(50000); 	
		}
		for(i=0;i<7;i++)			
		{
			P2=_crled_(P2,1);
			delay(50000); 	
		}	
	}		
}

  

 1 #include "reg52.h"             
 2 sbit LSA=P2^2;
 3 sbit LSB=P2^3;
 4 sbit LSC=P2^4;
 5 u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
 6                     0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
 7 void delay(int i)
 8 {
 9     while(i--);    
10 }
11 void DigDisplay()
12 {
13     char i;
14     for(i=0;i<8;i++)
15     {
16         switch(i)     //位选,选择点亮的数码管,
17         {
18             case(0):
19                 LSA=0;LSB=0;LSC=0; break;//显示第0位
20             case(1):
21                 LSA=1;LSB=0;LSC=0; break;//显示第1位
22             case(2):
23                 LSA=0;LSB=1;LSC=0; break;//显示第2位
24             case(3):
25                 LSA=1;LSB=1;LSC=0; break;//显示第3位
26             case(4):
27                 LSA=0;LSB=0;LSC=1; break;//显示第4位
28             case(5):
29                 LSA=1;LSB=0;LSC=1; break;//显示第5位
30             case(6):
31                 LSA=0;LSB=1;LSC=1; break;//显示第6位
32             case(7):
33                 LSA=1;LSB=1;LSC=1; break;//显示第7位    
34         }
35         P0=smgduan[i];//发送段码
36         delay(100); //间隔一段时间扫描    
37         P0=0x00;//消隐
38     }
39 }
40 
41 void main()
42 {    
43     while(1)
44     {    
45         DigDisplay();  //数码管显示函数    
46     }        
47 }

猜你喜欢

转载自www.cnblogs.com/mawenqi-barry/p/9789088.html