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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的任意菜單結(jié)構(gòu)設(shè)計(jì)

          基于單片機(jī)的任意菜單結(jié)構(gòu)設(shè)計(jì)

          作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          單片機(jī)系統(tǒng)的人機(jī)界面設(shè)計(jì)中,通常需要采用菜單的方式來與用戶交互信息,而對于某些應(yīng)用系統(tǒng)它的菜單結(jié)構(gòu)比較特殊,它每個(gè)菜單項(xiàng)的子項(xiàng)長度不一致,級數(shù)不一致,而且有些子項(xiàng)的操作具備一定的特殊性;因此不能采用一種通用的菜單結(jié)構(gòu)模板來進(jìn)行菜單的設(shè)計(jì),結(jié)合作者多次菜單程序設(shè)計(jì)的工作經(jīng)驗(yàn),本文描述了一種任意菜單結(jié)構(gòu)的設(shè)計(jì)方法,首先將菜單的結(jié)構(gòu)目錄樹用圖形描述出來,再給每個(gè)不同的級和同級不同的項(xiàng)設(shè)定一個(gè)唯一的標(biāo)志,這樣我們就能通過級標(biāo)志位與項(xiàng)標(biāo)志位的邏輯組合來得到一個(gè)唯一的位置,那么在代碼的編寫中只要對這些標(biāo)志位按照圖形的流程進(jìn)行切換、讀和寫便可。

          具體方法如下:

          本文引用地址:http://www.ex-cimer.com/article/201612/325077.htm

          首先我們將菜單結(jié)構(gòu)的圖形描繪出來,再根據(jù)菜單的級數(shù)來定義一個(gè)結(jié)構(gòu)體,比如菜單最大有5級,則這樣定義

          typedef struct

          {

          unsigned char f;//菜單所在級數(shù)

          unsigned char s1;//菜單第1級下的子項(xiàng)號

          unsigned char s2;//菜單第2級下的子項(xiàng)號

          unsigned char s3;//菜單第3級下的子項(xiàng)號

          unsigned char s4;//菜單第4級下的子項(xiàng)號

          unsigned char s5;//菜單第5級下的子項(xiàng)號

          }Menu_TypeDef;

          Menu_TypeDefmenu;

          再將這些變量的值標(biāo)定在繪制的菜單圖形中,如下圖所示:

          即menu.f=1并且menu.s1=0表示第一級第一項(xiàng);

          即menu.f=2并且menu.s1=3表示第二級第四項(xiàng);

          依此類推;

          于是,菜單的每一個(gè)位置都會(huì)有一個(gè)唯一的值與之對應(yīng),當(dāng)菜單的選項(xiàng)由用戶切換時(shí),我們只需要根據(jù)菜單結(jié)構(gòu)圖形的流程來修改這些變量,而當(dāng)需要查詢當(dāng)前菜單指針選中哪一項(xiàng)時(shí),則只要查詢這些變量的值即可。

          由于各級菜單的變量都是獨(dú)立的,因此對菜單的結(jié)構(gòu)沒有限制,適用于設(shè)計(jì)任意結(jié)構(gòu)的菜單,如果當(dāng)菜單級數(shù)較多,定義的菜單變量較多時(shí),也不要緊,因?yàn)槲覀兊牟藛卧O(shè)計(jì)是先繪制菜單結(jié)構(gòu)圖形,再根據(jù)圖形來編寫代碼,實(shí)際上就是根據(jù)圖形的描述往代碼里填值罷了。

          經(jīng)實(shí)踐證明,采用以上方法能完全適用于所有任意結(jié)構(gòu)菜單設(shè)計(jì),而且該方法的優(yōu)點(diǎn)在于,有了圖形的描述,不僅減化了代碼編寫的難度,而且還有利于代碼維護(hù),提高代碼的可讀性。

          符件里是一個(gè)不規(guī)則結(jié)構(gòu)的菜單測試程序,基于AVR單片機(jī),通過按鍵來選擇,菜單的圖形界面在PC機(jī)的超級終端上顯示,歡迎廣大網(wǎng)友測試,并討論。



          評論


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