熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2018-12-15 00:01
正文摘要:誰(shuí)能告訴我,這個(gè)LED如何點(diǎn)亮? 有了74HC595控制我就不會(huì)了,麻煩講一下,這個(gè)的工作原理。 |
HC6800-ES-V2.0 發(fā)表于 2018-12-15 00:01 你有這個(gè)板子的電子鐘(C語(yǔ)言)的程序沒(méi)有?只要求能調(diào)節(jié)時(shí)間就可以 |
file:///C:/Users/Administrator/Desktop/595-2-seg.gif |
595-2-seg.gif (63.98 KB, 下載次數(shù): 93)
48.24 KB, 下載次數(shù): 17
74hc595是串入并出的芯片,利用51單片機(jī)模擬串行接口使用,簡(jiǎn)單使用如下 sbit data_595 = P3^4; sbit clk_595 = P3^6; sbit LATCH_595 = P3^5; void wr_bits(uchar num) { uchar i; for(i=0;i<8;i++) { if(num&0x80) //′ó¸ßλËí data_595 =1; else data_595 =0; clk_595 =0; _nop_(); clk_595 =1; //½«êy¾YD′èë595 num<<=1; //Ïò×óòƶˉò»Î» } LATCH_595=0; _nop_(); LATCH_595=1;//éÏéyÑØËø′æ } void main() { while(1) wr_bits(0xfe); } |
jefelee 發(fā)表于 2018-12-15 08:22 能給我寫(xiě)段程序看看嗎?就點(diǎn)亮兩個(gè)燈就可以 |
看一下這段程序 void led(u16 dat) { u8 a; SRCLK=0; RCLK=0; for(a=0;a<8;a++) { SER=dat>>7; dat<<=1; SRCLK=1; _nop_(); _nop_(); SRCLK=0; } RCLK=1; _nop_(); _nop_(); RCLK=0; } |
1. 打開(kāi)百度 2. 搜對(duì)應(yīng)的數(shù)據(jù)手冊(cè) 3. 仔細(xì)看數(shù)據(jù)手冊(cè) 4. 可以開(kāi)始畫(huà)流程圖了 5. 寫(xiě)程序 6. 測(cè)試 適用所有外圍電路 |
單片機(jī)控制74hc595輸出進(jìn)而控制發(fā)光二極管點(diǎn)亮:74hc595是一個(gè)反極性驅(qū)動(dòng),也就是說(shuō)如果用的是共陽(yáng)數(shù)碼管,段選端本應(yīng)低電平點(diǎn)亮,如果在單片機(jī)的p口送個(gè)高電平,但是經(jīng)過(guò)74hc595后你的高電平就變成低電平了,所以要在單片機(jī)那面往595送低電平,共陽(yáng)相反,然后在將位選選通,如果想固定顯示某個(gè)數(shù)或者循環(huán)顯示某幾個(gè)數(shù)的話,就直接只一個(gè)表這個(gè)表就是八字碼,然后通過(guò)查表就可以了,如果不是的話就能麻煩點(diǎn),需要將待顯示的數(shù)據(jù)轉(zhuǎn)成十進(jìn)制然后經(jīng)過(guò)處理后再查表送顯示。 |
參與人數(shù) 1 | 黑幣 +50 | 收起 理由 |
---|---|---|
![]() | + 50 | 回帖助人的獎(jiǎng)勵(lì)! |
哈哈哈,你發(fā)的問(wèn)題,正是我有的板子,程序也有啊。 #include<reg51.h> #include<intrins.h> sbit SRCLK=P3^6; sbit RCLK=P3^5; sbit SER=P3^4; void Hc595SendByte(unsigned char dat); void Delay10ms(unsigned int ) ; void main() { unsigned char ledNum; ledNum=0xfe; while(1) { Hc595SendByte(ledNum); ledNum=_cror_(ledNum,1); Delay10ms(50); } } /******************************************************************************* * 函數(shù)名 : Hc595SendByte(unsigned char dat) * 函數(shù)功能 : 想74H595發(fā)送一個(gè)字節(jié)的數(shù)據(jù) * 輸入 : 無(wú) * 輸出 : 無(wú) *******************************************************************************/ void Hc595SendByte(unsigned char dat) { unsigned char a; SRCLK=0; RCLK=0; for(a=0;a<8;a++) { SER=dat>>7; dat<<=1; SRCLK=1; _nop_(); _nop_(); SRCLK=0; } RCLK=1; _nop_(); _nop_(); RCLK=0; } /******************************************************************************* * 函數(shù)名 : Delay10ms * 函數(shù)功能 : 延時(shí)函數(shù),延時(shí)10ms * 輸入 : c * 輸出 : 無(wú) *******************************************************************************/ void Delay10ms(unsigned int c) //誤差 0us { unsigned char a,b; for(;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); } 注意:需要將JOE跳線帽J13接GND,595模塊的JP595跳線帽J14接上,595的LED才會(huì)亮!! |
Powered by 單片機(jī)教程網(wǎng)