• 
    

    
    

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

      Mixly開(kāi)源項(xiàng)目設(shè)計(jì)28:秒懂74HC595移位寄存器(三)

      2018-11-23 06:32:04隋杰峰
      中國(guó)信息技術(shù)教育 2018年21期
      關(guān)鍵詞:元組管腳二進(jìn)制

      隋杰峰

      在秒懂74HC595移位寄存器(一)的最后,我們提到,我們輸入的數(shù)值盡量不要超過(guò)255,0到255這總共256個(gè)數(shù)值就已經(jīng)能全部體現(xiàn)出8個(gè)LED燈亮滅的所有情形。

      如果我們一定要輸入一個(gè)大于255的數(shù)值可不可以呢?接下來(lái),我們就實(shí)驗(yàn)一下。

      需要的元件(如下表)

      輸入一個(gè)大于255的數(shù)值會(huì)發(fā)生什么

      電路連接(沿用上兩期的電路圖)如圖1所示。

      檢查電路連接沒(méi)有錯(cuò)誤后,我們開(kāi)始編寫(xiě)程序,回到上面的問(wèn)題——我們輸入一個(gè)大于255的數(shù)值會(huì)發(fā)生什么,如我們輸入259,程序如圖2所示。上傳程序后,結(jié)果如圖3所示。

      從運(yùn)行結(jié)果可以看出,輸入數(shù)值259,程序的運(yùn)行結(jié)果和輸入數(shù)值3是一樣的,我們將259轉(zhuǎn)換為二進(jìn)制數(shù)為100000011,這是個(gè)9位的二進(jìn)制數(shù),已經(jīng)超出了8位,實(shí)際上,這時(shí)候只有右面的8位,即00000011,能進(jìn)入移位寄存器,所以Q6和Q7兩個(gè)腳連的LED是亮的。

      同樣,程序改為高位先入,也是右面的8位(00000011),能進(jìn)入移位寄存器,這時(shí)是左邊高位的0開(kāi)始進(jìn)入,所以最終Q0和Q1連的LED(左邊的2個(gè)LED)是亮的,也就是說(shuō),最高位的1始終進(jìn)不了移位寄存器,所以無(wú)論我們輸入的數(shù)值有多大(也不要無(wú)限大),將它轉(zhuǎn)換為二進(jìn)制,進(jìn)入移位寄存器的始終是從最低位開(kāi)始的8位(最右邊的8位)。為什么會(huì)這樣呢?這是因?yàn)閟hiftOut()函數(shù)(在Mixly就是我們用的這個(gè)shiftOut模塊)一次只能送一個(gè)位元組(概念請(qǐng)參考下面的注釋),所以程序4,我們只用了一個(gè)shiftOut模塊,因此也只能向移位寄存器里送一個(gè)位元組,從結(jié)果來(lái)看,送往移位寄存器的位元組只能是從二進(jìn)制最低位開(kāi)始的8位。

      注:位元組一般指字節(jié),字節(jié)(Byte)是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲(chǔ)容量的一種計(jì)量單位,通常情況下一字節(jié)等于有8位。(這是來(lái)自百度百科的解釋)

      位元組是計(jì)算機(jī)的一個(gè)記憶單元。位元是電腦最小的記憶單元,一個(gè)位元只能儲(chǔ)存0或1的資料,將8個(gè)位元組合起來(lái)稱為位元組。(這是來(lái)自互動(dòng)百科的解釋)

      如果我們一定要讓二進(jìn)制100000011最高位的這個(gè)1進(jìn)入移位寄存器,需要怎么辦呢?

      這就需要將它加0補(bǔ)足16位,即0000000100000011,然后,把它拆分成2個(gè)位元組即00000001(高位元組)和00000011(低位元組),第一次shiftOut,讓00000011進(jìn)入移位寄存器,然后再一次shiftOut,讓00000001進(jìn)入移位寄存器,之前進(jìn)入移位寄存器的數(shù)據(jù)00000011,就會(huì)丟失(不是一個(gè)一個(gè)丟失,是整個(gè)8位一起丟失,這很關(guān)鍵),這樣我們就會(huì)發(fā)現(xiàn),只有一個(gè)LED亮了(如果是低位先入,Q7連的LED會(huì)亮,如圖4所示)。當(dāng)然,如果再級(jí)聯(lián)一片74HC595,之前的數(shù)據(jù)會(huì)通過(guò)Q7S進(jìn)入級(jí)聯(lián)的這片74HC595,這就是74HC595串行輸出的功能。

      兩片74HC595級(jí)聯(lián)

      通過(guò)上面的案例,我們知道74HC595有串行輸出的功能,也就是串行輸出引腳Q7S接下一片74HC595的DS,將兩片74HC595的SH和ST連在一起,即兩者共用一個(gè)串行時(shí)鐘輸入和鎖存,這就是74HC595的級(jí)聯(lián),通過(guò)兩片74HC595的級(jí)聯(lián),我們可以只用UNO的3個(gè)管腳即可控制16個(gè)LED的亮滅,下面我們就通過(guò)一個(gè)實(shí)驗(yàn)來(lái)了解一下兩片74HC595級(jí)聯(lián)。電路連接如圖5所示。

      電路連接沒(méi)有問(wèn)題,我們就來(lái)設(shè)計(jì)一下輸入259的程序,在上面的分析中,我們知道259轉(zhuǎn)換為二進(jìn)制100000011,這是個(gè)9位的二進(jìn)制數(shù),而每次shiftOut只能將低位的8位二進(jìn)制送入移位寄存器(這里是00000011),所以,需要將它補(bǔ)足16位,即0000000100000011,然后,把它拆分成2個(gè)位元組即00000001(高位元組)和00000011(低位元組),分兩次shiftOut,將它們送入移位寄存器,第一次shiftOut送入的是00000011(低位元組),由于我們采用了級(jí)聯(lián),第二次shiftOut后,00000011(低位元組)會(huì)從第一片74HC595的Q7S串行輸出后進(jìn)入第二片74HC595,00000001(高位元組)則被送入第一片74HC595。

      但我們?cè)贛ixly中沒(méi)有找到把一個(gè)數(shù)字拆分成2個(gè)位元組的模塊,在這里,我們采用了移位的辦法(上期最后一個(gè)流水燈程序采用的就是移位)。由于shiftOut只能將低位的8位二進(jìn)制送入移位寄存器,所以低位元組可以直接進(jìn)入移位寄存器,不存在問(wèn)題。關(guān)鍵在于高位元組,我們可以讓輸入的數(shù)值向右移(低位方向,符號(hào)>>)8位,低位元組的數(shù)據(jù)將會(huì)移出而永遠(yuǎn)丟失,高位元組右移后將成為新的低位元組,新的高位元組將補(bǔ)0。我們還是以259為例,0000000100000011右移8位后,00000011直接丟失,00000001成為低位元組,左邊缺少的高位元組通過(guò)0補(bǔ)充,即右移的結(jié)果為0000000000000001。由此,我們可以設(shè)計(jì)如圖6所示的程序。上傳程序后,結(jié)果如圖7所示,與理論上的結(jié)果一致。

      設(shè)計(jì)16位二進(jìn)制計(jì)數(shù)器

      電路連接與上面相同,程序設(shè)計(jì)如圖8所示。這個(gè)程序需要注意的是,16位二進(jìn)制最大的數(shù)位1111111111111111,即十進(jìn)制的65535,因此,變量i的取值范圍為0-65535。

      設(shè)計(jì)16位流水燈

      如同上期的8位流水燈程序,用數(shù)組的16位流水燈程序比較容易設(shè)計(jì),這里就不再提供,感興趣的小伙伴可以自行設(shè)計(jì)。下面,我們依然采用移位的方式設(shè)計(jì)程序,如圖9所示。同樣,通過(guò)改變需要移位的數(shù)值(上面移位的是1),也可以設(shè)計(jì)出更多的流水燈效果。

      在本期的內(nèi)容中,我們僅用了UNO的3個(gè)管腳就控制了16個(gè)LED,通過(guò)74HC595或者多片74HC595級(jí)聯(lián),僅需要少量管腳就可控制更多輸出,可以大大節(jié)省UNO的管腳使用數(shù)量,這對(duì)于設(shè)計(jì)更多功能的作品,非常有利。

      實(shí)際上,74HC595的用途非常廣泛,如通過(guò)它驅(qū)動(dòng)7段數(shù)碼管、4位數(shù)碼管、8×8點(diǎn)陣LED燈,也可以通過(guò)它控制更多的LED,制作出效果更炫的流水燈,也可以制作光立方等,至于它的更多的用途,還需要感興趣的小伙伴們自己去開(kāi)發(fā)。

      猜你喜歡
      元組管腳二進(jìn)制
      用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
      Python核心語(yǔ)法
      有趣的進(jìn)度
      二進(jìn)制在競(jìng)賽題中的應(yīng)用
      海量數(shù)據(jù)上有效的top-kSkyline查詢算法*
      基于減少檢索的負(fù)表約束優(yōu)化算法
      基于圖像處理的異型電子元器件管腳偏移誤差檢測(cè)方法研究
      CMOS數(shù)字IC管腳電容的估算與測(cè)量
      HC08芯片JVT測(cè)試方法的探究
      面向數(shù)據(jù)流處理的元組跟蹤方法
      保定市| 察隅县| 莲花县| 澎湖县| 东山县| 安远县| 尖扎县| 义马市| 启东市| 四川省| 酉阳| 原平市| 新余市| 西昌市| 玛曲县| 乌审旗| 确山县| 嘉黎县| 舒兰市| 东至县| 杭州市| 柘城县| 长沙市| 岳阳县| 遂平县| 潼关县| 洛浦县| 乐东| 凤城市| 辛集市| 前郭尔| 永寿县| 青神县| 乐至县| 封开县| 平阴县| 白山市| 时尚| 巴南区| 杨浦区| 敦煌市|