首页 理论教育使用移位寄存器传递数据的方法及实现

使用移位寄存器传递数据的方法及实现

【摘要】:使用移位寄存器可在循环体的循环之间传递数据。图2-40 添加移位寄存器对在框图上移位寄存器用循环边框上的一对端子来表示。需要注意的是,这里为移位寄存器进行了初始化。这表明移位寄存器具有记录保存数据的能力,前提是它必须驻留在内存中。在图2-44中,可以创建多个左侧移位寄存器,但只能有一个右端子。图2-44 多个移位寄存器的建立图2-45 前面板和程序框图

1.移位寄存器的使用

移位寄存器用于While循环和For循环。使用移位寄存器可在循环体的循环之间传递数据。其功能是将上一次循环的值传给下一次循环。创建移位寄存器的方法是,右键单击循环框架的左边或右边,在快捷菜单中选择“添加移位寄存器”,此时会在For循环和While循环的左右边框上自动添加一个寄存器对,如图2-40所示。

978-7-111-49442-3-Chapter02-59.jpg

图2-40 添加移位寄存器对

在框图上移位寄存器用循环边框上的一对端子来表示。右边的端子中存储了一个周期完成后的数据。这些数据在这个周期完成后将被转移到左边的端子,赋给下一个周期。移位寄存器可以转移各种类型的数据,如数值、布尔数、数组、字符串等,它还会自动适应与它相连接的第一个对象的数据类型。移位寄存器的工作过程(以For循环为例)如图2-41所示。

978-7-111-49442-3-Chapter02-60.jpg

图2-41 移位寄存器工作过程

上图中借用帧的表现手法,演示了移位寄存器(数据)与循环间的关系。需要注意的是,这里为移位寄存器进行了初始化。移位寄存器是多态的,可以接收数值、字符串、数组等数据类型,大多数移位寄存器应用时都必须进行初始化。假如将上图中的初始化值0去掉,就会发现,每重复运行一次,它的输出值都会得到加3的结果。这表明移位寄存器具有记录保存数据的能力,前提是它必须驻留在内存中。

【例2-2】 移位寄存器的使用

目的:用For循环和移位寄存器计算一组随机数的最大值。

具体步骤如下:

(1)选择“文件”→“新建VI”,打开一个新的前面板

1)添加“波形图表”控件(控件选板→Express→波形图表)设置它的标签为随机信号波形图表。这个图表用于实时显示随机数。把图表的纵坐标改为0.0~1.0。右键单击波形图表控件,在图表的快捷菜单中选择“显示项”→“X滚动条”和“数字显示”,并隐藏图例。调整X滚动条的大小和使其波形图表一样宽。

2)添加“数字显示”控件(控件选板→经典→经典数值→数值显示控件)放在前面板,设置它的标签为“最大值”。

前面板如图2-42所示。

978-7-111-49442-3-Chapter02-61.jpg

图2-42 例2-2前面板

(2)按〈Ctrl+E〉键切换到该VI的程序框图

1)在程序图中放置一个For循环(函数选板→编程→结构)。设置循环执行次数N值为100。在For循环的边框处单击鼠标右键,在快捷菜单中选择添加移位寄存器。

2)添加Random Number(0~1)函数(函数选板→编程→数值),产生0~1之间的某个随机数。

3)添加数值常数(函数选板→编程→数值),在这个练习中需要将移位寄存器的初始值设成0。

4)添加最大值最小值函数(函数选板→编程→比较),该函数输入两个数值,再将它们的最大值输出到右上角,最小值输出到右下角。这里只需要最大值,只用连接最大值输出。

按照图2-43连接各个端子。

978-7-111-49442-3-Chapter02-62.jpg

图2-43 例2-2程序框图

(3)运行该VI

(4)将该VI保存为Calculate Max.vi

2.多个移位寄存器的建立

添加多个移位寄存器,可以访问前几次循环的数据,令移位寄存器记忆前面多个周期的数值。这个功能对于计算数据均值非常有用。如图2-44所示。

在图2-44中,可以创建多个左侧移位寄存器,但只能有一个右端子。

【例2-3】 利用多个移位寄存器显示多个数据

VI的前面板和程序框图如图2-45所示,在While循环中使用移位寄存器访问前三次的循环值。N[i]表示循环次数,此值在下一次循环开始传给右端子。N[i-1]表示前一次循环的值,N[i-2]表示前两次循环的值,N[i-3]表示前三次循环的值。由于While循环重复端子的初始值为0,步长为1,因此前面板数字指示器按照逐渐递增的顺序显示。

978-7-111-49442-3-Chapter02-63.jpg

图2-44 多个移位寄存器的建立

978-7-111-49442-3-Chapter02-64.jpg

图2-45 前面板和程序框图