74HC595电路图.docx
《74HC595电路图.docx》由会员分享,可在线阅读,更多相关《74HC595电路图.docx(7页珍藏版)》请在冰豆网上搜索。
74HC595电路图
74HC595的实际应用与编程(汇编C语言)
74HC595具有一个8位串行输入并行输出的移位寄存器和一个8位输出锁存器。
应用电路图:
74HC595演示电路板:
应用演示程序:
;=====================================================
;74HC595走马灯演示程序
;创作日期:
2006/01/02
;创作者:
gguoqing
;=====================================================
SDATA_595EQUP1.0;串行数据输入
SCLK_595EQUP1.1;移位时钟脉冲
RCK_595EQUP1.2;输出锁存器控制脉冲
;=====================================================
ORG0000H
LJMPMAIN
ORG0030H
;=====================================================
MAIN:
MOVSP,#60H
MOVR0,#0FEH
MAIN1:
CALLOUT_595
CALLDELAY
MOVA,R0
RLA
MOVR0,A
JMPMAIN1
;----------------------------------------------------------------------
;输出锁存器输出数据子程序
;----------------------------------------------------------------------
OUT_595:
LCALLWR_595
CLRRCK_595
NOP
NOP
SETBRCK_595;上升沿将数据送到输出锁存器
NOP
NOP
NOP
CLRRCK_595
RET
;---------------------------------------------------------------------
;移位寄存器接收数据子程序
;---------------------------------------------------------------------
WR_595:
MOVR4,#08H;
MOVA,R0
WR_LOOP:
RLCA
MOVSDATA_595,C
SETBSCLK_595;上升沿发生移位
NOP
NOP
CLRSCLK_595
DJNZR4,WR_LOOP
RET
;--------------------------------------------------------------------
;延时子程序
;--------------------------------------------------------------------
DELAY:
MOVR5,#03H
DEL0:
MOVR6,#0FFH
DEL1:
MOVR7,#0FFH
DJNZR7,$
DJNZR6,DEL1
DJNZR5,DEL0
RET
;=====================================================
END
电路图见楼上
/******************************************************************
/**
/*74HC595走马灯演示程序*
/*作者:
gguoqing*
/*时间:
2006/02/26*
/**
/*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
*
/**
/******************************************************************/
#include<;reg51.h>//51芯片管脚定义头文件
#include<;intrins.h>//内部包含延时函数_nop_();
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDAT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
sbitSDATA_595=P1^0;//串行数据输入
sbitSCLK_595=P1^1;//移位时钟脉冲
sbitRCK_595=P1^2;//输出锁存器控制脉冲
uchartemp;
/********************************************************/
/**/
/*延时子程序*/
/**/
/********************************************************/
voiddelay(intms)
{
intk;
while(ms--)
{
for(k=0;k<;250;k++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/********************************************************/
/**/
/*将显示数据送入74HC595内部移位寄存器*/
/**/
/********************************************************/
voidWR_595(void)
{
ucharj;
for(j=0;j<;8;j++)
{
temp=temp<;<;1;
SDATA_595=CY;
SCLK_595=1;//上升沿发生移位
_nop_();
_nop_();
SCLK_595=0;
}
}
/********************************************************/
/**/
/*将移位寄存器内的数据锁存到输出寄存器并显示*/
/**/
/********************************************************/
voidOUT_595(void)
{
RCK_595=0;
_nop_();
_nop_();
RCK_595=1;//上升沿将数据送到输出锁存器
_nop_();
_nop_();
_nop_();
RCK_595=0;
}
/********************************************************
**
*主程序*
**
*********************************************************/
main()
{
SCLK_595=0;
RCK_595=1;
while
(1)
{
uchari;
for(i=0;i<;8;i++)
{
temp=DAT[i];//取显示数据
WR_595();
OUT_595();
delay(100);
}
}
}