新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AVR單片機的控制系統設計

        基于AVR單片機的控制系統設計

        作者: 時間:2013-12-12 來源:網絡 收藏

        注意到多通道的參數設置項完全相同,ID為111,112,.,118的菜單分支完全一樣,ID為121和122的菜單分支也完全相同。可以定義一種,從而刪去ID為112~118以及ID為122的菜單節點和子節點(虛線框所示),其上級菜單(ID為11和ID為12)的項目中的total值均變為1。為了區別不同的通道分支,有兩種實現辦法:

        一種處理方法采用全局變量

        增加一個g_CODER_Channel_Number的全局變量,用于保存當前的通道號。在menuselect函數中,增加一個針對本系統設計的一個判斷,當ID為11時,則不修改對應的g_pmenu->cur,而是直接修改變量g_CODER_Channel_Number,進入對應的顯示函數后,直接根據g_CODER_Channel_Number判斷通道號,從而輸出對應的值。這種方法不需要改變系統設計的結構,但需要針對不同的系統修改主處理函數menuselect。

        另一種處理方法在菜單結構中增加一個MenuSibling結構,定義為

        typedef struct _menuSibling{

        signedcharcur;
        signedchartotal;
        }SIBLING;
        同時對應的菜單結構修改為
        typedefstructmenu{
        ...
        SIBLINGSibling;
        }MENU;

        這樣,ID為11的結構項的Sibling.total為8,Sibling.cur為當前的子菜單項。判斷到total>0且Sibling.total>0時,可知其下一級菜單為SIB2LING菜單,此時以前需修改cur想的操作則修改Sibling.cur即可。這種設計下,每個節點增加了2B的空間,但是保證的程序的一致性,對于不同的系統其設計基本一致。

        以上菜單項的設計用于系統設置部分,當退出系統設置時,即進入系統循環檢測部分。單片機通過RS-485接口檢測各個通道是否正常,當正常時則顯示為綠燈,出現異常則顯示為紅燈,黃燈為中間狀態。指示燈的流程參見圖4。

        基于AVR單片機的控制系統設計

        圖4 循環檢測的指示燈流程

        結束語

        按照本文提供的方法優化后的設計,可以滿足大多數的多通道輸入/輸出系統的的需要,整個系統的設計主要在于建立一個菜單樹,將對應的節點編號,再編寫對應的節點處理函數即可。這種設計使得程序的開發、維護都很容易,具有較強的可擴展性和可移植性。

        陀螺儀相關文章:陀螺儀原理



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阿拉尔市| 安仁县| 万源市| 合江县| 长沙县| 土默特左旗| 特克斯县| 廊坊市| 周宁县| 邹平县| 姚安县| 阜新市| 望江县| 阿拉善左旗| 新龙县| 黄浦区| 长葛市| 济阳县| 凤台县| 中卫市| 马山县| 耒阳市| 大同市| 班玛县| 正阳县| 怀来县| 江川县| 松阳县| 波密县| 灵石县| 阳谷县| 延长县| 北宁市| 枞阳县| 江门市| 长顺县| 比如县| 永寿县| 卓尼县| 开远市| 神木县|