Arduino 入门到精通 例程16-数码管

合集下载

ArduBlock零基础编程

ArduBlock零基础编程
2.ArduBlock 介绍
一款为 Arduino 设计的图形化编程软件,由上海新车间创客开发。ArduBlock 软件是 Arduino 官方编程环境的第三方软件,目前必须依附于 Arduino 软件下运行,区别于 Arduino 文本式 编程环境,ArduBlock 是以图形化积木搭建的方式编程的,这样的方式会使编程的可视化 和交互性加强,编程门槛降低,即使没有编程经验的人也可以尝试给 Arduino 控制器编写 程序。

ArduBlock 零基础编程套件
---For Arduino
ArduBlock 零基础编程套件是科易互动科技最新推出的一款基于 Arduino 爱好者的图形化编 程学习套件,大大降低了爱好者的学习难度,所有编程都可以通过搭积木的方式,把高级的 计算机语言和专业的语法,简化为一个个模块,堆砌在一起。最后和 Arduino 开发板互动, 做出激动人心的效果。
简单,但不至于太简单
传统开发板往往过于复杂,有很多附件,例如液晶显示屏,按钮,发光二级管,7段数码 管等等。开发板展示了其一切功能。Arduino 板上显示的功能数量是绝对最小值,如果要实现 功能扩展,只需增加 Shield(盾)。Arduino Shield 有成百上千,从液晶显示屏到无线上网 技术,但要增加多少 Shield 由用户自己定。扩展 Shield 的功能也容易,对于制作扩展 Shield 功能的人还会有商业上的刺激。 非芯片制造商制造 Arduino 开发板不是由芯片制造商设计的。为什么强调这点呢?因为芯片制造商为了突出自 己的产品与众不同,他们常常会添加一些奇怪的东西。而 Arduino 强调微控器间的共同性而 不是差异性。这就意味着 Arduino 是一个绝佳的初学者平台,只要在 Arduino 板上可以做的 事情,您在其他任何的微控制器上都可以做。这一基本特征将伴随您很长时间。

Arduino教程(非常适合初学者)

Arduino教程(非常适合初学者)

Arduino教程一: 数字输出Arduino, 教程11 Comments »Arduino的数字I/O被分成两个部分,其中每个部分都包含有6个可用的I/O管脚,即管脚2到管脚7和管脚8到管脚13。

除了管脚13上接了一个1K的电阻之外,其他各个管脚都直接连接到ATmega上。

我们可以利用一个6位的数字跑马灯,来对Arduino数字I/O 的输出功能进行验证,以下是相应的原理图:电路中在每个I/O管脚上加的那个1K电阻被称为限流电阻,由于发光二极管在电路中没有等效电阻值,使用限流电阻可以使元件上通过的电流不至于过大,能够起到保护的作用。

该工程对应的代码为:int BASE = 2;int NUM = 6;int index = 0;void setup(){for (int i = BASE; i < BASE + NUM; i ++){pinMode(i, OUTPUT);}}void loop(){for (int i = BASE; i < BASE + NUM; i ++) {digitalWrite(i, LOW);}digitalWrite(BASE + index, HIGH);index = (index + 1) % NUM;delay(100);}下载并运行该工程,连接在Arduino数字I/O管脚2到管脚7上的发光二极管会依次点亮0.1秒,然后再熄灭:这个实验可以用来验证数字I/O输出的正确性。

Arduino上一共有十二个数字I/O管脚,我们可以用同样的办法验证其他六个管脚的正确性,而这只需要对上述工程的第一行做相应的修改就可以了:int BASE = 8;SEP01Arduino教程二: 数字输入Arduino, 教程3 Comments »在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。

Arduino从数字I/O管脚上只能读出高电平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成Arduino能够读取的高/低电平。

数码管驱动程序实例

数码管驱动程序实例

数码管驱动程序实例介绍数码管是一种常见的显示设备,通常用于显示数字和部分字母。

为了控制数码管的显示内容,我们需要编写一段驱动程序来控制数码管的工作。

本文将介绍一个数码管驱动程序的实例,包括硬件连接、代码编写和运行效果展示。

通过学习这个实例,你将了解到如何使用Arduino来驱动数码管进行数字显示。

硬件连接首先,我们需要准备以下硬件组件:•Arduino开发板•数码管(常见的有共阳极和共阴极两种类型)接下来,按照以下步骤进行硬件连接:1.将Arduino开发板与电脑连接,并打开Arduino IDE。

2.将数码管的引脚与Arduino开发板上的数字引脚相连。

具体连接方式取决于你使用的数码管类型,请参考相关资料或数据手册。

3.使用面包板或杜邦线等工具完成引脚连接。

代码编写完成硬件连接后,我们可以开始编写代码了。

以下是一个简单的数码管驱动程序示例:// 引入库#include <SevSeg.h>// 创建一个SevSeg对象并指定引脚SevSeg sevseg;void setup() {// 初始化数码管sevseg.begin(COMMON_CATHODE, 4, 3, 2, 1, 0, 6, 7, 5, 8);}void loop() {// 显示数字0-9for (int i = 0; i < 10; i++) {sevseg.setNumber(i);sevseg.refreshDisplay();delay(1000);}}代码解析:1.首先,我们引入了一个名为SevSeg的库,该库提供了控制数码管的函数和方法。

2.在setup()函数中,我们初始化了一个SevSeg对象,并指定了数码管的引脚连接方式。

这里使用的是共阳极数码管,如果你使用的是共阴极数码管,则需要将COMMON_CATHODE改为COMMON_ANODE。

3.在loop()函数中,我们通过一个循环来显示数字0-9。

单片机指令编程实例数码管显示程序设计

单片机指令编程实例数码管显示程序设计

单片机指令编程实例数码管显示程序设计在单片机的开发中,数码管是一种常见的输出设备。

通过编程控制数码管的显示,我们可以实现各种功能,如计时、计数、温度显示等。

本文将介绍一个简单的单片机指令编程实例,用于设计一个数码管显示程序。

一、概述数码管是一种由七段LED组成的显示器件,每个数码管可以显示0-9的数字。

通过合理的控制,可以将多个数码管连接起来并显示多位数值。

在这个实例中,我们将使用AT89C51单片机和共阳数码管进行程序设计。

二、硬件连接将数码管的七段LED引脚依次连接到单片机的GPIO引脚,并将共阳极引脚连接到单片机的VCC。

为了方便控制,可以利用74HC595芯片实现数码管的级联连接,这样只需要使用三个IO口即可控制多个数码管。

三、程序设计程序设计的主要逻辑是通过编写一系列的指令来控制数码管的显示。

以下是一个简单的实例程序:```#include <reg51.h>sbit SDA = P1^0; // 74HC595芯片的串行数据引脚sbit SCK = P1^1; // 74HC595芯片的时钟引脚sbit RCK = P1^2; // 74HC595芯片的输出使能引脚unsigned char code num[10] = {0xC0, // 数字0的显示码0xF9, // 数字1的显示码0xA4, // 数字2的显示码0xB0, // 数字3的显示码0x99, // 数字4的显示码0x92, // 数字5的显示码0x82, // 数字6的显示码0xF8, // 数字7的显示码0x80, // 数字8的显示码0x90 // 数字9的显示码};void delay(unsigned int t) {unsigned int i;while (t--) {for (i = 0; i < 1000; i++);}}void writeByte(unsigned char dat) {unsigned char i;for (i = 0; i < 8; i++) {SDA = (dat & 0x80) ? 1 : 0;dat <<= 1;SCK = 0;SCK = 1;}}void display(unsigned char n) {unsigned char i;for (i = 0; i < 8; i++) {writeByte(num[n]);RCK = 1;RCK = 0;delay(1); // 延时一段时间,使数码管显示出来}}void main() {unsigned char i;while (1) {for (i = 0; i < 10; i++) {display(i);delay(500); // 每个数字显示的时间间隔为500ms}}}```以上程序通过将各个数字的显示码存储在一个数组中,然后通过控制74HC595芯片的串行数据引脚、时钟引脚和输出使能引脚,来实现数码管的动态显示。

Arduino基础课程

Arduino基础课程

课后任务
发挥想象制作一个流 水灯
第六课 模拟输入
• analogRead(引脚或变量名); [0,1023] 本指令用于从 Arduino的模拟输入引脚读取数 值。 Arduino可以将0-5V的电压输入信号映 射到数值0-1023。 换句话说,我们可以将5V等分成1024份。0V 的输入信号对应着数值0,而5V的输入信号对 应着1023。
模式:OUTPUT 输出模式,为电路提供激励
INPUT 输入模式,读取传感器信号或开关信号
笔记
• 模式常量 HIGH、LOW (高电平、低电平) 输出模式:HIGH=5V、LOW=0V 输入模式:HIGH>=3V、LOW<=2V
• digitalWrite(引脚或变量名,模式常量); 将数字引脚输出高低电平
digitalWrite(led2, HIGH);
}
}
void ledmie(){
//灯全灭
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
2路抢答器
int g1=13; int y1=12; int r1=11; int g2=10; int y2=9; int r2=8; void setup() { pinMode(g1, OUTPUT); pinMode(y1, OUTPUT); pinMode(r1, OUTPUT); pinMode(g2, OUTPUT); pinMode(y2, OUTPUT); pinMode(r2, OUTPUT); } void loop() { digitalWrite(g1, HIGH); delay(5000); digitalWrite(g1, LOW); digitalWrite(y1, HIGH); delay(1000); digitalWrite(y1, LOW); digitalWrite(r1, HIGH); delay(5000); digitalWrite(r1, LOW); }

ARDUINO入门及其简单实验(7例)

ARDUINO入门及其简单实验(7例)

ARDUINO⼊门及其简单实验(7例)ARDUINO⼊门及其简单实验(7例) (1)1. Arduino硬件开发平台简介 (1)1.1 Arduino的主要特⾊ (2)1.2 Arduino的硬件接⼝功能描述 (3)1.3 Arduino的技术性能参数 (3)1.4 电路原理图 (4)2. Arduino软件开发平台简介 (5)2.1 菜单栏 (5)2.2 ⼯具栏 (6)2.3 Arduino 语⾔简介 (6)3. Arduino开发实例中所⽤部分器件 (8)1. LED简介 (8)2. 光敏电阻简介 (9)3. 直流电机简介 (9)4. 电位器简介 (10)4. Arduino平台应⽤开发实例 (10)4.1【实作项⽬⼀】利⽤LED作光敏电阻采样实验 (10)4.2【实作项⽬⼆】利⽤PWM信号控制LED亮度 (12)4.3【实作项⽬三】单键控制⼀只LED的亮灭 (15)4.4【实作项⽬四】利⽤PWM控制直流电机转速 (17)4.5【实作项⽬五】利⽤电位器⼿控LED亮度 (19)4.6【实作项⽬六】控制LED明暗交替 (21)4.7【实作项⽬七】利⽤光敏电阻控制LED的亮灭 (23)ARDUINO⼊门及其简单实验(7例)1. Arduino硬件开发平台简介Arduino硬件是⼀块带有USB的I/O接⼝板(其中包括13条数字I/O引脚,6通道模拟输出,6通道模拟输⼊),并且具有类似于Java、C语⾔的集成开发环境。

Arduino既可以扩展⼀些外接的电⼦元器件,例如开关、传感器、LED、直流马达、步进马达或其他输⼊、输出装置;Arduino也可以独⽴运⾏,成为⼀个可以跟交互软件沟通的接⼝装置,例如:Flash、Processing、Max/MSP、VVVV或其他互动软件。

Arduino开发环境IDE全部开放源代码,可以供⼤家免费下载、利⽤,还可以开发出更多激发⼈们制作欲望的互动作品。

如图1和图2所⽰,分别为Arduino硬件平台的实物图和电路布局图。

Arduino入门版使用教程

Arduino入门版使用教程

Arduino入门版使用教程i目录介绍篇 ........................................................................ . (1)一、Arduino 基础套装介绍 (2)1、什麽是Arduino 基础套装 (2)2、元件清单 ........................................................................ (2)二、Arduino 介绍 ........................................................................ (4)1、什麽是Arduino ................................................................... . (4)2、特色描述 ........................................................................ (4)3、性能描述 ........................................................................ (4)三、Arduino C 语言介绍 ........................................................................ .. 61、关键字和符号 ........................................................................ .. (6)2、结构 ........................................................................ .. (9)3、功能 ........................................................................ (9)四、Arduino 使用介绍 ........................................................................ . (11)1、准备好你的Arduino板 (11)2、下载Arduino 开发环境 (13)3、安装USB 驱动 ........................................................................ . (13)4、连接LED 灯电路 ........................................................................ .. (17)5、打开arduino 开发环境 (18)6、打开已有程式 ........................................................................ . (19)7、编译程式 ........................................................................ . (20)8、下载程式 ........................................................................ . (23)五、面包板使用介绍 ........................................................................ .. (30)1、面包板介绍 ........................................................................ . (30)2、面包板的使用 ........................................................................ (30)ii实验篇 ........................................................................ .. (34)第一节多彩led 灯实验 ........................................................................ .. 35一、发光二极管介绍 ........................................................................ .. (35)二、简单的控制一个led 灯的闪烁实验 (39)三、广告灯效果实验 ........................................................................ .. (41)第二节蜂鸣器实验 ........................................................................ (48)一、蜂鸣器介绍 ........................................................................ .. (48)二、蜂鸣器模拟救护车警笛声音实验 (50)第三节数码管实验 ........................................................................ (54)一、数码管介绍 ........................................................................ (54)二、数码管显示数字的实验 (56)第四节按键实验 ........................................................................ (63)一、按键介绍 ........................................................................ (63)二、按键控制led 等亮灭实验 (65)三、掷骰子实验 ........................................................................ (67)第五节倾斜开关实验 ........................................................................ (74)一、倾斜开关介绍 ........................................................................ (74)二、倾斜开关控制led 灯的亮灭 (75)第六节光控声音实验 ........................................................................ (79)一、光敏电阻介绍 ........................................................................ (79)二、光控声音实验 ........................................................................ (80)第七节火焰报警实验 ........................................................................ (84)一、火焰传感器介绍 ........................................................................ (84)二、火焰报警实验 ........................................................................ (85)第八节抢答器实验 ........................................................................ (90)第九节温度报警实验 ........................................................................ (98)一、温度传感器介绍 ........................................................................ (98)iii二、温度报警实验 ........................................................................ (99)第十节红外遥控 ........................................................................ . (103)一、红外接收头介绍 ........................................................................ . (103)二、红外遥控实验 ........................................................................ . (104)介绍篇一、Arduino 基础套装介绍1、什麽是Arduino基础套装Arduino基础套装是精心为初学者设计的一款学习工具。

Arduino机器人制作入门教程

Arduino机器人制作入门教程

图 1.15:安装电池盒图 2 步骤 5:安装万向轮
4
C5
Arduino 机器人制作入门教程

图 1.16 万向轮安装后的后视效果图
(1)完成组装步骤 5 所需零件: 1)12mm 铜螺柱:4 个 2)M3*6 圆头螺钉:8 颗 3)万向轮:1 个 (2)组装说明 1)首先用 4 颗 M3*6 圆头螺钉 将 4 个 12mm 铜螺柱安装到万向轮 上。 2) 再把万向轮安装于底盘的尾 部, 安装方法如图 1.16 和图 1.17 所示。 3)到此机器人底盘便组装完 毕, 图 1.18 所示为组装完毕的机 器人底盘整体效果图。
2
C5
Arduino 机器人制作入门教程

第一章
1
Arduino 教学机器人硬件组装和编程入门
本体组装
本节将指导你组装 Arduino 教学机器人,必须依照每个组装步骤说明仔细组装。
1.1 组装工具
图 1.1 所示的工具是比较通用的工具,一般家庭或学校都有,在一些五金商店也可以买到。在 与书本配套的机器人套件中已经配有此套工具。
1、尖嘴钳
2、螺丝刀
图 1.1 机器人组装工具
1.2 安装机器人底盘零件
零件列表分为 4 类:金属杆件,螺钉与铜螺柱,万向轮,电机套件与电池盒。
金属杆件名称及数量
A) 1*1 金属转弯件:2 个 B)2*2 转弯件:4 个 C) 1*5 金属杆件:2 个 D) 开槽金属杆件: 2 个 E) 2*10 金属杆件:2 个
步骤 1:组装机器人车体
2
C5
Arduino 机器人制作入门教程

图 1.7 步骤 1 组装后的效果图 2 步骤 2:组装机器人电机安装支架 (1)完成组装步骤 2 所需零件: 1)1*1 金属转弯件:2 个 2)2*2 金属转弯件:4 个 3)开槽金属杆件:1 个 4)M3*6 圆头螺钉 :10 颗 图 1.8 组装后的前方效果图 (2)组装说明 1) 组装方式参照图 1.8、 图 1.9 和图 1.10。 2) 先按照图 1.8 和图 1.9 将 4 个 2*2 金属 转弯件安装于底盘前部的两侧,用于固定伺 服电机。再按图 1.10 用 2 个 1*1 金属转弯 件将开槽金属杆件固定于前部,用于安装传 感器或者其它工具。

基于Arduino入门实验教程设计

基于Arduino入门实验教程设计
Arduino 是一块基于开放原始代码的 Simple i/o 平台, 并且具有 开发语言和开发环境都很简单、易理解的特点。利用 Arduino 可以 快速做出一些有趣的东西。Arduino 可以配合一些电子元件使用例 Arduino 如: 本产品实验盒中的 LED 灯、 蜂鸣器、 按键、 光敏电阻等。 开发环境界面基于开放原始码原则, 可以让我们下载使用开发出更多 令人惊奇的互动作品。
Arduino 套件课程设计包含的元器件如图所示: 1. Arduino328 控制板 1 个 2. Prototype Shield 拓展板 1 个 3. 面包板 1 个 4. LED 灯 红黄绿 各 2 个 5. 蜂鸣器 1 个
1
6. 6X5 按钮开关 4 个 7. 数码管 1 个 8. 倾斜开关 1 个 9. 光敏电阻 1 个 10. 11. 12. 13. 14. 15. 16. 17. 红外接收三极管 1 个 温度传感器 1 个 红外接收头 1 个 电阻 220 、1K 、10K 各三个 6 节五号电池盒 1 个 USB 线 1 条 面包线 10 条 mini 遥控器 1 个
5
◆void
常量:
◆HIGH|LOW 表示数字 IO 口的电平,HIGH 表示高电平(1) ,LOW 表 示低电平(0) ◆INPUT|OUTPUT 表示数字 IO 口的方向, INPUT 表示输入 (高阻态) , OUTPUT 表示输出(AVR 能提供 5V 电压 40mA 电流) ◆True|false true 表示真(1) ,false 表示假(0)
优 质 迷 你 面 包 板 具 有 170 个 插 孔 , 此 迷 你 面 包 板 可 以 配 合 Arduino 各种型号的 ProtoShield(原型拓展板) ,自带双面贴胶,

数码管实验报告

数码管实验报告

数码管实验报告实验报告:数码管(LED数码管)的实验实验目的:1. 了解数码管的基本原理和工作方式;2. 掌握数码管的控制方法;3. 通过实验验证数码管的实际应用。

实验器材:1. 数码管模块;2. Arduino开发板;3. 杜邦线。

实验原理:数码管是一种能够显示数字和某些字母符号的显示器件。

传统的数码管由7个发光二极管(LED)组成,可以显示0-9的数字,以及A、B、C、D、E、F六个字母和一些符号。

当输入不同的控制信号时,数码管的不同LED会被点亮,从而显示出所需的数字或字母符号。

实验步骤:1. 将Arduino开发板连接到计算机,并打开Arduino IDE软件;2. 在Arduino IDE中新建一个程序,并编写代码;3. 将数码管模块的引脚与Arduino开发板的数字引脚相连接;4. 在Arduino IDE中将编写好的程序上传到Arduino开发板;5. 观察数码管显示的结果,验证程序的正确性;6. 修改程序,尝试显示其他数字或字母符号;7. 根据实际需要,设计并实现更复杂的数码管显示效果。

实验结果:在本次实验中,我们成功地通过Arduino开发板控制了数码管的显示。

通过编写简单的代码,我们可以实现在数码管上显示任意数字或字母符号的功能。

实验总结:本次实验通过实际操作,加深了对数码管工作原理和控制方法的理解。

我们掌握了使用Arduino开发板编写代码控制数码管显示的基本技能,并且可以根据实际需要设计出更复杂的显示效果。

数码管作为一种常见的显示器件,在很多电子设备中都有广泛的应用,如计算器、时钟、温度计等。

掌握数码管的使用方法对于我们今后的学习和工作都具有重要意义。

因此,我们应该进一步学习和探索数码管的更多应用,并加以实践。

Arduino入门基础教程

Arduino入门基础教程

Arduino入门基础教程•Arduino教程Lesson 1 -- 驱动安装及下载Blink程序 3 •Arduino教程Lesson 2 -- LED灯闪烁28 •Arduino教程Lesson 3 -- 做一个S.O.S求救信号灯35 •Arduino教程Lesson 4 -- 互动交通信号灯44 •Arduino教程Lesson 5 -- 呼吸灯56 •Arduino教程Lesson 6 -- 炫彩RGB LED61 •Arduino教程Lesson 7 -- 报警器68 •Arduino教程Lesson 8 -- 温度报警器70 •Arduino教程Lesson 9 -- 震动探测80 •Arduino教程Lesson 10 -- 感光灯87 •Arduino教程Lesson 11 --舵机初动92 •Arduino教程Lesson 12 -- 可控舵机97 •Arduino教程Lesson 13 -- 彩灯调光台102 •Arduino教程Lesson 14 -- 自制风扇105 •Arduino教程Lesson 15 -- 红外接收111 •Arduino教程Lesson 16 -- 遥控灯116 •Arduino教程Lesson 17 -- 数码管显示121全网最简单的入门教程,通俗易懂,易掌握,由易到难,循序渐进,你能学习到“传感器的感知”,”控制器的处理”,”声光电设备的反馈“等。

每篇教程结构清晰,从硬件连接——>输入代码——>代码回顾——>硬件回顾。

不同于其他教程,本教程认真讲解arduino代码释义和用法,让你真正掌握arduino编程。

Arduino教程Lesson 1 -- 驱动安装及下载Blink程序拿到了盼望已久的Arduino入门套件是不是有立马想试一试的冲动,但。

同样又面对不知如何下手的困扰呢?我们这里就从头开始教大家。

那就开始吧!STEP 1:下载Arduino IDE打开网页输入网址/en/Main/SoftwareArduino IDE老版本下载链接:/en/Main/OldSoftwareReleases进入到页面后,找到下图显示部分。

arduino四位数码管的点 -回复

arduino四位数码管的点 -回复

arduino四位数码管的点-回复关于Arduino四位数码管的点,以下是一篇回答该主题的文章。

标题:Arduino四位数码管的点:具体操作步骤引言:Arduino是一种开源的电子平台,可以用于开发各种项目。

在很多电子项目中,数码管是一种常见的显示设备。

而四位数码管则是常用的一种数码管类型。

本文将一步一步介绍Arduino中如何使用这种具有点的四位数码管。

第一部分:材料准备首先,我们需要准备一些必要的材料才能开始使用Arduino四位数码管。

你将需要以下物品:1. Arduino开发板2. 四位数码管(带有点的)3. 杜邦线(用于连接数码管与Arduino)4. 面包板(用于连接电路)5. 220欧姆电阻(用于保护数码管)6. 电源(如9V电池或者USB线连接计算机)第二部分:电路连接接下来,我们将连接电路,使得Arduino可以控制四位数码管显示。

请按照以下步骤进行连接:1. 将Arduino与面包板连接,确保它们的电源接口相连。

2. 在面包板上连接220欧姆电阻,其中一个引脚与数字引脚连接,另一个引脚通过杜邦线与数码管的共阴极引脚相连。

3. 将数码管的四个分阴极引脚分别与Arduino的数字引脚相连。

根据你的连接方式,可以使用杜邦线或者面包板进行连接。

4. 最后,将数码管的对应段与Arduino的数字引脚连接。

第三部分:编程一旦电路连接完成,我们可以编写Arduino代码,以控制四位数码管的显示。

以下是编写代码的步骤:1. 打开Arduino集成开发环境(IDE)。

2. 在IDE中,创建一个新的项目。

3. 引入数码管库,以便在代码中使用库的方法和功能。

4. 在setup()函数中,设置数码管的数字引脚作为输出引脚。

5. 在loop()函数中,编写代码以实现数码管显示不同的数字和字符。

6. 通过使用库中的函数,控制数码管的每个段的亮灭,实现所需的显示效果。

7. 编译和上传代码到Arduino开发板。

基于Arduino的嵌入式系统入门与实践 第5章 Arduino人机界面及接口技术

基于Arduino的嵌入式系统入门与实践 第5章 Arduino人机界面及接口技术

for (int i = 0; i < 4; i++) {
pinMode(ko[i], OUTPUT); //行输出
pinMode(ki[i], INPUT_PULLUP); //列输入,带内部上拉电阻
}
}
9
5.1 Arduino与按键的接口技术
Hale Waihona Puke void loop(){ read_key(); if (key != 0 ) {
//计算键值,行×4+列,键值1~16
flag = 0;
}}} if (key1 != key)
//判断按键是否释放
key1 = key;
else
key = 0;
}
15
5.1 Arduino与按键的接口技术
3 模拟量按键接口
模拟量按键是一种连接A/D转换器的方案,优点是只占 1个模拟信号输入口,将开关信号转成模拟信号,当不同的 按键被按下时,通过电阻分压, A/D转换的电压不同,通过 A/D转换值便可以判断出是哪个按键被按下。模拟量按键接 口有两种方案:
5.1 Arduino与按键的接口技术
1.独立按键接口
常用的独立按键接口是每个按键接1个I/O口。 Arduino通过4个输入引脚与4个独立按键K1~K4连接,按 键一端接地,另一端端通过R1~R4上拉电阻接到5V上,当 按键没有按下时,Arduino端口引脚保持高电平;当有键按 下时,对应的引脚变低电平。
//反转法矩阵按键例程 int kl[4] = { 5, 6, 7, 8}; int kc[4] = { 9, 10, 11, 12}; int key = 0; int key1 = 0; int key_l; int key_c; int flag = 0;

arduino入门很简单(中)

arduino入门很简单(中)
第6章 发光二极管LED
O 6.1 使用到的专用器件 O 6.2 驱动单个LED程序 O 6.3 驱动LED点阵 O 6.4 使用74HC595驱动LED O 6.5 使用MAX7219驱动LED O 6.6 RGB三色LED
O 6.7 七段数码管
6.1 使用到的专用器件
O 在本节中只需要使用到一个专用的器件—
6.2.5 LED跑马灯
6.2.6 使用LED模拟交通灯
6.3 驱动LED点阵
O 6.3.1 LED点阵显示表情 O 6.3.2 LED点阵跑马灯 O 6.3.3 回纹灯 O 6.3.4 矩形回缩灯
6.3.1 LED点阵显示表情
6.3.2 LED点阵跑马灯
O 在6.3.5小节中实现了由三个LED组成的简
阵 O 6.5.6 MAX7219级联控制8*40LED点阵
6.5.1 MAX7219LED显示驱动器
O MAX7219是小巧但功能强大的串行输入输
出共阴极显示驱动器。它非常容易驱动七 段LED数码管和LED点阵。
6.5.2 MAX7219的数据格 式
O MAX7219的数据是以16位为一个单位的。
6.5.4 LedControl库
O LedControl函数库是一个可以全面控制
MAX7219的一个第三方库,它可以从 /uploads/Main/Le dControl.zip获取。
6.5.5 Arduino通过 MAX7219控制8*8LED点阵
6.7.1 Arduino直接控制七段数码管
6.7.2 Arduino通过74HC595 控制一个七段数码管
6.7.3 使用两个74HC595驱动4位七段数码 管
O 4位七段数码管通过多路复用技术将4个七

arduino_PWM电机调速_数码管档位显示项目教程

arduino_PWM电机调速_数码管档位显示项目教程

基于Arduino的PWM电机调速+数码管档位显示实例教程0 引言本实例适用于Arduino/机器人编程(创客)爱好者完成初级知识学习后,通过实际的综合项目训练,达到融会贯通解决实际问题的能力。

实例和代码均经本人测试无误,供有兴趣的朋友参考探讨。

1功能对直流电机转速进行PWM调节控制,设为九档(档位通过1位数码管进行显示),红色按键每按下一次加一档;黑色按键每按下一次减一档。

2 工作原理通过Arduino端口的脉宽调制输出功能,对直流电机的工作电压进行脉宽调制,从而改变电机的工作电压,达到调试目的。

本实例采用Arduino UNO自带5V电源,分为九档,并通过一位数码管显示出来。

3 需要的组件Arduino uno x1;直流小电机 x1;按键x2;一位数码管x1;ULN2003电机驱动芯片x1;导线若干4连线数码管:定义数字接口9 连接a 段数码管,数字接口11连接b 段数码管,数字接口4 连接c 段数码管,数字接口5 连接d 段数码管,数字接口6 连接e 段数码管,数字接口12 连接f 段数码管,数字接口13连接g 段数码管,小数点位该项目不用,直接接高电平5v即可。

ULN2003:电机负极接到驱动芯片in4引脚,in4再接到Arduino UNO的数字10端口。

按键:加速按键(红色)使用数字口7,减速按键(黑色)使用数字口8。

5代码int a= 9;//定义数字接口9 连接a 段数码管int b= 11;// 定义数字接口11连接b 段数码管int c= 4;// 定义数字接口4 连接c 段数码管int d= 5;// 定义数字接口5 连接d 段数码管int e= 6;// 定义数字接口6 连接e 段数码管int f= 12;// 定义数字接口12 连接f 段数码管int g= 13;// 定义数字接口13连接g 段数码管//int dp=3;// 该项目不用,直接接高电平5v即可int motor = 10; //电机负极接到驱动板in4,in4再接到数字10int key = 7; //加速按键使用数字口7int key2 = 8; //减速速按键使用数字口8int val = 0,val_0 = 0; //加速按键松开检测状态量int val2 = 0,val2_0 = 0; //减速按键松开检测状态量int speed_0,n=0;void setup(){int i;//定义变量for(i=4;i<=6;i++)pinMode(i,OUTPUT);//设置4~6 引脚为输出模式int j;//定义变量for(j=11;j<=13;j++)pinMode(j,OUTPUT);//设置11~13 引脚为输出模式pinMode(9, OUTPUT);pinMode(motor, OUTPUT);pinMode(key, INPUT);pinMode(key2, INPUT);Serial.begin(9600);}void display(int num){switch(num){default:{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e, HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);break; }case 0:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,HIGH);break; }case 1:{digitalWrite(a,HIGH);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);break;}case 2:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,LOW);break; }case 3:{digitalWrite(g,LOW);digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(f,HIGH);digitalWrite(e,HIGH);break; }case 4:{digitalWrite(c,LOW);digitalWrite(b,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW); digitalWrite(a,HIGH);digitalWrite(e,HIGH);digitalWrite(d,HIGH);break;}case 5:{digitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e, HIGH);digitalWrite(f,LOW);digitalWrite(g,LOW);break;}case 6:{digitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);break; }case 7:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,HIGH);digitalWrite(e, HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);break; }case 8:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);break; }case 9:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,HIGH);digitalWrite(f,LOW);digitalWrite(g,LOW);break; }}}void loop(){//加速按键模块val=digitalRead(key);if(val!=val_0){delay(500);if(val==1){n++;}if(n>=9) n = 9;}val_0=digitalRead(key);//减速按键模块val2 = digitalRead(key2); if(val2!=val2_0){delay(500);if(val2==1){n--;}if(n<=0) n = 0;}val2_0=digitalRead(key2);Serial.println(n);display(n);delay(20);speed_0 = n *(252 / 9);analogWrite(motor, speed_0); //驱动电机旋转 }6 实物运行。

Arduino入门教程(17)—数码管显示

Arduino入门教程(17)—数码管显示

Arduino 入门教程(17)—数码管显示数码管,常见的用来显示数字的,比如像计算器。

这回我们就要来好好研究一下数码管,看看它是如何工作的。

数码管,其实也算是LED 中的一种。

数码管的每一段,都是一个独立的 LED,通过数字引脚来控制相应段的亮灭就能达到显示数字的效果。

这个项目要实现的是循环显示数字0~9。

所需材料1×八段数码管8×220 欧电阻 STEP 1:硬件连接按下图连线图连接,注意数码管各段所对应的引脚。

右边引脚说明图上为什么画这么几个箭头呢?个人觉得,这样看起来更方便。

可以给你作为参考。

我们从上面一排看,红色箭头的方向,从右往左,b a f g 的顺序正好对应,下面红色箭头逆时针顺序b --> a --> f --> g。

蓝色箭头也是表达的同样的意思。

还特意在连接图上,对数码管所连接的引脚做了标示。

这样就能更清楚的知道哪个引脚控制哪一段了。

这 8 个电阻同样是起限流的作用。

STEP 2:输入代码1. void setup(){2. for(int pin = 2 ; pin <= 9 ; pin++){ // 设置数字引脚2~9为输出模式3. pinMode(pin, OUTPUT);4. digitalWrite(pin, HIGH);5. }6. }7.8. void loop() {9. // 显示数字010. int n0[8]={0,0,0,1,0,0,0,1};11. //数字引脚2~9依次按数组n0[8]中的数据显示12. for(int pin = 2; pin <= 9 ; pin++){13. digitalWrite(pin,n0[pin-2]);14. }15. delay(500);16.17. // 显示数字118. int n1[8]={0,1,1,1,1,1,0,1};19. // 数字引脚2~9依次按数组n1[8]中的数据显示20. for(int pin = 2; pin <= 9 ; pin++){21. digitalWrite(pin,n1[pin-2]);22. }23. delay(500);24.25. // 显示数字226. int n2[8]={0,0,1,0,0,0,1,1};27. // 数字引脚2~9依次按数组n2[8]中的数据显示28. for(int pin = 2; pin <= 9 ; pin++){29. digitalWrite(pin,n2[pin-2]);30. }31. delay(500);32.33. // 显示数字334. int n3[8]={0,0,1,0,1,0,0,1};35. // 数字引脚2~9依次按数组n3[8]中的数据显示36. for(int pin = 2; pin <= 9 ; pin++){37. digitalWrite(pin,n3[pin-2]);38. }39. delay(500);40.41. // 显示数字442. int n4[8]={0,1,0,0,1,1,0,1};43. // 数字引脚2~9依次按数组n4[8]中的数据显示44. for(int pin = 2; pin <= 9 ; pin++){45. digitalWrite(pin,n4[pin-2]);46. }47. delay(500);48.49. // 显示数字550. int n5[8]={1,0,0,0,1,0,0,1};51. // 数字引脚2~9依次按数组n5[8]中的数据显示52. for(int pin = 2; pin <= 9 ; pin++){53. digitalWrite(pin,n5[pin-2]);54. }55. delay(500);56.57. // 显示数字658. int n6[8]={1,0,0,0,0,0,0,1};59. // 数字引脚2~9依次按数组n6[8]中的数据显示60. for(int pin = 2; pin <= 9 ; pin++){61. digitalWrite(pin,n6[pin-2]);62. }63. delay(500);64.65. // 显示数字766. int n7[8]={0,0,1,1,1,1,0,1};67. // 数字引脚2~9依次按数组n7[8]中的数据显示68. for(int pin = 2; pin <= 9 ; pin++){69. digitalWrite(pin,n7[pin-2]);70. }71. delay(500);72.73. // 显示数字874. int n8[8]={0,0,0,0,0,0,0,1};75. // 数字引脚2~9依次按数组n8[8]中的数据显示76. for(int pin = 2; pin <= 9 ; pin++){77. digitalWrite(pin,n8[pin-2]);78. }79. delay(500);80.81. // 显示数字982. int n9[8]={0,0,0,0,1,1,0,1};83. // 数字引脚2~9依次按数组n9[8]中的数据显示84. for(int pin = 2; pin <= 9 ; pin++){85. digitalWrite(pin,n9[pin-2]);86. }87. delay(500);88. }89.完成下载后,数码管就会循环显示0~9 的数字。

Arduino 入门到精通 例程17-四位数码管

Arduino 入门到精通 例程17-四位数码管

Arduino 入门到精通例程17这次我们进行的实验是使用arduino驱动一块共阴四位数码管。

驱动数码管限流电阻肯定是必不可少的,限流电阻有两种接法,一种是在d1-d4阳极接,总共接4颗。

这种接法好处是需求电阻比较少,但是会产生每一位上显示不同数字亮度会不一样,1最亮,8最暗。

另外一种接法就是在其他8个引脚上接,这种接法亮度显示均匀,但是用电阻较多。

本次实验使用8颗220Ω电阻(因为没有100Ω电阻,所以使用220Ω的代替,100欧姆亮度会比较高)。

4位数码管总共有12个引脚,小数点朝下正放在面前时,左下角为1,其他管脚顺序为逆时针旋转。

左上角为最大的12号管脚。

下图为数码管的说明手册下面是硬件连接图下面是程序;//显示1234//设置阴极接口int a = 1;int b = 2;int c = 3;int d = 4;int e = 5;int f = 6;int g = 7;int dp = 8;//设置阳极接口int d4 = 9;int d3 = 10;int d2 = 11;int d1 = 12;//设置变量long n = 1230;int x = 100;int del = 55; //此处数值对时钟进行微调void setup(){pinMode(d1, OUTPUT);pinMode(d2, OUTPUT);pinMode(d3, OUTPUT);pinMode(d4, OUTPUT);pinMode(a, OUTPUT);pinMode(b, OUTPUT);pinMode(c, OUTPUT);pinMode(d, OUTPUT);pinMode(e, OUTPUT);pinMode(f, OUTPUT);pinMode(g, OUTPUT);pinMode(dp, OUTPUT);}///////////////////////////////////////////////////////////// void loop(){Display(1, 1);Display(2, 2);Display(3, 3);Display(4, 4);}/////////////////////////////////////////////////////////////// void WeiXuan(unsigned char n)//{switch(n){case 1:digitalWrite(d1,LOW);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH);break;case 2:digitalWrite(d1, HIGH);digitalWrite(d2, LOW);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH);break;case 3:digitalWrite(d1,HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, LOW);digitalWrite(d4, HIGH);break;case 4:digitalWrite(d1, HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, LOW);break;default :digitalWrite(d1, HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH);break;}}void Num_0(){digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, LOW);digitalWrite(dp,LOW);}void Num_1(){digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW);}void Num_2(){digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, LOW);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_3(){digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_4(){digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_5(){digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_6(){digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH);digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_7(){digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(dp,LOW); }void Num_8(){digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_9(){digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Clear() //清屏{digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW);}void pickNumber(unsigned char n)//选数{switch(n){case 0:Num_0();break;case 1:Num_1();break;case 2:Num_2();break;case 3:Num_3();break;case 4:Num_4();break;case 5:Num_5();break;case 6:Num_6();break;case 7:Num_7();break;case 8:Num_8();break;case 9:Num_9();break;default:Clear();break;}}void Display(unsigned char x, unsigned char Number)//显示x为坐标,Number为数字{WeiXuan(x);pickNumber(Number);delay(1);Clear() ; //消影}把下面代码复制下载到控制板中,看看效果图。

ARDUINO教程第一讲

ARDUINO教程第一讲

1.2 单片机的发展概况
主要内容
1.2.1 单片机的历史 1.2.1 单片机技术的发展
单片机的历史
一 、4位单片机阶段
1975年美国德克萨斯仪器公司(TI)首次推出4位单片机TMS-1000, 4位单片机主要用于家用电器、电子玩具等。
二、 8位单片机阶段 1976年9月,美国Intel公司首先推出了MCS-48系列8位单片机。8 位单片机由于功能强,被广泛用于工业控制、智能接口、仪器仪表 等各个领域。

实验
模拟输出analogWrite()函数
在Arduino数字I/O管脚9、10和11上,我们可以通过 analogWrite()函数来产生模拟输出。 该函数有两个参数,其中第一个参数是要产生模拟信号的引脚 (9、10或者11);第二个参数是用于产生模拟信号的脉冲宽度, 取值范围是0到255。脉冲宽度的值取0可以产生0V的模拟电压, 取255则可以产生5V的模拟电压。不难看出,脉冲宽度的取值变化 1,产生的模拟电压将变化0.0196V(5/255 = 0.0196)。

实验
模拟输出analogWrite()函数
就像模拟输入一样,在现实的物理世界中我们经常需要输出除了0 和1之外的其他数值。例如,除了想用微控制器找开或者关闭电灯 之外,我们还会想控制灯光的亮度,这时就需要用到模拟输出。 由于Arduino的微控制器只能产生高电压(5V)或者低电压(0V), 而不能产生变化的电压,因此必须采用脉宽度调制技术(PWM, Pulse Width Modulation)来模仿模拟电压。 PWM是一种开关式稳压电源应用,它是借助微处理器的数字输出 来对模拟电路进行控制的一种非常用效的技术,广泛应用在从测 量、通信到功率控制与变换的许多领域中。简而言之,PWM是一 种对模拟信号电平进行数字编码的方法,它通过对半导体开关器 件的导通和关断进行控制,使输出端得到一系列幅值相等但宽度 不相等的脉冲,而这些脉冲能够被用来代替正弦波或其它所需要 的波形。

Arduino初学系列3:Arduino,按键,LED

Arduino初学系列3:Arduino,按键,LED

3 Arduino,按键,LED3.1 问题描述:如何采用Arduino控制器和按键同时控制LED的闪烁在前面的2个例子中,都是简单地通过将程序烧录到Arduino控制板,然后由控制板来控制LED灯的闪烁,缺乏人情味。

那能不能在Arduino控制的过程中,再加上与人的互动呢?答案是肯定的。

在这个实验中,我们将增加一个新的材料按键按钮来和Arduino一起控制灯的闪烁。

3.2 所需材料表3-1:所需材料序号名称数量作用备注1 Arduino软件1套提供IDE环境最新版本1.052 Arduino UNO开发板1块控制主板各种版本均可3 USB线1条烧录程序随板子配送4 杜邦线若干条连接组件5 发光二极管(LED)1个 LED闪烁6 电阻(10,200Ω)2个限流7 多功能面包板1块连接8 按键按钮1个开关在进行实验之前,我们先介绍按键按钮的相关属性。

按键按钮按键是一种经常使用的设备,通过按键可以输入指令和数据来控制电路的开与关,从而达到控制某些设备的运行状态。

在本实验中,通过给按键输入高低电平来控制LED灯的闪烁。

开关的种类繁多复杂,比如厨房用的单孔开关,卧房用的双控开关,楼道用的声控开关等等,均属于开关的范畴。

在我们实验中,主要是用微型开关,但其种类也很多,如图3-1所示。

图3‐1 微型按键开关种类在本实验中采用的微型开关大致为6*6*5mm的四脚开关。

如图3-2所示。

图3-2 本实验用的按键值得注意的是,1和2是一边的,3和4是一边的,中间有道痕分开。

其原理如图3-3所示,当按键按下去时,1,2,3,4四个管脚接合在一起,2根导线连通,变成一根导线。

电路导通,起到触发(关)作用。

当松开按钮,1,2,3,4四个管脚断开,起到开的作用。

图3‐3 按键按钮原理图3.3 实验原理图当按键按钮按下,获取一个高电平,触发在Arduino控制下的LED闪烁。

当然,我们也可以设置为按键按下是LED灯不亮,当松开按键时,LED灯闪烁,请看后面的代码分析。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Arduino 入门到精通例程16
数码管显示实验
数码管是一种常见的普遍的显示数字的显示器件,日常生活中例如:电磁炉,全自动洗衣机,太阳能水温显示,电子钟…..等等数不甚数。

说以掌握数码管的显示原理,是很有必要的。

数码管是一种半导体发光器件,其基本单元是发光二极管。

数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),本实验所使用的是八段数码管。

按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。

当某一字段的阴极为高电平时,相应字段就不亮。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM 接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

当某一字段的阳极为低电平时,相应字段就不亮。

数码管的每一段是由发光二极管组成,所以在使用时跟发光二极管一样,也要连接限流电阻,否则电流过大会烧毁发光二极管的。

本实验用的是共阴极的数码管,共阴数码管在应用时应将公共极接到GND,当某一字段发光二极管的阳极为低电平时,相应字段就点熄灭。

当某一字段的阳极为高电平时,相应字段就点亮。

介绍完原理,
我们开始准备实验用元器件。

八段数码管*1
220Ω直插电阻*8
面包板*1 面包板跳线*1 扎
我们参考实物连接图按原理图连接好电路。

数码管共有七段显示数字的段,还有一个显示小数点的段。

当让数码管显示数字时,只要将相应的段点亮即可。

例如:让数码管显示数字1,则将b、c 段点亮即可。

将每个数字写成一个子程序。

在主程序中每隔2s 显示一个数字,让数码管循环显示1~8 数字。

每一个数字显示的时间由延时时间来决定,时间设置的大些,显示的时间就长些,时间设置的小些,显示的时间就短。

参考程序源代码:
//设置控制各段的数字IO 脚
int a=7;//定义数字接口7 连接a 段数码管
int b=6;// 定义数字接口6 连接b 段数码管int c=5;// 定义数字接口5 连接c 段数码管int d=10;// 定义数字接口10 连接d 段数码管int e=11;// 定义数字接口11 连接e 段数码管int f=8;// 定义数字接口8 连接f 段数码管int g=9;// 定义数字接口9 连接g 段数码管int dp=4;// 定义数字接口4 连接dp 段数码管void digital_0(void) //显示数字5
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
}
void digital_1(void) //显示数字1
{
unsigned char j;
digitalWrite(c,HIGH);//给数字接口5 引脚高电平,点亮c 段digitalWrite(b,HIGH);//点亮b 段
for(j=7;j<=11;j++)//熄灭其余段
digitalWrite(j,LOW);
digitalWrite(dp,LOW);//熄灭小数点DP 段
}
void digital_2(void) //显示数字2
{
unsigned char j;
digitalWrite(b,HIGH);
digitalWrite(a,HIGH);
for(j=9;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
}
void digital_3(void) //显示数字3
{
digitalWrite(g,HIGH);
digitalWrite(a,HIGH);
digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(dp,LOW); digitalWrite(f,LOW); digitalWrite(e,LOW);
}
void digital_4(void) //显示数字4 {
digitalWrite(c,HIGH); digitalWrite(b,HIGH); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW); digitalWrite(a,LOW); digitalWrite(e,LOW); digitalWrite(d,LOW);
}
void digital_5(void) //显示数字5 {
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e, LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW);
}
void digital_6(void) //显示数字6 {
unsigned char j;
for(j=7;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(c,HIGH); digitalWrite(dp,LOW); digitalWrite(b,LOW);
}
void digital_7(void) //显示数字7 {
unsigned char j;
for(j=5;j<=7;j++)
digitalWrite(j,HIGH);
for(j=8;j<=11;j++) digitalWrite(j,LOW);
}
void digital_8(void) //显示数字8 {
unsigned char j;
for(j=5;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW);
}
void digital_9(void) //显示数字5 {
unsigned char j;
digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e, LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW);
}
void setup()
{
int i;//定义变量
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);//设置4~11 引脚为输出模式}
void loop()
{
while(1)
{
digital_0();//显示数字1
delay(1000);//延时1s
digital_1();//显示数字1
delay(1000);//延时1s
digital_2();//显示数字2
delay(1000); //延时1s
digital_3();//显示数字3
delay(1000); //延时1s
digital_4();//显示数字4
delay(1000); //延时1s
digital_5();//显示数字5
delay(1000); //延时1s
digital_6();//显示数字6
delay(1000); //延时1s
digital_7();//显示数字7
delay(1000); //延时1s
digital_8();//显示数字8
delay(1000); //延时1s
digital_9();//显示数字8
delay(1000); //延时1s
}
}
实验现象:数码管显示0-9 循环显示。

相关文档
最新文档