高悬赏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上升沿 来实现输出你所要的现象。。
装大神啊,根本就不对。呵呵
追答我操!知道什么是动态扫描吗?只要一次快点亮4个LED就能实现了
追问你别鸡吧装了行嘛?你说的那个是几把译码器,老子的是锁存器,你个傻叉
仿真实例,可以参考一下,试试
datah<<=1;
ds=CY;
这是什么意思啊
左右一位,标志位CY 移入595输出。