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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 單片機的LED輪廓顯示控制器設計原理

          單片機的LED輪廓顯示控制器設計原理

          作者: 時間:2012-06-14 來源:網絡 收藏

          其中最小系統采用STC12C5608。電源輸入部分允許交流或直流9~36 V輸入,通過DB107交流橋與LM2575高性能穩(wěn)壓芯片保證系統5 V供電。動態(tài)部分采用4個8位數碼管,控制速度00-15,輸出模式00-99.485輸出部分采用3個瞬態(tài)抑制二級提高485芯片實際使用壽命。

          2.2 從硬件

          包括STC最小系統,交流信號輸入部分,485收發(fā)模塊部分,輸出電路4部分集成。主電器圖如圖3所示。

          圖3 從控制器電氣原理圖
          圖3 從控制器電氣

          從系統結構圖1中可知,485總線網絡采用星形結構,一個主機和若干臺從機,主機只發(fā)送數據,從機只接收數據,屬于單功方式。實際應用時,當主控制器距現場較遠時,為了省通信接線,并簡化連接結構。將星形連接結構變成如圖4所示連接方式。

          圖4 主從式實際通信連接方案示意圖
          圖4 主從式實際通信連接方案示意圖

          因此從控制器的485收發(fā)模塊包括一個接收模塊和一個發(fā)送模塊。從圖3中可以看出接收部分得到信號未進入就直接通過發(fā)送模塊送出。既完成了控制要求,又簡化了連接方式。

          3 系統軟件

          系統軟件包括上位機軟件的設計、下位機程序設計兩部分。上位機軟件完成控制效果編輯與轉換,然后直接修改下位機程序的BIN文件。下位機程序程序效果數據解釋并執(zhí)行。

          3.1 色帶數據設計

          由于單片機內部程序空間有限,數據處理能力有限,所以需要用簡潔的數據模型表示LED變換效果。因此本文設計了一種色帶數據格式和特效數據格式。具體內容如表1所示。

          表1 色帶數據格式說明
          表1 色帶數據格式說明

          從表1可知一個色帶由7字節(jié)數據組成,表示一個最小漸變過程,如表1示例數據即表示從紅色經過31級漸變變換成綠色。將所有上位機設計的變換效果需要的漸變過程按順序生成一個數據。每一個特效數據由N個最小漸變色帶數據組成,因此表示一個特效時只需指明包含的色帶數和各個色帶數據序號即可。這樣便于基本色帶的重復使用,節(jié)省了有限的程序存儲空間,實現了控制要求。

          3.2 主控制器軟件設計

          主控制器程序按循環(huán)掃描方式工作。在程序初始化后,進行按鍵掃描工作。按鍵事件有5個,分別是速度加、速度減、模式加、模式減和復位。LED顯示屏的刷新率一般為15幀/秒,根據不同速度設置不同的刷新率,控制中每幀只更新一組數據,數據傳輸量較小,所以當到達設定時間后才發(fā)送相應的顯示數據。每個掃描周期最后更新4位LED中的一位,然后修改位地址為下一個掃描周期做準備。具體的程序流程圖如圖5所示。

          圖5 主控制器工作流程圖
          圖5 主控制器工作流程圖



          評論


          相關推薦

          技術專區(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); })();