gpt4 book ai didi

c - 7段LED + 4094

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:50 25 4
gpt4 key购买 nike

我想使用两个移位寄存器 4094、一些 7 段 LED 和一个 ATmega 328p 来显示 2 个数字。我当前的代码是:

uint8_t LED[10]={0b11111100,0b01100000,0b011011010,0b011110010,0b01100110,0b10110110,0b10111110,0b111000000,0b11111110,0b11110110};


int j =Led; //input from the main
uint8_t num_1=Led/10;
uint8_t num_2=Led%10;
Strobe=0;
uint8_t mask=0x80;
for(uint8_t i=0; i<8; i++)
{
mask=mask>>1;

if( (LED[num_1] & mask) ==1)
{
DATA= 1;
}
else
{

DATA= 0;
}
pulse();
}
mask=0x80;
for(uint8_t i=0; i<8; i++)
{
mask=mask>>1;
;

if( (LED[num_2] & mask)==1)
{
DATA= 1;
}
else
{

DATA= 0;
}
pulse();
}

当然,它不能正常工作。它只生成 0。你能为我指出正确的方向吗?编辑:我使用 Atmel studio 6。该代码的目的是生成从 00 到 16 的数字。

最佳答案

首先,您应该将 mask = mask>>1 放在循环的末尾。

其次,你需要更换
if( (LED[num_2] & mask) == 1 )
if( (LED[num_2] & mask) == mask) 或者只是
if( LED[num_2] & mask )

掩码可以是 0b10000000, 0b01000000,...,0b00000001.
&操作的结果只能与掩码或零相同。
==运算符的右边是1,永远是0b00000001。

关于c - 7段LED + 4094,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27984518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com