在“菜鸟专区”发了一个帖子,可能说的不太清楚。
我做8051数码管显示实验的时候,用到了74HC595,按理说74HC595应该是例如输入0xfe会使LED2的第四个数码管亮,但结果却点亮了第一个数码管。经过调试,我发现如下的代码可以顺序选中LED1的第一个,第二个,第三个,第四个,LED2的第一个,第二个,第三个,第四个数码管。
代吗如下:{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}
可是根据时序图和触发器的原理应该是输如0xfe(11111110)会点亮LED2的第四个数码管啊(因为我认为,应该在另一个口测到QA=QB=...=QG=1,QH=0),但是我发现第一个数码管亮了,实验结果为什么恰好相反呢。。感觉高4位低4位颠倒了,而且高四位和低四位的数据也颠倒了。请问是我理解错了,还是电路图画错了?
注:SM0-SM7低电平位选LED灯。
不胜感激
共8条
1/1 1 跳转至页
请问我的74HC595串入并出芯片是不是有问题?
附:程序
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管编码
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char tab2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//数码管位选
sbit RCK =P1^2;
sbit SRCK =P1^1;
sbit SER =P1^0;
void drive595(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
SRCK=0;
dat<<=1;
SER=CY;
SRCK=1;
}
for(i=0;i<8;i++)
{
SRCK=0;
SER=0;
SRCK=1;
}
RCK=0;
RCK=1;
}
void delay(unsigned char n) //延时程序 (n=10--200ms)
{
unsigned char i,j,k;
for(i=n;i>0;i--)
for(j=100;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
unsigned char i;
while(1)
{for(i=0;i<16;i++)
{
P0=table[i];
drive595(tab2[(i%8)]);
delay(50);
drive595(0xff);
}
} }
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管编码
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char tab2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//数码管位选
sbit RCK =P1^2;
sbit SRCK =P1^1;
sbit SER =P1^0;
void drive595(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
SRCK=0;
dat<<=1;
SER=CY;
SRCK=1;
}
for(i=0;i<8;i++)
{
SRCK=0;
SER=0;
SRCK=1;
}
RCK=0;
RCK=1;
}
void delay(unsigned char n) //延时程序 (n=10--200ms)
{
unsigned char i,j,k;
for(i=n;i>0;i--)
for(j=100;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
unsigned char i;
while(1)
{for(i=0;i<16;i++)
{
P0=table[i];
drive595(tab2[(i%8)]);
delay(50);
drive595(0xff);
}
} }
共8条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |