|
程序沒有什么明顯問題,仿真成功不等于實(shí)物就能成功。把595驅(qū)動(dòng)代碼調(diào)整一下試試。
- #include<reg52.h>
- #include<intrins.h>
- sbit RCK=P3^5; // Pin12 輸出鎖存控制脈沖
- sbit SER=P3^4; // Pin14 串行數(shù)據(jù)輸入
- sbit SCK=P3^6; // Pin11 移位脈沖
- void HC595_Send(unsigned char byte);
- void Delay();
- void main()
- {
- unsigned char i;
- unsigned char buffer[8]={0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE};
- SCK=0;
- RCK=0;
- while(1)
- {
- for(i=0;i<8;i++) //循環(huán)點(diǎn)亮單個(gè)LED
- {
- HC595_Send(buffer[i]);
- Delay();
- }
- }
- }
- /*驅(qū)動(dòng)HC595*/
- void HC595_Send(unsigned char byte)
- {
- unsigned char i;
- for(i=0;i<8;i++)//寫入移位寄存器
- {
- SER=byte>>7;
- SCK=1;
- _nop_();
- SCK=0;
- byte<<=1;
- }
- RCK=1; //鎖存時(shí)鐘產(chǎn)生上升沿更新輸出
- _nop_();
- RCK=0;
- }
- /*延時(shí)*/
- void Delay() //@12.000MHz
- {
- unsigned char i, j, k;
- _nop_();
- i = 8;
- j = 154;
- k = 122;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
復(fù)制代碼 |
|