找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机控制74HC595

查看数: 3984 | 评论数: 3 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-6-25 13:32

正文摘要:

单片机控制两个74HC595驱动16个LED灯,我要从第一个灯开始亮,到全部一起亮,然后所有灯常亮,不循环,程序要怎么写?

回复

ID:215092 发表于 2017-6-27 13:01
受教了
ID:111634 发表于 2017-6-27 11:26
本帖最后由 zl2168 于 2017-6-27 19:32 编辑

实例44  74HC595串入并出控制8/16循环灯
实例44 74HC595串行输出控制8-16循环灯.rar (72.58 KB, 下载次数: 18)

Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。


ID:164602 发表于 2017-6-26 09:35
我专门为你做的程序。
/*
AT89C52、共阳LED
*/
#include<reg51.h>
#include<INTRINS.H>

sbit SER=P2^0;//14脚
sbit RCLK=P2^2;//12脚
sbit SRCLK=P2^1;//11脚

void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(c;c>0;c--)
    {
                for(b=44;b>0;b--)
                {
                        for (a=112;a>0;a--)
                        {
                        }
                }
        }
}

void HC595 (unsigned char dat)
{
        unsigned char i;
        SRCLK=0;
        RCLK=0;
        for (i=0;i<8;i++)
        {
                SER=dat>>7;
                dat<<=1;
                SRCLK=1;
                _nop_();
                _nop_();
                SRCLK=0;
        }
        RCLK=1;
        _nop_();
        _nop_();
        RCLK=0;
}

void main(void)//主函数
{
        unsigned char i=0x01,j;
        HC595(0x00);//初始化595
        HC595(0x00);
        for (j=0;j<8;j++)
        {
                HC595(0);
                HC595(i);
                i<<=1;
                Delay10ms(50);
        }
        i=0x01;
        for (j=0;j<8;j++)
        {
                HC595(i);
                HC595(0xff);
                i<<=1;
                Delay10ms(50);
        }
        while (1)//主循环
        {
        }
}

评分

参与人数 1黑币 +40 收起 理由
admin + 40 共享资料的黑币奖励!

查看全部评分

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表