本帖最后由 庚影! 于 2013-7-6 21:56 编辑
用楼主的秒表代码出现一个问题 就是所有数值显示为0无法变化
稍微修改了下 能运行了 时间也不用去调整了
不过我也是新人 不知道如何DEBUG所以也没找到是哪的问题。。{:soso_e142:}
- //设置阴极接口
- int a = 1;
- int b = 2;
- int c = 3;
- int d = 4;
- int e = 5;
- int f = 6;
- int g = 7;
- int p = 8;
- //设置阳极接口
- int d4 = 9;
- int d3 = 10;
- int d2 = 11;
- int d1 = 12;
- //设置变量
- long n = 0;
- long n10 = 0;
- long n100 = 0;
- long n1000 = 0;
- int x = 100;
- int del = 55; //此处数值对时钟进行微调
-
- byte segs[7] = { a, b, c, d, e, f, g };
-
- byte seven_seg_digits[10][7] = { { 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,0,1,0,0 } // = 9
- };
-
- 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(p, OUTPUT);
- }
-
- void loop()
- {
-
- long w = millis()/100;
- //这个是调用时间的函数
- shownum(w);
- }
-
- void pickDigit(int x) //定义pickDigit(x),其作用是开启dx端口
- {
- digitalWrite(d1, LOW);
- digitalWrite(d2, LOW);
- digitalWrite(d3, LOW);
- digitalWrite(d4, LOW);
-
- switch(x)
- {
- case 1:
- digitalWrite(d1, HIGH);
- break;
- case 2:
- digitalWrite(d2, HIGH);
- break;
- case 3:
- digitalWrite(d3, HIGH);
- break;
- default:
- digitalWrite(d4, HIGH);
- break;
- }
- }
-
- void dispDec(int x) //设定开启小数点
- {
- digitalWrite(p, LOW);
- }
-
- void clearLEDs() //清屏
- {
- digitalWrite(a, HIGH);
- digitalWrite(b, HIGH);
- digitalWrite(c, HIGH);
- digitalWrite(d, HIGH);
- digitalWrite(e, HIGH);
- digitalWrite(f, HIGH);
- digitalWrite(g, HIGH);
- digitalWrite(p, HIGH);
- }
-
-
- // 点亮对应数字的数码管
- void lightSegments(int x) {
- for (int i = 0; i < 7; i++) {
- digitalWrite(segs[i], seven_seg_digits[x][i]);
- }
- }
- //这边是新加的函数 其实和楼主貌似差不多 但是为啥楼主的会出问题我也不知道
- void shownum (int x)
- {
-
- long x1 = x/1000%10;
- long x10 = x/100%10;
- long x100 = x/10%10;
- long x1000 = x/1%10;
-
-
- clearLEDs();
- pickDigit(1);
- lightSegments(x1);
- delayMicroseconds(del);
-
- clearLEDs();
- pickDigit(2);
- lightSegments(x10);
- delayMicroseconds(del);
-
- clearLEDs();
- pickDigit(3);
- dispDec(3);
- lightSegments(x100);
- delayMicroseconds(del);
-
- clearLEDs();
- pickDigit(0);
- lightSegments(x1000);
- delayMicroseconds(del);
- }
复制代码 |