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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于51單片機IAP技術的LED顯示屏控制系統(tǒng)

          基于51單片機IAP技術的LED顯示屏控制系統(tǒng)

          作者: 時間:2011-12-24 來源:網(wǎng)絡 收藏

          4 基于IAP功能的顯示數(shù)據(jù)傳送及PC軟件編程
            SST89E516單片機可以實現(xiàn)IAP(In Application Programming)是由于它將Flash存儲器分為2個塊(區(qū)域):block0(64 KB)和block1(8 KB)。通過IAP指令的切換可以使程序在這2個塊中執(zhí)行,如程序在block0中運行可對block1的數(shù)據(jù)進行改寫,同樣在block1中運行可對block0的數(shù)據(jù)進行改寫。具體使用IAP功能時對SST89E516單片機的2個塊作如下分配:①上電或復位時自動運行block1中的IAP程序,如2 s內(nèi)沒有接收到PC機通過串行口發(fā)送的數(shù)據(jù)傳輸指令,則開始運行block0中的顯示程序。②block0中的最低8 KB用于存放顯示程序,其余56 KB用于存放顯示數(shù)據(jù)。③在block0中運行IAP程序時利用SST89E516單片機128字節(jié)的小扇區(qū)擦除功能只擦除和改寫block0中56 KB用于存放顯示數(shù)據(jù)的區(qū)域,8 KB存放顯示程序的區(qū)域保持不變。④在block0運行顯示程序時單片機串行口監(jiān)測來自PC機的復位命令,如有復位命令執(zhí)行IAP指令使程序轉移到block1塊并運行block1中的IAP程序修改顯示數(shù)據(jù)。
            PC軟件編程采用VB。該程序可完成字型的提取以及顯示數(shù)據(jù)的組織,生成Intel格式的HEX文件,通過串行口下載到SST89E516單片機中。為了方便控制,自定義了8字節(jié)的顯示指令集[命令(1字節(jié))+參數(shù)表(7字節(jié))],各種不同顯示效果所需的參數(shù),如起始地址、結束地址、每行的長度及顯示時間等,指定其存放指令的參數(shù)表中。顯示指令集存放在顯示數(shù)據(jù)區(qū)的最開始1頁256個存儲單元中,底層單片機運行時根據(jù)顯示指令可實現(xiàn)不同的顯示效果,如畫面的切換、定時、水平移動、垂直移動以及其他特殊顯示效果。同樣可通過IAP下載顯示程序。
          結 語
            通過大量的實踐檢驗,本控制系統(tǒng)是非??煽康?,利用該控制系統(tǒng)制作的小型已達數(shù)十個,最長的已經(jīng)運行了3年以上。在運行過程中也對該控制系統(tǒng)作了多方面的改進。例如,為了進一步提高顯示速度可擴展外部RAM,即在子程序3的基礎上去掉“CLR A”指令,使機器周期減為6個;采用指令為1個機器周期的單片機并提高晶振頻率;利用有些(如DS89C450)具有DPTR自動加1的功能;外加用CPLD制成的硬件地址發(fā)生器等。但所有改進的措施都是以增加外部輔助電路或成本為代價的。本控制系統(tǒng)的價格按市價不超過30元,因此其在小型LED顯示控制系統(tǒng)中有著廣闊的應用前景。

          led顯示器相關文章:led顯示器原理



          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();