在“菜鸟专区”发了一个帖子,可能说的不太清楚。
我做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灯。
不胜感激
共3条
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);
}
} }
共3条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】智能可穿戴设备AR/VR如何引领科技新潮流! | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? |
打赏帖 | |
---|---|
如何实现基于NXPiMX.RT1021的BH1730采集被打赏50分 | |
【换取手持数字示波器】AHT10温度检测分享被打赏40分 | |
【换取手持数字示波器】ACM32F070开发板点亮LCD屏和触控按键,串口,ADC被打赏40分 | |
【换取手持数字示波器】ACM32F070LCD屏和触控按键功驱动蜂鸣器分享被打赏40分 | |
【换取手持数字示波器】国民技术PWM功能知识分享被打赏40分 | |
【换取手持数字示波器】放大器运放知识分享被打赏40分 | |
【分享评测,赢取加热台】+开关电源AC输入知识分享被打赏30分 | |
【换取手持数字示波器】N32G430点亮数码管与串口打印、ADC被打赏40分 | |
老胖子聊电路--分析一个反馈电路被打赏50分 | |
【换取手持数字示波器】+点亮WS2812RGB灯被打赏50分 |