电路图
动态数码管代码
1 //以下代码未经过验证
2 #include <reg52.h>
3
4 sbit WELA = P2^7;
5 sbit DULA = P2^6;
6 unsigned char count = 0;
7 unsigned char code_count = 0;
8 unsigned char code[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
9
10 void init()
11 {
12 WELA = 0;
13 DULA = 0;
14 P0 = 0x0;
15 }
16
17 void delay(unsigned int value)
18 {
19 while(value--);
20 }
21
22 int main()
23 {
24 init();
25
26 while (1) {
27 //位选 低电平有效
28 WELA = 1;
29 P0 = ~(0x1 << count);
30 WELA = 0;
31
32 //消影
33 P0 = 0x0;
34
35 //段选 高电平有效
36 DULA = 1;
37 P0 = code[code_count];
38 DULA = 0;
39
40 //消影
41 P0 = 0xff;
42
43 delay(50000); //500ms
44
45 count++;
46 if (count == 8) {
47 count = 0;
48 }
49 code_count++;
50 if (code_count == 16) {
51 code_count = 0;
52 }
53 }
54 }