专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

基于51单片机之74HC595实验例程

作者:未知   来源:CaKen的空间   点击数:  更新时间:2014年08月17日   【字体:

 **************************  Copyright(C)CaKe  *****************************************

========================================================================================
==============**文件名    : main.c              ==============
==============**作者      : CaKen              ==============
==============**版本号    : V1.0               ==============
==============**时间      : 2014.08.16               ==============
==============**功能描述  : 74HC595实验测试          ==============
========================================================================================
****************************************************************************************
 
 
#include <reg52.h>      //52芯片管脚定义头文件
#include <intrins.h>      //内部包含延时函数 _nop_();
 
#define uchar unsigned char
#define uint  unsigned int
 
//uchar code DAT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};  //阳
  uchar code DAT[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};  //阴
 
sbit  SCLK_595  =P2^0;   //移位时钟脉冲      
sbit  SDATA_595 =P2^1;   //串行数据输入    
sbit  RCK_595   =P2^2;   //输出锁存器控制脉冲
 
uchar temp;
 
*****************************************************************************************
函数名:延时子程序
调  用:delay();
参  数:
返回值:
结  果:
备  注:
******************************************************************************************
void delay(int i)    //延时大小与i有关
{
   int j;
   while(i--)
   for(j=255;j>0;j--);
 
}
 
*****************************************************************************************
函数名:74HC595初始化
调  用:HC595_Init();
参  数:
返回值:
结  果:
备  注:
******************************************************************************************
void HC595_Init(void)   
{
   uchar j;
   for (j=0;j<8;j++)
    {
      temp=temp<<1 ;    //会把最高位元移入CY内
      SDATA_595=CY;     //把CY的值给P2^0,也就是准备好资料(0或1)给595
      SCLK_595=1;          //上升沿发生移位
       _nop_();
       _nop_();
      SCLK_595=0;
    }
 
 RCK_595=0;
    _nop_();
    _nop_();
    RCK_595=1;       
}
*****************************************************************************************
函数名:主函数
调  用:
参  数:
返回值:
结  果:
备  注:
******************************************************************************************
void main()
{
    SCLK_595=0;
    RCK_595 =1;
 
   while(1)           
    {
      uchar i;
      for (i=0; i<8; i++)
       {
        temp=DAT[i];             
        HC595_Init();
        delay(100);
       }
    }
}
关闭窗口