[英]Upload data to MAX 7219
我有以下代码在 MAX7219 上写入数据以点亮 8x8 LED 矩阵:
for (i = 0; i < 8; i++) {
CLK = LOW;
DIN = temp & MSBIT >> i;
CLK = HIGH;
}
可悲的是,我只知道代码行( DIN = temp & MSBIT >> i;
)必须完全一样,否则 LED 将不会显示预期,但我不明白如何有用...
拜托,我真的需要解释,因为我被卡住了......
注意:变量“temp”总是一个像 0x20 这样的十六进制数,而“MSBIT”= 0x80。
您的示例不完整,因此无法给出详细答案。 请提供完整的最小运行示例,并告诉我们有关您正在使用的平台的一些信息。 例如,变量“temp”尚未在您的代码片段中声明或定义。 首先,您必须了解运算符优先级。 看看这里: https : //en.cppreference.com/w/c/language/operator_precedence
您可以使用这个在线 gcc 编译器来运行和调试小型测试应用程序来测试您的代码行的行为。 http://pythontutor.com/c.html
所以我猜 DIN 是一个外设的寄存器。 您为此寄存器分配一个值。 该值是变量 temp 和 MSBIT(“也许是常数”)向右移动 i 位的明智“与”运算结果。 因此,为了使表达式更清晰,您还可以这样写: DIN = temp & (MSBIT >> i).
有关 MAX7210 工作原理的详细信息,请查看此处。 https://howtomechatronics.com/tutorials/arduino/8x8-led-matrix-max7219-tutorial-scrolling-text-android-control-via-bluetooth/
让我猜猜:
CLK
:微控制器的时钟输出引脚
DIN
: 微控制器的数据输出引脚
因此,您使用CLK
上的时钟信号将DIN
上的temp
值逐位移出。
i = 0 -> DIN = bit 7 of temp
i = 1 -> DIn = bit 6 of temp
...
i = 7 -> DIN = bit 0 of temp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.