TSDJSW 发表于 2015-1-9 17:51:24

终于感觉学有所用了《算单片机的点亮数码管的16进制数》

学习小甲鱼老师视频也有很多天了,今天在学习单片机点亮7段数码管的时候要先选择数码管要亮的灯(数码管一共有a.b.c.d.e.f.g.h个极) 选好灯后要化为二进制数再化为十六进制数   比如    让数码管显示1 就是b.c两极点亮二进制比特流就是0000 0110   要输出的十六进制是 0x06算一两个还行要是算1—16那就要算头晕了于是想到用c编写一个程序让计算机来帮我解决,于是就写出了这么个东西(输入a到h就可以得到相应的答案,h是dp端 随意选择是否点亮):
http://pan.baidu.com/s/1gds0ccb 弄好的成品
#include <stdio.h>

void main()
{
        while(1)
        {
                int i,x;
                int ZZ={0,0,0,0,0,0,0,0};
                char ch;

                printf("\n请输入数码管想要亮的字母 : ");
                ch = getchar();
                while(ch != '\n')
                {
                        if(ch>='a' && ch<='h')
                        {
                                if(ch == 'a')
                                {
                                        ZZ = 1;
                                }
                                if(ch == 'b')
                                {
                                        ZZ = 1;
                                }
                                if(ch == 'c')
                                {
                                        ZZ = 1;
                                }
                                if(ch == 'd')
                                {
                                        ZZ = 1;
                                }
                                if(ch == 'e')
                                {
                                        ZZ = 1;
                                }
                                if(ch == 'f')
                                {
                                        ZZ = 1;
                                }
                                if(ch == 'g')
                                {
                                        ZZ = 1;
                                }
                                if(ch == 'h')
                                {
                                        ZZ = 1;
                                }
                               
                        }
                        else
                        {
                                printf("对不起您的输入有误,请重新输入!\n");
                                return;
                        }
                        ch = getchar();
                }

                printf("二进制数为 : ");
                for(i=7 ; i>=0 ; i--)
                {
                        printf("%d",ZZ);
                        if(i == 4)
                        {
                                printf(" ");
                        }
                }
               
                x=ZZ + ZZ*2 + ZZ*4 + ZZ*8 + ZZ*16 + ZZ*32 + ZZ*64 + ZZ*128;
                if(x <= 16)
                {
                        printf("       十六进制数为 : 0x0%X\n",x);
                }
                else
                {
                        printf("       十六进制数为 : 0x%X\n",x);
                }
       
        }
}



页: [1]
查看完整版本: 终于感觉学有所用了《算单片机的点亮数码管的16进制数》