proteus仿真arduino控制两位数码管

前面我们用arduino控制一位数码管,知道了控制数码管的原理。这里我们增加了一位,其显示的原理基本一样。只不过本质上不是两位同时点亮,而是轮换点亮。下面是原理图:
在这里插入图片描述

我们来看看代码的实现:

int PIN_A=2;
int PIN_B=3;
int PIN_C=4;
int PIN_D=5;
int PIN_E=6;
int PIN_F=7;
int PIN_G=8;
int POW1=13;
int POW2=12;
int i=0;
int j=0;
int n=0;
int  Arduino_Pins[7]={PIN_A, PIN_B, PIN_C, PIN_D, PIN_E, PIN_F, PIN_G};
int Segment_Pins[10] [7]={
{0,1,1,1,1,1,1},//0
{0, 0,0,0, 1, 1,0},//1
{1,0,1,1,0,1,1},//2
{1,0, 0, 1,1,1,1},//3
{1,1,0,0, 1, 1,0},//4
{1,1,0, 1,1, 0, 1},//5
{1,1,1,1,1,0,1},//6
{0,0,0,0,1,1, 1},//7
{1,1, 1,1,1,1,1},//8
{1,1,0,1,1,1,1},//9
};



void setup () {

// TODO: put your setup code here, to run once:

for(int i=2;i<14;i++)
pinMode(i,OUTPUT);
}

void loop() {

// TODO: put your main code here, to run repeatedly:
   for (i=0;i<10;i++)
   {
	 digitalWrite (POW1, 0) ;
	 digitalWrite (POW2,1);
	 for(j=0;j<7;j++) 
	    digitalWrite (Arduino_Pins[j], Segment_Pins[n%10] [j]); 
	 delay (50);
	 
	 digitalWrite (POW1,1);
	 digitalWrite (POW2, 0);
	 for (j=0;j<7;j++) 
	 digitalWrite(Arduino_Pins[j], Segment_Pins[i][j]);
	 delay (50);
	 

  }
n++;
}

运行效果如下:
在这里插入图片描述
从代码中我们很容易看出,两位数码管是轮换点亮的,快速的切换,利用我们的视觉停留感让我们觉得他们是同时点亮的。如果我们将代码中的delay(50)修改为更大的数值,我们就会看到两位数码管乱换点亮。

用arduino板直接控制两位数码管的缺点就在于端口占用太多,至少需要10个端口,那么我们是可以仿照前面的控制一位数码管的方法来操作的,用一片595来控制,有兴趣可以参看我后面的博文《protues用一片74hc595控制两位数码管》。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河西石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值