共阴数码管静态显示

数码管电路原理图

 

硬件实现原理

1.电路分析spa

首先经过M74HC573MIR锁存器锁存数据,首先经过Y7C使能端输出段码,Y6C使能端输出位码,这里的电阻起到限流的做用。code

 

2.数码管分析blog

共阳(阴)数码管:每一个数码管都是有八个二极管构成的,因此二极管的阳(阴)极是共用的并且连高(低)电平就共阳(阴)数码管。it

段码显示:段码显示最高位从dp(h)->g->f->e->d->c->b->a。共阴数码管点亮的二极管位置为1,构成的二进制数转换成十六进制数。class

 

代码实现

 1 #include "reg52.h"
 2 
 3 typedef unsigned int u16;  4 typedef unsigned char u8;  5 
 6 /*u8 code smgduan[18]=  7  {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,  8  0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};*/ //共阳
 9          
10 u8 code smgduan[18]=
11         {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 12          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 13 
14 void delay(u16 i) 15 { 16     while(i--); 17     while(i--); 18 } 19          
20 void HC138Init(u8 i) 21 { 22     switch(i) 23  { 24         case 4: 25             P2 = (P2 & 0x1f) | 0x80; 26         break; 27         
28         case 5: 29             P2 = (P2 & 0x1f) | 0xa0; 30         break; 31         
32         case 6: 33             P2= (P2 & 0x1f) | 0xc0; 34         break; 35         
36         case 7: 37             P2 = (P2 & 0x1f) | 0xe0; 38             
39  } 40 } 41 
42 void Display(u8 dat,unsigned pos) 43 { 44     HC138Init(6); // 数码管的位置
45     P0 = 0x01 << pos; 46     HC138Init(7); // 数码管的内容
47     P0 = dat; 48 } 49 
50 void DigDisplay() 51 { 52  u8 i,j; 53     for(i=0;i<8;i++) 54  { 55         for(j=0;j<10;j++) 56  { 57  Display(smgduan[j],i); 58             delay(60000); 59  } 60  } 61     for(j=0;j<16;j++) 62  { 63         HC138Init(6); 64         P0 = 0xff; 65         HC138Init(7); 66         P0 = smgduan[j]; 67         delay(60000); 68  } 69     
70 } 71 
72 void main() 73 { 74     while(1) 75  { 76  DigDisplay(); 77  }   
78 }
相关文章
相关标签/搜索