專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實(shí)例 >> 瀏覽文章

基于51單片機(jī)之74HC595實(shí)驗(yàn)例程

作者:未知   來源:CaKen的空間   點(diǎn)擊數(shù):  更新時間:2014年08月17日   【字體:

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

========================================================================================
==============**文件名    : main.c              ==============
==============**作者      : CaKen              ==============
==============**版本號    : V1.0               ==============
==============**時間      : 2014.08.16               ==============
==============**功能描述  : 74HC595實(shí)驗(yàn)測試          ==============
========================================================================================
****************************************************************************************
 
 
#include <reg52.h>      //52芯片管腳定義頭文件
#include <intrins.h>      //內(nèi)部包含延時函數(shù) _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;   //串行數(shù)據(jù)輸入    
sbit  RCK_595   =P2^2;   //輸出鎖存器控制脈沖
 
uchar temp;
 
*****************************************************************************************
函數(shù)名:延時子程序
調(diào)  用:delay();
參  數(shù):
返回值:
結(jié)  果:
備  注:
******************************************************************************************
void delay(int i)    //延時大小與i有關(guān)
{
   int j;
   while(i--)
   for(j=255;j>0;j--);
 
}
 
*****************************************************************************************
函數(shù)名:74HC595初始化
調(diào)  用:HC595_Init();
參  數(shù):
返回值:
結(jié)  果:
備  注:
******************************************************************************************
void HC595_Init(void)   
{
   uchar j;
   for (j=0;j<8;j++)
    {
      temp=temp<<1 ;    //會把最高位元移入CY內(nèi)
      SDATA_595=CY;     //把CY的值給P2^0,也就是準(zhǔn)備好資料(0或1)給595
      SCLK_595=1;          //上升沿發(fā)生移位
       _nop_();
       _nop_();
      SCLK_595=0;
    }
 
 RCK_595=0;
    _nop_();
    _nop_();
    RCK_595=1;       
}
*****************************************************************************************
函數(shù)名:主函數(shù)
調(diào)  用:
參  數(shù):
返回值:
結(jié)  果:
備  注:
******************************************************************************************
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);
       }
    }
}
關(guān)閉窗口