第十九课--Microduino 两位数码管静态显示/zh
目的本教程将教大家如何用Microduino测量两位数码管引脚,并用两位数码管显示一个两位数 设备
原理图引脚表
程序byte digit0 = 10; //十位数Microduino pin
byte digit1 = 11; //个位数Microduino pin
byte dotPin = 2; //数码管小数点对应的pin
byte sevenSegmentPins[] = {2,3,4,5,6,7,8}; //A,B,C,D,E,F,G 对应的Microduino pin
byte sevenSegment[10][7] =
{
//a b c d e f g
{ 0,0,0,0,0,0,1 }, // = 0
{ 1,0,0,1,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 0,0,0,0,1,1,0 }, // = 3
{ 1,0,0,1,1,0,0 }, // = 4
{ 0,1,0,0,1,0,0 }, // = 5
{ 0,1,0,0,0,0,0 }, // = 6
{ 0,0,0,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 0,0,0,1,1,0,0 } // = 9
};
void setup()
{
//初始化全部亮起
pinMode(dotPin, OUTPUT); //pin 2
pinMode(digit0, OUTPUT); //pin 10
pinMode(digit1, OUTPUT); //pin 11
for(int i=0; i<7; i++)
{
pinMode(sevenSegmentPins[i], OUTPUT);
}
digitalWrite(dotPin, HIGH);
digitalWrite(digit0, HIGH);
digitalWrite(digit1, HIGH);
}
//显示数字
void segmentWrite(byte digit)
{
byte pin = 2;
for (byte i=0; i<7; ++i)
{
digitalWrite(pin, sevenSegment[digit][i]);
++pin;
}
}
void loop()
{
//显示 68
digitalWrite(digit0, LOW); //熄灭十位数码管
segmentWrite(8); //显示个位8
delay(10); //10ms 延迟
digitalWrite(digit0, HIGH); //点亮十位数码管
digitalWrite(digit1, LOW); //熄灭个位数码管
segmentWrite(6); //显示十位6
delay(10); //10ms 延迟
digitalWrite(digit1, HIGH); //点亮个位数码管
}
调试步骤一:首先我们要知道我们手头拿着的这个二位数码管的引脚是如何定义的,不同厂家的定义都有可能不同的,不要猜测。如何测量数码管引脚呢? 和一位数码管一样,所有数码管都分共阴(8个LED的阴极共用一个引脚),共阳(8个LED的阳极共用一个引脚),所以两位数码管就有两个共阴/共阳引脚。 多数二位数码管引脚如下图所示: 找共阴和共阳 首先,我们找个电源(3到5伏)和1个1K(几百的也欧的也行)的电阻, VCC串接个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的找到一个就够了,然后用GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阴的了。 相反用VCC不动,GND逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阳的了。 可以利用万用表或者3v电池来进行观察检测,两位数码管分位选跟段选,应该有十个引脚,只要万用表或3V电池的一个脚放置于位选端,另一脚放置于段选端检测就可以了 由于我手头既没有3V/5V之类的电池,也没有万用表,所以就拍了一个用Microduino来测数码管引脚的视频,请看视频部分。 步骤二:把代码复制到IDE中,编译 步骤三:电路连接,我们用两位共阳数码管电路图照片如下: 步骤四:运行代码 步骤五:看数码管显示 结果数码管会显示数字68. 视频 |