美文网首页
2018-10-25

2018-10-25

作者: 疋瓞 | 来源:发表于2018-10-25 15:08 被阅读0次


    今天来实现一下数码管的显示:

    原理:


    数码管分为共阴和共阳两种,主要看公共端。废话不多说,现在以共阴数码管为例直接贴程序:

    int pinDigitron = 2; //管脚D2连接到数码管的A脚,D3连B... D9连h

    void setup() { for(int x=0; x<8; x++)

     pinMode(pinDigitron+x, OUTPUT); //设置各脚为输出状态 } //在数码管中显示数字的函数

    void displayDigit(unsigned char digit) { //定义一个数组表:不同数字的abcdefgh各段的取值 unsigned char abcdefgh[][8] = {

     {1,1,1,1,1,1,0,0}, //0

     {0,1,1,0,0,0,0,0}, //1

    {1,1,0,1,1,0,1,0}, //2

    {1,1,1,1,0,0,1,0}, //3

    {0,1,1,0,0,1,1,0}, //4

    {1,0,1,1,0,1,1,0}, //5

    {1,0,1,1,1,1,1,0}, //6

    {1,1,1,0,0,0,0,0}, //7

    {1,1,1,1,1,1,1,0}, //8

    {1,1,1,1,0,1,1,0}, //9

    {1,1,1,0,1,1,1,0}, //A

    {0,0,1,1,1,1,1,0}, //b

    {1,0,0,1,1,1,0,0}, //C

    {0,1,1,1,1,0,1,0}, //d

    {1,0,0,1,1,1,1,0}, //E

    {1,0,0,0,1,1,1,0}, //F

    };

    if ( digit >= 16 ) return;

    for (unsigned char x=0; x<8; x++)

    digitalWrite( pinDigitron + x, abcdefgh[digit][x] ); //直接给对应端口输入对应的二进制数值即可

    }

    void loop()

     {

    //在数码管中显示0-9,A-F各个数字

     for (int x=0; x<16; x++)

    {

     displayDigit(x); //调用displayDigit()子函数,显示数字

     delay(1000); //等待1000毫秒

     }

    }

    运行效果:数码管每隔一秒显示一个数字, 从0到9, 再从A到F

    相关文章

      网友评论

          本文标题:2018-10-25

          本文链接:https://www.haomeiwen.com/subject/mwzqtqtx.html