电脑,windows系统
零知开发板
micro-usb线
4位数码管一个(共阴)
220Ω 电阻8个
面包板一个+若干跳线
1、打开零知实验室软件开发工具,然后新建项目,输入以下代码:
2、按照之前的方式先【编译】,然后【上传】到开发板中。
3、特别说明:数码管分共阳和共阴两种,如下代码对应的是共阴数码管。
/**
* 文件: 数码管-4位.ino by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
* -- 零知开源,让电子制作变得更简单! --
* 时间: 2018/06/26 19:23
* 说明: 4位数码管显示
**/
//设置阴极接口,用于显示数字
int a = 13;
int b = 3;
int c = 6;
int d = 10;
int e = 11;
int f = 0;
int g = 5;
int h = 9;
//设置阳极接口,用于控制4位数码管第几位进行显示数字
int d4 = 4;
int d3 = 2;
int d2 = 1;
int d1 = 12;
//设置变量
long n = 1230;
int x = 100;
int del = 55; //此处数值对时钟进行微调
void Display(unsigned char x, unsigned char Number);//显示功能函数
void setup() {
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(h, OUTPUT);
}
void loop() {
Display(1,5);
Display(2,2);
Display(3,0);
Display(4,2);
}
void WeiXuan(unsigned char n) //此处函数用于控制数码管的第几位进行显示
{
switch(n)
{
case 1:
digitalWrite(d1, LOW);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 2:
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 3:
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, LOW);
digitalWrite(d4, HIGH);
break;
case 4:
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, LOW);
break;
default :
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
}
}
void Num_0() //显示数字0
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(h, HIGH);
}
void Num_1() //显示数字1
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(h, HIGH);
}
void Num_2() //显示数字2
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(h, HIGH);
}
void Num_3() //显示数字3
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(h, HIGH);
}
void Num_4() //显示数字4
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(h, HIGH);
}
void Num_5() //显示数字5
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(h, HIGH);
}
void Num_6() //显示数字6
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(h, HIGH);
}
void Num_7() //显示数字7
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(h, HIGH);
}
void Num_8() //显示数字8
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(h, HIGH);
}
void Num_9() //显示数字9
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(h, HIGH);
}
void Clear() //清屏
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(h, LOW);
}
void pickNumber(unsigned char n) //判断应该显示哪个数字,并调用相关的数字显示函数进行显示
{
switch(n)
{
case 0:Num_0();
break;
case 1:Num_1();
break;
case 2:Num_2();
break;
case 3:Num_3();
break;
case 4:Num_4();
break;
case 5:Num_5();
break;
case 6:Num_6();
break;
case 7:Num_7();
break;
case 8:Num_8();
break;
case 9:Num_9();
break;
default:Clear();
break;
}
}
void Display(unsigned char x, unsigned char Number)
{
WeiXuan(x);
pickNumber(Number);
delay(1);
/*此处若不设置的延时,将会马上执行clear()函数清屏,导致无法正常显示数字。另由于4位数码管是由函数控
制其逐位显示的若延时设置稍大,例如10,将明显看到数码管闪烁,有兴趣可以设置不同延时查看效果 */
Clear() ;
}
上面步骤成功完成后,我们就可以看到预期的结果了,可以看到显示“5202”数字,如下: