• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Mixly開(kāi)源項(xiàng)目設(shè)計(jì)26: 移位寄存器(一)——將LED點(diǎn)亮

      2018-09-28 07:24:30隋杰峰
      中國(guó)信息技術(shù)教育 2018年17期
      關(guān)鍵詞:凹口管腳二進(jìn)制

      隋杰峰

      流水燈項(xiàng)目是我們?cè)陂_(kāi)源硬件學(xué)習(xí)項(xiàng)目中很常見(jiàn)的一個(gè)項(xiàng)目。實(shí)驗(yàn)中,我們常用一個(gè)管腳控制一個(gè)LED,這樣我們做一個(gè)8位流水燈,就需要占用8個(gè)管腳,而常用的Arduino UNO R3開(kāi)發(fā)板只有20個(gè)管腳,如果要做一個(gè)30位流水燈,如果依然讓一個(gè)管腳控制一個(gè)LED,那么UNO上的管腳顯然是不夠的,這時(shí),我們應(yīng)該怎么辦呢?換成管腳更多的Mega2560嗎?同樣,如果我們要做64位流水燈,Mega2560的管腳也是不夠的,所以,我們換個(gè)角度來(lái)想,不如想辦法用少量的管腳控制多個(gè)LED,74HC595移位寄存器這個(gè)小小的芯片就能夠幫我們實(shí)現(xiàn)這種想法。

      74HC595是一塊8位串行輸入、并行輸出(也可以串行輸出)的芯片,我們使用它,只需要UNO的3個(gè)管腳即可控制8個(gè)獨(dú)立的LED(如圖1)。

      網(wǎng)絡(luò)上介紹74HC595的文章很多,但采用的全是代碼編程,讓很多不懂代碼的初學(xué)者望而生畏,實(shí)際上,在圖形化編程軟件Mixly中有一個(gè)模塊是與它相關(guān)的。因此,本文中將用Mixly輕松玩轉(zhuǎn)74HC595,力圖讓初學(xué)者也能秒懂。

      如圖2所示,74HC595共有16只腳,下面我們就來(lái)認(rèn)識(shí)一下它的各個(gè)引腳。

      在74HC595芯片上有個(gè)小凹口,只要與圖上引腳的小凹口對(duì)應(yīng),即可知道它的各個(gè)引腳。

      VCC和GND自不必說(shuō),分別接UNO的5V和GND即可;

      Q0~Q7是并行輸出,本文中我們接8個(gè)LED;

      DS、SHCP(下面簡(jiǎn)稱SH)、STCP(下面簡(jiǎn)稱ST)是輸入端;

      DS是串行數(shù)據(jù)輸入端(一般Arduino的代碼里會(huì)定義一下引腳,74HC595的案例中,dataPin指的是接這個(gè)腳);

      SH是串行時(shí)鐘輸入端(clockPin指的是接這個(gè)腳);

      ST是鎖存端(latchPin指的是接這個(gè)腳);

      OE是輸出使能引腳,低電平時(shí)輸出,高電平時(shí)不輸出,所以,直接接在GND上使其一直保持低電平輸出數(shù)據(jù);

      MR是用來(lái)重置內(nèi)部寄存器的引腳,低電平時(shí)重置內(nèi)部寄存器,所以,直接連接在VCC上一直保持高電平;

      Q7S是串行輸出(可以接下一個(gè)74HC595的DS,數(shù)據(jù)可作為串行輸入,這就是74HC595的級(jí)聯(lián),也就是說(shuō),此時(shí)3個(gè)輸入控制16個(gè)輸出),此引腳不用可以空置。

      需要的元件(如下頁(yè)表所示)

      電路連接

      電路連接如下頁(yè)圖3所示,8個(gè)LED的負(fù)極(短腳)分別通過(guò)一個(gè)220Ω電阻與GND連接;74HC595有小凹口的一面向左,VCC接5V,VCC與GND之間接一個(gè)104電容,GND接GND;DS接管腳2,ST接管腳3,SH接管腳4,OE接GND,MR接VCC,Q7S空置。

      程序設(shè)計(jì)

      應(yīng)用74HC595做流水燈,在Arduino IDE中我們會(huì)用到shiftOut這個(gè)函數(shù),在Mixly中也有對(duì)應(yīng)的模塊,如圖4所示。

      首先,我們通過(guò)一個(gè)程序來(lái)了解一下74HC595串行輸入、并行輸出的過(guò)程。將圖5程序上傳,我們會(huì)發(fā)現(xiàn)Q7腳接的燈是亮的,如圖6所示。

      下面,我們來(lái)解釋一下這個(gè)過(guò)程:

      首先,管腳3給了鎖存端(ST)一個(gè)低電平,意思是說(shuō)“嗨,74HC595,開(kāi)始干活了”,然后,管腳2給了數(shù)據(jù)(DS)一個(gè)十進(jìn)制數(shù)1,關(guān)鍵是74HC595不認(rèn)識(shí)它,所以,就需要轉(zhuǎn)換成8位的二進(jìn)制數(shù)00000001,不足8位的,前面加0補(bǔ)足8位,為啥是8位的?因?yàn)椋?4HC595是8位移位寄存器,有8個(gè)輸出(如圖7)。

      這時(shí)候,時(shí)鐘(SH)開(kāi)始干活了,管腳4每制造一次上升沿(先拉低電平再拉高電平),這一串?dāng)?shù)就進(jìn)去一個(gè),8次之后,都進(jìn)去了,每個(gè)數(shù)就都有自己的一個(gè)位置了,即每個(gè)動(dòng)作只操作一位數(shù)據(jù),這就叫串行輸入(如圖8)。

      至于誰(shuí)先進(jìn)去,進(jìn)去之后,每一個(gè)數(shù)字都在哪個(gè)位置,這得看是低位先入還是高位先入,什么意思呢?我們先要弄明白低位和高位,以二進(jìn)制數(shù)00000001為例,左邊0這一端是高位,右邊1這一端是低位,所以,低位先入的意思就是從最右邊的1(低位)開(kāi)始依次進(jìn)入,直到最左邊的0(高位)進(jìn)去;高位先入的則剛好相反,從最左邊的0(高位)開(kāi)始依次進(jìn)入,直到最右邊的1(低位)進(jìn)去。

      下面我們以低位先入為例,用上大巴車做個(gè)比方:在二進(jìn)制數(shù)00000001中,低位先入,給SH腳制造一次上升沿(我們可以理解為檢票),那第一個(gè)上大巴車的肯定是最右邊的1,它上去了之后,就占據(jù)了第一排的位置(如圖9)。

      繼續(xù)給SH腳制造一次上升沿之后,1左邊的0,開(kāi)始上車,然后,它并不是走向第二排座位,而是讓1往后挪一個(gè),它坐第一排(如圖10)。

      繼續(xù)給SH腳制造一次上升沿,已經(jīng)上車的1和0繼續(xù)往后挪,新上車的0占據(jù)第一排座位(如圖11)。

      如此繼續(xù)給SH腳制造上升沿,高位的0,繼續(xù)上車,車上的數(shù)繼續(xù)往后排順延,直到發(fā)生第8次上升沿,所有的數(shù)字都上車了(如圖12)。

      然后,管腳3給了鎖存端(ST)一個(gè)高電平,讓每個(gè)數(shù)都記住自己的位置,在自己的位置坐著(絕對(duì)不允許換座位)(如圖13)。

      最后,每個(gè)數(shù)掌管一個(gè)輸出,即每個(gè)動(dòng)作操作多位(這里是8位)數(shù)據(jù),這就是并行輸出。這樣,Q0~Q6腳都得到了一個(gè)0(低電平),Q7腳得到一個(gè)1(高電平),所以,Q0~Q6腳接的燈都是滅的,Q7腳接的燈是亮的。

      同樣的道理,將數(shù)據(jù)輸入改為3,程序如圖14所示。這時(shí)候,我們把十進(jìn)制數(shù)2變?yōu)?位二進(jìn)制就是00000011,采用低位先入,按照我們上面的推算方法,應(yīng)該是Q6、Q7高電平,其余低電平,Q6腳和Q7腳接的LED亮,實(shí)驗(yàn)結(jié)果也是如此(如圖15)。

      下面,我們?cè)倏锤呶幌热?,輸入?shù)據(jù)1,將程序繼續(xù)改動(dòng)(如圖16),我們會(huì)發(fā)現(xiàn),結(jié)果正好與程序1低位先入相反。這是因?yàn)?,將十進(jìn)制1轉(zhuǎn)換為8位二進(jìn)制為00000001,高位先入,即從左邊的0依次進(jìn)入移位寄存器。最終,Q0對(duì)應(yīng)的是1,高電平,其他腳對(duì)應(yīng)的是0,低電平,所以,Q0接的LED亮,其他腳接的LED滅(如圖17)。

      同樣,我們也可以繼續(xù)改變輸入的數(shù)值,設(shè)置低位先入或高位先入,控制這8個(gè)LED的亮滅,不過(guò),我們輸入的數(shù)值盡量不要超過(guò)255。當(dāng)我們輸入255,上傳程序后,燈是全部都亮的,我們把十進(jìn)制的255轉(zhuǎn)換為二進(jìn)制為11111111,這已經(jīng)是8位二進(jìn)制最大的數(shù)了,所以,0到255這總共256個(gè)數(shù)值就已經(jīng)能全部體現(xiàn)出8個(gè)LED亮滅的所有情形。

      猜你喜歡
      凹口管腳二進(jìn)制
      凹口螺栓斷裂影響分析
      用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
      有趣的進(jìn)度
      二進(jìn)制在競(jìng)賽題中的應(yīng)用
      看誰(shuí)玩死誰(shuí)
      喜劇世界(2017年5期)2017-12-06 04:28:41
      水晶桃
      讓狗聞錢
      喜劇世界(2016年3期)2016-11-26 13:13:01
      基于圖像處理的異型電子元器件管腳偏移誤差檢測(cè)方法研究
      CMOS數(shù)字IC管腳電容的估算與測(cè)量
      HC08芯片JVT測(cè)試方法的探究
      玉环县| 广丰县| 鄂温| 荔波县| 高密市| 丹巴县| 上犹县| 兴国县| 马边| 玉树县| 临高县| 安庆市| 探索| 天镇县| 平昌县| 湘潭县| 佛教| 珠海市| 伊宁市| 嘉兴市| 天峻县| 东丰县| 偃师市| 凤庆县| 诏安县| 公主岭市| 苏尼特左旗| 沈丘县| 平度市| 三河市| 太白县| 宜丰县| 中江县| 镇赉县| 贵南县| 金溪县| 新丰县| 柏乡县| 社旗县| 库车县| 长兴县|