主要内容

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

这个例子展示了如何使用I2C外围覆盆子π™硬件控制一个四位数的七段显示。

介绍

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

在本例中,我们将集中在控制一个四位数的七段显示通过I2C。我们将开始通过I2C通信的一般概述,然后重点支持I2C命令的显示和细节。金宝app我们将学习MATLAB®命令I2C接口设备和最终完成的例子显示数字和简单的字符。

先决条件

所需的硬件

运行这个例子中您将需要以下硬件:

  • 覆盆子π硬件

  • 电源至少1输出

  • 案板和跨接电缆

  • 一个四位数的七段显示SparkFun I2C接口

I2C的概述

Inter-Integrated电路(I2C)是一个multi-constroller系列单端通信协议用于附加低速外设嵌入式系统。

I2C使用两个双向线、串行数据行(SDA)和串行时钟(sci)。这些线都是拉电阻。I2C总线上的每个外围设备分配一个7位和10位地址。I2C设备与10位地址是罕见的和不支持的覆盆子π硬件。金宝app7位地址空间,128设备可以连接到一个I2C总线。I2C总线速度的范围可以从100 Kbits / s对于慢模式为高速400 Kbits / s模式。

覆盆子π硬件有两个I2C总线。根据模型和修正你的董事会,I2C总线之一可能不可用。I2C元件2 * 13扩张元件是拉1.8 KOhm电阻。

查看可用的I2C总线

在默认Raspbian Linux映像,I2C外围启用。你可以找到可用的I2C总线的覆盆子π硬件通过检查AvailableI2CBuses raspi对象的属性。

清晰的零售物价指数零售物价指数= raspi ();rpi.AvailableI2CBuses

检查AvailableI2CBuses属性的零售物价指数收益率应该至少一个I2C总线被列在MATLAB命令提示符。

四位七段显示器的概述

四位数的七段显示从SparkFun与TTL系列四位数的字母数字显示,SPI I2C实现的接口。

这个设备可以显示数字,字母和特殊字符。支持小数点,撇号和冒号。金宝app可以调整亮度的显示。constroller的显示有一个简单的控制接口设备,覆盆子π硬件在这种情况下,问题的命令与参数的显示设备/ I2C总线。例如,清晰显示constroller发送一个命令字节0 x76。设置光标到特定位置,constroller发送一个命令字节0 x79紧随其后的是一个字节表示光标位置(0 - 3)。一个全面的命令列表如下表所示。

连接显示

界面显示覆盆子π硬件你需要做一些光钎焊。由于我们使用的I2C接口显示在这个例子中,焊料SDA跳线,sci、接地和VCC别针的显示。你也可以选择直接焊一些男性头能够挂载显示原型的案板上。在进一步讨论之前,您可能还想按照制造商的硬件组装指南。

按照如下所示的电路图连接显示覆盆子π硬件。

扫描I2C总线

一旦你连接显示器的覆盆子π的硬件,您已经准备好测试如果覆盆子π硬件看到I2C总线。

清晰的零售物价指数零售物价指数= raspi ();i = 1:长度(rpi.AvailableI2CBuses) scanI2CBus(零售物价指数,rpi.AvailableI2CBuses{我})结束

scanI2CBus()方法检查给定的I2C总线,并返回一个单元阵列的设备地址总线上的。如果你连接正确显示覆盆子π硬件,上面MATLAB代码的片段应该返回一个设备地址的“0 x71”。这是工厂的默认地址显示。

显示一个号码

让我们首先创建一个i2cdev对象,将允许我们使用I2C和显示。

segmentDisp = i2cdev(零售物价指数,“< I2C总线>”,“0 x71”);

在< I2C总线>的I2C总线的名称显示检测到。记住,这取决于你的版本树莓π硬件,总线名称可能会改变。所以确保你提供正确的I2C总线构建segmentDisp对象。

根据命令表显示,发送一个字节的范围0 - 0 xf结果显示十六进制数表示为字节。光标最初在位置0,这是最左侧位,每次进步一个位置显示一个字符。

写(segmentDisp 0);

这应该显示一个' 0 '左边的大多数数字显示。让我们显示几个字符。

写(segmentDisp 7);写(segmentDisp hex2dec (“一个”));写(segmentDisp hex2dec (“b”));

执行上面的命令后,您应该看到“07 ab”显示在分段显示。

清晰的显示屏幕

清晰的显示屏幕,我们将按照数据表和发送到显示“0 x76”。

写(segmentDisp hex2dec (“76”));

设置光标位置

显示一个特定的字符在一个特定的光标位置,您可能希望设置光标位置。

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

上面的命令将显示在第二个数字“9”的位置显示。

高级:创建一个MATLAB类段显示

你可以把我们学过的所有事情段显示在一起,创建一个MATLAB类。这个MATLAB类设置光标位置的方法,清除显示屏,打印数字,等。作为一个例子,我们创建了这样一个类。这是一个如何使用这个类的示例。

清晰的segmentDispsd = raspi.internal.segmentdisplay(零售物价指数,< I2C总线>,< I2C地址>)clr (sd);%清除屏幕打印(sd,“112”);打印(sd,“死”);打印(sd,“牛肉”);

注意,在创建类之前,我们清除原始i2cdev对象称为segmentDisp。你可以创建一个对象/ I2C设备。segmentdisplay类内部创建一个i2cdev对象。因此你需要清楚任何i2cdev对象连接到实例化segmentdisplay之前从MATLAB显示工作区。

segmentdisplay类试图减少闪烁造成的结算/在内部将数字。它是通过缓存只显示字符和更新那些是不同的。不支持的所有功能分割显示实现。金宝app您可以使用MATLAB类我们创建自己的实现作为起点。这是MATLAB代码片段实现计数器:

N = 1000;延迟= 0.01;clr (sd);i = 1: N打印(sd, num2str(我));暂停(延迟);结束

总结

这个示例介绍了工作流处理I2C接口。你学会了如何控制一个四位数的七段显示器显示十六进制数字。