51单片机_数码管

 1 /**************************************************************************************                                                                                
 2 *                      动态数码管显示实验                                                  *                        
 3 实现现象:下载程序后数码管从右至左显示0-7。                                                                                
 4 注意事项:如果不想让点阵模块显示,可以将74HC595模块上的JP595短接片拔掉。                                                                                  
 5 ***************************************************************************************/                                                                                
 6                                                                                 
 7 #include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器                            
 8 typedef unsigned int u16;      //对数据类型进行声明定义                                                                            
 9 typedef unsigned char u8;                                                                
10 sbit LSA=P2^2;                                                                                
11 sbit LSB=P2^3;                                                                                
12 sbit LSC=P2^4;                                                                                
13                             
14 u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,                                                                                
15                     0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值                                                            
16                                                                                 
17 /*******************************************************************************                                                                                
18 * 函 数 名         : delay                                                                                
19 * 函数功能           : 延时函数,i=1时,大约延时10us                                                                        
20 *******************************************************************************/                                                                                
21 void delay(u16 i)                                                                                
22 {                                                                                
23     while(i--);                                                                            
24 }                                                                                
25                                 
26 /*******************************************************************************                                                                                
27 * 函 数 名         : DigDisplay                                                                                
28 * 函数功能           : 数码管动态扫描函数,循环扫描8个数码管显示                                                                        
29 *******************************************************************************/                                                                                
30 void DigDisplay()                                                                                
31 {                                                                                
32     u8 i;                                                                            
33     for(i=0;i<8;i++)                                                                            
34     {                                                                            
35         switch(i)     //位选,选择点亮的数码管,                                                                    
36         {                                                                        
37             case(0):                                                                    
38                 LSA=0;LSB=0;LSC=0; break;//显示第0位                                                                
39             case(1):                                                                    
40                 LSA=1;LSB=0;LSC=0; break;//显示第1位                                                                
41             case(2):                                                                    
42                 LSA=0;LSB=1;LSC=0; break;//显示第2位                                                                
43             case(3):                                                                    
44                 LSA=1;LSB=1;LSC=0; break;//显示第3位                                                                
45             case(4):                                                                    
46                 LSA=0;LSB=0;LSC=1; break;//显示第4位                                                                
47             case(5):                                                                    
48                 LSA=1;LSB=0;LSC=1; break;//显示第5位                                                                
49             case(6):                                                                    
50                 LSA=0;LSB=1;LSC=1; break;//显示第6位                                                                
51             case(7):                                                                    
52                 LSA=1;LSB=1;LSC=1; break;//显示第7位                                                                
53         }                                                                        
54         P0=smgduan[i];//发送段码                                                                        
55         delay(100); //间隔一段时间扫描                                                                        
56         P0=0x00;//消隐                                                                        
57     }                                                                            
58 }                                                                                
59                                                                                 
60 /*******************************************************************************                                                                                
61 * 函 数 名       : main                                                                                
62 * 函数功能         : 主函数                                                                        
63 * 输    入       : 无                                                                                
64 * 输    出         : 无                                                                            
65 *******************************************************************************/                                                                                
66 void main()                                                                                
67 {                                                                                
68     while(1)                                                                            
69     {                                                                            
70         DigDisplay();  //数码管显示函数                                                                        
71     }                                                                            
72 }                                                                                

猜你喜欢

转载自www.cnblogs.com/clam-hao/p/10075890.html