51控制74HC595

关于74HC595资料详细资料见百度百科:https://baike.baidu.com/item/74HC595/9886491?fr=aladdin

我主要是介绍在普中HC6800EM3 V2.0中的HC595的用法。

(其中13脚接地,12脚-存储寄存器接P3^5,11脚-位移寄存器接P3^6,10脚接VCC,14脚-串行输入接P3^4)

数据是从14脚一位一位输入的,当输入一个字节之后应该控制11脚出现一个上升沿(有一个高电平,一个低电平,两者之间间隔一定的时间),这样输入的位就会往后移一位

(形象的例子可见链接https://blog.csdn.net/jbh18401/article/details/75334562)

,当输入够了两个字节的时候,控制12脚输入一个上升沿(方法同上),这时的数据就放在了输出端。

从网上找到的比较方便理解的51控制程序:

#include<reg51.h>
#include<intrins.h>


typedef unsigned char uchar;
typedef unsigned int uint;


/**********函数声明********************/
void SendTo595(uchar byteData);
/***********************************/


sbit SER = P3^4;    //p3.4脚控制串行数据输入
sbit SCK = P3^6;    //串行输入时钟
sbit RCK = P3^5;    //存储寄存器时钟




void main()
{


       SendTo595(85);  //85的二进制:0101 0101
       
       while(1);




}


//功能:发送一个字节的数据给595,再并行输出
void SendTo595(uchar byteData)
{
   char i=0;
    for(;i<8;i++)
   {
           SER = byteData>>7;         //大家自己考量这2句
        byteData= byteData<<1;      


          SCK = 1;          //上升沿,让串行输入时钟变为高电平,并延时2个时钟周期
        _nop_();
        _nop_();


        SCK = 0;          //变为低电平,为下次准备
   }  
   
   /*位移寄存器数据准备完毕,转移到存储寄存器*/
   RCK = 1;         //上升沿,让存储寄存器时钟变为高电平,并延时2个时钟周期
   _nop_();
   _nop_();
   RCK = 0; 


}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值