当前位置: 首页 > article >正文

嵌入式入门学习——6Protues点亮数码管,认识位码和段码,分辨共阴还是共阳(数字时钟第一步)

0 系列文章入口

嵌入式入门学习——0快速入门,Let‘s Do It!
首先新建基于Arduino UNO的protues工程,见本系列第3篇文章
1 点“P”按钮找器件
2 输入“seg”或“digit”查找数码管器件
3 找到我们想要的6位7段数码管
在这里插入图片描述
4如图A、B…DP都是段码,1、2…6是位码,段码位码我不再这里解释了,网上教程很多,让我们试试他是共阴还是共阳,共阴还是共阳网上解释也很多,我这图上的接法少串连了一个限流电阻,实际这么接可能电流过大烧毁发光二极管,然后我们开始仿真发现没动静,那就把电源和地换个方向。
在这里插入图片描述
换了方向可见二极管都点亮了,顺便也可以知道具体引脚对应的位置。实际工作中如果遇到不确定型号的数码管也可以使用这种方法上电测试。
对了连接完成电路后要点击左下角的仿真按钮才能让电路开始工作哦。
在这里插入图片描述
知道这些了我们就可以用Arduino UNO控制LED显示了,下图展示了流水灯程序,可以直观的看出每位数字的每个段码被依次点亮,当段码为高电平(红色)位码为低电平(蓝色)LED就被点亮啦。
请添加图片描述
程序如下:

void clearall()
{
  for(int seg=0;seg<8;seg++)
  {
    digitalWrite(seg, LOW);   // 段码清零
  }
  for(int num=8;num<14;num++)
  {
    digitalWrite(num, HIGH);   // 位码清零
  }

}
void setup() {
  for(int seg=0;seg<8;seg++)
  {
    pinMode(seg, OUTPUT); // 设置为输出模式
    digitalWrite(seg, LOW);   // 段码清零
  }
  for(int num=8;num<14;num++)
  {
    pinMode(num, OUTPUT); // 设置为输出模式
    digitalWrite(num, HIGH);   // 位码清零
  }
}
void loop() {
  for(int j=8;j<14;j++)
  {
    digitalWrite(j, LOW);   // 依次将位选设置成低电平
     for(int i=0;i<8;i++)
     {
     digitalWrite(i, HIGH);   // 依次把段选设置为高电平
     delay(100);
     } 
     clearall();
  }
}

不过这样控制可不优雅,这样要显示数字也太难了吧,还要去算那个数字由哪些段码组成,比如8就是0xFE(不显示小数点)7就是0xE0(只显示A、B、C对应的LED),而且Arduino还不支持C51或者STM32那样按组给GPIO赋值只能用循环的方式挨个比特赋值。下期教程引入第三方库SevSeg,让我们优雅的显示数字吧。顺便看看这个库底层是怎么设计的。


http://www.kler.cn/news/357622.html

相关文章:

  • C语言初阶小练习2(三子棋小游戏的实现代码)
  • 【HTML】构建网页的基石
  • Redis高可用与分布式方案实战指南
  • 浙大数据结构:11-散列4 Hashing - Hard Version
  • Android常用C++特性之std::bind
  • 【Qt】控件——Qt按钮类控件、常用的按钮类控件、按钮类控件的使用、Push Button、Radio Button、Check Box
  • Ubuntu20.04同时安装ROS1和ROS2,如何选择ROS1 or ROS2
  • 深度探索:Linux CentOS 7内核的奥秘与管理之道
  • AVL树的概念与实现
  • [json][ini]文件的相互转化
  • 常见的Java面试题
  • C++ 20 Concept
  • GPTs及Assistant API快速开发AI应用实战
  • android:launchMode=“singleInstancePerTask“
  • 自动化测试数据:如何正确地选择不同格式文件「详细介绍」?
  • error: cannot find symbol import android.os.SystemProperties;
  • C#学习笔记(六)
  • 如何精准设置线程数,提升系统性能的秘密武器!
  • JMeter如何设置HTTP代理服务器?
  • aspose.cells快速入门