极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 153881|回复: 49

arduino学习笔记13 - 4位数码管实验

  [复制链接]
发表于 2011-8-6 08:23:36 | 显示全部楼层 |阅读模式

这次我们进行的实验是使用arduino驱动一块共阳四位数码管。驱动数码管限流电阻肯定是必不可少的,限流电阻有两种接法,一种是在d1-d4阳极接,总共接4颗。这种接法好处是需求电阻比较少,但是会产生每一位上显示不同数字亮度会不一样,1最亮,8最暗。另外一种接法就是在其他8个引脚上接,这种接法亮度显示均匀,但是用电阻较多。本次实验使用8颗220Ω电阻(因为没有100Ω电阻,所以使用220Ω的代替,100欧姆亮度会比较高)。

下图为4位数码管




4位数码管总共有12个引脚,小数点朝下正放在面前时,左下角为1,其他管脚顺序为逆时针旋转。左上角为最大的12号管脚。



下图为数码管的说明手册



下面是硬件连接图





把下面的代码复制下载到控制板中,看看效果。
  1. //设置阴极接口
  2. int a = 1;
  3. int b = 2;
  4. int c = 3;
  5. int d = 4;
  6. int e = 5;
  7. int f = 6;
  8. int g = 7;
  9. int p = 8;
  10. //设置阳极接口
  11. int d4 = 9;
  12. int d3 = 10;
  13. int d2 = 11;
  14. int d1 = 12;
  15. //设置变量
  16. int del = 100;
  17. int buttoncount = 0;
  18. int loopcount = 0;

  19. void setup()
  20. {
  21.   pinMode(d1, OUTPUT);
  22.   pinMode(d2, OUTPUT);
  23.   pinMode(d3, OUTPUT);
  24.   pinMode(d4, OUTPUT);
  25.   pinMode(a, OUTPUT);
  26.   pinMode(b, OUTPUT);
  27.   pinMode(c, OUTPUT);
  28.   pinMode(d, OUTPUT);
  29.   pinMode(e, OUTPUT);
  30.   pinMode(f, OUTPUT);
  31.   pinMode(g, OUTPUT);
  32.   pinMode(p, OUTPUT);
  33.   digitalWrite(a, HIGH);
  34.   digitalWrite(b, HIGH);
  35.   digitalWrite(c, HIGH);
  36.   digitalWrite(d, HIGH);
  37.   digitalWrite(e, HIGH);
  38.   digitalWrite(f, HIGH);
  39.   digitalWrite(g, HIGH);
  40.   digitalWrite(p, HIGH);
  41. }

  42. void loop()
  43. {
  44.   roulette(4);  //轮转效果
  45.   delay(100);
  46.   zigzag(2);    //Z字型效果
  47.   delay(100);
  48.   circles(4);   //圈状效果
  49.   delay(100);
  50. }

  51. void pickDigit(int x)  //定义pickDigit(x),其作用是开启dx端口
  52. {
  53.   digitalWrite(d1, LOW);
  54.   digitalWrite(d2, LOW);
  55.   digitalWrite(d3, LOW);
  56.   digitalWrite(d4, LOW);

  57.   switch(x)
  58.   {
  59.   case 1:
  60.     digitalWrite(d1, HIGH);
  61.     break;
  62.   case 2:
  63.     digitalWrite(d2, HIGH);
  64.     break;
  65.   case 3:
  66.     digitalWrite(d3, HIGH);
  67.     break;
  68.   default:
  69.     digitalWrite(d4, HIGH);
  70.     break;
  71.   }
  72. }

  73. void clearLEDs()  //清屏
  74. {
  75.   digitalWrite(a, HIGH);
  76.   digitalWrite(b, HIGH);
  77.   digitalWrite(c, HIGH);
  78.   digitalWrite(d, HIGH);
  79.   digitalWrite(e, HIGH);
  80.   digitalWrite(f, HIGH);
  81.   digitalWrite(g, HIGH);
  82.   digitalWrite(p, HIGH);
  83. }

  84. void roulette(int x)  //设置轮转效果
  85. {
  86.   loopcount = 0;
  87.   while (loopcount < x)
  88.   {
  89.     digitalWrite(a, LOW);
  90.     pickDigit(1);
  91.     delay(del);
  92.     pickDigit(2);
  93.     delay(del);
  94.     pickDigit(3);
  95.     delay(del);
  96.     pickDigit(4);
  97.     delay(del);
  98.     digitalWrite(a, HIGH);
  99.     digitalWrite(b, LOW);
  100.     delay(del);
  101.     digitalWrite(b, HIGH);
  102.     digitalWrite(c, LOW);
  103.     delay(del);
  104.     digitalWrite(c, HIGH);
  105.     digitalWrite(d, LOW);
  106.     delay(del);
  107.     pickDigit(3);
  108.     delay(del);
  109.     pickDigit(2);
  110.     delay(del);
  111.     pickDigit(1);
  112.     delay(del);
  113.     digitalWrite(d, HIGH);
  114.     digitalWrite(e, LOW);
  115.     delay(del);
  116.     digitalWrite(e, HIGH);
  117.     digitalWrite(f, LOW);
  118.     delay(del);
  119.     clearLEDs();
  120.     loopcount++;
  121.   }
  122. }

  123. void zigzag(int x)  //设置Z字形效果
  124. {
  125.   loopcount = 0;
  126.   while(loopcount < x)
  127.   {
  128.     digitalWrite(a, LOW);
  129.     pickDigit(1);
  130.     delay(del);
  131.     pickDigit(2);
  132.     delay(del);
  133.     pickDigit(3);
  134.     delay(del);
  135.     pickDigit(4);
  136.     delay(del);
  137.     digitalWrite(a, HIGH);
  138.     digitalWrite(b, LOW);
  139.     delay(del);
  140.     digitalWrite(b, HIGH);
  141.     digitalWrite(g, LOW);
  142.     delay(del);
  143.     pickDigit(3);
  144.     delay(del);
  145.     pickDigit(2);
  146.     delay(del);
  147.     pickDigit(1);
  148.     delay(del);
  149.     digitalWrite(g, HIGH);
  150.     digitalWrite(e, LOW);
  151.     delay(del);
  152.     digitalWrite(e, HIGH);
  153.     digitalWrite(d, LOW);
  154.     delay(del);
  155.     pickDigit(2);
  156.     delay(del);
  157.     pickDigit(3);
  158.     delay(del);
  159.     pickDigit(4);
  160.     delay(del);
  161.     digitalWrite(d, HIGH);
  162.     digitalWrite(c, LOW);
  163.     delay(del);
  164.     digitalWrite(c, HIGH);
  165.     digitalWrite(g, LOW);
  166.     delay(del);
  167.     pickDigit(3);
  168.     delay(del);
  169.     pickDigit(2);
  170.     delay(del);
  171.     pickDigit(1);
  172.     delay(del);
  173.     digitalWrite(g, HIGH);
  174.     digitalWrite(f, LOW);
  175.     delay(del);
  176.     clearLEDs();
  177.     loopcount++;
  178.   }
  179. }

  180. void circles(int x)  //设置圈状效果
  181. {
  182.   loopcount = 0;
  183.   while (loopcount < x)
  184.   {
  185.     digitalWrite(a, LOW);
  186.     digitalWrite(b, LOW);
  187.     digitalWrite(f, LOW);
  188.     digitalWrite(g, LOW);
  189.     pickDigit(1);
  190.     delay(250);
  191.     digitalWrite(a, HIGH);
  192.     digitalWrite(b, HIGH);
  193.     digitalWrite(f, HIGH);
  194.     digitalWrite(c, LOW);
  195.     digitalWrite(d, LOW);
  196.     digitalWrite(e, LOW);
  197.     pickDigit(2);
  198.     delay(250);
  199.     digitalWrite(a, LOW);
  200.     digitalWrite(b, LOW);
  201.     digitalWrite(f, LOW);
  202.     digitalWrite(c, HIGH);
  203.     digitalWrite(d, HIGH);
  204.     digitalWrite(e, HIGH);
  205.     pickDigit(3);
  206.     delay(250);
  207.     digitalWrite(a, HIGH);
  208.     digitalWrite(b, HIGH);
  209.     digitalWrite(f, HIGH);
  210.     digitalWrite(c, LOW);
  211.     digitalWrite(d, LOW);
  212.     digitalWrite(e, LOW);
  213.     pickDigit(4);
  214.     delay(250);
  215.     clearLEDs();
  216.     loopcount++;
  217.   }
  218. }
复制代码
上面代码效果如下,为3种花样组成。



再把下面代码复制下载到控制板中,看看效果。
  1. //设置阴极接口
  2. int a = 1;
  3. int b = 2;
  4. int c = 3;
  5. int d = 4;
  6. int e = 5;
  7. int f = 6;
  8. int g = 7;
  9. int p = 8;
  10. //设置阳极接口
  11. int d4 = 9;
  12. int d3 = 10;
  13. int d2 = 11;
  14. int d1 = 12;
  15. //设置变量
  16. long n = 0;
  17. int x = 100;
  18. int del = 55;  //此处数值对时钟进行微调

  19. void setup()
  20. {
  21.   pinMode(d1, OUTPUT);
  22.   pinMode(d2, OUTPUT);
  23.   pinMode(d3, OUTPUT);
  24.   pinMode(d4, OUTPUT);
  25.   pinMode(a, OUTPUT);
  26.   pinMode(b, OUTPUT);
  27.   pinMode(c, OUTPUT);
  28.   pinMode(d, OUTPUT);
  29.   pinMode(e, OUTPUT);
  30.   pinMode(f, OUTPUT);
  31.   pinMode(g, OUTPUT);
  32.   pinMode(p, OUTPUT);
  33. }

  34. void loop()
  35. {
  36.   clearLEDs();
  37.   pickDigit(1);
  38.   pickNumber((n/x/1000)%10);
  39.   delayMicroseconds(del);
  40.   
  41.   clearLEDs();
  42.   pickDigit(2);
  43.   pickNumber((n/x/100)%10);
  44.   delayMicroseconds(del);
  45.   
  46.   clearLEDs();
  47.   pickDigit(3);
  48.   dispDec(3);
  49.   pickNumber((n/x/10)%10);
  50.   delayMicroseconds(del);
  51.   
  52.   clearLEDs();
  53.   pickDigit(4);
  54.   pickNumber(n/x%10);
  55.   delayMicroseconds(del);
  56.   
  57.   n++;
  58.   
  59.   if (digitalRead(13) == HIGH)
  60.   {
  61.     n = 0;
  62.   }
  63. }

  64. void pickDigit(int x)  //定义pickDigit(x),其作用是开启dx端口
  65. {
  66.   digitalWrite(d1, LOW);
  67.   digitalWrite(d2, LOW);
  68.   digitalWrite(d3, LOW);
  69.   digitalWrite(d4, LOW);
  70.   
  71.   switch(x)
  72.   {
  73.   case 1:
  74.     digitalWrite(d1, HIGH);
  75.     break;
  76.   case 2:
  77.     digitalWrite(d2, HIGH);
  78.     break;
  79.   case 3:
  80.     digitalWrite(d3, HIGH);
  81.     break;
  82.   default:
  83.     digitalWrite(d4, HIGH);
  84.     break;
  85.   }
  86. }

  87. void pickNumber(int x)   //定义pickNumber(x),其作用是显示数字x
  88. {
  89.   switch(x)
  90.   {
  91.   default:
  92.     zero();
  93.     break;
  94.   case 1:
  95.     one();
  96.     break;
  97.   case 2:
  98.     two();
  99.     break;
  100.   case 3:
  101.     three();
  102.     break;
  103.   case 4:
  104.     four();
  105.     break;
  106.   case 5:
  107.     five();
  108.     break;
  109.   case 6:
  110.     six();
  111.     break;
  112.   case 7:
  113.     seven();
  114.     break;
  115.   case 8:
  116.     eight();
  117.     break;
  118.   case 9:
  119.     nine();
  120.     break;
  121.   }
  122. }

  123. void dispDec(int x)  //设定开启小数点
  124. {
  125.   digitalWrite(p, LOW);
  126. }

  127. void clearLEDs()  //清屏
  128. {
  129.   digitalWrite(a, HIGH);
  130.   digitalWrite(b, HIGH);
  131.   digitalWrite(c, HIGH);
  132.   digitalWrite(d, HIGH);
  133.   digitalWrite(e, HIGH);
  134.   digitalWrite(f, HIGH);
  135.   digitalWrite(g, HIGH);
  136.   digitalWrite(p, HIGH);
  137. }

  138. void zero()  //定义数字0时阴极那些管脚开关
  139. {
  140.   digitalWrite(a, LOW);
  141.   digitalWrite(b, LOW);
  142.   digitalWrite(c, LOW);
  143.   digitalWrite(d, LOW);
  144.   digitalWrite(e, LOW);
  145.   digitalWrite(f, LOW);
  146.   digitalWrite(g, HIGH);
  147. }

  148. void one()  //定义数字1时阴极那些管脚开关
  149. {
  150.   digitalWrite(a, HIGH);
  151.   digitalWrite(b, LOW);
  152.   digitalWrite(c, LOW);
  153.   digitalWrite(d, HIGH);
  154.   digitalWrite(e, HIGH);
  155.   digitalWrite(f, HIGH);
  156.   digitalWrite(g, HIGH);
  157. }

  158. void two()  //定义数字2时阴极那些管脚开关
  159. {
  160.   digitalWrite(a, LOW);
  161.   digitalWrite(b, LOW);
  162.   digitalWrite(c, HIGH);
  163.   digitalWrite(d, LOW);
  164.   digitalWrite(e, LOW);
  165.   digitalWrite(f, HIGH);
  166.   digitalWrite(g, LOW);
  167. }

  168. void three()  //定义数字3时阴极那些管脚开关
  169. {
  170.   digitalWrite(a, LOW);
  171.   digitalWrite(b, LOW);
  172.   digitalWrite(c, LOW);
  173.   digitalWrite(d, LOW);
  174.   digitalWrite(e, HIGH);
  175.   digitalWrite(f, HIGH);
  176.   digitalWrite(g, LOW);
  177. }

  178. void four()  //定义数字4时阴极那些管脚开关
  179. {
  180.   digitalWrite(a, HIGH);
  181.   digitalWrite(b, LOW);
  182.   digitalWrite(c, LOW);
  183.   digitalWrite(d, HIGH);
  184.   digitalWrite(e, HIGH);
  185.   digitalWrite(f, LOW);
  186.   digitalWrite(g, LOW);
  187. }

  188. void five()  //定义数字5时阴极那些管脚开关
  189. {
  190.   digitalWrite(a, LOW);
  191.   digitalWrite(b, HIGH);
  192.   digitalWrite(c, LOW);
  193.   digitalWrite(d, LOW);
  194.   digitalWrite(e, HIGH);
  195.   digitalWrite(f, LOW);
  196.   digitalWrite(g, LOW);
  197. }

  198. void six()  //定义数字6时阴极那些管脚开关
  199. {
  200.   digitalWrite(a, LOW);
  201.   digitalWrite(b, HIGH);
  202.   digitalWrite(c, LOW);
  203.   digitalWrite(d, LOW);
  204.   digitalWrite(e, LOW);
  205.   digitalWrite(f, LOW);
  206.   digitalWrite(g, LOW);
  207. }

  208. void seven()  //定义数字7时阴极那些管脚开关
  209. {
  210.   digitalWrite(a, LOW);
  211.   digitalWrite(b, LOW);
  212.   digitalWrite(c, LOW);
  213.   digitalWrite(d, HIGH);
  214.   digitalWrite(e, HIGH);
  215.   digitalWrite(f, HIGH);
  216.   digitalWrite(g, HIGH);
  217. }

  218. void eight()  //定义数字8时阴极那些管脚开关
  219. {
  220.   digitalWrite(a, LOW);
  221.   digitalWrite(b, LOW);
  222.   digitalWrite(c, LOW);
  223.   digitalWrite(d, LOW);
  224.   digitalWrite(e, LOW);
  225.   digitalWrite(f, LOW);
  226.   digitalWrite(g, LOW);
  227. }

  228. void nine()  //定义数字9时阴极那些管脚开关
  229. {
  230.   digitalWrite(a, LOW);
  231.   digitalWrite(b, LOW);
  232.   digitalWrite(c, LOW);
  233.   digitalWrite(d, LOW);
  234.   digitalWrite(e, HIGH);
  235.   digitalWrite(f, LOW);
  236.   digitalWrite(g, LOW);
  237. }
复制代码
下面的代码与上面的效果一样,但是使用了数组方法进行简写,大家对比一下看看哪里不易一样。
  1. //设置阴极接口
  2. int a = 1;
  3. int b = 2;
  4. int c = 3;
  5. int d = 4;
  6. int e = 5;
  7. int f = 6;
  8. int g = 7;
  9. int p = 8;
  10. //设置阳极接口
  11. int d4 = 9;
  12. int d3 = 10;
  13. int d2 = 11;
  14. int d1 = 12;
  15. //设置变量
  16. long n = 0;
  17. int x = 100;
  18. int del = 55;  //此处数值对时钟进行微调

  19. byte segs[7] = { a, b, c, d, e, f, g };

  20. byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 },  // = 0
  21.                                  { 1,0,0,1,1,1,1 },  // = 1
  22.                                  { 0,0,1,0,0,1,0 },  // = 2
  23.                                  { 0,0,0,0,1,1,0 },  // = 3
  24.                                  { 1,0,0,1,1,0,0 },  // = 4
  25.                                  { 0,1,0,0,1,0,0 },  // = 5
  26.                                  { 0,1,0,0,0,0,0 },  // = 6
  27.                                  { 0,0,0,1,1,1,1 },  // = 7
  28.                                  { 0,0,0,0,0,0,0 },  // = 8
  29.                                  { 0,0,0,0,1,0,0 }   // = 9
  30.                              };

  31. void setup()
  32. {
  33.   pinMode(d1, OUTPUT);
  34.   pinMode(d2, OUTPUT);
  35.   pinMode(d3, OUTPUT);
  36.   pinMode(d4, OUTPUT);
  37.   pinMode(a, OUTPUT);
  38.   pinMode(b, OUTPUT);
  39.   pinMode(c, OUTPUT);
  40.   pinMode(d, OUTPUT);
  41.   pinMode(e, OUTPUT);
  42.   pinMode(f, OUTPUT);
  43.   pinMode(g, OUTPUT);
  44.   pinMode(p, OUTPUT);
  45. }

  46. void loop()
  47. {
  48.   clearLEDs();
  49.   pickDigit(1);
  50.   lightSegments((n/x/1000)%10);
  51.   delayMicroseconds(del);
  52.   
  53.   clearLEDs();
  54.   pickDigit(2);
  55.   lightSegments((n/x/100)%10);
  56.   delayMicroseconds(del);
  57.   
  58.   clearLEDs();
  59.   pickDigit(3);
  60.   dispDec(3);
  61.   lightSegments((n/x/10)%10);
  62.   delayMicroseconds(del);
  63.   
  64.   clearLEDs();
  65.   pickDigit(4);
  66.   lightSegments(n/x%10);
  67.   delayMicroseconds(del);
  68.   
  69.   n++;
  70.   
  71.   if (digitalRead(13) == HIGH)
  72.   {
  73.     n = 0;
  74.   }
  75. }

  76. void pickDigit(int x)  //定义pickDigit(x),其作用是开启dx端口
  77. {
  78.   digitalWrite(d1, LOW);
  79.   digitalWrite(d2, LOW);
  80.   digitalWrite(d3, LOW);
  81.   digitalWrite(d4, LOW);
  82.   
  83.   switch(x)
  84.   {
  85.   case 1:
  86.     digitalWrite(d1, HIGH);
  87.     break;
  88.   case 2:
  89.     digitalWrite(d2, HIGH);
  90.     break;
  91.   case 3:
  92.     digitalWrite(d3, HIGH);
  93.     break;
  94.   default:
  95.     digitalWrite(d4, HIGH);
  96.     break;
  97.   }
  98. }

  99. void dispDec(int x)  //设定开启小数点
  100. {
  101.   digitalWrite(p, LOW);
  102. }

  103. void clearLEDs()  //清屏
  104. {
  105.   digitalWrite(a, HIGH);
  106.   digitalWrite(b, HIGH);
  107.   digitalWrite(c, HIGH);
  108.   digitalWrite(d, HIGH);
  109.   digitalWrite(e, HIGH);
  110.   digitalWrite(f, HIGH);
  111.   digitalWrite(g, HIGH);
  112.   digitalWrite(p, HIGH);
  113. }


  114. // 点亮对应数字的数码管
  115. void lightSegments(int x) {
  116.   for (int i = 0; i < 7; i++) {
  117.     digitalWrite(segs[i], seven_seg_digits[x][i]);
  118.   }
  119. }
复制代码
此代码为简易的秒表,效果如下,精准度不是很高,需要大家微调参数。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2011-8-6 09:59:04 | 显示全部楼层
关注中
回复 支持 反对

使用道具 举报

发表于 2011-8-8 16:45:41 | 显示全部楼层
本帖最后由 悠然小调 于 2011-8-8 21:11 编辑

n/x/1000)%10这没看懂,开始时n=0


回复 支持 反对

使用道具 举报

发表于 2011-8-8 21:16:47 | 显示全部楼层
把最后一个程序缩一下,不知道是否正确。
  1. //设置变量
  2. long n = 0;
  3. int x = 100;
  4. int del = 55;  //此处数值对时钟进行微调
  5. Byte pin[4]={12,11,10,9}                     //设置阳极接口:d1接12; d2接11; d3接10; d4接9
  6. byte segs[7] = { 1, 2, 3, 4, 5 ,6, 7 };    //设置阴极接口:a接 1; b接 2; c 接 3; d 接 4; e接 5; f接 6; g接 7; p 接 8;

  7. byte seven_seg_digits[10][7] = {   { 0,0,0,0,0,0,1 },  // = 0
  8.                              { 1,0,0,1,1,1,1 },  // = 1
  9.                              { 0,0,1,0,0,1,0 },  // = 2
  10.                              { 0,0,0,0,1,1,0 },  // = 3
  11.                              { 1,0,0,1,1,0,0 },  // = 4
  12.                              { 0,1,0,0,1,0,0 },  // = 5
  13.                              { 0,1,0,0,0,0,0 },  // = 6
  14.                              { 0,0,0,1,1,1,1 },  // = 7
  15.                              { 0,0,0,0,0,0,0 },  // = 8
  16.                              { 0,0,0,0,1,0,0 }   // = 9
  17.                            };

  18. void setup()
  19. {  for(int i=1,i<12,i++)
  20.   {  pinMode(i, OUTPUT); }
  21. }

  22. void loop()
  23. {
  24.    int shu;
  25.    for (int k=0,k<3,k++)
  26.     {
  27.       clearLEDs();
  28.       digitalWrite(pin[k],HIGH);
  29.       shu=n/k%10;
  30.       for (int i = 0; i < 7; i++)
  31.      {  
  32.        digitalWrite(segs[i], seven_seg_digits[shu][i] );
  33.             if (k==2)
  34.          { digitalWrite(p, LOW); }
  35.        }
  36.    delayMicroseconds(del);
  37.   }
  38.          n++;
  39.     if (digitalRead(13) == HIGH)
  40.   {  n = 0;  }
  41. }

  42. void clearLEDs()  //清屏
  43. {
  44.    for (int j=1,j<12,j++)
  45.     {
  46.       digitalWrite( j, HIGH);
  47.      }  
  48. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2011-8-9 09:36:11 | 显示全部楼层
嘿嘿嘿嘿
回复 支持 反对

使用道具 举报

发表于 2011-8-18 18:03:40 | 显示全部楼层
我的数码管没有说明书,几个脚还没分清
回复 支持 反对

使用道具 举报

发表于 2011-8-21 07:48:49 | 显示全部楼层
用万用表量量
回复 支持 反对

使用道具 举报

发表于 2011-12-14 14:11:29 | 显示全部楼层
呵呵,用arduino这样玩数码管,真的很神!赞一下!
回复 支持 反对

使用道具 举报

发表于 2012-5-10 13:38:59 | 显示全部楼层
弘毅,你太耐亲了!你都可以出书了!
回复 支持 反对

使用道具 举报

发表于 2012-7-3 07:56:56 | 显示全部楼层
跟2楼一样,我也没看懂(n/x/1000)%10
回复 支持 反对

使用道具 举报

发表于 2012-7-3 08:57:56 | 显示全部楼层
我终于知道了,数码管在同一时刻4位只能显示同一数字,即1111、2222……,如果要显示1324,就要
①先关第2~4位,第1位显示“1”,延时。
①先关第1、3、4位,第2位显示“3”,延时。
①先关第1、2、4位,第3位显示“2”,延时。
①先关第1~3位,第4位显示“4”,延时。
调节延时的时间,让人眼分辨不出它在闪烁。
我的理解对吗?斑竹
回复 支持 反对

使用道具 举报

发表于 2012-7-6 14:03:17 | 显示全部楼层
用analogwrite不就可以去掉电阻吗
回复 支持 反对

使用道具 举报

发表于 2012-9-9 10:20:53 | 显示全部楼层
悠然小调 发表于 2011-8-8 16:45
n/x/1000)%10这没看懂,开始时n=0

求解,这句的意思看懂没有呢
回复 支持 反对

使用道具 举报

发表于 2012-10-8 17:40:11 | 显示全部楼层
斑竹啊,数字脚一般的0 1不是不用做输出的吗,这次怎么用了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-8 17:50:06 | 显示全部楼层
hk386 发表于 2012-10-8 17:40
斑竹啊,数字脚一般的0 1不是不用做输出的吗,这次怎么用了

额。。。当年不知道模拟口可以当数字口用。。。端口不够用,所以就都用了。其实。。可以用A0,A1等。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-2 15:15 , Processed in 0.053738 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表