標題: 關于74hc595多片級聯的問題,請大神指教 [打印本頁]
作者: 會飛的大象 時間: 2018-9-18 17:31
標題: 關于74hc595多片級聯的問題,請大神指教
請大神指教怎么會出現這種問題
-
QQ截圖20180918173109.png
(3.79 KB, 下載次數: 91)
下載附件
2018-9-18 17:31 上傳
作者: xzf586 時間: 2018-9-18 22:29
幾個口顯示內容是一樣的,應該將程序與電路圖放上來,這樣大家也好建議啊!
作者: zl2168 時間: 2018-9-19 07:37
情況不明,程序與電路都有可能出問題。
作者: 會飛的大象 時間: 2018-9-19 08:14
用proteus的仿真圖,用的是留個595級聯,1個74hc138選擇行
-
QQ截圖20180919081119.png
(45.59 KB, 下載次數: 92)
下載附件
2018-9-19 08:12 上傳
作者: 會飛的大象 時間: 2018-9-19 08:15
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit SH=P2^0;
sbit DS=P2^1;
sbit ST=P2^2;
uchar tab[6][8]={{0x00,0x18,0x24,0x24,0x24,0x24,0x18,0x00},
{0x00,0x10,0x18,0x10,0x10,0x10,0x38,0x00},
{0x00,0x18,0x24,0x20,0x10,0x08,0x3C,0x00},
{0x00,0x18,0x24,0x20,0x10,0x20,0x24,0x18},
{0x00,0x10,0x18,0x14,0x3C,0x10,0x10,0x00},
{0x00,0x38,0x08,0x18,0x20,0x20,0x18,0x00}};
void delay(uchar i)
{
uchar j;
for(j=100;j>0;j--)
{
for(;i>0;i--)
;
}
}
void main()
{
uchar n,i,j,k,t;
//SH=0;
while(1)
{
// n=0x00;
n=0;
for (i=0;i<8;i++)
{
ST=0;
P0=i;
// for(j=0;j<8;j++)
{
for(k=0;k<5;k++)
{
t=tab[5][n];
for(j=0;j<8;j++)
{
SH=0;
_nop_();
if(t&0x80)
DS=1;
else
DS=0;
SH=1;
t<<=1;
_nop_();
}
//n++ ;
}
}
ST=1;
delay(10);
n++;
}
}
}
作者: phang 時間: 2018-9-19 09:15
嗯,得看看原理圖和代碼才好找問題,樓主再仔細調調。
作者: angmall 時間: 2018-9-19 18:14
- for(k=0;k<5;k++)
- {
- t=tab[5][n];
- for(j=0;j<8;j++)
- {
復制代碼
應該是這樣
- for(k=0;k<5;k++)
- {
- t=tab[k][n]; // 改成這樣
- for(j=0;j<8;j++)
- {
復制代碼
作者: HEIZI555 時間: 2018-9-20 17:18
這個很簡單的。。。。
作者: cjm82 時間: 2018-9-20 20:48
stcp引腳不能串一起,需要單獨分開
作者: 會飛的大象 時間: 2018-9-21 10:22
現在情況是顯示兩個‘5’兩個交錯了一行,stcp好多 資料里都是并在一起的,
作者: zl2168 時間: 2018-9-21 10:43
錯!不要瞎指導。
作者: zl2168 時間: 2018-9-21 10:58
本帖最后由 zl2168 于 2018-9-21 15:30 編輯
給你幾個595應用案例,自己對照琢磨查錯吧!
74HC595功能表.PNG (34.99 KB, 下載次數: 52)
下載附件
2018-9-21 10:49 上傳
74LS595為串行移位寄存器,功能表如表3-21所示,引腳圖如圖3-46所示。DS為串行輸入端,QS為串行輸出端,Q0~Q7為并行輸出端,CLK為移位脈沖輸入端,CLR為并行輸出清0端。
74HC595與74HC164功能相仿,區別是595串入并出分二步操作,第一步在CLK信號有效條件下移入595片內緩沖寄存器,第二步由595 RCK端(#12)輸入一個觸發正脈沖,片內緩沖寄存器中的數據進入輸出寄存器。而74HC164是直接串入輸出寄存器,串入中間過程有可能在并行輸出端產生誤動作。
另外,74HC595有禁止輸出(高阻態)控制端OE,OE=0時,輸出熄滅。若用一個引腳控制它,可以方便地產生閃爍效果。
實例44 74HC595串入并出控制8/16循環燈
595-1.jpg (86.38 KB, 下載次數: 54)
下載附件
2018-9-21 10:51 上傳
595-2.jpg (113.81 KB, 下載次數: 65)
下載附件
2018-9-21 10:51 上傳
實例
56 74LS595串行擴展3
位LED數碼管靜態顯示
實例56 74LS595串行擴展3位LED靜態顯示.jpg (134.34 KB, 下載次數: 52)
下載附件
2018-9-21 10:54 上傳
實例
77 74HC595+165
擴展8×8鍵盤
74LS595 165擴展8×8鍵盤電路.jpg (163.14 KB, 下載次數: 65)
下載附件
2018-9-21 10:56 上傳
595 165.jpg (159.38 KB, 下載次數: 57)
下載附件
2018-9-21 10:57 上傳
先Proteus仿真一下,確認有效。以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil C和Proteus》清華大學出版社ISBN 978-7-302-41682-1,內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。書中電路和程序設計有詳細說明,程序語句條條有注解。
作者: cjm82 時間: 2018-9-21 13:00
DS SHCP接一起,Q7'懸空,用STCP當選通也是可以的,只要以SHCP位時鐘,在DS上發一個8位的數據,用STCP當選通,可以指定哪片595更新,而沒被選通的則保持,這樣靈活性更高,當然缺點是IO口占多點.
作者: xzf586 時間: 2018-9-21 17:49
最后加上for(n==8)n=0;效果如圖
-
1.png
(20.36 KB, 下載次數: 52)
下載附件
2018-9-21 17:48 上傳
作者: xzf586 時間: 2018-9-21 17:53
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit SH=P2^0;
sbit DS=P2^1;
sbit ST=P2^2;
uchar tab[6][8]={
{0x00,0x18,0x24,0x24,0x24,0x24,0x18,0x00},
{0x00,0x10,0x18,0x10,0x10,0x10,0x38,0x00},
{0x00,0x18,0x24,0x20,0x10,0x08,0x3C,0x00},
{0x00,0x18,0x24,0x20,0x10,0x20,0x24,0x18},
{0x00,0x10,0x18,0x14,0x3C,0x10,0x10,0x00},
{0x00,0x38,0x08,0x18,0x20,0x20,0x18,0x00}
};
void delay(uchar i)
{
uchar j;
for(j=100;j>0;j--)
{
for(;i>0;i--)
;
}
}
void main()
{
uchar n,i,j,k,t;
//SH=0;
while(1)
{
// n=0x00;
n=0;
for (i=0;i<8;i++)
{
ST=0;
P0=i;
// for(j=0;j<8;j++)
{
for(k=0;k<5;k++)
{
t=tab[k][n];
for(j=0;j<8;j++)
{
SH=0;
_nop_();
if(t&0x80)
DS=1;
else
DS=0;
SH=1;
t<<=1;
_nop_();
}
//n++ ;
}
}
ST=1;
delay(10);
n++;
if(n==8)
n=0;
}
}
}
-
1.png
(5.49 KB, 下載次數: 51)
下載附件
2018-9-21 17:51 上傳
作者: 會飛的大象 時間: 2018-9-28 08:16
謝謝大家
作者: qing龍龍 時間: 2019-6-11 17:36
兄弟,沒有程序。。。。。。怎么參考
作者: 154642 時間: 2020-4-3 09:42
有沒有動態顯示的啊
作者: 154642 時間: 2020-4-3 09:43
有沒有動態顯示的
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |