Arduino编程控制与应用课件:点亮数码管_第1页
Arduino编程控制与应用课件:点亮数码管_第2页
Arduino编程控制与应用课件:点亮数码管_第3页
Arduino编程控制与应用课件:点亮数码管_第4页
Arduino编程控制与应用课件:点亮数码管_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Arduino

编程控制与应用Arduino

编程语言的进阶应用点亮数码管在生活中,我们经常使用闹钟来提醒我们注意各种事项,同学们你们知道吗,其实Arduino

也可以利用led数码管实现显示时间

的效果,接下来我们通过本次任务的学习,点亮数码管。导

入一

、一位数码管的原理与使用三、点亮数码管使用到的语句二、四位数码管的原理与使用四、子函数目

录数码管,又称LED

数码管,是一种常见的用来显示数字的电子元件。通常由七段

发光二极管封装在一起组成“8”字形状,

外加一个小数点。数码管根据其显示数字的

位数,通常有一位数码管、二位数码管、四

位数码管等,如图所示。(一)数码管一、一位数码管的原理与使用一位数码只能显示一位数字,一般分成8个字段(即8个LED),

其中的7个字段可

以组合显示不同的数字,另一个字段显示小

数点。每个字段都是一个独立的发光LED

元,通过控制各个发光单元的亮与灭,来显

示不同的数字。数码管的8个LED

并联在一起

,根据公共管脚的不同,分为共阳极数码管

和共阴极数码管两种。其区别就是公共管脚

是LED灯的正极还是负极。(二)一位数码管的原理一、一位数码管的原理与使用共阳数码管:是指将每个发光单元的正极都接到一起形成公共端的数码管(如图所示),使用共

阳数码管时应将公共端COM

接到电源正极,当控制某一字段发光单元(通常为发光二极管,LED)

的负极为低电平时,相应字段就点亮;负极为高电平

时,相应字段熄灭。(二)一位数码管的原理一、一位数码管的原理与使用共阴数码管:是指将所有发光单元的负极接到一起形成公共端的数码管(如图所示),使用共阴数码管时应将公共端COM接到电源负极(GND),当控制某一字段发光二极管的正极为高电平时,相应字段就点亮;正极为低电平时

,相应字段熄灭。(二)一位数码管的原理一、一位数码管的原理与使用一位数码管通常有两排管脚,每排5个,共10个管脚。其中每排最中间的管脚是公

共端COM(即3号和8号管脚内部电路相连

作为公共端),通过控制另外8个管脚电平

的高低来实现相应字段的控制。一位数码管

的外观及管脚如图所示。(二)

位数码管的原理一、一位数码管的原理与使用如图所示,若想显示数字“0”,需要点亮数码管a、b、c、d、e

和f共6个字段;若想要示数字“1”,需要点亮数码管b

和c共2个字段;若想显示

数字“2”,需要点亮数码管a、b、g、e

和d共5个

。(三)一位数码管的控制一、一位数码管的原理与使用数字数码管点亮字段数码管对应控制管脚0a、b、c、d、e、f7、6、4、2、1、91b、c6、42a、b、g、e、d7、6、10、1、23a、b、g、c、d7、6、10、4、24f、g、b、c9、10、6、45a、f、g、c、d7、9、10、4、26a、f、e、d、c、g7、9、1、2、4、107a、b、c7、6、48a、b、c、d、e、f、g7、6、4、2、1、9、109g、f、a、b、c、d10、9、7、6、4、2如此类推,数码管显示数字0~9需要被点亮的字段以及这些字段对应的数码管管脚如表所示。若使用的是共阳数码管,要想点亮某个字段,需

要使用digitalWrite()

函数控制该字段对应管脚为低

电位;若使用的是共阴极数码管则控制该字段对应管

脚为高电位。(三)一位数码管的控制一、一位数码管的原理与使用四位数码管可以认为是把四个一位数码管封装在一起形成的。它一共有12个管脚,其中有8个是字段管脚,4个是位管脚(也可以称为公共端COM)。四位数码管的控制电路如图4-1-5所示。管脚1、2、3、4、5、7、10、11为字段管脚(又称段选管脚),

管脚6、8、9、12为四个数码管的位管脚(又称位选管

脚)。四位数码管的外观和管脚编号如图所示。(一)四位数码管的原理二、四位数码管的原理与使用四位数码管的控制方式主要有两种,分别为静态显示和动态显示。静态显示:静态显示又称为静态驱动,也称直流驱动。静态驱动的特点是每个数码管的每一个段码都由一个单片机的I/O

端口进行驱动。当送入一次

字形码后,显示字形可一直保持,直到送入新字形码为止,这种方法的优点是占用CPU时间少,编程简单,显示亮度高,显示便于监测和控制。缺点是硬件电路比较复杂(每个数码管的段选必须接一个8

位数据线来保持显示的字形码,占用I/O

端口多,如

驱动5个数码管静态显示则需要5×8=40个I/O端口来驱动),成本较高。(二)四位数码管的控制二、二维数组动态显示:动态显示是将所有数码管的8个显示笔划

“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公

共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,

当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM

电路的控制,所以我们只要将需要显示的数码管的选通控制打开

,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮

流控制各个数码管的COM

端,就使各个数码管轮流受控显示,这

就是动态显示。在轮流显示过程中,每位数码管的点亮时间为1~

2ms,

由于人的视觉暂留现象及发光二极管的余辉效应,尽管实

际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人

的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O

端口,而且功耗更低(二)四位数码管的控制二、二维数组本书采用动态显示方式控制数码管显示,并开发了相应的四位数码管扩展板。四位数码管扩展板使用了UNO

板上的2、3

、4、5、6、7、8、9、10、11、A4、A5共12个管脚(其中

A4

、A5

、3

、2

是公共端)。每位数码管都有一个公共端,A4、A5、3、2

四个管脚分别对应四位数码管的公共端。11、9、7、5、4、10、8、6管脚分别接了数码管的a、b、c、d、e、f、g、D1

D2,(D1

D2代表数码管中间的两个点)。数字数码管点亮字段数码管对应控制管脚UNO板对应控制管脚0a、b、c、d、e、f11、7、4、2、1、1011、9、7、5、4、101b、c7、49、72a、b、g、e、d11、7、5、1、211、9、8、4、53a、b、g、c、d11、7、5、4、211、9、8、7、54f、g、b、c10、5、7、410、8、9、75a、f、g、c、d11、10、5、4、211、10、8、7、56a、f、e、d、c、g11、10、1、2、4、511、10、4、5、7、87a、b、c11、7、411、9、78a、b、c、d、e、f、g11、7、4、2、1、10、511、9、7、5、4、10、89g、f、a、b、c、d5、10、11、7、4、28、10、11、9、7、5(二)四位数码管的控制二、四位数码管的原理与使用本任务中继续用到前面的数字输出对应函数“digitalWrite

(管脚号,电位”,在米思齐中则对应程序如图所示。(

一)digitalWrite

(管脚号,电位)三、点亮数码管使用到的语句数字输出管脚#

高(二)遍历循环

“for”

语句为了能更简便实现将所有输出管脚复位为高电位,本任务中还用到遍历循环

“for”语句。“for”

语句解释:"int

i=初始值”为初始表达

式,“i<=目标值”为判断表达式,"i++”为循环表达

for(inti=初始值;i<=

目标值;i++){侮个循环需要执行的语句块先执行“初始化表达式”,再根据“判断表达式

”的结果判断是否执行循环,当判断表达式为真(true)

时,执行循环中的语句,最后执行“循环表达式”,并继续返回循环的开始进行新一轮的循环;表

达式为假(false)

则不执行循环,并退出for

循环。三、点亮数码管使用到的语句(一)子函数的定义(声明)子函数可以理解为是一段可以实现某个特定功能的程序模块,能被其他程序调用,在实现某种功能后能自动返回到调用程序去的程序。其最后一条指令一定是返回指令,故能保证重新返回到调用它的程序中去。也可调用其他子函数,甚至可自身调用(如递归Arduino

子函数的定义或声明,必须在循环函数的下面。子函数声明的一般形式为:<返回类型><函数名>([<形参类型1>][<形参1>],[<形参类型2>][<形参2>],.

…);四、子函数(二)子函数的调用只要定义好子函数,就可以在程序中调用子函数。子函数调用的一般形式为:<函数名>([<实际参数列表>]);例如主函数中的"Refresh(500);",就是调用了子函数Refresh

。500称为实际参数,实际参数和形式

参数必须——对应,数量应该相同,类型也保持一致。若定义子函数时不带传递参数定义为voidRefresh(),则调用时写成Refresh()

即可。四、子函数类似Arduino的

digitalWrite和delay,

一些子函数可

以被编写定义

来完成一些特

定的任务。使用子函数可

以按照功能实

现对语句块进

行归类,增强

程序可读性,

便于维护和修

改。3子函数是程序

中的某部份代

码,由一个或

多个语句块组

成。(三)子函数的特点四、子函数可以避免代码段重复,使程序更小更紧凑。可以改进性能。通过使用子函数,可以只在一个地方,而不

是同时几个地方优化代码段。降低整个程序的复杂性,增强可读性。便于修改,可以限制改动带来的影响。1423三、子函数(四)子函数的优点任务实施Task

Implementation序号软件及硬件名称数量1Arduino

IDE2联网的电脑1台/人3键盘1个/人4鼠标1个/人5Arduino

UNO开发板1块/人6四位数码管扩展板1块/人7USB串口线1根/人

(一)软件及硬件准备一、任务准备1.注意Arduino

开发板与电脑的连接是否可靠;2.注意Arduino

开发板与电脑连接端口的匹配;3.注意输出电压,避免开发板被烧坏;4.注意Arduino

开发板与四位数码管扩展板连接时,针脚要对孔,插入时要

小心,避免阵脚变歪或折断。一、任务准备(二)场地设备准备任务实施前需要做好场地防护准备以及检查实训场地和设备设施是否及存在安全隐患,如不正常请汇报老师并进行处理方可实施任务。(三)安全防护准备1234结构名称说明使用管脚管脚标识为2、3、4、5、6、7、8、9、10、11、A0、A1公共端管脚A0、A1、3、2电阻有8个本任务中使用的四位数码管扩展板尺寸为68.6*53.4mm,数码管类型为4位共阳数码管,DIG代表公共端,其结构如图1所示,具体结构说明如表1所示。行云桥

0.4英寸数码管模块inwinic

2021-03-04-REV1.1LED1(一)认识四位数码管扩展板二、实施步骤二、实施步骤(一)认识四位数码管扩展板该四位数码管扩展板使用了UNO

板上的2、3、4、5、6、7、8

、9、10、11、AO、A1

共12个管脚(其中A0、A1、3、2是公共端),每位数码管都有

一个公共端,A0、A1、3、2

四个引脚分别对应四位数码管的公共端。11、9、7、5、4、10、8、6引脚分别接了数码管的a、b、c、d、e、f、g、D1D2,(D1D2代表数码管中间的两个点)。将对应的数码管驱动程序通过软件烧写到UNO

板上通电即可点亮数码管。12°DIG19DG3°DIG4本本步骤1:连接线的方头端接口连接ArduinoUNO开发板,另一端USB

接口连接电脑。(二)控制电路连接二、实施步骤步骤二:四位数码管扩展板安装在ArduinoUNO

开发板上。(二)控制电路连接二、实施步骤二、实施步骤(三)控制程序编写与上传◎

sketchjun21a|Arduino

1.8.13

文件编辑项目工具帮助+sketchJun21as

当前编辑文档名称代码编写区域步骤1:打开Arduino

IDE软件,进入界面。验证代码新建文相此处编译的时候有进度提示编译结果提示区域上传代码

打开文件保存文档步骤2:在工具-端口-选择对应的端口。若分不清端口,先把开发板连接上,查看端口,有COM1、COM3、COM4、COM5、COM6;断开开发板连接,查看端口,有COM3、COM4、COM5、COM6;少了一个COM10端口,那么COM10就是对应的端口。(三)控制程序编写与上传0(13iri000「管理库…串口监视器串口绘图器WiFi101/WiFiNINA

Firmware开发板:"ArduinoUno"端

口Ctrl+Shift+ICtrl+Shift+MCtrl+Shift+LUpdater>Updater)出行端口

COM10COM3COM4

COM5

COM602|Arduino

1.8.13泪

工具帮助自动格式化Ctrl+T项目存档修正编码并重新加载二、实施步骤WiFi101/WiFiNINA

Firmware开发板:"ArduinoUno"端

口取得开发板信息编程器:"AVRISP

mkll*烧录引导程序302

IArduino

1.8.13自动格式化

项目存档取得开发板信息编程器:"AVRISPmkll'

烧录引导程序修正编码并重新加载

管理库…串口监视器串口绘图器Ctrl+TCtrl+Shift+ICtrl+Shift+MCtrl+Shift+L串行端口

COM3COM4COM5COM6ri

000

ri

00Tri000步骤1:新建一个文档,//后的代号可删除;在【代码编写区域】中的“void

setup(){”下方

输入如图所示代码1.//初始化函数2.

voidsetup(){3.pinMode(3,OUTPUT);//

设置引脚的工作模式4.pinMode(2,OUTPUT);//

设置引脚2为输出模式5.pinMode(8,

OUTPUT

);//设置引脚8为输出模式6.pinMode(A0,OUTPUT);//

设置引脚A0为输出模式7.pinMode(A1,OUTPUT);//设置引脚A1为输出模式(四)点亮一个字段二

、实施步骤步

2:

【代

的“voidloop(){“下方输入如图所示代码。1.//loop

循环函数2.

void

loop({3.

digita1Write(A0,HIGH);

//设置引脚的电平状态4.digitalWrite(A1,LOW

);//设置引脚A1

为低电平5.digitalWrite(3,LOW);//设置引脚3为低电平6.digitalWrite(2,LOW);//设置引脚2为低电平7.digita1Write(8,L0W);//设置引脚8为低电平

8.}(四)点亮一个字段二、实施步骤步骤3:如图所示单击“上传”按钮,通过USB转串口芯片将程序烧写到开发

板的主控芯片中。。◎sketchjul21a|Arduino

1.8.13文件编辑项目工具帮助→sketch

jul21aS点击上传voidsetup()(二、实施步骤(四)点亮一个字段步骤4:若操作顺利,将出现“上传成功”的提示,如图4-1-18所示四位数码管扩展板上的第1位数码管中的一段发光二极管被点亮,说明成功点

亮一个字段了。(四)点亮一个字段二、实施步骤步骤5:控制程序解析:在初始化函数中将3、8、2、A0、A1

设置为输出模式。在loop函数中

A0

设置为高电平(让第一位的位选管脚高电平)

,A1、3、2、8

设置为低电平(其余三位的位选管

脚低电平,8号段选管脚也为低电平),所以第一位数码管,8号管脚对应的字段被点亮。程序运行流程如图4-1-19所示。将2、3、8、A0、A1号引脚配置为输出模式Setup

函数(四)点亮一个字段二、实施步骤将A1

、3、2、8号引脚

电平拉低将A0号引脚

电平拉高步骤1:新建一个文档,//后的代号可删除;在【代码编写区域】中的“void

setup(){”下方输

入如图所示代码。1./

/初始化函数2.voidsetup(){3.//设置引脚的工作模式4.pinMode(3,OUTPUT);//

将3号引脚设置为输出5.pinMode(2,

OUTPUT);//

将2号引脚设置为输出6.pinMode(11,OUTPUT);//将11号引脚设置为输出7.pinMode(9,OUTPUT);//将9号引脚设置为输出8.pinMode(7,OUTPUT);//将7号引脚设置为输出9.pinMode(5,OUTPUT);//将5号引脚设置为输出10.

pinMode(4,OUTPUT);//

将4号引脚设置为输出11.pinMode(10,OUTPUT);//将10号引脚设置为输出12.pinMode

(8,OUTPUT);//

将8号引脚设置为输出13.pinMode(A0,OUTPUT

);//

将A0

号引脚设置为输出14.pinMode

(A1,OUTPUT

);//将A1

号引脚设置为输出15.}(五)子函数与“123”二、实施步骤步骤2:然后在【代码编写区域】中的“void

loop(){

“下方依次输入"one();"

、"Two();"和

"Three();"

随后输入"void

three()并在其下方输入如图所示代码。1.//

loop循环函数2.

voidloop(){//

调用三个自定义函数3.one();4.two();//显示“2”5.three();//

显示“3”

6.}7.voidthree(){8.Refresh();//

调用熄灭函数9.digitalWrite

(A0,LOW);//将A0端口设置为低电平10.digitalWrite(A1,LOW);//将A1

端口设置为低电平11.digitalWrite(3,HIGH);//将3号端口设置为高电平12.digita1Write(2,LOW);//将2号端口设置为低电平13.digita1Write(11,LOW);//

将11号端口设置为低电平14.digita1Write(9,LOW);//将9号端口设置为低电平15.digitalWrite(7,LOW);//将7号端口设置为低电平16.digitalWrite(5,LOW);//将4号端口设置为低电平17.digitalWrite(4,HIGH);//将4号端口设置为高电平18.digita1Write(10,HIGH);//将10号端口设置为高电平19.digita1Write(8,LOW);//将8号端口设置为低电平

20.}(五)子函数与“123”二、实施步骤步骤3:输入“voidtwo(){”,并在其下方输入如图所示代码。1.voidtwo(){2.Refresh();3.digitalWrite(AO,LOW);//将A0端口设置为低电平4.digitalWrite(A1,

HIGH);I/将A1端口设置为高电平5.digitalWrite(3

,LOW);//将3号端口设置为低电平6.digitalWrite(2

,LoW);//将2号端口设置为低电平7.digitaIWrite(11,LOW);//将11号端口设置为低电平8.digitalWrite(9,LOW

);//将9号端口设置为低电平9.digitalWrite(7

,HIGH);//将7号端口设置为高电平10.digitalWrite(5

,LOW);//将5号端口设置为低电平11.digitalWVrite(

4,LOW);//将4号端口设置为低电平12.digitalWrite(10,HIGH);//将10号端口设置为高电平13.digitalWrite(8

,LOW);//将8号端口设置为低电平

14.}(五)子函数与“123”二、实施步骤1.void

one(2.Refresh0

;3.

digita1Trite

(A0,HIGH;//将A0端口设置为离电平4.

digitalTrite

(A1,L0W);//将A1端口设置为低电平5.

digitalTrite(3,L0W);//

将3号

端口设置为低电平6.

diita1Trita(2,L0N);

//将2号端口设置为低电平7.

digita1Trite

(11,HIGH;

//

将11号端口设置为离电平8.

di

其itaIrita

(9,L0W);//

将9号端口设置为低电平9.

digitalTrite

(7,L0W);//

将7号端口设置为低电平10.digitalWrite

(5,HIGH);//

将5号端口设置为离电平11.diait1Trita

(4,HIGH);

//

将4号端口设置为离电平12.digitalWrite(10,HIGH;//

将10号端口设置为离电平13.digitalTrite(8,HIGH);

//将8号端口设置为离电平步骤4:输入

“void

one(){”,并在其下方输入如图所示代码。(五)子函数与“123”二、实施步骤步骤5:输入“void

Refresh

(){”,并在其下方输入如图所示代码。1.//熄灭所有显示,刷新效果2.void

Refresh(){3.digita1Write(A0,

L0W);//将A0端口设置为低电平4.digita1Write(A1,

L0W);//将A1端口设置为低电平5.digita1Write(2,

L0W);//将2号端口设置为低电平6.digita1Write(3,

LOW);//将3号端口设置为低电平7.digita1Write(11,

HIGH);//将11号端口设置为高电平8.digita1Write(9,

HIGH);//将9号端口设置为高电平9.digita1Write(7,

HIGH);//将7号端口设置为高电平10.digita1Write(5,

HIGH);//将5号端口设置为高电平11.digita1Write(4,

HIGH);//将4号端口设置为高电平12.digita1Write(10,HIGH);//将10号端口设置为高电平13.digita1Write(8,

HIGH);//将8号端口设置为高电平

14.}(五)子函数与“123”二

、实施步骤◎sketch

jul21a|Arduino

1.8.13

×

文件编辑项目工具帮助个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论