首页 > 应用与设计 > 电器 > Service Robots > 服务型机器人 > TI机器人系统学习套件(TI-RSLK) >

服务型机器人

最新课程

热门课程

TI-RSLK 模块 11 - 讲座视频 - 液晶显示屏

大家好,我是 John Valvano。 在本视频中,我们将讨论 液晶显示屏。 我们将介绍一些基本概念, 关于如何实现硬件 与软件的接口。 我们将介绍一种接口协议, 称为同步串行通信。 我们要将液晶显示屏连接 到 LaunchPad, 并编写 一组软件函数, 称为驱动程序, 使得我们可以通过调用 它来使用该模块。 然后我们要将所有这些结合起来, 并将液晶显示屏放置 在我们的机器人上, 以便我们可以观察 所发生的情况。 好,让我们开始吧。 在我们进行连接时会 遇到的第一个问题是, 软硬件速度通常不匹配。 软件执行得相当快, 在我们的处理器中,运行每条 指令大约需要 42 纳秒。 相反,硬件的运行速度通常 比软件慢很多。 我们的液晶显示屏需要 大约 6 微秒的时间 进行输出,而其他许多 I/O 设备甚至比这更慢。 因此,当我们遇到这种 速度不匹配的情况时, 我们需要一种将 两者同步的方法。 “Blind” 方式相当简单, 只需在软件中进行输出 并等待一定的时间。 我们将在本模块中将 使用另一种方法, 称为“Busy-Wait”。 我们有一个输出设备,该设备 会有一个状态标志。 如果该状态标志显示 Busy , 这意味着它正在 执行之前的输出, 那么我们将等待(Wait)。 当输出设备就绪时, 再为它提供要输出的新数据。 这就称为 “Busy-Wait”。 我们可以对输入设备 执行同样的操作。 对于一个输入设备, 如果显示 Busy, 那么表示暂时无法接收数据,并将 进行等待,当设备就绪时 再开始接收数据。 在实验 14 中,我们将使用中断, 另外我们不会使用任何 直接存储器访问(DMA)。 同步串行通信是一种 将设备连接到 MSP432 的方法。 它是一个非常重要的模块, 以至于我们可以看到, 在 MSP432 芯片上共有 8 组同样的模块。 (同步串行通信)共有四根线, 分别为使能线、时钟线、 输入线和输出线, 我们稍后将看到它们 是如何工作的。 我们会将 MSP432 定义为主设备, 这意味着它将驱动 时钟线和使能线, 并且负责发起传输。 相反,我们的液晶显示屏 将作为从设备, 它将读取时钟线和使能线, 并仅在被询问时进行响应。 同步串行通信的基本思想, 或具体到 SPI 协议, 是有两个移位寄存器, 一个位于处理器中, 一个位于从设备中。 具体通信过程是: 当通信开始时, 数据会从一个移位寄存器流出, 并流入另一个移位寄存器。 但我们可以看到,在数据 从主设备传输到从设备的同时, 数据也可以由从设备 传输到主设备。 因此,数据基本上是在 这两个设备之间 进行交换。 它的具体工作方式 如我们所见,在时钟线上 将有一个边沿, 在此边沿到来时主设备 将会进行数据的更改。 那么,在图中所示 的特定配置下, 上升沿到来时,数据 一位一位地发生改变。 每次改变一位, 这就是“串行”的含义。 但另一个设备将在 另一个边沿到来时 捕获或读取数据。 这就是串行同步通信 速度很快的原因。 因此,我们将在一个 边沿发送数据, 并在另一个边沿读取数据, 这样数据就可以 可靠而快速地在一个设备 和另一个设备之间传输。 对于液晶显示屏, 我们基本上不会使用这一部分 接口(接收部分), 因为我们只需要进行输出。 那么,我们要做的是,这是我们 的 Busy-wait 标志位(口误), 这是我们的 Busy 标志位, 标志位为1意味着寄存器是空的, 也就是我们可以发送数据。 我们将通过向这个(发送) 寄存器进行写入 来发送数据。 那么,这里是放大的画面, 正如我说过的,一个 边沿用于写入数据, 现在图中使用的是 另一种方式。 下降沿在这种方式中, (在这种方式中)被用来更改数据, 然后上升沿被用来读取数据。 因此主设备将驱动 时钟线和使能线, 而这两个设备,即主设备和从设备 都将发送和读取数据。 再说一次,这种方式非常快,因为 它用于发送的边沿和用于 接收的边沿不同。 这是一个采用负逻辑的使能引脚示例, 它在数据传输期间置0。 使能信号是由硬件自动控制的。 这里是我们的液晶显示屏, 它的宽度为 84 个像素, 高度为 48 个像素。 它采用这种奇怪的寻址模式, 其中 0,0 坐标 在屏幕顶部。 它仅需要连接5个引脚, 我们将在下一张幻灯片 中看到这些引脚。 它使用 SPI 通信协议。 每秒将发送 1200 万位, 这也是我选择它的原因。 因此,一个 8 位的字符, 例如一个 8 位像素, 仅需要 8/12 微秒就可完成发送。 并且这块屏幕的成本相当低, 这就是我们在机器人套件中 选择它的原因。 这就是我们在机器人套件中 选择它的原因。 这里是硬件本身, 正如我之前介绍过的, 该设备有 5 个引脚。 我们将从时钟线开始, 我们将从时钟线开始, 这就是时钟线。 时钟信号从主设备传输到从设备, 而数据 从主设备传出, 这就是数据, 这是数据引脚。 我们有一个控制引脚, 这是锁存/使能引脚。 我们还有两个其他引脚, 一个用于指定数据或命令, 另一个用于生成复位信号, 使得我们可以对设备进行复位。 那么您可以看到液晶屏 使用了 5 个引脚, 那么您可以看到液晶屏 使用了 5 个引脚, 其中,这里的三个引脚 是为我们的设备 配置的同步串行端口。 市面上可以找到很多 Nokia 显示屏, 如果您碰巧有一个 Nokia 显示屏, 而它的引脚编号与上述编号不完全一样, 没关系,找到匹配的引脚名称 就可以使它正常工作。 本次实验的其他目标包括 在整数、无符号整数和 ASCII 字符序列之间 进行转换。 基本来说,这种转换是 相当简单的, 如果您希望输出一个介于 1000 和 9999 之间的数字, 我们可以先输出一个空格。 如果我们将该数字除以 1000, 这样可以得到千分位。 在转换结果上加 30,会使它 成为 ASCII 码。 然后我们再计算剩余的位, 现在,它将是一个介于 0 和 999 之间的数字, 除以 100,可以得到百分位, 加上 30 使它成为 ASCII 码。 在我们这么做之后,我们会得到 一个介于 0 和 99 之间的数字, 除以 10 将得到十分位, 转换为 ASCII, 再将个位转换为 ASCII。 那么,该序列将恰好 生成 1、2、3、4、5 五个输出字符,即一个空格 后面跟四位数字。 您也可以将同样的操作用于 其他类型的数字,同样相当简单。 这就是我们将输出到 液晶显示器的字符。 好的,我们要使用液晶屏的方法是 将这块液晶显示器放置 在一个机器人上。 这样,我们就可以在这个 机器人沿着赛道奔跑时 看到它在想什么。 有一组中间层函数, 您可以使用它们来让光标的 xy 坐标变得平滑。 您可以使用它们来让光标的 xy 坐标变得平滑。 您可以输出字符串, 也可以输出数字。 您需要在这里编写这两个函数, 就是下面这两个函数。 这样一来,如果您执行这个函数一次, 液晶屏上将会显示“D= mm”。 然后,当您执行这一行代码时, 您所做的是在空格位置 填写一个新的数字。 因此,如果您进行一个测试, 来调试这两行函数的执行过程, 您将看到,大约需要 42 us 来显示这些内容。 这 42 us的时间可以被称为 具有极小侵入性,因为该 LCD 的存在 不会显著影响您的机器人的性能,对吧? 你可以实时执行该操作, 例如每秒 30 次。 那么,如果您执行这段代码的间隔 为每 33 ms 执行一次, 也就是说,如果您每隔 33 ms 执行这段需要 42 us 的代码, 也就是说,如果您每隔 33 ms 执行这段需要 42 us 的代码, 这就是我说的极小侵入性的含义, 它仅占用了处理能力的 1/1000。 现在,您有了一个图形显示界面 在需要的时候可以使用它。 更重要的在于,我们认为能够 观察到您的机器人在想什么, 对于解决调试过程中的挑战 是具有非常大的意义的。 对于解决调试过程中的挑战 是具有非常大的意义的。 总结一下,本章包含了一些基本内容, 总结一下,本章包含了一些基本内容, 您将看到在接近检测应用中 如何使用 Busy-Wait 同步通信。 我们将在实验中编写对应代码。 这是一个同步串行通信示例。 这是一个同步串行通信示例。 它的原理很简单, 但请相信我,同步通信是一种可以 简单快捷地完成任务的方法。 如果您喜欢了解图形化编程, 可以通过这种方式来实现, 不过我们希望您做的是,实现数字输出, 并尽量减小代码的侵入性。 换句话说,尽量缩短执行 代码所花费的时间。 祝您本实验玩得开心, 本实验可以说是一个比较有趣的实验, 有助于您提高设计机器人的技能。 215

大家好,我是 John Valvano。

在本视频中,我们将讨论

液晶显示屏。

我们将介绍一些基本概念,

关于如何实现硬件 与软件的接口。

我们将介绍一种接口协议,

称为同步串行通信。

我们要将液晶显示屏连接

到 LaunchPad, 并编写

一组软件函数, 称为驱动程序,

使得我们可以通过调用 它来使用该模块。

然后我们要将所有这些结合起来,

并将液晶显示屏放置 在我们的机器人上,

以便我们可以观察 所发生的情况。

好,让我们开始吧。

在我们进行连接时会 遇到的第一个问题是,

软硬件速度通常不匹配。

软件执行得相当快,

在我们的处理器中,运行每条 指令大约需要 42 纳秒。

相反,硬件的运行速度通常

比软件慢很多。

我们的液晶显示屏需要 大约 6 微秒的时间

进行输出,而其他许多 I/O 设备甚至比这更慢。

因此,当我们遇到这种 速度不匹配的情况时,

我们需要一种将 两者同步的方法。

“Blind” 方式相当简单,

只需在软件中进行输出 并等待一定的时间。

我们将在本模块中将 使用另一种方法,

称为“Busy-Wait”。

我们有一个输出设备,该设备 会有一个状态标志。

如果该状态标志显示 Busy ,

这意味着它正在 执行之前的输出,

那么我们将等待(Wait)。

当输出设备就绪时,

再为它提供要输出的新数据。

这就称为 “Busy-Wait”。

我们可以对输入设备 执行同样的操作。

对于一个输入设备, 如果显示 Busy,

那么表示暂时无法接收数据,并将 进行等待,当设备就绪时

再开始接收数据。

在实验 14 中,我们将使用中断,

另外我们不会使用任何

直接存储器访问(DMA)。

同步串行通信是一种

将设备连接到 MSP432 的方法。

它是一个非常重要的模块, 以至于我们可以看到,

在 MSP432 芯片上共有 8 组同样的模块。

(同步串行通信)共有四根线, 分别为使能线、时钟线、

输入线和输出线,

我们稍后将看到它们 是如何工作的。

我们会将 MSP432 定义为主设备,

这意味着它将驱动 时钟线和使能线,

并且负责发起传输。

相反,我们的液晶显示屏 将作为从设备,

它将读取时钟线和使能线,

并仅在被询问时进行响应。

同步串行通信的基本思想,

或具体到 SPI 协议,

是有两个移位寄存器,

一个位于处理器中, 一个位于从设备中。

具体通信过程是: 当通信开始时,

数据会从一个移位寄存器流出, 并流入另一个移位寄存器。

但我们可以看到,在数据

从主设备传输到从设备的同时, 数据也可以由从设备

传输到主设备。

因此,数据基本上是在 这两个设备之间

进行交换。

它的具体工作方式

如我们所见,在时钟线上 将有一个边沿,

在此边沿到来时主设备 将会进行数据的更改。

那么,在图中所示 的特定配置下,

上升沿到来时,数据 一位一位地发生改变。

每次改变一位,

这就是“串行”的含义。

但另一个设备将在 另一个边沿到来时

捕获或读取数据。

这就是串行同步通信 速度很快的原因。

因此,我们将在一个 边沿发送数据,

并在另一个边沿读取数据, 这样数据就可以

可靠而快速地在一个设备 和另一个设备之间传输。

对于液晶显示屏,

我们基本上不会使用这一部分 接口(接收部分),

因为我们只需要进行输出。

那么,我们要做的是,这是我们 的 Busy-wait 标志位(口误),

这是我们的 Busy 标志位,

标志位为1意味着寄存器是空的, 也就是我们可以发送数据。

我们将通过向这个(发送) 寄存器进行写入

来发送数据。

那么,这里是放大的画面,

正如我说过的,一个 边沿用于写入数据,

现在图中使用的是 另一种方式。

下降沿在这种方式中,

(在这种方式中)被用来更改数据,

然后上升沿被用来读取数据。

因此主设备将驱动 时钟线和使能线,

而这两个设备,即主设备和从设备

都将发送和读取数据。

再说一次,这种方式非常快,因为

它用于发送的边沿和用于 接收的边沿不同。

这是一个采用负逻辑的使能引脚示例,

它在数据传输期间置0。

使能信号是由硬件自动控制的。

这里是我们的液晶显示屏,

它的宽度为 84 个像素, 高度为 48 个像素。

它采用这种奇怪的寻址模式, 其中 0,0 坐标

在屏幕顶部。

它仅需要连接5个引脚,

我们将在下一张幻灯片 中看到这些引脚。

它使用 SPI 通信协议。

每秒将发送 1200 万位,

这也是我选择它的原因。

因此,一个 8 位的字符, 例如一个 8 位像素,

仅需要 8/12 微秒就可完成发送。 并且这块屏幕的成本相当低,

这就是我们在机器人套件中 选择它的原因。

这就是我们在机器人套件中 选择它的原因。

这里是硬件本身,

正如我之前介绍过的, 该设备有 5 个引脚。

我们将从时钟线开始,

我们将从时钟线开始,

这就是时钟线。

时钟信号从主设备传输到从设备,

而数据

从主设备传出, 这就是数据,

这是数据引脚。

我们有一个控制引脚,

这是锁存/使能引脚。

我们还有两个其他引脚,

一个用于指定数据或命令,

另一个用于生成复位信号,

使得我们可以对设备进行复位。

那么您可以看到液晶屏 使用了 5 个引脚,

那么您可以看到液晶屏 使用了 5 个引脚,

其中,这里的三个引脚 是为我们的设备

配置的同步串行端口。

市面上可以找到很多 Nokia 显示屏,

如果您碰巧有一个 Nokia 显示屏,

而它的引脚编号与上述编号不完全一样,

没关系,找到匹配的引脚名称 就可以使它正常工作。

本次实验的其他目标包括

在整数、无符号整数和 ASCII

字符序列之间 进行转换。

基本来说,这种转换是 相当简单的,

如果您希望输出一个介于 1000 和 9999 之间的数字,

我们可以先输出一个空格。

如果我们将该数字除以 1000,

这样可以得到千分位。

在转换结果上加 30,会使它 成为 ASCII 码。

然后我们再计算剩余的位,

现在,它将是一个介于 0 和 999 之间的数字,

除以 100,可以得到百分位,

加上 30 使它成为 ASCII 码。

在我们这么做之后,我们会得到 一个介于 0 和 99 之间的数字,

除以 10 将得到十分位, 转换为 ASCII,

再将个位转换为 ASCII。

那么,该序列将恰好 生成 1、2、3、4、5

五个输出字符,即一个空格 后面跟四位数字。

您也可以将同样的操作用于

其他类型的数字,同样相当简单。

这就是我们将输出到 液晶显示器的字符。

好的,我们要使用液晶屏的方法是

将这块液晶显示器放置 在一个机器人上。

这样,我们就可以在这个 机器人沿着赛道奔跑时

看到它在想什么。

有一组中间层函数,

您可以使用它们来让光标的 xy 坐标变得平滑。

您可以使用它们来让光标的 xy 坐标变得平滑。

您可以输出字符串,

也可以输出数字。

您需要在这里编写这两个函数,

就是下面这两个函数。

这样一来,如果您执行这个函数一次,

液晶屏上将会显示“D= mm”。

然后,当您执行这一行代码时,

您所做的是在空格位置 填写一个新的数字。

因此,如果您进行一个测试,

来调试这两行函数的执行过程,

您将看到,大约需要 42 us

来显示这些内容。

这 42 us的时间可以被称为

具有极小侵入性,因为该 LCD 的存在

不会显著影响您的机器人的性能,对吧?

你可以实时执行该操作,

例如每秒 30 次。

那么,如果您执行这段代码的间隔

为每 33 ms 执行一次,

也就是说,如果您每隔 33 ms 执行这段需要 42 us 的代码,

也就是说,如果您每隔 33 ms 执行这段需要 42 us 的代码,

这就是我说的极小侵入性的含义,

它仅占用了处理能力的 1/1000。

现在,您有了一个图形显示界面

在需要的时候可以使用它。

更重要的在于,我们认为能够 观察到您的机器人在想什么,

对于解决调试过程中的挑战 是具有非常大的意义的。

对于解决调试过程中的挑战 是具有非常大的意义的。

总结一下,本章包含了一些基本内容,

总结一下,本章包含了一些基本内容,

您将看到在接近检测应用中

如何使用 Busy-Wait 同步通信。

我们将在实验中编写对应代码。

这是一个同步串行通信示例。

这是一个同步串行通信示例。

它的原理很简单,

但请相信我,同步通信是一种可以

简单快捷地完成任务的方法。

如果您喜欢了解图形化编程, 可以通过这种方式来实现,

不过我们希望您做的是,实现数字输出,

并尽量减小代码的侵入性。

换句话说,尽量缩短执行 代码所花费的时间。

祝您本实验玩得开心,

本实验可以说是一个比较有趣的实验,

有助于您提高设计机器人的技能。 215

视频报错
手机看
扫码用手机观看
收藏本课程

相关下载

查看全部

视频简介

TI-RSLK 模块 11 - 讲座视频 - 液晶显示屏

所属课程:TI机器人系统学习套件(TI-RSLK) 发布时间:2018.08.27 视频集数:69 本节视频时长:11:06

在该模块中,你将学习如何将LCD与TI的LaunchPad开发套件相连接。

已有7人参与了讨论去论坛跟帖交流
new
关闭广告