第十四课--Microduino 数码管实验一-数码管骰子/zh

来自Microduino Wikipedia
Pkj讨论 | 贡献2014年2月21日 (五) 05:49的版本 设备
跳转至: 导航搜索

目的

本教程将教大家如何在Microduino上使用数码管,用来显示数字

设备

  • Microduino-Core
  • Microduino-FT232R
  • 其他硬件设备
    • 面包板跳线 一盒
    • 面包板 一块
    • 数码管
    • 10k欧电阻一个,220欧电阻一个
    • USB数据连接线 一根

数码管

第十四课-数码管.jpg

简介:

  led数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。

  当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的2个8数码管字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

如何测量引脚:

LED数码管是我们经常用到的元件,但型号众多却又没有统一的命名方法,这确实给一些初学者造成了不少困惑。 其实,LED数码就是把多个LED发光二极管装在一起,并没什么高科技的。 一个LED就叫一段。

共阴和共阳:

  LED数码有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC和GND。 再把多个这样的8字装在一起就成了多位的数码管了。很简单吧。

找共阴共阳:

  首先,我们找个电源(3到5伏)和1个1K(几百的也欧的也行)的电阻, VCC串接个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的找到一个就够了,然后用GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阴的了。

  相反用VCC不动,GND逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阳的了。

原理图

第十四课-Microduino控制数码管原理图.jpg

注意:

1. 将数码管的a~g段,分别接到Arduino的D0~D6上面。如果你手上的数码管未知的话,可以通过通电测量它哪个引脚对应哪个字段,然后找出a~g即可。

2. 分清共阴还是共阳。共阴的话,接220Ω电阻到电源负极;共阳的话,接220Ω电阻到电源+5v。3. 220Ω电阻视数码管实际工作亮度与手头现有原件而定,不一定需要准确。

程序

/*
Arduino单数码管骰子
Ansifa 2011-12-28
*/

//定义段码表,表中十个元素由LED段码生成器生成,选择了共阳极。
int a[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
void setup()
{
    DDRD = 0xFF;          //AVR定义PortD的低七位全部用作输出使用。即0xFF=B11111111对应D7~D0
    pinMode(12, INPUT);    //D12用来做骰子暂停的开关
}
void loop()
{
    for(int i = 0; i < 10; i++)
    {
        //将段码输出PortD的低7位,即Arduino的引脚D0~D6,这样需要取出PORTD最高位,即D7的状态,与段码相加,之后再输出。
        PORTD = a[i];
        delay(50);        //延时50ms
        while(digitalRead(12)) {}        //如果D12引脚高电平,则在此死循环,暂停LED跑动
    }
}

调试

步骤一:复制代码到IDE中编译

在源代码中,由于偷懒不用写循环,使用了部分AVR语句。

PORTD这个是AVR的端口输出控制语句,8位对应D7~D0,PORTD=00001001就是D3和D0是高电平。

PORTD = a;就是找出相应的段码输出到D7~D0。

DDRD这个是AVR语句中控制引脚作为输出/输入的语句。DDRD = 0xFF;就是D0~D7全部作为输出脚了。

步骤二:连接电路图,下图为连接完后的照片

第十四课-Microduino控制数码管连接图.jpg

步骤三:运行代码

结果

数码管会一直非常快的从0到9显示,直到用手按下开关停止到一个数字上,可以当骰子用。

视频