繁体   English   中英

将数据上传到 MAX 7219

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM