请教一下,如果是共阴的数码管,是不是需要在除共阴外每个管脚上都串限流电阻?
keen 发表于 2012-4-15 14:12 static/image/common/back.gif
请教一下,如果是共阴的数码管,是不是需要在除共阴外每个管脚上都串限流电阻?
在共阴端串联也可以,只不过这种方法会导致不同数字因为亮的led数量不同,电流大小有区别,所以亮度不均匀。
除共阴以外其他管脚都串联电阻,这种方法虽然看的用的电阻多。但是不会产生不同数值因为亮的led多少不一样,亮度不均匀问题,推荐这种方法。
弘毅 发表于 2012-4-15 14:31 static/image/common/back.gif
在共阴端串联也可以,只不过这种方法会导致不同数字,因为亮的led不同,电流大小有区别,所以亮度不军用。 ...
非常感谢!!
手里只有共阴的,找到的资料又不匹配...控制变量法调试了好久才搞定...
话说阴极共阻的话对亮度影响不仔细看的话基本看不出来,我共的是100欧的
纯小白贴段代码,共阴,型号d5611
觉得楼主关数码管的方式有点麻烦,还要加循环...导致像我这类的小白各种混乱....
我直接新定义一个通用的clearall 来关掉全部的数码管,之前定义各个数字就可以只顾亮的了,然后在loop里每次调用亮某个数字延时之后跟一个clearall就可以了。int a=7;
int b=6;
int c=4;
int d=11;
int e=12;
int f=9;
int g=10;
int dp=5;
void d_1 (void)
{
char j;
digitalWrite ( b, HIGH);
digitalWrite ( c, HIGH);
}
void d_2 (void)
{
char j;
digitalWrite ( a, HIGH);
digitalWrite ( b, HIGH);
digitalWrite ( d, HIGH);
digitalWrite ( e, HIGH);
digitalWrite ( g, HIGH);
}
void d_3 (void)
{
char j ;
digitalWrite ( a, HIGH);
digitalWrite ( b, HIGH);
digitalWrite ( c, HIGH);
digitalWrite ( d, HIGH);
digitalWrite ( g, HIGH);
}
void d_4 (void)
{
char j ;
digitalWrite ( b, HIGH);
digitalWrite ( c, HIGH);
digitalWrite ( f, HIGH);
digitalWrite ( g, HIGH);
}
void d_5 (void)
{
char j ;
digitalWrite ( a, HIGH);
digitalWrite ( f, HIGH);
digitalWrite ( c, HIGH);
digitalWrite ( d, HIGH);
digitalWrite ( g, HIGH);
}
void d_6 (void)
{
char j ;
digitalWrite ( a, HIGH);
digitalWrite ( e, HIGH);
digitalWrite ( c, HIGH);
digitalWrite ( d, HIGH);
digitalWrite ( g, HIGH);
digitalWrite ( f, HIGH);
}
void d_7 (void)
{
char j ;
digitalWrite ( a, HIGH);
digitalWrite ( b, HIGH);
digitalWrite ( c, HIGH);
}
void d_8 (void)
{
char j ;
digitalWrite ( a, HIGH);
digitalWrite ( b, HIGH);
digitalWrite ( c, HIGH);
digitalWrite ( d, HIGH);
digitalWrite ( e, HIGH);
digitalWrite ( f, HIGH);
digitalWrite ( g, HIGH);
}
void d_9 (void)
{
char j ;
digitalWrite ( a, HIGH);
digitalWrite ( b, HIGH);
digitalWrite ( c, HIGH);
digitalWrite ( d, HIGH);
digitalWrite ( g, HIGH);
digitalWrite ( f, HIGH);
}
void d_0 (void)
{
char j ;
digitalWrite ( a, HIGH);
digitalWrite ( b, HIGH);
digitalWrite ( c, HIGH);
digitalWrite ( d, HIGH);
digitalWrite ( e, HIGH);
digitalWrite ( f, HIGH);
}
void clearall()//关闭全部的管子
{
for ( int k = 4; k <= 12; k++)
digitalWrite( k, LOW);
}
void setup ()
{
for ( int i = 4; i <= 12; i++)
pinMode ( i, OUTPUT);
pinMode ( 8, INPUT);
}
void loop ()
{
clearall();//先确保都是关着的
delay(50);//延迟可要可不要
d_1();
delay(500);
clearall();
delay(50);
d_2();
delay(500);
clearall();
delay(50);
d_3();
delay(500);
clearall();
delay(50);
d_4();
delay(500);
clearall();
delay(50);
d_5();
delay(500);
clearall();
delay(50);
d_6();
delay(500);
clearall();
delay(50);
d_7();
delay(500);
clearall();
delay(50);
d_8();
delay(500);
clearall();
delay(50);
d_9();
delay(500);
clearall();
delay(50);
d_0();
delay(500);
clearall();
delay(50);
}
Uduse 发表于 2012-7-27 02:24 static/image/common/back.gif
纯小白贴段代码,共阴,型号d5611
觉得楼主关数码管的方式有点麻烦,还要加循环...导致像我这类的小白各 ...
:lol这个代码比我那个好多了
不知道怎么回事,我把程序里的HIGH和LOW互换后才正确显示,是因为数码管是共阴?
另附一张数码管的A-G的图
ttyp 发表于 2012-9-28 20:53 static/image/common/back.gif
不知道怎么回事,我把程序里的HIGH和LOW互换后才正确显示,是因为数码管是共阴?
另附一张数码管的A-G的 ...
嗯,共阴的原因。
byte code[]= {0x84,0x9F,0xC8,0x8A,0x93,0xA2,0xA0,0x8F,0x80,0x82};
void setup()
{
for(byte j=4;j<12;j++)
{
pinMode(j, OUTPUT);
}
}
void sevenSegWrite(byte digit)
{
byte pin = 11;
for (byte i=0;i<8;i++)
{
digitalWrite(pin, bitRead(code,i));
pin--;
}
}
void loop() { //设置显示效果为从9开始倒数
for (byte count = 0; count < 10; count++) {
delay(500);
sevenSegWrite(count);
}
delay(1000);
}
我用proteus仿真,为什么从0到9能循环计数,但是把循环体改成从9到0就只能循环一次然后停止
void loop() { //设置显示效果为从9开始倒数
for (byte count = 9; count >= 0;count--) {
delay(500);
sevenSegWrite(count);
}
}
就是这样
:(我学的Linux 下X86.的C 弄得我看什么C都是略懂。。有些细节弄不明白啊 怎么办
陈冬冬 发表于 2012-1-17 18:04 static/image/common/back.gif
void sevenSegWrite(byte digit) {//设置通过数组控制引脚开关,顺序为4-11号端口
byte pin = 4;
f ...
void sevenSegWrite(int digit) {//设置通过数组控制引脚开关,顺序为4-11号端口
int pin = 4;
for (int segCount = 0; segCount <=7; segCount++) {
digitalWrite(pin, seven_seg_digits);
++pin;
}
}
void loop() { //设置显示效果为从9开始倒数
for (int count =9; count >=0; count--) {
delay(1000);
sevenSegWrite(count);
}
delay(2000);
}这个比较符合我的思维习惯
之之风 发表于 2013-5-29 00:46 static/image/common/back.gif
void sevenSegWrite(int digit) {//设置通过数组控制引脚开关,顺序为4-11号端口
int pin = 4;
f ...
就是不知道用byte比起int有何优势
用byte的话0--就死机了
玄冰之神 发表于 2013-4-16 11:03 static/image/common/back.gif
我学的Linux 下X86.的C 弄得我看什么C都是略懂。。有些细节弄不明白啊 怎么办
找本 C程序设计语言学一遍.http://book.douban.com/subject/1139336/
伯德 发表于 2013-5-29 01:25 static/image/common/back.gif
找本 C程序设计语言学一遍.http://book.douban.com/subject/1139336/
这本书我有实体书。。现在想学C++有好书介绍么?