(小菜鳥寫庫)個人為0.95寸OLED寫的圖形界面庫(連載)


名稱

OLED_Window.h

OLED_Window.c

功能:對外資提供三個接口:1添加圖標控件
                                    2光標移動(選擇圖標)函數
                                    3光標確定(執行圖標)函數

                                    4顯示函數

                                    

OLED_Window.h代碼

#ifndef _OLED_WINDOW_H
#define _OLED_WINDOW_H
#include "OLED.h"   //OLED驅動庫
/*******************OLED驅動庫函數接口************************/
#define DRAW_string     
/*******************************************/
#define PAGE 2  //Icon 頁數
#define NUM 6    //每頁多少個
#define Icon_Max  12  //Icon最大個數 PAGE*NUM
#define ICON_W 42     //圖標寬
#define ICON_H 24     //圖標高
#define FistRow_Distan 16         //第一行狀態欄高度
#define ICON_STR_H 16            //字高
#define ICON_STR_W 32                 //字最大寬
#define ICON_Distan_H 4     //  圖標空白角高 
#define ICON_Distan_W 5      //圖標空白角寬
#define STRING_LE 10        //允許最大字符數
#define Power_Len 10
#define Power_H   8
#define Power_W  12
#define Power_X   4
#define Power_Y   2
#define Power_W_dis 1 //Power_W_dis=(Power_W-Power_Len)/2
/**************函數宏**************************/
#define Set_Pos(x,y)  LCD_Set_Pos(x,y)
#define Print_string(x,y,p) OLED_ShowString(x,y,p)
#define Print_string_Mode(x,y,p,m)   OLED_ShowString_Mode(x,y,p,m)
#define Print_Fill(x1,y1,x2,y2,dot)  OLED_Fill(x1,y1,x2-1,y2-1,dot)
#define Print_Clear() OLED_Clear()
/*****************************************/
#ifndef U8
#define U8 unsigned char 
#endif
/***********************************/
#define C_ERR  0
#define C_OK   1
/**************************************/
//typedef struct {
//    table[PAGE][NUM];    
//}HOME_map;
typedef struct{
    U8 x;
    U8 y;    
}Point;

typedef struct {
    unsigned char name[STRING_LE];
    void (*Event)(void);    
}Icon;

U8 Window_Icon_Add(unsigned char *name,void (*Event)(void));//添加圖標
void Point_Select(void);   //光標移動(選擇圖標)
void Point_Select_Ok(void);  //光標確定(執行圖標)
void Window_Home_DIS(void);//顯示
#endif

.c部分代碼

U8 Window_Icon_Add(unsigned char *name,void (*Event)(void)) //圖標控件注冊
{
    if(Icon_num<=12)
    { 
        Icon *Temp_Icon;
        U8 i;
        unsigned char c;
        Icon_num++;
        
        Temp_Icon=&Icon_table[(Icon_num-1)/NUM][(Icon_num-1)%NUM];
        for(i=0;i<STRING_LE;i++)
        { 
            c=*name;
            if(c!='\0')
            Temp_Icon->name[i]=c;
            else  break;
            name++;
}
        Temp_Icon->name[i+1]='\0';
        Temp_Icon->Event=Event;
    return  C_OK;
    }
    else
        return C_ERR;
    
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM