数码管动态扫描
int a=7;int b=13;
int c=12;
int d=10;
int e=11;
int f=6;
int g=9;
int dp=8;
int led_1=2;
int led_2=3;
const byte pins={7,13,12,10,11,6,9,8};//a,b,c,d,e,f,g,dp
const byte digits9 = { 0,0,0,0,1,0,0,1 }; // = 9
const byte digits8 = { 0,0,0,0,0,0,0,1 }; // = 8
const byte digits7 = { 0,0,0,1,1,1,1,1 }; // = 7
const byte digits6 = { 0,1,0,0,0,0,0,1 }; // = 6
const byte digits5 = { 0,1,0,0,1,0,0,1 }; // = 5
const byte digits4 = { 1,0,0,1,1,0,0,1 }; // = 4
const byte digits3 = { 0,0,0,0,1,1,0,1 }; // = 3
const byte digits2 = { 0,0,1,0,0,1,0,1 }; // = 2
const byte digits1 = { 1,0,0,1,1,1,1,1 };// = 1
const byte digits0 = { 0,0,0,0,0,0,1,1 }; // = 0
void setup()
{
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
}
int i=0;
int j=0;
int t=0;
void loop()
{
digitalWrite(led_1,1);
digitalWrite(led_2,0);
t++; //十位的数字显示
if(t<1000)
{
display9();
}else if(t<2000){
display8();
}else if(t<3000){
display7();
}else if(t<4000){
display6();
}else if(t<5000){
display5();
}else if(t<6000){
display4();
}else if(t<7000){
display3();
}else if(t<8000){
display2();
}else if(t<9000){
display1();
}else if(t<10000){
display0();
}else if(t<110000){
t=0;
}
delay(10);
digitalWrite(led_1,0); //个位的数字显示
digitalWrite(led_2,1);
j++;
if(j<100)
{
display9();
}else if(j<100){
display8();
}else if(j<300){
display7();
}else if(j<400){
display6();
}else if(j<500){
display5();
}else if(j<600){
display4();
}else if(j<700){
display3();
}else if(j<800){
display2();
}else if(j<900){
display1();
}else if(j<1000){
display0();
}else if(j<1100){
j=0;
}
}
void display9(){ //显示数字9
for(int k=0;k<8;k++)
digitalWrite(pins,digits9);
delay(2);
}
void display8(){ //显示数字8
for(int k=0;k<8;k++)
digitalWrite(pins,digits8);
delay(2);
}
void display7(){ //显示数字7
for(int k=0;k<8;k++)
digitalWrite(pins,digits7);
delay(2);
}
void display6(){ // 显示数字6
for(int k=0;k<8;k++)
digitalWrite(pins,digits6);
delay(2);
}
void display5(){ //显示数字5
for(int k=0;k<8;k++)
digitalWrite(pins,digits5);
delay(2);
}
void display4(){ //显示数字4
for(int k=0;k<8;k++)
digitalWrite(pins,digits4);
delay(2);
}
void display3(){ //显示数字3
for(int k=0;k<8;k++)
digitalWrite(pins,digits3);
delay(2);
}
void display2(){ //显示数字2
for(int k=0;k<8;k++)
digitalWrite(pins,digits2);
delay(2);
}
void display1(){ //显示数字1
for(int k=0;k<8;k++)
digitalWrite(pins,digits1);
delay(2);
}
void display0(){ //显示数字0
for(int k=0;k<8;k++)
digitalWrite(pins,digits0);
delay(2);
}
我感觉代码有点繁琐,求高人指点 不是一般的繁琐:dizzy::dizzy::dizzy: 你有没有简单的方法,给我看看代码啊{:2_25:} 我对Arduino不熟
一般都是进行位操作的
显示一个数字就定义一个函数,这也是绝了,你不会用参数吗? ianon 发表于 2016-11-7 21:11
我对Arduino不熟
一般都是进行位操作的
我初学,我就会 这个死方法:$ const byte pins={7,13,12,10,11,6,9,8}; //a,b,c,d,e,f,g,dp
定义二维数组
digits = {
{ 0,0,0,0,0,0,1,1 }, // = 0
{ 1,0,0,1,1,1,1,1 },// = 1
{ 0,0,1,0,0,1,0,1 }, // = 2
{ 0,0,0,0,1,1,0,1 }, // = 3
{ 1,0,0,1,1,0,0,1 }, // = 4
{ 0,1,0,0,1,0,0,1 }, // = 5
{ 0,1,0,0,0,0,0,1 }, // = 6
{ 0,0,0,1,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0,1 }, // = 8
{ 0,0,0,0,1,0,0,1 }// = 9
}
void displayDigit(int i){ //显示数字i
for(int k=0;k<8;k++)
digitalWrite(pins,digits);
delay(2);
}
void setup() {
for(int k=0;k<8;k++)
pinMode(pins, OUTPUT);
}
供参考
页:
[1]