主要内容

使用I2C控制四位数七段显示

这个例子向您展示了如何使用BeagleBone Black®硬件上的I2C外设来控制一个四位数的七段显示器。

介绍

BeagleBone Black硬件包括一个I2C外设。I2C外设使您能够将支持I2C协议的设备直接连接到BeagleBone Black硬件。金宝app有各种各样的传感器,显示器,ADC, DAC等支持I2C通信。金宝app通过使用这些设备,您可以向BeagleBone Black项目添加新的功能。

在本例中,我们将集中讨论通过I2C控制一个四位数的七段显示。我们将首先概述I2C通信,然后重点介绍它支持的I2C命令的显示和细节。金宝app我们将学习MATLAB用于I2C设备的命令界面,最后通过显示数字和简单的字符来完成示例。

先决条件

所需的硬件

要运行此示例,您将需要以下硬件:

  • BeagleBone黑色硬件

  • 面包板电缆和跨接电缆

  • 来自SparkFun的带有I2C接口的四位七段显示器

I2C的概述

集成电路(I2C)是一种多主机串行单端通信协议,用于将低速外设连接到嵌入式系统。

I2C使用两条双向线路,串行数据线(SDA)和串行时钟(SCL)。这两条线都是用电阻拉上去的。I2C总线上的每个从设备被分配一个7位或10位地址。具有10位地址的I2C设备很少,BeagleBone Black硬件不支持。金宝app使用7位地址空间,最多可以将128个设备连接到I2C总线。I2C总线速度范围从慢速模式的100kbits /s到高速模式的400kbits /s。

BeagleBone Black硬件有两个I2C总线。根据您的电路板的型号和版本,可能有一个I2C总线不可用。扩展引脚上的I2C引脚被内部电阻拉上。

查看可用的I2C总线

通过检查BeagleBone对象的AvailableI2CBuses属性,可以在BeagleBone Black硬件上找到可用的I2C总线。

清除BBB BBB = beaglebone();bbb。AvailableI2CBuses

检查bbb的AvailableI2CBuses属性应该会在MATLAB命令提示符中列出至少一条I2C总线。

四位数七段显示概述

来自SparkFun的4位7段显示是一个带有TTL串行、SPI或I2C接口的4位字母数字显示。

该设备可以显示数字、大部分字母和少数特殊字符。支持小数点、撇号和冒号。金宝app显示亮度可调整。显示器有一个简单的控制接口,主设备(本例中是BeagleBone Black硬件)通过I2C总线向显示设备发出带有参数的命令。例如,要清除display master发送一个'0x76'的命令字节。为了将光标设置到特定的位置,master发送一个命令字节'0x79',后面跟着一个表示光标位置(0到3)的字节。下表显示了一个完整的命令列表。

连接显示

要将显示器接口到BeagleBone Black硬件,您需要做一些轻焊接。由于我们在本例中使用的是显示器的I2C接口,所以将跳线焊接到显示器的SDA、SCL、GND和VCC引脚。您也可以选择焊接一些直的公头,以便能够安装在面包板上的显示器的原型。在进一步之前,您可能还想遵循制造商的硬件组装指南。

按照下图所示的电路图将显示器连接到BeagleBone Black硬件。

扫描I2C总线

一旦将显示器连接到BeagleBone Black硬件,就可以测试BeagleBone Black硬件是否在I2C总线上看到它了。

清除BBB BBB = beaglebone();for i = 1:length(bbb. availablei2cbuses) scanI2CBus(bbb, bbb. availablei2cbuses {i}) end . for i = 1:length(bbb. availablei2cbuses

scanI2CBus()方法扫描给定的I2C总线,并返回总线上设备地址的单元数组。如果你正确地将显示器连接到BeagleBone Black硬件,上面的MATLAB代码片段应该返回一个设备地址'0x71'。这是显示器的出厂默认地址。

显示一个号码

让我们从创建一个i2cdev对象开始,该对象将允许我们使用I2C与显示器对话。

segmentDisp = i2cdev(bbb, 'i2c-1', '0x71');

其中' I2C -1'是检测到的I2C总线的名称。记住,根据BeagleBone Black硬件的版本,总线名称可能会改变。因此,在构造segmentDisp对象时,请确保提供了正确的I2C总线。

根据显示的命令表,发送范围为0 - 0xf的字节将得到由要显示的字节表示的十六进制数。光标最初位于位置0,即最左边的数字,每次显示一个字符时向前移动一个位置。

写(segmentDisp 0);

这应该在显示的最左边的数字上显示一个'0'。让我们再显示几个字符。

写(segmentDisp 7);写(segmentDisp hex2dec (' a '));写(segmentDisp hex2dec (b));

执行以上命令后,您应该会看到分段显示中显示了'07ab'。

清晰的显示屏幕

要清除显示屏幕,我们将跟踪数据表并将'0x76'发送到显示。

写(segmentDisp hex2dec (' 76 '));

设置光标位置

若要在特定光标位置显示特定字符,可能需要设置光标位置。

写(segmentDisp [hex2dec(“79”),3]);写(segmentDisp 9);

上面的命令将在显示的最右边的数字位置显示一个'9'。

总结

这个示例介绍了使用I2C接口的工作流。您学习了如何控制一个4位数的7段显示器来显示十六进制数。