1、74HC595特點: 串進并出,移位,鎖存(相當于把8位輸入送到Q0-Q7,鎖存前Q0-Q7為上一次的值) Q7‘為串行輸出,即可以級聯。 SCK(SH_CP) //串行輸入時鐘, 串行輸入 RCK(ST_CP) //存儲寄存器時鐘,并行輸出2、原理圖如圖所示
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- void delayms(uint xms);
- void hc595(uchar byteData);
- sbit SER = P3^4; //p3.4腳控制串行數據輸入
- sbit SCK = P3^6; //串行輸入時鐘
- sbit RCK = P3^5; //存儲寄存器時鐘
- uchar code table[]=
- {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar num=0;
- void main()
- {
- while(1)
- {
- for(num=0;num<8;num++)
- {
- hc595(table[num]);
- delayms(500);
- }
- } // hc595(0x55); // Q7~Q0=0101 0101 }
- }
- /*功能:發送一個字節的數據給595,再并行輸出*/
- void hc595(char byteData)
- {
- char i=0;
- for(i=0;i<8;i++)
- {
- SER = byteData>>7; //送出7位數據
- byteData= byteData<<1;
- SCK = 0; //上升沿,讓串行輸入時鐘變為高電平,并延時2個時鐘周期
- _nop_();
- _nop_();
- SCK = 1; //變為低電平,為下次準備
- }
-
- //位移寄存器數據準備完畢,轉移到存儲寄存器
- RCK = 0; //上升沿,讓存儲寄存器時鐘變為高電平,并延時2個時鐘周期
- _nop_();
- _nop_();
- RCK = 1;
- }
- void delayms(uint xms ) //延時xms函數
- {
- uint a,b;
- for(a=xms;a>0;a--)
- for(b=110;b>0;b--);
- }
-
復制代碼
所有資料51hei提供下載:
hc595 (8個led燈).zip
(99.69 KB, 下載次數: 118)
2020-3-4 19:01 上傳
點擊文件名下載附件
|