主要内容

使用I2C控制四位七段显示

本示例向您展示如何使用BeagleBone Black®硬件上的I2C外设来控制4位7段显示器。

简介

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

在本例中,我们将集中于通过I2C控制4位7段显示器。我们将首先概述I2C通信,然后重点介绍它支持的I2C命令的显示和细节。金宝app我们将学习I2C设备的MATLAB命令接口,最后通过显示数字和简单字符完成示例。

先决条件

所需的硬件

要运行这个例子,你需要以下硬件:

  • BeagleBone黑色硬件

  • 面包板和跳线电缆

  • SparkFun的I2C接口四位七段显示器

I2C概述

I2C (Inter-Integrated Circuit)是一种多主串行单端通信协议,用于将低速外设连接到嵌入式系统。

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

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

查看可用的I2C总线

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

BBB = beaglebone();bbb。AvailableI2CBuses

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

四位数七段显示器概述

SparkFun的四位数七段显示器是一种带有TTL串行、SPI或I2C接口的四位数字母数字显示器。

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

连接显示

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

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

扫描I2C总线

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

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 '));

设置光标位置

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

write(segmentDisp, [hex2dec('79'), 3]);写(segmentDisp 9);

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

总结

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