循环显示8位数码管
循环显示8位数码管先看演示视频吧。
http://v.youku.com/v_show/id_XNDQ3MDIwMzIwNA==.html?x&sharefrom=android&sharekey=77da7b7c05db316154f03f3fff88852c1
1. 本次实验的是一位共阳数码管。8位数码管由7根棒状led(拼接数字)和一个led灯(拼接小数点)组成。通过分别控制8颗led灯的明灭,来显示不同的数字。
2. 先借Jane的图说明一下连线(https://mc.dfrobot.com.cn/thread-2539-1-1.html)
a,b,c,d,e,f,g,DP,分别连接2-9数字针脚,+接开发板的10针脚,我只接了一个+
3.使用数组,初始化0-9每个数字需要点亮的LED管,比如,数字1,只需将b和c管设置为0,其他管设置为1即可。因此,数字1的数组是{1,0,0,1,1,1,1,1}。其他数字同理。
int num0 = {0,0,0,0,0,0,1,1};
int num1 = {1,0,0,1,1,1,1,1};
int num2 = {0,0,1,0,0,1,0,1};
int num3 = {0,0,0,0,1,1,0,1};
int num4 = {1,0,0,1,1,0,0,1};
int num5 = {0,1,0,0,1,0,0,1};
int num6 = {0,1,0,0,0,0,0,1};
int num7 = {0,0,0,1,1,1,1,1};
int num8 = {0,0,0,0,0,0,0,1};
int num9 = {0,0,0,0,1,0,0,1};
4. 初始化针脚模式
void setup() {
for(int i=2;i<=10;i++)
pinMode(i,OUTPUT);
}
5. 接下来就是循环显示出各个数字了。
void loop() {
digitalWrite(10,1);
for(int i=2;i<=9;i++)
digitalWrite(i,num0);
delay(1000);
for(int i=2;i<=9;i++)
digitalWrite(i,num1);
delay(1000);
for(int i=2;i<=9;i++)
digitalWrite(i,num2);
delay(1000);
for(int i=2;i<=9;i++)
digitalWrite(i,num3);
delay(1000);
for(int i=2;i<=9;i++)
digitalWrite(i,num4);
delay(1000);
for(int i=2;i<=9;i++)
digitalWrite(i,num5);
delay(1000);
for(int i=2;i<=9;i++)
digitalWrite(i,num6);
delay(1000);
for(int i=2;i<=9;i++)
digitalWrite(i,num7);
delay(1000);
for(int i=2;i<=9;i++)
digitalWrite(i,num8);
delay(1000);
for(int i=2;i<=9;i++)
digitalWrite(i,num9);
delay(1000);
}
6. 进阶,封装函数
//共阳八段数码管(含小数点),各数字定义,0亮,1灭
int num={
{0,0,0,0,0,0,1,1},
{1,0,0,1,1,1,1,1},
{0,0,1,0,0,1,0,1},
{0,0,0,0,1,1,0,1},
{1,0,0,1,1,0,0,1},
{0,1,0,0,1,0,0,1},
{0,1,0,0,0,0,0,1},
{0,0,0,1,1,1,1,1},
{0,0,0,0,0,0,0,1},
{0,0,0,0,1,0,0,1}
};
void ShowNum(int x,int y);//x显示的数字,y显示的秒数
void setup() {
// put your setup code here, to run once:
for(int i=2;i<=10;i++)
pinMode(i,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(10,1);
ShowNum(8,3000);
}
void ShowNum(int x,int y)
{
for(int i=2;i<=9;i++)
digitalWrite(i,num);
delay(y);
}
7.附件,完整代码
支持支持 厉害,可以利用到很多地方
页:
[1]