2018-10-25

2018-10-25  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读