74HC595咋编程控制 那位高手可以指导下74hc595如何控制流水灯,主要软件编程...

\u5982\u4f55\u5bf974hc595\u8fdb\u884cc\u8bed\u8a00\u7f16\u7a0b

#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


sbit Ds=P1^5; //\u4e32\u884c\u6570\u636e\u8f93\u5165
sbit SHcp=P1^6; //\u79fb\u4f4d\u65f6\u949f\u8109\u51b2
sbit STcp=P1^7; //\u8f93\u51fa\u9501\u5b58\u5668\u63a7\u5236\u8109\u51b2
sbit OE=P1^1; //\u6570\u7801\u7ba1\u7247\u9009
sbit CS_1302=P1^4; //ds1302\u7247\u9009

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71}; //\u6570\u7801\u7ba1\u7f16\u7801\uff080\u30011\u30012\u30013\u30014\u30015\u30016\u30017\u30018\u30019\u3001A\u3001B\u3001C\u3001D\u3001E\u3001F\uff09

uchar num;

void delay(uint );
void display();

/*******************************************************
* *
* \u5ef6\u65f6\u51fd\u6570 *
* *
*******************************************************/
void delay(uint dt)
{
uint i;
uchar bt;
for(i=0;i<dt;i++)
for(bt=0;bt<200;bt++);
}

void WR_595(uchar a )
{
uchar b;
OE=0;
for(b=0;b<=7;b++)
{
Ds=a&0x80; //\u53d6\u6700\u9ad8\u4f4d

a<<=1; /*\u5de6\u79fb\u4f4d*/
SHcp=0; /*\u4ea7\u751f\u4e0a\u751f\u6cbf*/

SHcp=1;
delay(100);
//OE=1;
}

}
/*-------------------------------------------------------------------------------
\u6253\u5f00\u9501\u5b58\uff0c\u66f4\u65b074595\u8f93\u51fa\u5b50\u7a0b\u5e8f
---------------------------------------------------------------------------------*/
void Out_595(void)
{
STcp=0;
_nop_();
_nop_();
STcp=1; /*\u4e0a\u5347\u6cbf\u9501\u5b58\u6570\u636e*/

}




void display(void)
{ for(;num<16;num++)
{WR_595(table[num]);//\u663e\u793a\u6570\u7801\u7ba1\u7684\u6570\u5b57
WR_595(0xfe);//\u663e\u793a\u6570\u7801\u7ba1\u5e8f\u53f7
Out_595();

}
}

void main()
{
while(1)
{ //WR_595(0xfe);
//Out_595();
display();
if(num>=16)
num=0;


}
}


\u8fd9\u662f\u70b9\u4eae\u6570\u7801\u7ba1\u7684\u7a0b\u5e8f \u4f60\u53ef\u4ee5\u8bd5\u8bd5\u770b

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

sbit _LCLK = LCLK;
sbit _SCLK = SCLK;
sbit _DATA = DATA;

/*******************************************************************************
函数功能:向一片595发送数据
输入参数:数据的地址
输出参数:无
*******************************************************************************/
void Send595(UCHAR * pdat)
{
unsigned char i,j;
j=0x80;
for (i=0;i<8;i++)
{
if((*pdat)&j) _DATA = 1;
else _DATA = 0;
_SCLK = 0;
_SCLK = 1;
j>>=1;
}
}

/*******************************************************************************
函数功能:串行静态显示函数
输入参数:显存的地址
输出参数:无
*******************************************************************************/
code UCHAR DisplayHex[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,
};
void DisplayBy595(UCHAR * pdat)
{
UCHAR i;

for(i=0;i<4;i++)
{
Send595(&DisplayHex[*(pdat+i)]);
}
_LCLK=0;
_LCLK=1;
}

void HC595_senddata(unsigned char dat)
  {
  unsigned char i;
  for(i=0;i<8;i++) //发送一个八位数据
  {
  if((dat=dat<<i)&0x80==0)MOSIO=0; //第i位为0时,MOSIO发送0;
  else MOSIO=1; //否则发送1;
  SH_CLK=0; //SH_CLK的上升沿,将数据送进移位寄存器;
  NOP();
  NOP();
  SH_CLK=1;
  }
  ST_CLK=0; //ST_CLK的上升沿,将数据由移位寄存器送到存储寄存器
  NOP(); //并输出到Q0—Q7并口
  NOP();
  ST_CLK=1;
  }
其实就是分两步:1、串行输入数据到595的8个i/o口上;2、输出数据。

数字芯片:74HC595移位寄存器,看我三只以引脚控制数码管,简单实用



串入并出 看一下操作时序,很容易控制

  • 姹傚洓鐗74HC595绾ц仈椹卞姩32*16LED鐐归樀,鐢52 鍗曠墖鏈洪┍鍔ㄧ殑c璇█绋嬪簭_鐧惧害...
    绛旓細鍏堣鏄庣櫧姹夊瓧鏄剧ず灏辨槸鐐归樀鏄剧ず銆傛牴鎹數璺竴娆℃渶澶氬彧鑳2涓眽瀛楋紝鍐嶅灏卞彧鑳芥粴鍔ㄦ垨鍒峰睆銆傛墍浠ヤ互2涓眽瀛椾负鍩虹寮濮缂栫▼銆傚皢绗竴琛岀殑鐐归樀(32涓綅)锛岄『搴忓啓鍏595锛岃緭鍑595. 鎺у埗绗竴琛岀殑I/O椹卞姩锛岀偣浜涓琛屻傚欢鏃5ms 灏嗙浜岃鐨勭偣闃(32涓綅)锛岄『搴忓啓鍏595锛屽叧绗竴琛岋紝杈撳嚭595. 鎺у埗绗簩琛岀殑I/O...
  • 鎴戠殑鏉垮瓙涓婄敤鐨勬槸鍏釜74hc595椹卞姩鍏釜鏁扮爜绠,鎴戞兂灏辨樉绀轰袱浣嶆暟鐮佺,鍏 ...
    绛旓細4锛屾妸閭d釜闇瑕佹樉绀虹鍜屽畠绱ф尐鐫鐨勪笉鏄剧ず绠′箣闂寸殑Q7'锛堢9绠¤剼锛変笌Ds锛堢14绠¤剼锛変箣闂寸殑杩炵嚎鏂紑銆5锛屽湪杞欢涓婂鐞嗭紝姣忔缂栫▼鏃堕兘鍏堣緭鍏ュ洓涓鏁扮爜绠¢粦灞忕殑鏁版嵁锛岀劧鍚庡啀杈撳叆浣犳兂杈撳叆鐨勪袱涓暟鎹傝ˉ鍏咃細鎬庝箞涓涓帴涓涓殑闂鍟婏紝鎯冲緱浣犺繖5鍒嗙湡闅俱傜湅鏉ヤ綘杩樻槸涓嶇煡閬撲负浠涔堣鐢74hc595锛屼娇鐢ㄥ畠鍙互澶ч噺...
  • STC89C52鍗曠墖鏈74HC595椹卞姩LED8*8鐐归樀
    绛旓細鎴戝仛杩16*16鐐归樀鐢ㄤ簡4鐗595 绾ц仈 浠ヤ笅鏈変唬鐮 甯屾湜鑳藉府鍔╂ゼ涓 include <reg52.h>#define uchar unsigned char#define uint unsigned int sbit SH_CP=P1^2;sbit DS=P1^0;sbit ST_CP=P1^1;uchar code tab[ ]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x...
  • 74hc595瀛樺偍瀵勫瓨鍣ㄥ紩鑴氭槸鍚﹀彲浠ユ偓绌?浠栫殑鍘熺悊鏄笉鏄鏁版嵁鏆傚仠?_鐧惧害...
    绛旓細74HC595 鐨勫伐浣滃師鐞 74HC595 鐨勫伐浣滃師鐞-缂栫▼-鏄剧ず SCH 74HC595 鏄叿鏈 8 浣嶇Щ浣嶅瘎瀛樺櫒鍜屼竴涓瓨鍌ㄥ櫒锛屼笁鎬佽緭鍑哄姛鑳姐 绉讳綅瀵勫瓨鍣ㄥ拰瀛 鍌ㄥ櫒鏄垎鍒殑鏃堕挓銆 鏁版嵁鍦 11 SHcp锛圫CLK P0.4锛夌殑涓婂崌娌胯緭鍏ワ紝鍦 12 STcp锛坣CS P0.8锛夌殑涓婂崌 P0.4锛 P0.8锛 锛 锛 娌胯繘鍏ョ殑瀛樺偍瀵勫瓨鍣ㄤ腑鍘汇傚鏋滀袱涓...
  • 澶氫釜74hc595 涓茶杈撳叆SER骞惰仈琛屽悧
    绛旓細绾ц仈锛岃緭鍑轰笁涓瓧鑺傦紝涓娆℃洿鏂帮紝鍗冲彲銆傚苟鑱旓紝浣犺繖鏄负浠涔堝憖锛熺畝鍖栦竴涓嬶細void main(void){ char x = 0; //娣讳笂涓涓彉閲 SPCTL=0xDF; //璁剧疆SPI 鎺у埗瀵勫瓨鍣 11011111 AUXR =0xF4; //SPI P2.1 锛孭2.3鍙h緭鍑 11110100 EA=0; //鍏充富涓柇 //鍒濆鍖栫鍙 595_1=0;qingch...
  • ...鍥涗釜74hc595浣滀负16*16鐐归樀鏄剧ず鑺墖,閲囩敤c璇█缂栫▼,
    绛旓細鍏抽敭绋嬪簭濡備笅锛歶int arr[]={ 0x7fff,0xffff,0xffff,0xffff},*p=arr ;void delay (void){ TMOD=0X01;TR0=1;TH0=0X63;TL0=0X18;while(!TF0);TF0=0;TR0=0;} void ST595(void){ ST=0;_nop_();_nop_();ST=1;_nop_();_nop_();ST=0;} void tiaoduan (void){ uchar i;}...
  • 鍦ㄩ泦鎴愮數璺74HC595 涓璖UBF=0x00鏄粈涔堟剰鎬
    绛旓細浠缂栫▼涓婃潵鐪婼UBF搴旇鏄畾涔夌殑涓涓彉閲忔垨鐫鏄‖浠朵腑鐨勭壒娈婂姛鑳藉潡鐨勬爣蹇椾綅銆傚鏋淪UBF鏄畾涔夊彉閲忕殑璇濃淪UBF=0x00"鐨勬剰鎬濇槸缁欏彉閲廠UBF璧嬩簣16杩涘埗鏁0锛0x琛ㄧず鐨勬槸16杩涘埗锛夈傚鏋淪UBF鏄‖浠剁壒娈婂姛鑳藉潡鏍囧織浣嶇殑璇濋渶瑕佷綘瀵瑰簲纭欢鐨勫唴閮ㄨ瀹氭潵鍒ゆ柇銆傚氨鎴戠煡閬撶殑鏉ヨ74HC595鑺墖濂借薄娌″唴閮ㄧ壒娈婂姛鑳藉潡銆傞渶瑕鎺у埗...
  • 74HC595椹卞姩16涓狶ED,姹傜偣浜叾涓竴涓殑鏂规硶
    绛旓細74HC595鏄叿鏈8浣嶇Щ浣嶅瘎瀛樺櫒鍜屼竴涓瓨鍌ㄥ櫒锛屼笁鎬佽緭鍑哄姛鑳姐備絾鍏跺彧鏈8杈撳嚭鑴...鎴戣涓哄彲浠ユ妸姝8鑴氱殑楂樼數骞崇敤鏉ユ樉绀轰綘璇寸殑 "鍘熷厛鏈7涓狶ED鏄寒" 鐒跺悗瑕 "鐐逛寒鍙﹀涓涓狶ED" 鍙互閫氳繃姝8鑴氱殑浣庣數骞虫潵鎺у埗鍙﹀8涓狶ED鏉ュ疄鐜板暒..
  • 鍏充簬74HC595鎺ラ潤鎬佹暟鐮佺鎵╁睍IO鍙g殑闂
    绛旓細S_CLK = 0;S_CLK = 1;} //--杈撳嚭--//R_CLK = 0; //set dataline lowR_CLK = 1; //鐗囬塕_CLK = 0; //set dataline low}瀵筊_CLK涔熷氨鏄緭鍑轰娇鑳借鍙风缃1锛屾槸鏇存柊鏁版嵁鐨勶紝鐢ㄥ悗鏈濂藉皢瀹冪疆涓轰綆鐢靛钩锛岄槻姝㈠共鎵 寤鸿浣犲皢595鑺墖淇℃伅浜嗚В涓涓嬪惂锛屾柟渚夸綘缂栫▼銆傝繕鏈595鎺у埗16*16...
  • 璇烽棶涓涓,鍗曠墖鏈缂栫▼鏄庢牱鐪嬮敊璇,鎴戣繖涓槸鍝噷鏈夐棶棰樺憿,鍗曠墖鏈哄皬鐧...
    绛旓細鍗曠墖鏈缂栫▼閿欒鏄痥eil 涓殑宸ョ▼娌℃湁鍔犺繘C绋嬪簭銆傜湅鏉ワ紝浣犳槸绗竴娆$敤keil 杞欢锛岃涓嬪浘锛屽湪宸﹁竟宸ョ▼绐楀彛鐢荤孩妗嗙殑鏂囦欢澶逛笂鐐瑰彸閿紝閫夊姞杞芥簮绋嬪簭鏂囦欢锛屾妸鍙宠竟绐楀彛閲岀殑杩欎釜 .c 鏂囦欢鍔犺繘鏉ワ紝鍦ㄤ笅杈圭敾榛戞鐨勪綅缃簲璇ユ槸杩欎釜c绋嬪簭鏂囦欢銆傜劧鍚庢墠鑳界紪璇戙傜▼搴忎腑鐢╯bit鐨勪笁琛岀殑74HC595锛屾妸鍓嶉潰鐨74鍘绘帀锛岃岀▼搴忎腑灏...
  • 扩展阅读:74hc595控制8x8点阵用法 ... 74hc595在哪个库 ... 74hc595手册 ... 74hc595应用电路 ... 多个74hc595使用 ... 74hc595上电后的误动作 ... 74hc595上电后的初始电平 ... 74hc595全部高电位 ... 74hc595是如何控制点阵的 ...

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