极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16773|回复: 3

数码管0到9计数(每个数定义成函数的)

[复制链接]
发表于 2016-11-11 20:49:15 | 显示全部楼层 |阅读模式
int a=2;//定义数字接口2 连接a 段数码管
int b=3;// 定义数字接口3 连接b 段数码管
int c=4;// 定义数字接口4 连接c 段数码管
int d=5;// 定义数字接口5 连接d 段数码管
int e=6;// 定义数字接口6 连接e 段数码管
int f=7;// 定义数字接口7 连接f 段数码管
int g=8;// 定义数字接口8 连接g 段数码管
int dp=9;// 定义数字接口9 连接dp 段数码管
void digital_0(void) //显示数字0
{
unsigned char i;
digitalWrite(g,HIGH);
digitalWrite(dp,HIGH);
for(i=2;i<=7;i++)
digitalWrite(i,LOW);
}
void digital_1(void) //显示数字1
{
unsigned char i;
digitalWrite(c,LOW);//点亮c 段
digitalWrite(b,LOW);//给数字接口3 引脚高电平,点亮b段
for(i=5;i<=9;i++)//熄灭其余段
digitalWrite(i,HIGH);
digitalWrite(a,HIGH);
}
void digital_2(void) //显示数字2
{
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(g,LOW);
digitalWrite(c,HIGH);
digitalWrite(f,HIGH);
digitalWrite(dp,HIGH);
}
void digital_3(void) //显示数字3
{
  unsigned char i;
for( i=2;i<=5;i++)//熄灭其余段
digitalWrite(i,LOW);
digitalWrite(g,LOW);
digitalWrite(f,HIGH);
digitalWrite(e,HIGH);
digitalWrite(dp,HIGH);
}
void digital_4(void) //显示数字4
{
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(a,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(dp,HIGH);
}
void digital_5(void) //显示数字5
{
digitalWrite(a, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(b,HIGH);
digitalWrite(e,HIGH);
digitalWrite(dp,HIGH);

}
void digital_6(void) //显示数字6
{
unsigned char i;
for(i=4;i<=8;i++)
digitalWrite(i,LOW);
digitalWrite(b,HIGH);
digitalWrite(dp,HIGH);
}
void digital_7(void) //显示数字7
{
unsigned char i;
for(i=2;i<=4;i++)
digitalWrite(i,LOW);
for(i=5;i<=9;i++)
digitalWrite(i,HIGH);
}
void digital_8(void) //显示数字8
{
for( int i=2;i<=8;i++)
digitalWrite(i,LOW);
digitalWrite(dp,HIGH);
}
void digital_9(void) //显示数字9
{
unsigned char i;
for(i=2;i<=5;i++)
digitalWrite(i,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(e,HIGH);
digitalWrite(dp,HIGH);
}
void setup()
{
int i;//定义变量
for(i=2;i<=11;i++)
pinMode(i,OUTPUT);//设置2~11 引脚为输出模式
digitalWrite(10,HIGH);
//digitalWrite(b,LOW);digitalWrite(11,HIGH);
}
void loop()
{
while(1)
{
digital_0();//显示数字0
delay(1000);//延时1s
digital_1();//显示数字1
delay(1000);//延时1s
digital_2();//显示数字2
delay(1000); //延时1s
digital_3();//显示数字3
delay(1000); //延时1s
digital_4();//显示数字4
delay(1000); //延时1s
digital_5();//显示数字5
delay(1000); //延时1s
digital_6();//显示数字6
delay(1000); //延时1s
digital_7();//显示数字7
delay(1000); //延时1s
digital_8();//显示数字8
delay(1000); //延时1s
digital_9();//显示数字8
delay(1000); //延时1s
}
}
回复

使用道具 举报

发表于 2016-11-11 22:51:16 | 显示全部楼层
int yinjiao[8]={4,5,6,7,8,9,10,11};
byte DIGITAL_DISPLAY[10][8]= { //设置0-9数字所对应数组,共阳数码管“0”为点亮的原则
{ 0,0,0,0,0,0,1,1 }, // = 0
{ 1,0,0,1,1,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0,1 }, // = 2
{ 0,0,0,0,1,1,0,1 }, // = 3
{ 1,0,0,1,1,0,0,1 }, // = 4
{ 0,1,0,0,1,0,0,1 }, // = 5
{ 0,1,0,0,0,0,0,1 }, // = 6
{ 0,0,0,1,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0,1 }, // = 8
{ 0,0,0,0,1,0,0,1 }, // = 9
};

void setup() {
   for(int i=0;i<8;i++)
      pinMode(yinjiao[i], OUTPUT);

}
void smg(int num,int dian)
{
    for (int s = 0; s < 8; s++)
       digitalWrite(yinjiao[s], DIGITAL_DISPLAY[num][s]);
    if(dian==1)
        digitalWrite(yinjiao[7], 0);
}
void loop() {
//0-9数字显示
    for (int k = 0; k <10; k++)
    {
        smg(k,0);
        delay(100);
    }
}
回复 支持 反对

使用道具 举报

发表于 2016-11-13 08:49:08 | 显示全部楼层
ls正解111111
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-13 23:02:24 | 显示全部楼层
275891381 发表于 2016-11-11 22:51
int yinjiao[8]={4,5,6,7,8,9,10,11};
byte DIGITAL_DISPLAY[10][8]= { //设置0-9数字所对应数组,共阳数码 ...

这中解法是为了之后解决二位的数码管或者4位数码管的时候方便理解
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 02:27 , Processed in 0.079049 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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