♩♪♫♬點進來你就知道什麼回事,每一次遇見都是你的幸運♩♪♫♬ ...
數位管電路原理圖
硬體實現原理
1.電路分析
首先通過M74HC573MIR鎖存器鎖存數據,首先通過Y7C使能端輸出段碼,Y6C使能端輸出位碼,這裡的電阻起到限流的作用。
2.數位管分析
共陽(陰)數位管:每個數位管都是有八個二極體構成的,所以二極體的陽(陰)極是共用的而且連高(低)電平就共陽(陰)數位管。
段碼顯示:段碼顯示最高位從dp(h)->g->f->e->d->c->b->a。共陰數位管點亮的二極體位置為1,構成的二進位數轉換成十六進位數。
代碼實現
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 }