【更好用的单片机】Stduino拓展学习(一)四位数码管

【基于STM32】Stduino拓展学习(一)四位数码管

本文转载自:http://www.stduino.com/forum.php?mod=viewthread&tid=63&extra=page%3D1=

关键词:
51、stm32、arduino、stduino单片机、stduino UNO&Nano、四位数码管

说明:
数码管(七段显示器)能够显示 0〜9 十个字符,生活中进场在一些只需要显示数字的地方出现,例如电子秤,食堂刷卡终端,电梯楼层显示等等。数码管有多种型号,其中显示4 位数的为四位数码管。
在这里插入图片描述
在讲解四位数码管之前,我们先介绍一位数码管,也是最简单的一种。如下图:
在这里插入图片描述
一位数码管的数字共有七段,每一段实际是一独立的 LED ,因此数码管也被称为七段数码管。通过控制LED 输入的高低电平控制亮灭,从而变化出0〜9 这9 个字符(如下图)。
在这里插入图片描述
共阳极,即七段 LED 公共同一个阳极,那么通过控制每一段是否接地来控制亮灭(接地,则电路导通,点亮;反之交替)。共波长,即七段LED 共享同一个波导接地,然后通过控制每一段输入的高电平控制亮灭(如下图)。
在这里插入图片描述
有一些数码管带有 IC ,能够通过集成电路进行控制。但是这个数码管比较原始,一个七段数码管需要更长的IO 口,需要我们自己手动写每个一个字符的高配置。
四位数码管就是集合了四个单位的数码管,其也包括共阴型与共阳型两种。我们知道七段数码管需要插孔 IO 口,四位数码管每个数码管的数字不同,那么就需要进行单独控制。所以应该需要32 个IO 口,显然这会占用过多的端口。
在这里插入图片描述
实际,四位数码管每只有一个数码管显示字形,其他三个数码管断电不显示。四个数码管依次循环显示,当频率足够大时,人眼由于视觉残留的缘故,就会觉得四个数码管是同时点亮的,看到连续的显示效果。这就好像,,每个帧都是不同的,但是播放的速度足够快( 24 帧每秒),人眼就会觉得画面动起来了。
这样,四位数码管只需要连接 12 个插座。其中有时用来控制单位数码管的8 个LED ,称为段码;另外四个用来控制选择点亮和熄灭的数码管(每次只有一个点亮)。
在这里插入图片描述

实验目的:
点亮数码管,并实时显示程序运行的时间(秒)。

器材:
Stduino纳米/ UNO; 4 位数码管;杜邦线;面包板; 220 Ω电阻

电路连接:
在这里插入图片描述

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">整数秒= 0; </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">void setup()</font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">{
    </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">  //将您的安装代码放在这里,可以运行一次:</font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(1,OUTPUT); // A </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(2,OUTPUT); // B </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(3,OUTPUT); // C </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(4 ,OUTPUT); // D </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(5,OUTPUT); // E </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(6,OUTPUT); // F </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(7,OUTPUT); // G </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(8,OUTPUT); // DP </font></font>
    
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(19 ,OUTPUT); // 1 </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(18,OUTPUT); // 2 </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(17,OUTPUT); // 3 </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    pinMode(16,OUTPUT); // 4 </font></font>
    
    
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    digitalWrite(19,LOW); </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    digitalWrite(18,LOW); </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    digitalWrite(17,LOW); </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    digitalWrite(16,LOW); </font></font>
 
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">} </font></font>
 
 
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">// void SevSegInit()</font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">void showNum(int num,bool point = false</font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">    {
   if(point)</font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">        {
    </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">            digitalWrite(8,HIGH); // DP,TRUE </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">        } else {
    </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">            digitalWrite(8,LOW); // DP,FALSE </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">            } </font></font>
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">        switch(num)</font></font>
<font style=<
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值