自學單片機第十四篇中:流水燈

2020-08-30 小亮談電氣

​關注一下,更多精彩等著你!

上一節我們介紹了什麼是總線的方法,以及如何通過十六進位來控制IO口。並把我們的之前單點操作的流水燈進行了改進,成為了一個新的更加簡潔的程序。這回,就再用總線方法,來實現流水燈的更加多樣化的操作。

這次,我們要實現正向流水結束後再反過來流水,如此循環。然後再間隔閃爍。然後再累積流水,最後結束。

正向流水結束,再反過來。這個如何實現呢,我們需要使用到一些運算方法。

第一個是移位指令<<。

由於數字對比不強,看的不是很清晰,所以把數字給換成紅色了。

<<這個標誌符的意思是,向左移動一位,就像下邊這樣:

1111 1111》1111 111_

移動完成後,會發現,最低位空出來了,此時程序會自動去填補一個0。於是就成了:

1111 1111》1111 111_》1111 1110

第一次移位1111 1110,第二次在第一次基礎上移位1111 1100,第三次在第二次基礎上移位1111 1000,如此循環,就可以一直把所有位都變成0。

我們在看下一句&34;,這個符號是或的意思,我們知道,邏輯中的或,是說只要有其一為一,結果就是一。所以,我們把1100|0001,結果就是頭兩個一和最後一個一留下來,第三位因為都是0,所以就是0.結果就是1101了。當再次移位後,數據就變成1010了,我們再次跟0001取或,最後一位就再次置1,結果就是1011,從結果上看,1110》1101》1011……就是0在不斷的左移。

通過這個方法,可以讓每一位都會單獨置零。然後再給以一定時間的延時,就會看到流水燈了。

如果我們不賦初值0xfe會出現什麼情況?

就會出現,移位產生一個0,在或運算時就會被重新置1,如此循環,就進入不到第二個LED,也就不會出現流水燈了。可以自己嘗試下。

向右流水,效果是一樣的,需要注意的是初值更改為左側為0,就是0x7f,0111 1111,然後移位符號>>,還有取或的語句需要用0x80,1000 0000.

基本上是在左移位的基礎上稍作修改即可。

接下來是閃爍的。

閃爍,我們用的是間隔LED的方法,就是隔一個亮一個,埠輸出是1010 1010。翻譯成十六進位就是0xaa。這次用到的是一個取反的運算,就是把每一位的0變成1,1變成0,然後延時一段時間,再次取反,循環幾個周期,就看起來像是不斷閃爍。取反的操作相對好理解一些,就是這一位,現在是1,那麼取反後就是0,就是0和1的變換。

最後是一個累積點亮LED。

這個程序就是把第一個我們向左移位的函數,進行了更改,取消了賦初值,不用取或了,這樣就可以對比著理解,各個語句的作用,如果不使用,會產生什麼結果。如果我們的第一個函數不用取或這一步,那最終輸出結果就和這個現象一樣了。

所以,我們在寫程序時,需要認真,仔細分析自己需要的結果,然後對照程序進行簡單的演算。保證每一段都是可以輸出想要的結果,不然累積到最終,幾百行的代碼,看起來就會頭疼的,尤其是在沒有標註釋的情況下,有時就會忘記自己為什麼要寫這一句。

好的,這篇先說到這裡,有問題或建議可以留言或私信給我。

想了解更多精彩內容,快來關注小亮談電氣

更多多內容,歡迎關注百家號:小亮談電氣。微信公眾號:電氣學苑。

相關焦點

  • 自學單片機第十篇:基礎知識--萬用表的使用
    因為我們知道測量阻值時,表筆是帶有電的,通過測量電阻中的電流,來判斷阻值的,如果此時電阻中帶有電壓,就會導致萬用表判斷出錯誤的數據。電壓過大,還會對萬用表內部電路造成損壞。測量時,斷開電源,然後觀察電路,判斷電阻一端是否懸空,也就是電阻的兩端不能並接設備,因為並聯會導致測量的數據有可能是並聯後的總阻值。如果實在判斷不了,那就使電阻的一端離開電路。
  • 自學單片機第十二篇上:首次測試設備——軟體測試
    由於準備比較多,講得儘可能詳細,所以分為兩篇,上篇是軟體測試,下篇是硬體測試。所有材料:1,安裝軟體的電腦,至少安裝了keil和ISP,keil用於編輯程序,ISP用於把程序下載到單片機中。沒有這兩個,我們即使首次測試成功,接下來的學習也會很艱難。
  • 自學單片機第九篇:基礎知識--計算機基礎操作
    然後主機中,電源,主板,散熱,內存條,硬碟,光碟機。這些東西匯總到一起,就是我們用的電腦了。咱先說下關於安裝軟體的,有時候,我們會發現電腦安裝個大點的軟體,電腦還沒跑起來就開始卡,卡的嚇人,幾乎就是滑鼠開始立定跳遠了。於是有些同學就認為,唉,奈何,奈何,沒有一臺好電腦,學不來單片機呀。
  • 自學單片機第十六篇上:什麼是動態輸出?
    首先,我們先寫一個流水燈,這個相信,如果一步步從前期文章看著走過來的同學,應該是手到擒來的了,我們還沒有介紹什麼高端理論,從頭到今天,都是一直走的人行道,平坦且沒有危險。好的,當我們寫好之後,仿真一下,這裡我用了之前寫過的一個文件,沒有在重新寫一遍,主要是為了後文做鋪墊用的。
  • 自學單片機第十一篇:基礎知識--電工常識
    儘管我們學習單片機看其來很安全,基本上是與電腦和晶片打交道,屬於弱電行業中的微電子領域,看似不用與安全聯繫起來,但是我們只要與電字相關,那麼就要具備電工的基本常識,以避免不必要的損失和危險。自學單片機第十篇:基礎知識--萬用表的使用
  • 自學單片機第十三篇下:單點交通燈
    ​我們先是操作了單個IO的控制,然後又以流水燈的形式,進行了多個IO的操作,這些只是為了讓我們儘可能的熟悉程序的操作,如何賦值,如何運行,如何測試,如何下載程序到硬體,有了這些熟悉的過程,後邊學起來就不會再費力了,因為很多問題都是這些基礎操作導致的。今天這篇文章,我們來通過一個僅靠延時函數,來實現下交通燈。這裡會讓大家先熟悉下正常的函數如何使用。
  • 基於Verilog FPGA 流水燈設計
    通過程序控制LED的亮和滅, 多個LED燈組成一個陣列,依次逐個點亮的時候像流水一樣,所以叫流水燈。由於其形成美觀大方的視覺效果,因此廣泛應用於店鋪招牌、廣告、大型建築夜間裝飾、景觀裝飾等。  在FPGA電路設計中,儘管流水燈的設計屬於比較簡單的入門級應用,但是其運用到的方法,是FPGA設計中最核心和最常用部分之一,是FPGA設計必須牢固掌握的基礎知識。
  • LabVIEW編程實例:趣味流水燈程序設計
    2、代碼實現代碼實現主要關鍵點:主要程序結構:使用while循環結構+事件結構+移位寄存器,在事件結構的超時事件中完成流水燈狀態的顯示,在移位寄存器中存儲上次流水燈狀態對應的數值;主要功能函數:布爾數組(流水燈數組的值
  • LabVIEW編程實例:趣味流水燈程序設計
    8個小燈,其主要功能包括:可設置每個小燈初始的亮滅狀態;可設置流水燈的移動方向;可設置流水燈每次向左或向右移動的位數;可設置流水燈移動的速度;可控制流水燈的開始/暫停狀態。代碼實現代碼實現主要關鍵點:主要程序結構:使用while循環結構+事件結構+移位寄存器,在事件結構的超時事件中完成流水燈狀態的顯示,在移位寄存器中存儲上次流水燈狀態對應的數值
  • 玩轉賽靈思Zedboard開發板(3):基於Zynq PL的流水燈
    基於Zynq PL的流水燈是使用PL做流水燈實驗,目的是為了熟悉在不使用ARM PS情況下,只對Zynq PL的編程方法;同時掌握Xilinx PlanAhead工具的使用方法。本文給出流水燈實現過程的詳細步驟截圖。更多賽靈思(Xilinx)Zedboard基礎知識、相關手冊以及應用實例將陸續推出,以饗讀者,敬請期待。【本文的完整工程文件下載:見本文最後。】
  • 【玩轉EasyFPGA060】專題 —— 經典流水燈
    「Hello word」和「流水燈」可以說是例程實驗的鼻祖。我們也來用EasyFPGA060玩轉一下流水燈。我的流水燈,我的節奏        首先,先確定你的流水燈變化的節奏。EasyFPGA060提供了48MHz的有源晶振,如果直接使用這個頻率控制流水燈的變化,那麼人眼是很難辨別的。假設我們設定1秒鐘變化一次,那麼就需要將48MHz分頻到1Hz。使用Verilog語言可以這麼實現。
  • 農村一輛思域做婚車,改大尾翼、流水燈,側面還貼「法拉驢」貼紙
    大家好,歡迎大家來到這,在這裡每天都會有不同的內容,最新鮮、最熱門的汽車事件都會在此呈現,而本期的熱門內容便是:農村一輛思域做婚車,改大尾翼、流水燈,側面還貼「法拉驢」貼紙前言:不少車主在結婚的時候會選擇百萬級別的豪車做婚車,但是資金有限的情況下
  • 自學單片機第四十三篇:什麼是8421碼
    前面我們已經練習了很多51的代碼,在編寫代碼的過程中,經常會遇見一些需要處理的數據,例如在流水燈總線控制方法中,代碼中會使用16進位數來代替P0或P2埠的數據,這樣就無需將埠一一寫出,十分方便。今天我們單獨把這組數據中的四個數據拿出來,仔細琢磨一下。例如1101,這個數據,我們在將其轉換為16進位時,就會使用,1x8+1x4+0x2+1x1=13,如果我們再寫一個數據。例如0101,這個數據我們轉換下,0x8+1x4+0x2+1x1=5,通過觀察會發現,變化的是1和0,不變的是所乘的係數,從左到右依次是8、4、2、1。
  • 流水燈的設計
    流水燈的設計 佚名 發表於 2018-05-31 11:40:14 設計原理:  在以後的設計中,用的開發板都將是我們至芯科技自主設計的開發板,我們的晶片用的是Cyclone4
  • 案例詳解|S7-1200 PLC循環移位指令做流水燈控制
    在上一篇文章中介紹了邏輯運算指令,這篇文章就開始介紹一下移位和循環移位指令吧。在S7-1200 PLC中的移位和循環移位指令指令包括了移位指令SHL和SHR,循環移位指令ROL和ROR。這幾個指令跟S7-200/200 SMART PLC是一樣的,如果學習過這幾個指令的同學也可以重新溫習一下,或者直接拉到後面看流水燈控制的程序案例編寫~下面我們就分別來看一下這幾個指令吧。
  • 熱點學習心得體會:學習第十四個五年規劃感悟五篇
    在這充滿「危」與「機」的歷史階段中,《中共中央關於制定國民經濟和社會發展第十四個五年規劃和二三五年遠景目標的建議》為把握髮展大勢、應對風險挑戰、化危為機提供了根本遵循。黨員幹部在這「兩個一百年」奮鬥目標的歷史交匯點上,應當堅守初心擔起使命,當好時代新農人,在中華民族偉大復興的徵程中耕就自己人生美麗新願景。戴好「擔當」帽,樹立「想幹事」的價值觀。
  • 青年大學習第十季特輯:「十四五」與青年
    青年大學習第十季特輯:「十四五」與青年 2020-11-30 18:32 來源:澎湃新聞·澎湃號·政務
  • 熱點學習心得體會:學習第十四個五年規劃心得五篇
    【篇一】「十四五」規劃是我國在全面建成小康社會基礎上開啟全面建設社會主義現代化國家新徵程的第一個五年規劃,意義重大。黨員幹部作為重要的參與者、決策者,也應發揮自己的力量為「十四五」藍圖添上一抹色彩。添一抹「念茲在茲,人民至上」的信念紅。民惟邦本,本固邦寧。
  • 自學單片機第二十篇:多點輸入
    前文說了輸入的方法和如何檢測,包括我們進行了自鎖和非自鎖的實驗,兩種按鍵都是可以完成信號輸入的,區別就在於信號在程序中的處理方法不同,進而輸出效果也不大一致。今天就再說說,多點輸入的操作,如果說單點輸入是明白如何檢測信號,那麼多點輸入就是對信號檢測的熟練掌握。我們先說下練習的規則,本次採用P1和P2埠,P1採用總線方式,P2採用單點檢測方式。
  • Arduino教程5:製作流水燈
    在這一篇文章中新朋將帶大家做一個簡單而且又有趣好玩的東西——流水燈,在製作的過程中我們將學習如何使用Arduino進行數字輸出(開關LED燈)並了解如何通過程序實現多個LED燈有順序的點亮與熄滅。