************************** 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);
}
}
}