电路连接 由于数码管品种多样,还有共阴共阳的,下面我们使用一个数码管段码生成器(在文章结尾) 去解决不同数码管的问题: 本例作者利用手头现有的一位不知品牌的共阳数码管:型号D5611 A/B,在Eagle 找了一个 类似的型号SA56-11,引脚功能一样可以直接代换。所以下面电路图使用SA56-11 做引脚说明。 注意: 1. 将数码管的a~g 段,分别接到Arduino 的D0~D6 上面。如果你手上的数码管未知的话,可以通过通电测量它哪个引脚对应哪个字段,然后找出a~g 即可。 2. 分清共阴还是共阳。共阴的话,接220Ω电阻到电源负极;共阳的话,接220Ω电阻到电源+5v。 3. 220Ω电阻视数码管实际工作亮度与手头现有原件而定,不一定需要准确。 4. 按下按钮即停。 源代码 由于我是按照段码生成器默认接法接的,所以不用修改段码生成器了,直接在段码生成器选择共阳极,再按“自动”生成数组就搞定。 下面是源代码,由于偷懒不用写循环,使用了部分AVR 语句。 PORTD 这个是AVR 的端口输出控制语句,8 位对应D7~D0,PORTD=00001001 就是D3 和D0 是高电平。 PORTD = a;就是找出相应的段码输出到D7~D0。 DDRD 这个是AVR 语句中控制引脚作为输出/输入的语句。DDRD = 0xFF;就是D0~D7 全部 作为输出脚了。 ARDUINO CODECOPY /* Arduino 单数码管骰子 Ansifa 2011-12-28 */ //定义段码表,表中十个元素由LED 段码生成器生成,选择了共阳极。 inta[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; voidsetup() { DDRD = 0xFF; //AVR 定义PortD 的低七位全部用作输出使用。即0xFF=B11111111对 应D7~D0 pinMode(12, INPUT); //D12用来做骰子暂停的开关 } voidloop() { 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 跑 动 } }
上传时间: 2013-10-15
上传用户:baitouyu
数码管段码查询
上传时间: 2013-11-16
上传用户:woshini123456
数码管段码查询
上传时间: 2014-08-18
上传用户:adada
数码管段码速查,在单片机开发时,很容易的控制数码管
上传时间: 2014-01-02
上传用户:athjac
利用 AT89S51 单片机的 P0 端口的 P0.0 - P0.7 连接到一个共阴数码管的 a - h 的笔段上,数码管的公共端接地。在数码管上循环显示 0 - 9 数字,时间间隔 0.2 秒。
上传时间: 2015-04-17
上传用户:erkuizhang
凌阳单片机+led显示 1、可以直接方便的移植此模块到任何要求数码管显示的系统中。 2、了解6位7段LED数码管的使用。 3、提供显示函数,避免重复工作
上传时间: 2015-05-20
上传用户:invtnewer
软件介绍:主要用于LED数码管段位置信息生成,可保存在单片机程序存储器中供查表使用的数据。可自行修改数码管各段的位置信息;可以选择LED类型:共阴或共阳;自定义位置信息并可保存;可以生成 8位同样可以保存为C、ASM、PIC、EMC、数组等格式数据。
上传时间: 2013-12-31
上传用户:zwei41
给共阳极数码管送段码的小程序,虽然不常,但是能让新手入门
上传时间: 2013-12-22
上传用户:bruce5996
7段码驱动 用51单片机驱动7段码数码管的源码
上传时间: 2014-01-19
上传用户:上善若水
自制完全成功!!!!ADC0809时钟直接使用AT89C51的ALE信号2MHz P1口段码,P2.0-3位码(P2.0为最右边数码管的位码) P0口数据输入 通道0输入,ADC0809中ST和ALE---P3.0,EOC---P3.2,CLK---ALE.OE---P3.1*/
上传时间: 2015-09-12
上传用户:qoovoop