单片机的高手快进啊 74HC595,关于流水灯的设计。。。 那位高手可以指导下74hc595如何控制流水灯,主要软件编程...

\u600e\u4e48\u7528\u5355\u7247\u673a\u63a7\u523674hc595\uff0c\u505a\u6210\u6d41\u6c34\u706f\uff1f

\u7ed9\u4f60\u4e00\u6bb5 \u6211\u4ee5\u524d\u7f16\u5199\u7684\u7a0b\u5e8f\uff0c\u5e0c\u671b\u5bf9\u4f60\u80fd\u6709\u5e2e\u52a9

//74HC595 \u8d70\u9a6c\u706f\u6f14\u793a\u7a0b\u5e8f

#include
#include

#define uchar unsigned char
#define uint unsigned int

uchar code dat[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;

sbit DAT=P2^0 ; //\u4e32\u884c\u6570\u636e\u8f93\u5165
sbit CLK =P2^1 ; //\u79fb\u4f4d\u65f6\u949f\u8109\u51b2
sbit RCK =P2^2 ; //\u8f93\u51fa\u9501\u5b58\u5668\u63a7\u5236\u8109\u51b2

uchar temp ;

void delay(int ms)
{
while(ms--);

}

/********************************************************/
/*\u5c06\u663e\u793a\u6570\u636e\u9001\u516574HC595\u5185\u90e8\u79fb\u4f4d\u5bc4\u5b58\u5668 */
/********************************************************/

void Write(void)
{
uchar j ;
for (j=0 ;j< ;8 ;j++)
{
temp << = 1 ;
DAT=CY ;
CLK=1 ; //\u4e0a\u5347\u6cbf\u53d1\u751f\u79fb\u4f4d
_nop_() ;
_nop_() ;
CLK=0 ;
}
}

/********************************************************/
/********************************************************/

void OUT_DAT(void)
{
RCK=0 ;
_nop_() ;
_nop_() ;
RCK=1 ; //\u4e0a\u5347\u6cbf\u5c06\u6570\u636e\u9001\u5230\u8f93\u51fa\u9501\u5b58\u5668
_nop_() ;
_nop_() ;
_nop_() ;
RCK=0 ;
}

/********************************************************
* \u4e3b\u7a0b\u5e8f *
*********************************************************/

main()
{
uchar i ;
CLK=0 ;
RCK=1 ;
while(1)
{
for (i=0 ; i< ;8 ; i++)
{
temp=dat[ i ] ; //\u53d6\u663e\u793a\u6570\u636e
Write() ;
OUT_DAT() ;
delay(100) ;
}
}


\u7ed9\u4f60\u6bb5\u7a0b\u5e8f\u53c2\u8003
\u5e0c\u671b\u5bf9\u4f60\u80fd\u5e2e\u52a9

74HC595 \u8d70\u9a6c\u706f\u6f14\u793a\u7a0b\u5e8f
C\u8bed\u8a00\uff1a
#include //51\u82af\u7247\u7ba1\u811a\u5b9a\u4e49\u5934\u6587\u4ef6
#include //\u5185\u90e8\u5305\u542b\u5ef6\u65f6\u51fd\u6570 _nop_() ;

#define uchar unsigned char
#define uint unsigned int

uchar code DAT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;

sbit SDATA_595=P1^0 ; //\u4e32\u884c\u6570\u636e\u8f93\u5165
sbit SCLK_595 =P1^1 ; //\u79fb\u4f4d\u65f6\u949f\u8109\u51b2
sbit RCK_595 =P1^2 ; //\u8f93\u51fa\u9501\u5b58\u5668\u63a7\u5236\u8109\u51b2

uchar temp ;

/********************************************************/
/* */
/* \u5ef6\u65f6\u5b50\u7a0b\u5e8f */
/* */
/********************************************************/

void delay(int ms)
{
int k ;
while(ms--)
{
for(k=0 ; k< ;250 ; k++)
{
_nop_() ;
_nop_() ;
_nop_() ;
_nop_() ;
}
}
}

/********************************************************/
/* */
/*\u5c06\u663e\u793a\u6570\u636e\u9001\u516574HC595\u5185\u90e8\u79fb\u4f4d\u5bc4\u5b58\u5668 */
/* */
/********************************************************/

void WR_595(void)
{
uchar j ;
for (j=0 ;j< ;8 ;j++)
{
temp=temp< ;< ;1 ;
SDATA_595=CY ;
SCLK_595=1 ; //\u4e0a\u5347\u6cbf\u53d1\u751f\u79fb\u4f4d
_nop_() ;
_nop_() ;
SCLK_595=0 ;
}
}

/********************************************************/
/* */
/*\u5c06\u79fb\u4f4d\u5bc4\u5b58\u5668\u5185\u7684\u6570\u636e\u9501\u5b58\u5230\u8f93\u51fa\u5bc4\u5b58\u5668\u5e76\u663e\u793a */
/* */
/********************************************************/

void OUT_595(void)
{
RCK_595=0 ;
_nop_() ;
_nop_() ;
RCK_595=1 ; //\u4e0a\u5347\u6cbf\u5c06\u6570\u636e\u9001\u5230\u8f93\u51fa\u9501\u5b58\u5668
_nop_() ;
_nop_() ;
_nop_() ;
RCK_595=0 ;
}

/********************************************************
* *
* \u4e3b\u7a0b\u5e8f *
* *
*********************************************************/

main()
{
SCLK_595=0 ;
RCK_595=1 ;

while(1)
{
uchar i ;
for (i=0 ; i< ;8 ; i++)
{
temp=DAT[ i ] ; //\u53d6\u663e\u793a\u6570\u636e
WR_595() ;
OUT_595() ;
delay(100) ;
}
}
}


\u6c47\u7f16\u8bed\u8a00\uff1a
SDATA_595 EQU P1.0 ;\u4e32\u884c\u6570\u636e\u8f93\u5165
SCLK_595 EQU P1.1 ;\u79fb\u4f4d\u65f6\u949f\u8109\u51b2
RCK_595 EQU P1.2 ;\u8f93\u51fa\u9501\u5b58\u5668\u63a7\u5236\u8109\u51b2

ORG 0000H
LJMP MAIN
ORG 0030H

MAIN:
MOV SP,#60H
MOV R0,#0FEH
MAIN1:
CALL OUT_595
CALL DELAY
MOV A,R0
RL A
MOV R0,A
JMP MAIN1

;----------------------------------------------------------------------
;\u8f93\u51fa\u9501\u5b58\u5668\u8f93\u51fa\u6570\u636e\u5b50\u7a0b\u5e8f
;----------------------------------------------------------------------
OUT_595:
LCALL WR_595
CLR RCK_595
NOP
NOP
SETB RCK_595 ;\u4e0a\u5347\u6cbf\u5c06\u6570\u636e\u9001\u5230\u8f93\u51fa\u9501\u5b58\u5668
NOP
NOP
NOP
CLR RCK_595
RET

;---------------------------------------------------------------------
;\u79fb\u4f4d\u5bc4\u5b58\u5668\u63a5\u6536\u6570\u636e\u5b50\u7a0b\u5e8f
;---------------------------------------------------------------------
WR_595:
MOV R4,#08H ;
MOV A,R0
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;\u4e0a\u5347\u6cbf\u53d1\u751f\u79fb\u4f4d
NOP
NOP
CLR SCLK_595
DJNZ R4,WR_LOOP
RET

;--------------------------------------------------------------------
;\u5ef6\u65f6\u5b50\u7a0b\u5e8f
;--------------------------------------------------------------------
DELAY:
MOV R5,#03H
DEL0:
MOV R6,#0FFH
DEL1:
MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,DEL1
DJNZ R5,DEL0
RET
END

最近也在玩74HC595这款芯片,以下程序验证通过。请参考!

//74HC595练习程序
//串入并出实现流水灯效果
//2009.12.28
#include"reg52.h"
sbit date1=P1^0; //串行数据输入端

sbit shcp=P1^1; //数据在上升沿进入移位寄存器

sbit clock=P1^2; //上升沿时将数据输出到并行端口

unsigned char tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void delay(unsigned int delay)
{
unsigned char i;
for(;delay>0;delay--)
for(i=0;i<125;i++);
}

void send_data(unsigned char date) //发送数据
{
unsigned char i;
for(i=0;i<8;i++) //把每一位数据移入寄存器
{
shcp=0;
date=date<<1;
date1=CY; //CY是移位标志,头文件中有定义的 当date1移位后CY中装的是date1变量的最高位 状态码为 0或1
shcp=1;
}

for(i=0;i<8;i++) //把8位数据同时送出
{
clock=0;
date=date;
clock=1;
}
}

void main()
{
unsigned char k;
for(k=0;k<8;k++)
{
send_data(tab[k]);
delay(500);
}
}

扩展阅读:屏幕上出现physx-cpu ... hg c1400使用方法 ... 电磁兼容rs 103干扰 ... msp430单片机 ... 160kw电机铭牌参数 ... dram cpu灯来回跳 ... 左上角physx-cpu怎么消除 ... cpu降频 开机 30秒 ... 电脑视频播放 快进10倍 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网