我想用兩塊74HC595級聯輸出電平來控制數碼管的亮滅,上面的程序我想把0xfffe送給兩片級聯的74HC595芯片輸出1111111111111110使得最后一個LED點亮,程序調試不出來,是不是程序有問題,仿真圖在下面,不知道接法有沒有問題,麻煩各位大神幫忙看一下,萬分感謝!
單片機源程序如下:- #include<reg51.h>
- #include<intrins.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- void hc595(uchar byteData);
- sbit SER = P3^4; //p3.4腳控制串行數據輸入
- sbit SCK = P3^6; //串行輸入時鐘
- sbit RCK = P3^5; //存儲寄存器時鐘
- void main()
- {
- while(1)
- {
- hc595(0xfffe);
- }
- }
- /*功能:發送一個字節的數據給595,再并行輸出*/
- void hc595(char byteData)
- {
- char i=0;
- for(i=0;i<16;i++)
- {
- SER = byteData>>15; //送出15位數據
- byteData= byteData<<1;
- SCK = 0; //上升沿,讓串行輸入時鐘變為高電平,并延時2個時鐘周期
- _nop_();
- _nop_();
- SCK = 1; //變為低電平,為下次準備
- }
- //位移寄存器數據準備完畢,轉移到存儲寄存器
- RCK = 0; //上升沿,讓存儲寄存器時鐘變為高電平,并延時2個時鐘周期
- _nop_();
- _nop_();
- RCK = 1;
- }
復制代碼
|