|
單片機(jī)通過74HC595控制8個LED循環(huán)點亮,按照D16-D15-D14......D9依次循環(huán),每次亮一個。仿真看著沒問題,實物運行起來會有不止一個LED亮起來,學(xué)藝不精,找了很久沒找到問題根源,還請大佬指點迷津。 單片機(jī)型號STC89C52,晶振12MHz。電路、程序、現(xiàn)象還請看一下附件,先謝過了。
VID_20230530_081946.gif (976.66 KB, 下載次數(shù): 63)
下載附件
點亮效果
2023-5-30 12:43 上傳
3.PNG (252.25 KB, 下載次數(shù): 55)
下載附件
595真值表
2023-5-30 12:46 上傳
捕獲.PNG (93.79 KB, 下載次數(shù): 57)
下載附件
電路連接
2023-5-30 12:46 上傳
單片機(jī)源程序如下:
- #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};
-
- while(1)
- {
- for(i=0;i<8;i++) //循環(huán)點亮單個LED
- {
- HC595_Send(buffer[i]);
- Delay();
- }
- }
- }
- /*驅(qū)動HC595*/
- void HC595_Send(unsigned char byte)
- {
- unsigned char i;
- for(i=0;i<8;i++) //寫入移位寄存器
- {
- SCK=0;
- SER=byte>>7;
- byte<<=1;
- SCK=1;
- }
-
- RCK=0; //鎖存時鐘產(chǎn)生上升沿更新輸出
- _nop_();
- RCK=1;
- }
- /*延時*/
- 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ù)制代碼
|
|