使用C计算数码管段码

前言

        平时使用数码管时为了避免使用跳线往往不会按照顺序焊接数码管的段选引脚,为了焊接的方便段选引脚可能会焊接的乱七八糟的,此时标准的段码表就用不了了,需要重新去计算。因为在焊接时为了考虑布线可能每次焊的顺序都会有不同,那么每次都要去计算就太麻烦了,所以就想到用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 }

运行结果:

测试:

     输入正常顺序的段码引脚检查输出的断码表发现都是正确的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值