<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于單片機的LED搖搖棒的設(shè)計應(yīng)用

          基于單片機的LED搖搖棒的設(shè)計應(yīng)用

          作者: 時間:2013-09-02 來源:網(wǎng)絡(luò) 收藏

          根據(jù)系統(tǒng)分析,具體的硬件電路連如圖2 所示。在具體制作硬件的時候,將16 個3mm 高亮度紅色的LED 排列成整齊的一列。(點擊可查看大圖)

            

            在proteus 下仿真調(diào)試的時候,給定的電源VCC 為5V,實際使用時用3 節(jié)干電池串聯(lián)4.5V 即可。

            2 系統(tǒng)軟件設(shè)計

            2.1 軟件設(shè)計思想

            在搖動LED 棒的時候必須單程傳送數(shù)據(jù),否則顯示的圖形會產(chǎn)生重影,影響視覺效果。因此當(dāng)系統(tǒng)開始工作后通過滾珠開關(guān)的位置來使實現(xiàn)單程傳送數(shù)據(jù)給LED.如果滾珠開關(guān)位于右邊,則進入外部中斷1 并將一變量置1,在變量為1期間讓以一定的頻率將數(shù)據(jù)傳送給LED.如果滾珠開關(guān)位于左邊,則進入外部中斷0 并將變量置0.在這期間單片機不會傳送數(shù)據(jù)給LED.在送數(shù)據(jù)時,數(shù)據(jù)送完后應(yīng)延時一段時間來使搖動時顯示的每個字不會太擁擠,之后再立刻熄滅LED 并開始重新判斷滾珠開關(guān)的位置。

            2.2 軟件設(shè)計流程圖

            通過軟件設(shè)計思想的分析,得到該系統(tǒng)的主程序流程如圖3所示。

            

            系統(tǒng)開始運行,首先初始化整個系統(tǒng),然后等待外部中斷。當(dāng)用手搖動到指定位置時,由滾珠開關(guān)觸發(fā)外部中斷,系統(tǒng)接收到外部中斷信號后,就傳送數(shù)據(jù),再經(jīng)過一段延時后開始顯示。顯示完成返回主程序,等待下一個搖動周期的到來。周而復(fù)始的晃動,則會顯示出相應(yīng)的信息。

            3 結(jié)論

            在設(shè)計中通過調(diào)試,使用外部中斷讓數(shù)據(jù)單程傳輸很好的取消了重影。通過改變傳送數(shù)據(jù)方式:由一個字符接一個字符傳送改為將一組字符一起傳送,傳送結(jié)束后再延時等,使顯示的內(nèi)容在扇形區(qū)域內(nèi)完整的顯示出來,同時也解決了畫面連續(xù)出現(xiàn)沒有間斷的問題。所以得出,只要控制好數(shù)據(jù)傳輸方式以及每次傳輸數(shù)據(jù)間的延時就可以實現(xiàn)多種數(shù)據(jù)的顯示方法。整個系統(tǒng)達到了預(yù)期的目的,結(jié)構(gòu)簡單,趣味性好。經(jīng)過繼續(xù)研究可以應(yīng)用到LED廣告等行業(yè)中。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 單片機 LED搖搖棒

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();