OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3620|回复: 3

关于74hc595使用问题

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-7-11
在线时间
4 小时
发表于 2017-7-11 19:28:46 | 显示全部楼层 |阅读模式
1金钱
有个项目要用到595驱动一些led,实现单独控制其中的任何一个,下边是电路图(只用到了rck,lck和si三根线),和简单写了两句程序,可是一直是跑马灯似的亮啊,很蛋疼

原理图

原理图

主程序

主程序

发送函数

发送函数

最佳答案

查看完整内容[请看2#楼]

# include"reg52.h" /*宏定义,消除CPU差异,方便程序移植*/ sbit RCK=P2^5; //并行输出时钟 ST_CP  sbit DS=P2^4; //数据线 DS   sbit CLK=P2^3; //移位输入时钟 SH_CP // MR=1;OE=0;  #define DS_H DS=1 #define DS_L DS=0 #define CLK_H CLK=1 #define CLK_L CLK=0 #define RCK_H RCK=1 #define RCK_L RCK=0 void writ_shift_register(unsigned int U16) { unsigned char i; for( ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
700
金钱
700
注册时间
2014-8-17
在线时间
164 小时
发表于 2017-7-11 19:28:47 | 显示全部楼层
# include"reg52.h"

/*宏定义,消除CPU差异,方便程序移植*/

sbit RCK=P2^5; //并行输出时钟  ST_CP 
sbit DS=P2^4; //数据线  DS  
sbit CLK=P2^3; //移位输入时钟 SH_CP

// MR=1;OE=0; 

#define DS_H DS=1
#define DS_L DS=0
#define CLK_H CLK=1
#define CLK_L CLK=0
#define RCK_H RCK=1
#define RCK_L RCK=0


void writ_shift_register(unsigned int U16)
{
    unsigned char i;
    for(i=0;i<16;i++)
    {
        
        if((U16&0x8000) == 0x8000){DS_H;} //串行数据输入
        else {DS_L;}
        CLK_L;
        CLK_H; //移位输入时钟,上升沿输入   
        U16<<=1;
    }
    RCK_L; //并行输出时钟   
    RCK_H;   
}
void main()
{
    writ_shift_register(0xfefd);
    while(1);   
}

多年前写的,亲测有效。
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-7-11
在线时间
4 小时
 楼主| 发表于 2017-7-11 20:52:21 | 显示全部楼层
谁给指点一下啊,谢谢
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-7-11
在线时间
4 小时
 楼主| 发表于 2017-7-11 21:11:54 | 显示全部楼层
现在就想控制一个灯亮,怎么弄啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-12-18 16:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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