前言
平时使用数码管时为了避免使用跳线往往不会按照顺序焊接数码管的段选引脚,为了焊接的方便段选引脚可能会焊接的乱七八糟的,此时标准的段码表就用不了了,需要重新去计算。因为在焊接时为了考虑布线可能每次焊的顺序都会有不同,那么每次都要去计算就太麻烦了,所以就想到用C写一个程序可以根据输入段码对应的引脚顺序后自动输出与之对应的段码表。
C代码
1 #include<stdio.h>
2 /*
3 a
4 ______
5 | |
6 f | | b
7 | g |
8 ------
9 | |
10 e | | c
11 | |
12 ------ .
13 d h
14 */
15 int Data_[8]={0};
16
17 unsigned char Encoding(char *dat) // abc defg h (a = 97 )
18 {
19 unsigned char j=0;
20 while(*dat)
21 {
22 j |= (0x01<<(Data_[*dat-97]-1));
23 //printf("%d\n",Data_[*dat-97]-1);
24 dat++;
25 }
26 return j;
27 }
28
29 void main(void)
30 {
31 unsigned char Cathode[10]={0},i=0,j=0;
32 printf("请输入数码管a-g字段的对应的位数:");
33 for(i=0;i<8;i++)
34 {
35 scanf("%d",&Data_[i]);
36 }
37
38 Cathode[0] = Encoding("abcdef"); // ' 0 '
39 Cathode[1] = Encoding("bc"); // ' 1 '
40 Cathode[2] = Encoding("abged"); // ' 2 '
41 Cathode[3] = Encoding("abcdg"); // ' 3 '
42 Cathode[4] = Encoding("fgbc"); // ' 4 '
43 Cathode[5] = Encoding("afgcd"); // ' 5 '
44 Cathode[6] = Encoding("acdefg"); // ' 6 '
45 Cathode[7] = Encoding("abc"); // ' 7 '
46 Cathode[8] = Encoding("abcdefg");// ' 8 '
47 Cathode[9] = Encoding("abcdfg"); // ' 9 '
48
49
50 printf("共阴极数码管0~9的段码:");
51 for(i=0;i<10;i++)
52 printf("0x%02x,",Cathode[i]);
53 printf("\n\r");
54
55
56 printf("共阳极数码管0~9的段码:");
57 for(i=0;i<10;i++)
58 {
59 j = ~Cathode[i];
60 printf("0x%02x,",j);
61 }
62 printf("\n\r");
63
64 }
运行结果:
测试:
输入正常顺序的段码引脚检查输出的断码表发现都是正确的。