——这节,我们要用一位数码管显示0~9

但是在学习前,我们需要了解一些东西:

1.与 的运算

与运算
0&0=0 0&1=0 1&1=1 1&0=0

即   两个同时为1 结果才为1,否则为0

2.或 的运算

或运算
0|0=0 0|1=1 1|1=1 1|0=1

一个1 就是1,否则为0

3

十六位进制,二进制的对应关系
0 0000 4 0100 8 1000 c 1100
1 0001 5 0101 9 1001 d 1101
2 0010 6 0110 a 1010 e 1110
3 0011 7 0111 b 1011 f 1111

我们接下来先来看一串代码

//显示数字3
int value = 0x4F;
void setup()
{for (int i = 2 ; i < 9; i++)
{pinMode(i , OUTPUT);
}
}void loop(){
for (int i = 2 ; i < 9; i++ )
{digitalWrite(i,value&0x01);value >>= 1;
}
}

分析:

对于 void setup()  :  我们使用一个for循环把d2 到 d8 口全部都打开

!!!!!

对于 void loop()  :  我们对循环体内的说明

value & 0x01 是什么含义? 首先,value 为 01001111(0x4F,8进制)0x01 为 00000001

我们上面学过&运算 全部都是 1 为1,所以这个运算,我们把他理解为取最低位值的运算

>>为位移运算符,在这就是右移运算符,而  >>= 10100111(1),把括号内的移掉,然后在左边的空位上补0

所以第一个循环中 i = 2;输出值为1 所以为高电平;

第二个循环中 i  =3;输出值为1 所以为高电平;

....

第五个循环中 i =6;输出值为0 所以为高电平;

...

第七个循环中 i =8;输出值为0 所以为高电平;

所以得到

a b c d e f g h
1 1 1 1 0 0 1 0
D2 D3 D4 D5 D6 D7 D8 D9

所以 a b c d g 是亮的,

所以我们显示的是数字 3,所以我们的代码abcdefg是从右到左的顺序开始的

接下来我们对数字的段码进行分析:

一位共阴数码管
对应数码管 h g f e    d c b a  对应
0 0 0 1 1   1 1 1 1 0x3F
1 0 0 0 0   0 1 1 0 0x06
2 0 1 0 1   1 0 1 1 0xx8
3 0 1 0 0   1 0 1 1 0x4F
4 0 1 1 0   0 1 1 0 0x66
5 0 1 1 0   1 1 0 1 0x6D
6 0 1 1 1   1 1 0 1 0x7D
7 0 0 0 0   0 1 1 1  0x07
8 0 1 1 1   1 1 1 1  0x7F
9 0 1 1 0   1 1 1 1  0x6F
void sendData1( int value)// 数字段码
{for( int i = 2 ; i<=9 ; i++){digitalWrite(i,value & 0x01);value >>= 1;}delay(500);
}void setup() {for(int i=2 ; i<=9 ; i++){pinMode(i,OUTPUT);}
}void loop() {//过去sendData1(0x3F);sendData1(0x06);sendData1(0x5B);sendData1(0x4F);sendData1(0x66);sendData1(0x6D);sendData1(0x7D);sendData1(0x07);sendData1(0x7F);sendData1(0x6F);
//回来sendData1(0x6F);sendData1(0x7F);sendData1(0x07);sendData1(0x7D);sendData1(0x6D);sendData1(0x66);sendData1(0x4F);sendData1(0x5B);sendData1(0x06);sendData1(0x3F);}

我们接着来看这段代码,里面有一个非常重要的函数  delay()

!!!  如果没有delay()会发生什么呢?

在这个代码中,我们的数码管 只会显示 0,为什么?  我们把  delay 理解为延时函数,而我的个人理解,就是执行的时长(我们在这以毫秒为单位),如果没有  delay(),我们的函数就会一直执行下去,也就是我的输入的  sendData1(0x3F) ,这样的话,如果一直让他输入,那我们后面的输入就不会出现,所以一直是 0

当我们使用 delay()后,我们这为0.5秒,也就是我们把    sendData(0x3F)  执行0.5秒,当我们执行完了以后,就会跳到下一个sendData(0x06);以此类推 这样我们就能实现 数码管从 0~9~0 的一个变换。

但是上述做法采用的依旧是堆叠的手段,我们如何让我们的代码变得更简单一点呢?

因此我们引入了 —— 数组

我们采取数组,就可以把代码给简单化了

Arduino(二)——数码管显示(不同程序)相关推荐

  1. Arduino:数码管显示原理详解和Proteus仿真实验

    Arduino:数码管显示原理详解和Proteus仿真实验 Proteus仿真 数码管介绍 数码管是半导体发光元件,其基本单元是发光二极管.根据段数,数码管分为七段管和八段管. 八段管比七段管还多一个 ...

  2. avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机8位数码管显示的程序实现(两种方法介绍)...

    描述 本文为大家介绍两个AVR单片机8位数码管显示的程序实现. AVR单片机595驱动8位数码管的显示的电路实现 主程序代码 #include > #include //GCC中的延时函数头文件 ...

  3. 数码管显示倒计时c语言程序,1~99秒倒计时数码管显示C程序+Proteus仿真

    1~99秒倒计时数码管显示C程序+Proteus仿真文件. 优化了程序,使用51单片机内部定时器,可以实现1-99秒内倒计时. 仿真效果为: 源程序为: /* 调试环境:Proteus 7.8AT89 ...

  4. max7219c语言,51单片机+MAX7219数码管显示C程序

    /************************************************** *程序名称:  MAX7219 C语言控制程序 *程序功能: 3线串行控制8位共阴数码管 *3线 ...

  5. 63、基于51单片机数字频率计NE555数码管显示系统设计(程序+原理图+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)

    摘  要 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域. ...

  6. avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机控制8段LED数码管同时显示 - AVR单片机8位数码管显示的程序实现(两种方法介绍)...

    AVR单片机控制8段LED数码管同时显示 这是一个简单的供单片机入门学习者练习用的8段LED数码管控制汇编程序,控制一个两位的数码管同时显示字符(动态刷新).用AVR- Studio-4 开发,在AV ...

  7. Arduino控制数码管显示,亮度,冒号,字符(四段共阳)

    用途:显示指定的内容(分类:时间,时间+温度,时间+湿度,错误码) 主要功能: 1)根据时段自动调整显示亮度(最暗,最亮,默认) 2)如何设置冒号: 3)如何更新4位数字或后面符号(第4位0~9和A~ ...

  8. 【Arduino实验10 数码管显示】

    目录 一.实验目的 二.实验设备与环境 三.实验重点 四.实验难点 五.实验内容 5.1实验任务 5.2实验原理 5.3实验内容 5.4实验结果 5.5思考题 一.实验目的 (1)掌握1位数码管模块的 ...

  9. 【Arduino】四位数码管显示

    程序名称:数码管静态显示 程序功能:四位数码管显示 程序版本:Ver 1.0 编写日期:2020/07/30 作者信息:天津科技大学创新实验室-JC /************************ ...

  10. c语言控制数码管显示时间,单片机 控制 数码管显示

    常见LED数码管 LED数码管(LED Segment Displays)简介 数码管也称LED数码管,是由多个发光二极管封装在一起的"8"字型的器件. 按发光二极管单元连接方式可 ...

最新文章

  1. 视频系列:RTX实时射线追踪(下)
  2. 一篇文章回顾智源悟道 1.0 发布全程
  3. 43行代码AC——HDU 1757 A Simple Math Problem(矩阵快速幂,附快速幂讲解)
  4. 【渝粤教育】21秋期末考试建设工程法规10221k1
  5. IOS web app一些实用的属性设置
  6. 缓存中间件-Memcache命令介绍
  7. 什么是随机存取存储器
  8. 【Codeforces 467C】George and Job
  9. Java后端面试题总结一
  10. class文件反编译后的汉字乱码问题
  11. 绫辻行人《杀人偶人馆》读后感
  12. 合格前端系列第七弹-移动端开发踩过的一些坑
  13. 游戏服务端(MMORPG)的基础算法二、寻路
  14. 微信云托管常见问题FAQ(一)
  15. 【conda环境下如何安装rdkit】
  16. 第一章:渗透测试的本质信息收集
  17. 运动放大、视频放大、Video Motion Magnification、Video Magnification
  18. Double计算结果精度出错问题以及解决方法
  19. 【自习任我行】任务跟踪3
  20. 英语二 - 常用词根七

热门文章

  1. 内网安全-Docker逃逸DMZ穿透
  2. 【排队叫号系统】与门诊预约共通、HIS系统共连 实现门诊“一站式”管理服务
  3. 计算机免费维修时代,电脑维修进入自助时代 电脑管家诊所很忙
  4. 狄立克雷函数傅立叶变换0点_你真的理解傅立叶变换吗?
  5. 【狮子数学】00五类初等函数的图像及几类特殊函数
  6. db2数据库编目mysql数据库_DB2客户端,查看、增加、删除节点和数据库编目
  7. 《失去的胜利》,曼施坦因。
  8. 超详细JDK1.8所有版本下载地址
  9. 如何从游戏配音试音中辨别质量?
  10. Elastic stack7.8.1启用安全认证,启用https,TLS,SSL 安全配置详解