Arduino(二)——数码管显示(不同程序)
——这节,我们要用一位数码管显示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(二)——数码管显示(不同程序)相关推荐
- Arduino:数码管显示原理详解和Proteus仿真实验
Arduino:数码管显示原理详解和Proteus仿真实验 Proteus仿真 数码管介绍 数码管是半导体发光元件,其基本单元是发光二极管.根据段数,数码管分为七段管和八段管. 八段管比七段管还多一个 ...
- avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机8位数码管显示的程序实现(两种方法介绍)...
描述 本文为大家介绍两个AVR单片机8位数码管显示的程序实现. AVR单片机595驱动8位数码管的显示的电路实现 主程序代码 #include > #include //GCC中的延时函数头文件 ...
- 数码管显示倒计时c语言程序,1~99秒倒计时数码管显示C程序+Proteus仿真
1~99秒倒计时数码管显示C程序+Proteus仿真文件. 优化了程序,使用51单片机内部定时器,可以实现1-99秒内倒计时. 仿真效果为: 源程序为: /* 调试环境:Proteus 7.8AT89 ...
- max7219c语言,51单片机+MAX7219数码管显示C程序
/************************************************** *程序名称: MAX7219 C语言控制程序 *程序功能: 3线串行控制8位共阴数码管 *3线 ...
- 63、基于51单片机数字频率计NE555数码管显示系统设计(程序+原理图+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)
摘 要 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域. ...
- avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机控制8段LED数码管同时显示 - AVR单片机8位数码管显示的程序实现(两种方法介绍)...
AVR单片机控制8段LED数码管同时显示 这是一个简单的供单片机入门学习者练习用的8段LED数码管控制汇编程序,控制一个两位的数码管同时显示字符(动态刷新).用AVR- Studio-4 开发,在AV ...
- Arduino控制数码管显示,亮度,冒号,字符(四段共阳)
用途:显示指定的内容(分类:时间,时间+温度,时间+湿度,错误码) 主要功能: 1)根据时段自动调整显示亮度(最暗,最亮,默认) 2)如何设置冒号: 3)如何更新4位数字或后面符号(第4位0~9和A~ ...
- 【Arduino实验10 数码管显示】
目录 一.实验目的 二.实验设备与环境 三.实验重点 四.实验难点 五.实验内容 5.1实验任务 5.2实验原理 5.3实验内容 5.4实验结果 5.5思考题 一.实验目的 (1)掌握1位数码管模块的 ...
- 【Arduino】四位数码管显示
程序名称:数码管静态显示 程序功能:四位数码管显示 程序版本:Ver 1.0 编写日期:2020/07/30 作者信息:天津科技大学创新实验室-JC /************************ ...
- c语言控制数码管显示时间,单片机 控制 数码管显示
常见LED数码管 LED数码管(LED Segment Displays)简介 数码管也称LED数码管,是由多个发光二极管封装在一起的"8"字型的器件. 按发光二极管单元连接方式可 ...
最新文章
- 视频系列:RTX实时射线追踪(下)
- 一篇文章回顾智源悟道 1.0 发布全程
- 43行代码AC——HDU 1757 A Simple Math Problem(矩阵快速幂,附快速幂讲解)
- 【渝粤教育】21秋期末考试建设工程法规10221k1
- IOS web app一些实用的属性设置
- 缓存中间件-Memcache命令介绍
- 什么是随机存取存储器
- 【Codeforces 467C】George and Job
- Java后端面试题总结一
- class文件反编译后的汉字乱码问题
- 绫辻行人《杀人偶人馆》读后感
- 合格前端系列第七弹-移动端开发踩过的一些坑
- 游戏服务端(MMORPG)的基础算法二、寻路
- 微信云托管常见问题FAQ(一)
- 【conda环境下如何安装rdkit】
- 第一章:渗透测试的本质信息收集
- 运动放大、视频放大、Video Motion Magnification、Video Magnification
- Double计算结果精度出错问题以及解决方法
- 【自习任我行】任务跟踪3
- 英语二 - 常用词根七
热门文章
- 内网安全-Docker逃逸DMZ穿透
- 【排队叫号系统】与门诊预约共通、HIS系统共连 实现门诊“一站式”管理服务
- 计算机免费维修时代,电脑维修进入自助时代 电脑管家诊所很忙
- 狄立克雷函数傅立叶变换0点_你真的理解傅立叶变换吗?
- 【狮子数学】00五类初等函数的图像及几类特殊函数
- db2数据库编目mysql数据库_DB2客户端,查看、增加、删除节点和数据库编目
- 《失去的胜利》,曼施坦因。
- 超详细JDK1.8所有版本下载地址
- 如何从游戏配音试音中辨别质量?
- Elastic stack7.8.1启用安全认证,启用https,TLS,SSL 安全配置详解