在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > 51單片機(jī)控制LCD12864液晶屏顯示圖形菜單

            51單片機(jī)控制LCD12864液晶屏顯示圖形菜單

            作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
            想了很久,每次做菜單都受限于12864字符模式的各種限制,比如字體大小,不能顯示圖標(biāo)等等,沒有任何效果,這次就來(lái)個(gè)徹底的解脫,寫一個(gè)單函數(shù)就能完成所有功能的函數(shù),只需要2個(gè)圖片就能完成任意菜單內(nèi)容的菜單,可以有2的8次方=256個(gè)選擇結(jié)果,應(yīng)該能滿足所有的要求了吧?菜單的內(nèi)容就是圖片的內(nèi)容,因此可以顯示任意大小的圖形文字混合的菜單條目,比如使用字符模式,一屏只能顯示4行菜單(64/16=4),且只能顯示漢字和字符等,顯示位置等等的都受限,而這個(gè)方法可以顯示比如12*12(64/12=5行)的字符,8*8(64/8=8行)的字符,甚至不是字符,可以是圖標(biāo)+文字+任意其他的圖像,只要是圖片能顯示的,都可以。。哈哈,比較復(fù)雜,現(xiàn)在只寫了一少半,預(yù)期能夠提供多種顯示效果,希望我能完成。。。。

            void Lcd_Draw_BmpMenu(UINT8 *pMenu,UINT8 *pTitleBmp,UINT8 *pMenuBmp)
            {
            /*使用2張圖片作為純圖形菜單來(lái)選擇和操作,返回被選擇的項(xiàng),pMenu是一個(gè)指向菜單的各種參數(shù)的結(jié)構(gòu)體的指針,pTitleBmp指向作為菜單標(biāo)題的一張圖片,pMenuBmp指向作為菜單內(nèi)容的圖片(液晶的控制芯片是ST7920)

            yx-->>

            |

            |/

            */

            xdata struct { //除非另有說(shuō)明x坐標(biāo)均為大列的坐標(biāo),一個(gè)大列是16個(gè)像素,一行共有8大列數(shù)據(jù)
            //========= 以下是入?yún)⒒緟?shù),一旦確定,最好不要隨意更改 ======
            UINT8 Title_x;//標(biāo)題圖片在屏幕上的顯示起始位置X
            UINT8 Title_y;//標(biāo)題圖片在屏幕上的顯示起始位置Y
            UINT8 Title_Len_x;//標(biāo)題圖片的寬
            UINT8 Title_Len_y;//標(biāo)題圖片的高
            UINT8 Menu_x;//菜單在屏幕上的顯示起始位置X
            UINT8 Menu_y;//菜單在屏幕上的顯示起始位置Y
            UINT8 Menu_End_y;//菜單在屏幕上的顯示結(jié)束位置Y
            UINT8 Menu_Bmp_x;//菜單圖片的寬
            UINT8 Menu_Bmp_y;//菜單圖片的高
            UINT8 Menu_Item_Height;//每一菜單項(xiàng)的高度(像素為單位)
            UINT8 Line_x;//最后下劃線的起始坐標(biāo)x
            UINT8 Line_y;//最后下劃線的起始坐標(biāo)Y
            UINT8 Line_Len;//最后下劃線的長(zhǎng)度,如果為0,則表示不畫出這條線(像素為單位)
            //====== 以下是菜單的風(fēng)格設(shè)置 ========

            UINT8 Scroll_Speed;//菜單滾動(dòng)的速度,0~9個(gè)級(jí)別,越低越快,越高越慢(液晶屏顯示速度有快有慢,調(diào)整這個(gè)參數(shù)用于適用不同的液晶屏
            UINT8 Continue_Scroll;//指定菜單是否可以形成一個(gè)連續(xù)滾動(dòng)選擇的效果;0不連續(xù),背景和反白位置都會(huì)根據(jù)實(shí)際情況滾動(dòng) 1菜單連續(xù)滾動(dòng),反白位置不動(dòng)
            UINT8 RePaint;//=0不重畫菜單,=1重畫整個(gè)菜單的圖像,一般都是首次調(diào)用本函數(shù)的時(shí)候置1,用于畫出整個(gè)菜單,以后調(diào)用置0就可以了
            UINT8 MenuEffect;//菜單運(yùn)動(dòng)的效果;0沒有任何效果,只是最普通的菜單形態(tài),1平滑滾動(dòng),2平滑滾動(dòng),具有慣性效果,3具有減速效果,沒有慣性效果,4具有減速和慣性效果

            //====== 以下用于控制菜單的選擇參數(shù) =======
            UINT8 Last_Select_Item;//上次執(zhí)行本函數(shù)后,所選擇的菜單項(xiàng)
            UINT8 Select_Item;//本次執(zhí)行本函數(shù),要選擇的菜單項(xiàng)
            }M;


            //============== 以下是變量定義 ===============
            UINT8 xdata Menu_Item_Count;//總共有幾個(gè)菜單項(xiàng)
            UINT8 xdata Menu_Screen_Count;//當(dāng)前一屏最多可以顯示幾個(gè)菜單項(xiàng)
            UINT8 xdata Menu_Box_x,Menu_Box_y,Menu_Box_End_x,Menu_Box_End_y;//需要刷新的區(qū)域的坐標(biāo)
            UINT8 *pMenu_Box_Bmp;//需要顯示的菜單項(xiàng)的指針
            StructCopy(&M.Title_x,pMenu,19);//把參數(shù)復(fù)制到本函數(shù)內(nèi),便于操作
            Menu_Item_Count=M.Menu_Bmp_y/M.Menu_Item_Height;//總共有幾個(gè)菜單項(xiàng)
            Menu_Screen_Count=(M.Menu_End_y-M.Menu_y)/M.Menu_Item_Height;//一屏最多可以顯示多少項(xiàng)菜單

            //---------------------------------------------------------------------------
            if(M.RePaint==1)//如果需要重畫整個(gè)菜單圖像
            {
            Lcd_Draw_BMP(M.Title_x,
            M.Title_y,
            M.Title_x+M.Title_Len_x,
            M.Title_y+M.Title_Len_y,
            pTitleBmp
            );//畫出標(biāo)題的圖片

            if(M.Line_Len!=0)
            Lcd_DrawRowLine(M.Line_x,M.Line_y,M.Line_Len,1);//畫出最下面的線
            }
            //---------------------------------------------------------------------------
            //-----------需要刷新的圖像的區(qū)域
            Menu_Box_x=M.Menu_x;
            Menu_Box_y=M.Menu_y;
            Menu_Box_End_x=M.Menu_x+M.Menu_Bmp_x;
            Menu_Box_End_y=M.Menu_End_y;



            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉