高悬赏100。求单片机大神帮忙写一段小程序,小弟想研究研究74hc595的用法。功能就是先点亮前四

高悬赏100。求单片机大神帮忙写一段小程序,小弟想研究研究74hc595的用法。功能就是先点亮前四个灯,延时后点亮后四个灯,再延时点亮中间四个灯。对大神来说不算什么,但对小弟来说至关重要。对了,用c语音编写。谢谢,谢谢。明白之后再送200悬赏。

12个灯吗?那你1个595怎么够啊,简单给你说一下用法哈,比如你595的8个并行输出口 接了8个led 像你的图 使能端OE是没接地的吗?那就可以用它来控制输出,如果你接地程序这么写

sbit SRCLK=P3^6;

sbit RCLK=P3^5;

sbit SER=P3^4;


void 74HC595SendByte(unsigned char dat2send);//595输入函数

void delay(unsigned int );

//主函数

void main()

{

unsigned char led;

ledNum=0xf0;

while(1)

{

74HC595SendByte(led);

delay(200);

}

}



void 74HC595SendByte(unsigned char dat2send)

{

unsigned char i;

SRCLK=1;

RCLK=1;

for(i=0;i<8;i++)

{

SER=dat2send>>7;//穿行输入端 从最高位开始输入

dat2send<<=1;//数据左移一位

SRCLK=0;

_nop_();

_nop_();

SRCLK=1;//SCK上升沿 移位寄存器数据右移一位 如此循环8次 可以将数据存入移位寄存器

}

RCLK=0;

_nop_();

_nop_();

RCLK=1;//RCK上升沿 移位寄存器数据进入数据存储器(更新数据)因为你OE没接地 你也可以直接控制OE 来控制输出

}

12个灯也一样吧 再加一个595 将俩个级联

如图

2个595 接12个灯

用OE控制输出 比如你输入0xf0,for循环移8次 那么第一个595的并行输出段就是0xf0对吧  从上到下第一个595的Q0-Q3为0 你是共阴极数码管 这四个亮,延时,再一个for循环 输入0xf 移4次,那么你第一个595的值为Q0-Q3为1111 Q4-Q7为0000 第二个595的Q0-Q3为1111,这样就中间4个灯亮啦,再然后也是一样的。。有什么不知道的可以继续问我。。给分吧 上次一个敲代码的也敲了一大段 没给分-,-


其实 关键在于俩个时钟RCK是控制输出的,只有在RCK的上升沿 移位寄存器里面的数据才会并行的送到数据存储器(即输出端),即 你通过什么时候来给RCK上升沿 来实现输出你所要的现象。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-22
这个简单啊P34、P35、P36三个输入端,编码有8个000、111、100、010、001、110、011、101收到这些编码74H59就会作出相应的输出!要给分呀!分是身外之物有帮助就给我吧追问

装大神啊,根本就不对。呵呵

追答

我操!知道什么是动态扫描吗?只要一次快点亮4个LED就能实现了

追问

你别鸡吧装了行嘛?你说的那个是几把译码器,老子的是锁存器,你个傻叉

第2个回答  2015-01-22

仿真实例,可以参考一下,试试

追问

datah<<=1;
ds=CY;
这是什么意思啊

追答

左右一位,标志位CY 移入595输出。