第3章控制流水灯 项目介绍 通过LabVIEW编程,使用myRIO控制8个LED按顺序开灭。 项目目的 (1) 了解LED的基本原理以及控制电路的连接方式等; (2) 掌握LabVIEW的基本编程思想和相关控件、循环结构的进一步应用; (3) 掌握NI myRIO进行数字量操作电路的方法。 3.1硬件材料及理论知识准备 3.1.1硬件材料 流水灯硬件材料如表31所示。 表31流水灯硬件材料 名称数量图片备注 myRIO1 LED8 续表 名称数量图片备注 电阻8 1kΩ 面包板1 杜邦线若干 3.1.2背景知识 1. LED LED(light emitting diode)即发光二极管,是一种能够将电能转化为可见光的固态半导体器件,它可以直接把电转化为光。LED的核心是一个半导体晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。LED可以直接发出红、黄、蓝、绿、青、橙、紫、白色的光。只要让LED两端分别接地与电源,满足二极管的导向,即可点亮LED灯。 2. DIO口 DIO口即digital input/output的缩写,是单片机数字量输入/输出的端口。数字量端口只能输入/输出数字量,即0或1,或者是低电平和高电平。现在的单片机一般端口有多种功能,而且可以重复定义,所以通常称为GPIO(general purpose I/O)。像直接控制外部开关就用数字量输出,输入外部按键信号就用数字量输入。另外,其他通信端口如串口UART等也属于DIO。 除了数字量端口还有模拟量输入/输出端口,A/D口就是模拟量输入,一般输入电压范围0~VREF,D/A口模拟量输出,输出范围一般也是0~VREF。 通过该项目需要掌握LabVIEW的while循环结构、for循环结构等。 3.2项 目 实 施 3.2.1电路搭建 1. 电路原理图 流水灯电路原理图如图31所示,接线图如图32所示。 图31流水灯LED原理图 图32流水灯接线图 NI myRIO的一个I/O口分别控制一个LED。设计一个电路之前,一定要了解电路中元件的参数,譬如其工作电压、工作电流等。需要注意的是,由于myRIO输出的电压为5V,该项目中用到的LED的工作电压一般为1.5~2.0V,工作电流一般为10~20mA,反向击穿电压为5V。因此,在连线时注意要在LED之前串联电阻。 LED两个针脚一长一短,长的连接正极,短的连接GND。通过面包板把每个电子器件连接好以后,打开LabVIEW连接myRIO,执行写好的程序。 3.2.2程序编写 流水灯的程序如图33所示。 图33流水灯程序图 数字I/O的使用和模拟输入输出是一样的,都是打开,读取或写入,最后关闭。不同的数据变量不同,数字I/O输出或读取的是高、低电平两种状态,如图34所示。 图34数字IO 这里我们用的是底层函数编写。由于是输出高、低电平,因此不必用到Read控件。使用myRIO的任何功能都要用到Open和Close控件。同样,我们也可以用快速VI编写程序,如图35所示。 图35快速VI编写的程序 运行过程中前面板如图36所示。 图36前面板 我们可以根据不同需求更改LED流水闪烁的频率,直接在图36的数值输入控件更改数据即可。 3.2.3运行调试 接下来我们就以快速VI的程序为例(图37),解析该程序。 图37解析程序 (1) 通过二维数组常量设置每个通道的高低电平信号,这里我们使用的是高电平点亮。 (2) 利用for循环的自动索引实现每个状态的循环,从而实现流水灯的功能。 (3) 使用布尔数组,在计算机上模拟LED的点亮。 (4) 写入myRIO的DIO口,实现流水灯。 (5) 延时操作。根据需求不同可在前面板的数值输入控件处输入不同的延时时间。如果不设置延时,将导致变化过快,LED全亮。同时处理停止程序,使停止响应能够及时反应。 (6) 重置myRIO,一个流程过后能复位继续执行程序。 3.2.4知识延伸 1. 脉冲宽度调制 脉冲宽度调制(PWM)即pulse width modulation的缩写,简称脉宽调制。通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形,输出占空比可变的脉冲。在电机驱动中,PWM的改变可以让电机驱动输出有效值不同的电压,从而控制电机转速。 回到LabVIEW的函数选板上,如图38所示,在底层函数上,依次有打开通道,关闭引用,设置占空比和频率。可使用的PWM通道对应的引脚,如图39所示。这里需要了解占空比的定义,占空比是指高电平在一个周期之内所占的时间比率。假设占空比为0.5,则说明高电平所占时间为0.5个周期。 图38PWM函数选板 图39可使用的PWM通道对应的引脚 当我们需要输出一个可调的占空比时,可以按照图310的模板进行扩充。需要注意的是,在myRIO的A、B、C三个口上一共可以输出8路PWM,如图310所示。 图310PWM输出程序 以上程序只能输出一路PWM。当我们需要输出多路PWM时,可以把通道捆绑成数组,再利用for循环的自动索引,如图311所示。 图311PWM多路输出程序 2. 一位共阳数码管 数码管是一种半导体发光器件,其基本单元是发光二极管,如图312所示。数码管按其段数可以分为七段数码管和八段数码管,八段数码管比七段数码管多一个小数点(DP)。按发光二极管单元连接方式可分成共阳极数码管和共阴极数码管。本项目中我们采用共阳八段数码管。 共阳极数码管的阳极都接在了+5V,即阳极都接了高电平。而数码管上二极管的发光原理与LED是一样的,所以当我们把该段二极管的另一端(a,b,c,d,e,f,g,DP)接在低电平上,该段二极管就会发亮,接在高电平即不会发亮。 图313所示的程序为手动控制数码管,在前面板的布尔数组上改变八个布尔的状态即可显示不同的数字。 图312管脚图 图313数码管程序图 思考题 (1) 尝试反向点亮流水灯并更改闪烁的频率。 (2) 尝试让数码管自己不断地从0至9自动显示。 第4章使用4×4矩阵键盘 项目介绍 键盘的使用已经融入我们的日常生活,但是键盘的工作原理又是什么呢?根据正常的情况,一个按键需要占用一个I/O口,但是对于计算器和计算机这类需要用到大量按键的键盘,I/O口是明显不够用的,这时就要用到矩阵键盘了。 项目目的 (1) 了解矩阵键盘的基本组成及原理; (2) 掌握学习板上的矩阵键盘模块电路的组成及控制。 4.1硬件材料及理论知识准备 4.1.1硬件材料 4×4矩阵键盘硬件材料如表41所示。 表414×4矩阵键盘硬件材料 名称数量图片备注 myRIO传感器学习板1 续表 名称数量图片备注 myRIO19001 4.1.2背景知识 矩阵键盘是外部设备中所使用的排布类似于矩阵的键盘组。在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成更多按键。我们学习板上的矩阵键盘采用的是4×4矩阵键盘,由16个按键组成,有4条行线,4条列线。 由此可见,在需要的按键数量比较多时,采用矩阵法来设计键盘是合理的。 4.2项 目 实 施 4.2.1电路搭建 4×4矩阵键盘电路如图41所示; myRIO与学习板连接如图42所示。 图41学习板上的矩阵键盘电路图 图42myRIO与学习板连接 4.2.2程序编写 4×4矩阵键盘的程序如图43所示; 4×4矩阵键盘前面板如图44所示。 图434×4矩阵键盘程序框图 图444×4矩阵键盘前面板