![]() |
xzf586 發表于 2018-9-21 17:53 有沒有動態顯示的 |
會飛的大象 發表于 2018-9-19 08:15 有沒有動態顯示的啊 |
zl2168 發表于 2018-9-21 10:58 兄弟,沒有程序。。。。。。怎么參考 |
謝謝大家 |
會飛的大象 發表于 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[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 10:22 最后加上for(n==8)n=0;效果如圖 |
1.png (20.36 KB, 下載次數: 52)
zl2168 發表于 2018-9-21 10:43 DS SHCP接一起,Q7'懸空,用STCP當選通也是可以的,只要以SHCP位時鐘,在DS上發一個8位的數據,用STCP當選通,可以指定哪片595更新,而沒被選通的則保持,這樣靈活性更高,當然缺點是IO口占多點. |
本帖最后由 zl2168 于 2018-9-21 15:30 編輯 給你幾個595應用案例,自己對照琢磨查錯吧! ![]() 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循環燈 ![]() ![]() ![]() 實例56 74LS595串行擴展3位LED數碼管靜態顯示 ![]() ![]() 實例77 74HC595+165擴展8×8鍵盤 ![]() ![]() ![]() 先Proteus仿真一下,確認有效。以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil C和Proteus》清華大學出版社ISBN 978-7-302-41682-1,內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。書中電路和程序設計有詳細說明,程序語句條條有注解。 |
cjm82 發表于 2018-9-20 20:48 錯!不要瞎指導。 |
現在情況是顯示兩個‘5’兩個交錯了一行,stcp好多 資料里都是并在一起的, |
stcp引腳不能串一起,需要單獨分開 |
這個很簡單的。。。。 |
#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++; } } } |
情況不明,程序與電路都有可能出問題。 |