在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)C語(yǔ)言下LCD多級(jí)菜單的一種實(shí)現(xiàn)方法

            單片機(jī)C語(yǔ)言下LCD多級(jí)菜單的一種實(shí)現(xiàn)方法

            作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
            0  引言

            由于C 語(yǔ)言的結(jié)構(gòu)性和模塊化,采用C 語(yǔ)言編寫(xiě)的程序容易閱讀和維護(hù),還有很好的可移植性。本文介紹一種用C 語(yǔ)言實(shí)現(xiàn)的LCD 多級(jí)菜單的方法,該方法已成功應(yīng)用在煤礦安全監(jiān)測(cè)設(shè)備上。

            1  硬件環(huán)境及LCD 菜單實(shí)現(xiàn)的功能
            圖形點(diǎn)陣式液晶可顯示用戶(hù)自定義的任意符號(hào)和圖形,并可卷動(dòng)顯示。它作為單片機(jī)系統(tǒng)人機(jī)交互界面的重要組成部分被廣泛應(yīng)用于實(shí)時(shí)檢測(cè)和顯示的儀器儀表中,例如手機(jī)上的顯示屏就是圖形點(diǎn)陣液晶。

            采用圖形點(diǎn)陣式液晶顯示較之其它顯示方式主要有以下優(yōu)點(diǎn):

            (1) 工作電壓低、功耗極低。工作電壓僅為3~5 V ,工作電流≤10 μA/ cm2 ,特別適用于低功耗的儀器儀表中。
            (2) 液晶顯示屬被動(dòng)顯示,受外界光線干擾小。
            (3) 圖形點(diǎn)陣式液晶可顯示的信息量大、分辨率高。
            (4) 不產(chǎn)生電磁干擾。
            (5) 可靠性高,使用壽命長(zhǎng)。

            本文所介紹的LCD 采用128 ×64 點(diǎn)陣的液晶屏,因此可顯示16 ×16 點(diǎn)陣的漢字4 行8 列。菜單為多級(jí)嵌套形式,最長(zhǎng)的有13 層,主要完成對(duì)某個(gè)測(cè)點(diǎn)各方面的設(shè)置或查詢(xún),可通過(guò)“向上”、“向下”、“回退”、“確認(rèn)”4 個(gè)鍵或遙控器來(lái)實(shí)現(xiàn)對(duì)菜單的選擇。具體功能:“向上”鍵:在本層菜單的項(xiàng)目中向上移動(dòng)進(jìn)行
            選擇;“向下”鍵:在本層菜單的項(xiàng)目中向下移動(dòng)進(jìn)行選擇;“回退”鍵:取消本層的菜單設(shè)置,返回上層菜
            單;“確認(rèn)”鍵:確認(rèn)本層的菜單設(shè)置,進(jìn)入下級(jí)菜單。可根據(jù)用戶(hù)在菜單中的選擇項(xiàng)對(duì)測(cè)點(diǎn)進(jìn)行某些設(shè)置,或者進(jìn)行某些特殊的顯示,例如對(duì)某個(gè)測(cè)點(diǎn)的實(shí)時(shí)曲線顯示等。

            本文引用地址:http://www.biyoush.com/article/201611/321459.htm

            2  程序設(shè)計(jì)
            根據(jù)需求,首先建立一個(gè)結(jié)構(gòu),并定義一個(gè)結(jié)構(gòu)變量KbdTabSt ruct 。結(jié)構(gòu)變量就是把多個(gè)不同類(lèi)型的變量結(jié)合在一起形成的一個(gè)組合型變量,構(gòu)成一個(gè)結(jié)構(gòu)的各個(gè)變量稱(chēng)為結(jié)構(gòu)元素。該結(jié)構(gòu)中共有6 個(gè)結(jié)構(gòu)元素,分別是5 個(gè)字符型和1 個(gè)指針變量,5 個(gè)字符型變量分別為當(dāng)前及各個(gè)按鍵的索引號(hào),也就是操作的狀態(tài)號(hào),最后1 個(gè)指針變量指向需執(zhí)行函數(shù)。這樣就可以做一個(gè)結(jié)構(gòu)數(shù)組,在結(jié)構(gòu)數(shù)組里為每一個(gè)菜單項(xiàng)編制一個(gè)單獨(dú)的函數(shù),并根據(jù)菜單的嵌套順序排好本菜單項(xiàng)的索引號(hào),以及本級(jí)菜單項(xiàng)的上、下卷動(dòng)的索引號(hào)和上、下級(jí)菜單的索號(hào)。
            具體程序如下所述:
            typedef st ruct
            {
             uchar  KeyStateIndex ;   / / 當(dāng)前狀態(tài)索引號(hào)
             uchar  KeyDnState ;   / / 按下“向下”鍵時(shí)轉(zhuǎn)向的狀態(tài)索引號(hào)
             uchar  KeyUpState ;   / / 按下“向上”鍵時(shí)轉(zhuǎn)向的狀態(tài)索引號(hào)
             uchar  KeyCrState ;   / / 按下“回車(chē)”鍵時(shí)轉(zhuǎn)向的狀態(tài)索引號(hào)
             uchar  KeyBackState ;   / / 按下“退回”鍵時(shí)轉(zhuǎn)向的狀態(tài)索引號(hào)
             void  ( 3 CurrentOperate) ( ) ;   / / 當(dāng)前狀態(tài)應(yīng)該執(zhí)行的
            功能操作
            }  KbdTabSt ruct ;
            # define SIZE - OF KEYBD - MENU 55   / / 菜單總長(zhǎng)度
            KbdTabSt ruct code KeyTab[ SIZE - OF - KEYBD - MENU ] =
            {
             {0 ,0 ,0 ,1 ,0 , ( 3 MainJob1) } ,
             {1 ,7 ,2 ,8 ,0 , ( 3 Dsp Point) } ,   / / 第一層
             {2 ,1 ,3 ,8 ,0 , ( 3 DspCurve) ) ,   / / 第一層
             {3 ,2 ,4 ,36 ,0 , ( 3 Dsp Kout) } ,   / / 第一層
             {4 ,3 ,5 ,50 ,0 , ( 3 DisCloseDown) } ,   / / 第一層

             {5 ,4 ,6 ,8 ,0 , ( 3 ModifyPoint) } ,   / / 第一層
             {6 ,5 ,7 ,52 ,0 , ( 3 SetCloseDown) } ,   / / 第一層
             {7 ,6 ,1 ,0 ,0 , ( 3 Cancel) } ,   / / 第一層
             …
             …
             {52 ,53 ,53 ,0 ,1 , ( 3 OkSetCloseDown1) } ,
             {53 ,52 ,52 ,0 ,1 , ( 3 OkSetCloseDown2) } ,
             {54 ,0 ,0 ,0 ,0 , ( 3 Disable) } ,
            } ;
             void Get Keylnput (void)
            {
             switch ( status &0xf0)
              {
              case 0xe0 :/ / 回車(chē)鍵,找出新的菜單狀態(tài)編號(hào)
               …
            KeyFuncIndex = KeyTab[ KeyFuncIndex ] . KeyCrState ;
               …
               break ;
              case 0xb0 :/ / 向下鍵,找出新的菜單狀態(tài)編號(hào)
               …
                KeyFuncIndex = KeyTab [ KeyFuncIndex ] . KeyDn2
            State ;
               …
              break ;
            case 0xd0 :/ / 向上鍵,找出新的菜單狀態(tài)編號(hào)
               …
                KeyFuncIndex = KeyTab [ KeyFuncIndex ] . KeyUp2
            State ;
               …
               break ;
              case 0x70 :/ / 回退鍵,找出新的菜單狀態(tài)編號(hào)
               …
                KeyFuncIndex = KeyTab [ KeyFuncIndex ] . KeyBack2
            State ;
               …
               break ;
              case 0 ;
                ret urn ;   / / 錯(cuò)誤的處理
                break ;
               }
              KeyFuncPt r = KeyTab[ KeyFuncIndex ] . CurrentOperate ;
              ( 3 KeyFuncPt r) () ;   / / 執(zhí)行當(dāng)前按鍵的操作
            }
            3  結(jié)語(yǔ)
            本文介紹了C 語(yǔ)言編程的特點(diǎn),簡(jiǎn)單介紹了LCD 作為人機(jī)界面的特征,并介紹了一種用C 語(yǔ)言實(shí)現(xiàn)的LCD 多級(jí)嵌套菜單結(jié)構(gòu)。該結(jié)構(gòu)緊湊、性能穩(wěn)定可靠,已多次使用在安全監(jiān)測(cè)設(shè)備中。

              系統(tǒng)要運(yùn)行可靠,對(duì)其有關(guān)設(shè)備是否能夠安全運(yùn)行地檢測(cè)也是很重要的一環(huán)。因而程序?qū)ο到y(tǒng)所涉及的設(shè)備都進(jìn)行了全面監(jiān)測(cè),主要有電動(dòng)球閥故障、出水口電動(dòng)閘閥故障、水位傳感器故障、水泵啟停時(shí)間、運(yùn)行電流、電動(dòng)機(jī)溫度、電動(dòng)機(jī)和水泵軸承溫度、出水壓力、高壓柜狀態(tài)、高壓柜故障、閥門(mén)故障等,并視情況進(jìn)行事故自動(dòng)處理或報(bào)警要求檢修。本系統(tǒng)中各個(gè)機(jī)組有3 種運(yùn)行選擇:自動(dòng)、半自動(dòng)和手動(dòng)。通常情況下按照水位高低和系統(tǒng)時(shí)間自動(dòng)選擇是否開(kāi)泵,同時(shí)觀察水位變化率從而選擇需要開(kāi)幾臺(tái)泵。在半自動(dòng)方式下,一旦該泵的開(kāi)泵信號(hào)被監(jiān)測(cè)到,系統(tǒng)將自動(dòng)根據(jù)當(dāng)前情況用射流方式或者真空泵方式來(lái)抽真空,當(dāng)真空度達(dá)到要求后啟動(dòng)電動(dòng)機(jī), 同時(shí)觀測(cè)出水口處的壓力, 當(dāng)其大于5 MPa時(shí)打開(kāi)出水口處的電動(dòng)閘閥實(shí)施正常排水。為了完善系統(tǒng),防止意外情況的發(fā)生,同時(shí)為了便于檢修,還保留了手動(dòng)方式,該方式在正常運(yùn)行情況下是不使用的。



            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉