Arduino入门教程-第十八课-Arduino驱动数码管 教程,数码管 – Powered by Discuz!

Arduino入门教程-第十八课-Arduino驱动数码管 教程,数码管 – Powered by Discuz!.

 

本实验基础平台:F101入门套件




   今天我们来玩数码管,这个东西就是一堆led通过共阳并联在一起的小方块,用来显示数字和几个字母,是非常简单常见的显示器件。和学习笔记中的数码管代码不同,这次使用的代码单位时间只亮一个数码管上的灯,肉眼看到的1,2,3是因为高刷新率,大于肉眼分辨速度,使得肉眼看到1,2,3等。这样的好处是亮度高,而且亮度均匀。

所以准备一下材料

一位共阳数码管   1枚
arduino控制板     1个
面包板                1快
面包板专用跳线盒  1盒
数据线                 1根
220欧姆电阻       1个


我们先来看数码管的原理图


可以看到数码管的链接方式,驱动的原理就是,阳极供电后,其他引脚如果是低电平就能点亮。来看电路图
<ignore_js_op style=”word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, ‘Microsoft Yahei’, Simsun; font-size: 14px; line-height: 21px;”>arduino教程 入门教程 
进过大家的指正,我终于知道哪里画错了,现已修正



我们可以看到,电路按照上面的原理图依据abcdefg的顺序排布了接口,这样写程序会方便很多

然后我们搭建出电路


<ignore_js_op style=”word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, ‘Microsoft Yahei’, Simsun; font-size: 14px; line-height: 21px;”>IMGP9241_调整大小.JPG 




将程序下载进去

ARDUINO 代码复制打印

  1. /*
  2.  作者:极客工坊-迷你强
  3.  时间:2012年10月2日
  4.  IDE版本号:1.0.1
  5.  发布地址:[url]www.geek-workshop.com[/url]
  6.  作用:arduino驱动数码管循环显示0,1,2,3,4几个数字
  7. */
  8. void setup() {
  9.      pinMode(13,OUTPUT);     //激活13号引脚,我们需要用它供电            
  10.     for(int n=2;n<=9;n++)
  11.    {
  12.    pinMode(n,OUTPUT);
  13.    }
  14. }
  15. void loop()
  16. {
  17. digitalWrite(13,1); //这个就是HIGH  和LOW 的另一种写法  0代表LOW   1代表HIGH
  18.   /*==========显示0=============*/
  19. int n0[8]={0,0,0,0,0,0,1,1};       //定义数组 通过0,1定义各数码管的明灭,
  20.   int z=0;
  21.   for(int x=2;x<=9;x++)          //采用循环方式依次点亮指定的数码管led(数组中0为点亮),单位时间只点亮1个led
  22.   {
  23.     digitalWrite(x,n0[z]);         //点亮led语句  X为引脚数  n0[z]为数组z为0-8的变量,来依次读取数组中的值
  24.     z++;
  25.     if (z>=9)                    //防止变量z累加超过了8
  26.     z=0;
  27.   }
  28.   delay(1000);
  29. /*==========显示1=============*/
  30. int n1[8]={1,0,0,1,1,1,1,1};
  31.   z=0;
  32.   for(int x=2;x<=9;x++)
  33.   {
  34.     digitalWrite(x,n1[z]);
  35.     z++;
  36.     if (z>=9)
  37.     z=0;
  38.   }
  39.   delay(1000);
  40. /*==========显示2=============*/
  41. int n2[8]={0,0,1,0,0,1,0,1};
  42.   z=0;
  43.   for(int x=2;x<=9;x++)
  44.   {
  45.     digitalWrite(x,n2[z]);
  46.     z++;
  47.     if (z>=9)
  48.     z=0;
  49.   }
  50. delay(1000);
  51. /*==========显示3=============*/
  52. int n3[8]={0,0,0,0,1,1,0,1};
  53.   z=0;
  54.   for(int x=2;x<=9;x++)
  55.   {
  56.     digitalWrite(x,n3[z]);
  57.     z++;
  58.     if (z>=9)
  59.     z=0;
  60.   }
  61. delay(1000);
  62. /*==========显示4=============*/
  63. int n4[8]={1,0,0,1,1,0,0,1};
  64. z=0;
  65.   for(int x=2;x<=9;x++)
  66.   {
  67.     digitalWrite(x,n4[z]);
  68.     z++;
  69.     if (z>=9)
  70.     z=0;
  71.   }
  72. delay(1000);
  73. }

     

One Response to “Arduino入门教程-第十八课-Arduino驱动数码管 教程,数码管 – Powered by Discuz!”

  1. Right here is the right webpage for anyone who hopes to understand this topic.
    You understand so much its almost tough to argue with you (not that I really will need to…HaHa).
    You certainly put a new spin on a topic which has been written about for ages.
    Wonderful stuff, just wonderful!
    Website: Ling Fluent in farmacia

发表评论

电子邮件地址不会被公开。 必填项已用*标注