分別是它的楖念'設計及實作。
LCD driver(一)
LCD driver(二)
LCD driver(三)
分為3個組成
A. 一為SSD1306,即直接控制register及提供相關的資訊的地方
B. 針對特定應用所撰寫的,像是要顯示時間, (你必須去指定字型,坐標及資訊. 並最後在特定時間點去更新RAM to CGRAM)
C. 將graph assert (font , pic(logic) and animations 以便於管理(這裡我放在一起)
這裡我將說明其中,最底層及graphic assert的建造部份,
A.SSD1306
SSD1306 : 原本應為分為前後景(RAM and CGRAM), 其動作應為一開始都是寫入到RAM上,並最後再update 到 CGRAM中, 但在目前的系統中,為了節省RAM空間去除這一部份
所以都是寫入到CGRAM,即update都沒有動作並去除不必要的函式.
LCD應有的相關API:
1.lcd 初始化: drv_LcdInit, 初始化LCD controller並設置相關i/o.
2,lcd屬性:從組態檔中可以得到LCD的基本屬性 。
drv_LcdWidth - 傳回lcd 的寬度
drv_LcdHeight- 傳回lcd的高度
drv_LcdPixelBits-獲得lcd的顯示模式,每個pixel所需bit數。
3.lcd背光:背光功能。
drv_LcdBackLightOn : open backlight
drv_LcdGetBackLightStatus : return the lcd status
4.LCD明暗度:可以輸出指定的電壓值。
drv_LcdSetContrast : 設定LCD明暗度等級。
drv_LcdGetContrast:取得目前LCD明暗的等級。
5.LCD frame buffer : LCD Controller要在LCD上顯示什麼內容是由video ram的內容來決定,而LCD controller的工作就是根據video ram的內容定時刷新;所以LCD 驅動程式只要改變video ram的內容,在下次lcd刷新就可以看到lcd的畫面改變了。ps:這裡frame buffer (video ram)
通常我們會準備二塊frame buffer,一塊是前景(froeground),另一塊是背景(background);在做圖形計算時,會先保持前景/背景同步,先將結果畫在背景上,等所有圖形畫完後,再一次把背景覆蓋在前景中。
drv_SetLcdDrawType - 設定graphics library會畫在前景或背景中,為一個全域變數。
drv_GetLcdDrawType -取回目前的狀態。
drv_LcdSetForegroundVRamBase- 設定前景frame buffer的起始位址。因在有些是有規定特定的位址,或是video ram的位址必須為某個值的倍數。(其函式旳參數,可由macro 定義之)
drv_LcdGetForegroundVRamBase- 取後前景的屬性(起始位置)。
drv_LcdBackgroundVRamBase - 設定背景frame buffer的起始位址。通常為一個陣列。(其函式旳參數,可由macro 定義之)
drv_LcdGetbackgroundVRamBase- 取後背景的屬性(起始位置)。
drv_LcdUpdate -使用前/背景同步,螢幕應會立即顯示背景的frame buffer內容。
drv_LcdUpateArea - 好的graphics library會記錄上次 前/背景同步之後背景被修改的範圍,這樣下次更新時就不用整個rame buffer複製,只需要同步被修改的部份即可。
6. LCD Graphics Library:指的是在畫 點'線'矩形' show 字等圖的函式。
drv_DrawPixel : 畫點。
drv_DrawVLine : 畫直線。呼叫多次的pixel.
drv_HrawHLine : 畫橫線。(先計算出起始與結束點是第幾個byte的第幾bit,然後給值)
drv_DrawLine : 畫斜線,由起始點和結束點算出斜率,然後利用斜率去計算各點相對應的frame buffer byte and bit.
drv_DrawRect- 畫矩形,分實心和空心。前者畫多修橫線(Y軸累加);後者則畫二直二橫。
drv_GetImage - 取後某個矩形區域對之frame buffer的記憶体內容,並將其儲存成特定格式。(長寛,內容,色彩)
drv_PutImage - 將drv_GetImage內容,貼到螢幕的另一位置上。
drv_ClearScreen - 清螢幕,
drv_DrawChar -基本顯示英文字母,而其debug時則是用drv_PutImage來做。
drv_DrawString -呼叫多次的drv_DrawChar
B.graphic assert builder
這個是針對fone即以查表法來進行, 如上圖
若在字庫中,只有hello等, 則在descriptors中 會去建立 e ~o 的相關資料
提供其所佔的字宽及其在charbitmaps的位址.
所以,在印出字元時 會先去查其特定字庫的第一個字元 並以相減後(因它是以asscii碼排列)去得到其char info(width,(hight) and offset)
而圖形,不像字型可以由它的去得到它的相關位址及大小,所以我們必須去自行去填入
以下是我的相關設定及API :
SSD1306.h
1: #ifndef SSD1306_H
2: #define SSD1306_H
3:
4: #include "gpio_def_iwatch_alford1224.h"
5: #include "hal_spi.h"
6: // Remove comment to use double buffer, requires 1k of RAM
7: #define USE_DOUBLE_BUFFER
8: //#include <stdint.h>
9: #define LCD_RES PIN_SPI_RES // RESET
10: #define LCD_RS PIN_SPI_CMDDATA // Data / Instruction
11: #define LCD_RW PIN_NOT_AVAILABLE // Read / Write
12: #define LCD_E PIN_SPI_CS // Enable
13: #define LCD_CTRL NRF_GPIO_PORT_SELECT_PORT3
14: #define LCD_DATA_OUT SPI0
15: #define LCD_DATA_IN SPI0
16: #define LCD_DDR SPI0
17:
18: #define LCD_SET_COL_HI 0x10
19: #define LCD_SET_COL_LO 0x00
20: #define LCD_SET_LINE 0x40
21: #define LCD_SET_CONTRAST 0x81
22: #define LCD_SET_SEG_REMAP0 0xA0
23: #define LCD_SET_SEG_REMAP1 0xA1
24: #define LCD_EON_OFF 0xA4
25: #define LCD_EON_ON 0xA5
26: #define LCD_DISP_NOR 0xA6
27: #define LCD_DISP_REV 0xA7
28: #define LCD_MULTIPLEX 0xA8
29: #define LCD_CHARGE_PUMP 0x8D
30: #define LCD_PUMP_OFF 0x10
31: #define LCD_PUMP_ON 0x14
32: #define LCD_DISP_OFF 0xAE
33: #define LCD_DISP_ON 0xAF
34: #define LCD_SET_PAGE 0xB0
35: #define LCD_SET_SCAN_FLIP 0xC0
36: #define LCD_SET_SCAN_NOR 0xC8
37: #define LCD_SET_OFFSET 0xD3
38: #define LCD_SET_RATIO_OSC 0xD5
39: #define LCD_SET_CHARGE 0xD9
40: #define LCD_SET_PADS 0xDA
41: #define LCD_SET_VCOM 0xDB
42: #define LCD_NOP 0xE3
43: #define LCD_SCROLL_RIGHT 0x26
44: #define LCD_SCROLL_LEFT 0x27
45: #define LCD_SCROLL_VR 0x29
46: #define LCD_SCROLL_VL 0x2A
47: #define LCD_SCROLL_OFF 0x2E
48: #define LCD_SCROLL_ON 0x2F
49: #define LCD_SCROLL_ON 0x2F
50: #define LCD_VERT_SCROLL_A 0xA3
51: #define LCD_MEM_ADDRESSING 0x20
52: #define LCD_SET_COL_ADDR 0x21
53: #define LCD_SET_PAGE_ADDR 0x22
54:
55: #define LCD_WIDTH 128
56: #define LCD_HIGHT 64
57: #define PIXELBITS 1
58: #define FOREGROUNDVRAMBASE 0x00
59: #define BACKGROUNDVRAMBASE 0x00
60:
61: extern uint16_t pointer;
62: extern uint8_t Underline;
63: extern uint8_t Negative;
64: extern uint8_t Sub;
65:
66: #define lcd_goto(x,y) { u8CursorX=(x); u8CursorY=(y); }
67: /* EXTERN Function Prototype(s) */
68: void GLCD_LcdInit (void);
69: void lcd_clear_graphics (void);
70: void GLCD_DisplayPicture (const uint8_t *pointer);
71: //void GLCD_Locate (uint8_t, uint8_t);
72: void GLCD_Print (const char *);
73: //uint8_t lcd_putsp(const char *);
74: //void lcd_puts (const char *);
75: //void lcd_clrs(char *);
76: //void GLCD_Clearchar(char);
77: void clr_display(void);
78: void show_display(void);
79: void set_pixel(uint8_t x, uint8_t y);
80: void lcd_line(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);
81:
82: void write_buffer_display(uint8_t data);
83: void writeLow_buffer_display(int i, uint8_t data);
84: void writeHight_buffer_display(int i, uint8_t data);
85:
86: void write_lcd_display(uint8_t data);
87: void writeLow_lcd_display(int i, uint8_t data);
88: void writeHight_lcd_display(int i, uint8_t data);
89:
90: void zero_display(void);
91: void printF(uint8_t x, uint8_t y, int32_t Data);
92: uint8_t tiny_printp(uint8_t x, uint8_t y, const char *ptr);
93: uint8_t LcdDataRead(void);
94: void full_display(void);
95: void buffer_gotoxy(uint8_t x, uint8_t y);
96: void lcd_toxy(uint8_t x, uint8_t y);
97: void lcd_clear_graphics(void);
98: void lcd_load_Block_graphics(int x, int y, int index);
99: void lcd_clear_Block_graphics(int x, int y, int index);
100: void switch_frame(uint8_t index);
101: void SetInvert(uint8_t isOn);
102: void SetFont(uint8_t font_type);
103: void lcd_write_Block_graphics(int x, int y, int index);
104: void SetWriteTarget(uint8_t isOverWrite);
105: void Sleep(unsigned char a);
106:
107: int8_t drv_LcdWidth(void);
108: int8_t drv_LcdHeight(void);
109: int8_t drv_LcdPixelBits(void);
110: //void drv_LcdBackLightOn(void);
111: //uint8_t drv_LcdBackLightStatus(void);
112: //drv_LcdSetContrast(..);
113: //drv_LcdGetContrast(void);
114: //drv_SetLcdDrawType
115: //drv_GetLcdDrawType
116: void drv_LcdSetForegroundVRamBase(uint32_t);
117: uint32_t drv_LcdGetForegroundVRamBase(void);
118: void drv_LcdSetBackgroundVRamBase(uint32_t);
119: uint32_t drv_LcdGetBackgroundVRamBase(void);
120: //drv_LcdUpdate(void);
121: //drv_LcdUpdateArea(..);
122: //drv_DrawPixel
123: //drv_DrawVLine(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2)
124: //drv_DrawHLine(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2)
125: //drv_DrawLine(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2)
126: //drv_DrawRect(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2)
127: //drv_GetImage(..);
128: //drv_PutImage
129: //void drv_ClearScreen(void)
130: void drv_DrawChar(char);
131: void drv_ClearChar(char);
132: void drv_DrawString(const char *);
133: void drv_ClearString(const char *);
134:
135: extern void (*lcd_gotoxy) (uint8_t, uint8_t);
136: /* Global variables */
137: extern unsigned char u8CursorX, u8CursorY;
138: extern unsigned char dispPage, dispx;
139: extern uint32_t* s_spi_module;
140: #endif
141:
watch.h
1: #ifndef __WATCH_DISPLAY
2: #ifndef __WATCH_DISPLAY
3: #define __WATCH_DISPLAY
4: #include "ble_cts_date_time.h"
5: #include "Fonts_Graphic.h"
6: #include "SSD1306.h"
7:
8: //rename the font name (for message, date,calendar,time..)
9: // typedef FONT_INFO microsoftSansSerif_8ptFontInfo Font_Message;
10: // typedef FONT_INFO consolas_16ptFontInfo Font_NotiNum;
11: // typedef FONT_INFO date_16ptFontInfo Font_other;
12: // typedef FONT_INFO consolas_32ptFontInfo Font_Time;
13: //define the data struct for ble watch
14: //
15:
16: //define the macro
17: //define the font rename.
18: #define FONT_MESSAGE 0//microsoftSansSerif_8ptFontInfo
19: #define FONT_NOTINUM 1//consolas_16ptFontInfo
20: #define FONT_OTHER 2//date_16ptFontInfo
21: #define FONT_TIME 3//consolas_32ptFontInfo
22:
23: //define the origin point
24: #define ORIGIN_POINTX 0
25: #define ORIGIN_POINTY 0
26: #define ORIGIN (ORIGIN_POINTX,ORIGIN_POINTY)
27:
28: #define MSINGLE_POINTX 65
29: #define MSINGLE_POINTY 0
30: #define MAIN_SINGLE (MSINGLE_POINTX,MSINGLE_POINTY)
31:
32: #define MBATTERY_POINTX 105
33: #define MBATTERY_POINTY 0
34: #define MAIN_BATTERY (MBATTERY_POINTX,MBATTERY_POINTY)
35:
36: #define MHOUR_POINTX 0
37: #define MHOUR_POINTY 3
38: #define MAIN_HOUR (MBATTERY_POINTX,MBATTERY_POINTY)
39:
40: #define MMINUTE_POINTX 53
41: #define MMINUTE_POINTY 3
42: #define MAIN_MINUTE (MMINUTE_POINTX,MMINUTE_POINTY)
43:
44: #define MAMPM_POINTX 100
45: #define MAMPM_POINTY 4
46: #define MAIN_MAMPM (MAMPM_POINTX,MAMPM_POINTY)
47:
48: #define MDATE_POINTX 0
49: #define MDATE_POINTY 6
50: #define MAIN_DATE (MDATE_POINTX,MDATE_POINTY)
51:
52: #define SINGLE_POINTX 2
53: #define SINGLE_POINTY 0
54: #define ET_SINGLE (SSINGLE_POINTX,SSINGLE_POINTY)
55:
56: #define BATTERY_POINTX 103
57: #define BATTERY_POINTY 0
58: #define ET_BATTERY (MBATTERY_POINTX,MBATTERY_POINTY)
59:
60: #define HOUR_POINTX 35
61: #define HOUR_POINTY 0
62: #define ET_HOUR (SHOUR_POINTX_POINTX,SHOUR_POINTX_POINTY)
63:
64: #define MINUTE_POINTX 70
65: #define MINUTE_POINTY 0
66: #define ET_MINUTE (SMINUTE_POINTX,SMINUTE_POINTY)
67:
68: #define SSETITEM_POINTX 55
69: #define SSETITEM_POINTY 3
70: #define SET_ITEM (SMINUTE_POINTX,SMINUTE_POINTY)
71:
72: #define SSELECT_POINTX 0
73: #define SSELECT_POINTY 3
74: #define SELECT_ITEM (SSELECT_POINTX,SSELECT_POINTY)
75:
76: #define PAIR_POINTX 15
77: #define PAIR_POINTY 2
78: #define PAIR_FRAM (PAIR_POINTX,PAIR_POINTY)
79:
80:
81: #define DIRECT_POINTX 90
82: #define DIRECT_POINTY 7
83: #define DIRECT_ITEM (SSELECT_POINTX,SSELECT_POINTY)
84:
85:
86: #define ALARM_HOUR_POINTX 41
87: #define ALARM_HOUR_POINTY 6
88: #define ALARM_HOUR (ALARM_HOUR_POINTX,ALARM_HOUR_POINTY)
89:
90: #define ALARM_MINUTE_POINTX 70
91: #define ALARM_MINUTE_POINTY 6
92: #define ALARM_MINUTE (ALARM_MINUTE_POINTX,ALARM_MINUTE_POINTY)
93:
94: #define NOTI_MAIL_POINTX 9
95: #define NOTI_MAIL_POINTY 6
96: #define NOTI_MAIL (NOTI_MAIL_POINTX,NOTI_MAIL_POINTY)
97:
98: #define NOTI_CALL_POINTX 54
99: #define NOTI_CALL_POINTY 6
100: #define NOTI_CALL (NOTI_CALL_POINTX,NOTI_CALL_POINTY)
101:
102: #define NOTI_SMS_POINTX 95
103: #define NOTI_SMS_POINTY 6
104: #define NOTI_SMS (NOTI_SMS_POINTX,NOTI_SMS_POINTY)
105:
106: #define ALARM_POINTX 55
107: #define ALARM_POINTY 3
108: #define ALARM_ICON (SMINUTE_POINTX,SMINUTE_POINTY)
109:
110: #define ANCS_ITEM1_X 0
111: #define ANCS_ITEM1_Y 3
112: #define ANCS_ITEM2_X 0
113: #define ANCS_ITEM2_Y 5
114: #define ANCS_ITEM3_X 0
115: #define ANCS_ITEM3_Y 5
116:
117: #define ADDBOOK_TITLE_X 50
118: #define ADDBOOK_TITLE_Y 0
119:
120: #define ADDBOOK_CONTENT_X 0
121: #define ADDBOOK_CONTENT_Y 3
122:
123: #define PERIOD_VALUE 12
124: #define WRITE_BUFFER 0
125: #define WRITE_LCD 1
126:
127: extern const FONT_INFO *pFontInfo;// = &consolas_16ptFontInfo;
128: //function for watch
129: uint32_t DispalyInt(void );
130: void Switch_Page(uint8_t index, const ble_cts_date_time_t a_sTime,unsigned char toSubMode);
131: void SetDisplayInvert(uint8_t isTurnOn);
132: //draw the single
133: //need assign the x/y point and the rf single.
134: void DrawSingle(uint8_t x, uint8_t y, int value);
135: void UpdateRSSIStatus(unsigned char WorkMode, unsigned char SubMode,int value);
136: //draw the battery
137: //need assign the x/y point and the barry value.
138: void UpdateBatteryStatus(unsigned char WorkMode, unsigned char SubMode,int value);
139: void DrawBattery(uint8_t x, uint8_t y, int value);
140:
141: void SetFont(uint8_t font_type);
142: //draw information display
143: void SetCurrent_period(const ble_cts_date_time_t a_sTime);
144: void SetCurrent_time(const ble_cts_date_time_t a_sTime);
145: void SetCalendar(const ble_cts_date_time_t a_sTime);
146: void SetSmall_time(const ble_cts_date_time_t a_sTime);
147: void DrawSettinnItem(uint8_t index);
148: void ClearSettinnItem(uint8_t index);
149: void DrawDirectBar(uint8_t index);
150: void SetNotiNum(int8_t index);
151: int8_t GetNotiNum(void);
152: void DisplayAncsData(uint8_t select,int8_t);
153: void ShowAlarm_time(const ble_cts_date_time_t a_sTime);
154: void ShowAlarmIcon(void);
155: void ClearAlarmIcon(void);
156:
157:
158: //work mode
159: uint8_t isEntryIdle(void);
160: void m_oled_goto_idle(void);
161: void m_oled_go(void);
162: #endif
163: #define __WATCH_DISPLAY
164: #include "ble_cts_date_time.h"
165: #include "Fonts_Graphic.h"
166: #include "SSD1306.h"
167:
168: //rename the font name (for message, date,calendar,time..)
169: // typedef FONT_INFO microsoftSansSerif_8ptFontInfo Font_Message;
170: // typedef FONT_INFO consolas_16ptFontInfo Font_NotiNum;
171: // typedef FONT_INFO date_16ptFontInfo Font_other;
172: // typedef FONT_INFO consolas_32ptFontInfo Font_Time;
173: //define the data struct for ble watch
174: //
175:
176: //define the macro
177: //define the font rename.
178: #define FONT_MESSAGE 0//microsoftSansSerif_8ptFontInfo
179: #define FONT_NOTINUM 1//consolas_16ptFontInfo
180: #define FONT_OTHER 2//date_16ptFontInfo
181: #define FONT_TIME 3//consolas_32ptFontInfo
182:
183: //define the origin point
184: #define ORIGIN_POINTX 0
185: #define ORIGIN_POINTY 0
186: #define ORIGIN (ORIGIN_POINTX,ORIGIN_POINTY)
187:
188: #define MSINGLE_POINTX 65
189: #define MSINGLE_POINTY 0
190: #define MAIN_SINGLE (MSINGLE_POINTX,MSINGLE_POINTY)
191:
192: #define MBATTERY_POINTX 105
193: #define MBATTERY_POINTY 0
194: #define MAIN_BATTERY (MBATTERY_POINTX,MBATTERY_POINTY)
195:
196: // #define MHOUR_POINTX 1
197: // #define MHOUR_POINTY 3
198: // #define MAIN_HOUR (MBATTERY_POINTX,MBATTERY_POINTY)
199:
200: // #define MMINUTE_POINTX 55
201: // #define MMINUTE_POINTY 3
202: // #define MAIN_MINUTE (MMINUTE_POINTX,MMINUTE_POINTY)
203:
204: #define MAMPM_POINTX 100
205: #define MAMPM_POINTY 4
206: #define MAIN_MAMPM (MAMPM_POINTX,MAMPM_POINTY)
207:
208: #define MDATE_POINTX 0
209: #define MDATE_POINTY 6
210: #define MAIN_DATE (MDATE_POINTX,MDATE_POINTY)
211:
212: #define SINGLE_POINTX 2
213: #define SINGLE_POINTY 0
214: #define ET_SINGLE (SSINGLE_POINTX,SSINGLE_POINTY)
215:
216: #define BATTERY_POINTX 103
217: #define BATTERY_POINTY 0
218: #define ET_BATTERY (MBATTERY_POINTX,MBATTERY_POINTY)
219:
220: #define ANCS_NOTI_POINTX 90
221: #define ANCS_NOTI_POINTY 0
222: #define ANCS_NOTI (MBATTERY_POINTX,MBATTERY_POINTY)
223:
224: // #define HOUR_POINTX 38
225: // #define HOUR_POINTY 0
226: // #define ET_HOUR (SHOUR_POINTX_POINTX,SHOUR_POINTX_POINTY)
227:
228: #define MINUTE_POINTX 70
229: #define MINUTE_POINTY 0
230: #define ET_MINUTE (SMINUTE_POINTX,SMINUTE_POINTY)
231:
232: #define SSETITEM_POINTX 55
233: #define SSETITEM_POINTY 3
234: #define SET_ITEM (SMINUTE_POINTX,SMINUTE_POINTY)
235:
236: #define SSELECT_POINTX 0
237: #define SSELECT_POINTY 3
238: #define SELECT_ITEM (SSELECT_POINTX,SSELECT_POINTY)
239:
240: #define PAIR_POINTX 15
241: #define PAIR_POINTY 2
242: #define PAIR_FRAM (PAIR_POINTX,PAIR_POINTY)
243:
244:
245: #define DIRECT_POINTX 90
246: #define DIRECT_POINTY 7
247: #define DIRECT_ITEM (SSELECT_POINTX,SSELECT_POINTY)
248:
249:
250: #define ALARM_HOUR_POINTX 41
251: #define ALARM_HOUR_POINTY 6
252: #define ALARM_HOUR (ALARM_HOUR_POINTX,ALARM_HOUR_POINTY)
253:
254: #define ALARM_MINUTE_POINTX 70
255: #define ALARM_MINUTE_POINTY 6
256: #define ALARM_MINUTE (ALARM_MINUTE_POINTX,ALARM_MINUTE_POINTY)
257:
258: #define NOTI_MAIL_POINTX 9
259: #define NOTI_MAIL_POINTY 6
260: #define NOTI_MAIL (NOTI_MAIL_POINTX,NOTI_MAIL_POINTY)
261:
262: #define NOTI_CALL_POINTX 54
263: #define NOTI_CALL_POINTY 6
264: #define NOTI_CALL (NOTI_CALL_POINTX,NOTI_CALL_POINTY)
265:
266: #define NOTI_SMS_POINTX 95
267: #define NOTI_SMS_POINTY 6
268: #define NOTI_SMS (NOTI_SMS_POINTX,NOTI_SMS_POINTY)
269:
270: #define ALARM_POINTX 55
271: #define ALARM_POINTY 3
272: #define ALARM_ICON (SMINUTE_POINTX,SMINUTE_POINTY)
273:
274: #define SPORT_POINTX 5
275: #define SPORT_POINTY 4
276: #define SPORT_FRAM (SPORT_POINTX,SPORT_POINTX)
277:
278:
279: #define ANCS_ITEM1_X 0
280: #define ANCS_ITEM1_Y 3
281: #define ANCS_ITEM2_X 0
282: #define ANCS_ITEM2_Y 5
283: #define ANCS_ITEM3_X 0
284: #define ANCS_ITEM3_Y 5
285:
286: #define GPS_DIS_POINTX 40
287: #define GPS_DIS_POINTY 3
288:
289: #define FILENAME_POINTX 38
290: #define FILENAME_POINTY 6
291:
292: #define ACC_COUNT_POINTX 38
293: #define ACC_COUNT_POINTY 6
294:
295: #define MUSIC_CONTROL_POINTX 100
296: #define MUSIC_CONTROL_POINTY 4
297:
298: #define PERIOD_VALUE 12
299: #define WRITE_BUFFER 0
300: #define WRITE_LCD 1
301:
302: #define TURN_ON 1
303: #define TURN_OFF 0
304:
305: extern const FONT_INFO *pFontInfo;// = &consolas_16ptFontInfo;
306: //function for watch
307: uint32_t DispalyInt(void );
308: void Switch_Page(uint8_t index, const ble_cts_date_time_t a_sTime,unsigned char toSubMode);
309: void SetDisplayInvert(uint8_t isTurnOn);
310: //draw the single
311: //need assign the x/y point and the rf single.
312: void DrawSingle(uint8_t x, uint8_t y, int value);
313: void UpdateRSSIStatus(unsigned char WorkMode, unsigned char SubMode,int value);
314: //draw the battery
315: //need assign the x/y point and the barry value.
316: void UpdateBatteryStatus(unsigned char WorkMode, unsigned char SubMode,int value);
317: void DrawBattery(uint8_t x, uint8_t y, int value);
318:
319: void SetFont(uint8_t font_type);
320: //draw information display
321: void SetCurrent_period(const ble_cts_date_time_t a_sTime);
322: void SetCurrent_time(const ble_cts_date_time_t a_sTime);
323: void SetCalendar(const ble_cts_date_time_t a_sTime);
324: void SetSmall_time(const ble_cts_date_time_t a_sTime);
325: void DrawSettinnItem(uint8_t index);
326: void ClearSettinnItem(uint8_t index);
327: void DrawDirectBar(uint8_t index);
328: void SetNotiNum(int8_t index);
329: int8_t GetNotiNum(void);
330: void DisplayAncsData(uint8_t select,int8_t);
331: void ShowAlarm_time(const ble_cts_date_time_t a_sTime);
332: void ShowAlarmIcon(void);
333: void ClearAlarmIcon(void);
334: void ClearNotiIcon(void);
335: void DrawNotiIcon(void);
336: void ClearNotiIcon(void);
337: void ClearSingle(uint8_t x, uint8_t y);
338: void DisplayAddressBook(uint8_t *);
339: uint8_t* GetAddressBookData(uint8_t select, int8_t index);
340: void ShowGPS_Distance(const uint16_t dis);
341: void ShowFileName(const uint8_t* filename);
342: void ShowAcc_Count(const uint16_t dis);
343: //work mode
344: uint8_t isEntryIdle(void);
345: void m_oled_goto_idle(void);
346: void m_oled_go(void);
347: void DrawMusicControl(uint8_t isTurnOn);
348: void DrawSportControl(uint8_t isTurnOn);
349:
350: #endif
font_graphic.h
1: #ifndef __FONTS_GRAPHIC
2: #define __FONTS_GRAPHIC
3: #include <stdint.h>
4: #include <string.h>
5:
6: //for the version 0.4 ble watch
7:
8: #define SIGNAL_80 0 // 80%
9: #define SIGNAL_60 1 // 60%
10: #define SIGNAL_40 2 // 40%
11: #define SIGNAL_20 3 // 20%
12: #define SIGNAL_00 4 // 00%
13:
14: #define BATTERY_80 5 //battery 80
15: #define BATTERY_60 6 //battery 60
16: #define BATTERY_40 7 //battery 40
17: #define BATTERY_20 8 //battery 40
18:
19: #define BULB_ON 9
20: #define BULB_OFF 10
21:
22: #define LEFT 11
23: #define RIGHT 12
24:
25: #define ALL_BLACK 13 //10
26: #define HALF_BLACK 14 //50
27: #define LOW_BLACK 15 //100
28:
29: #define BUZZER_OFF 16
30: #define BUZZER_ON 17
31:
32: #define VIBRATEICON 18
33:
34: #define PAIR 19
35: #define UNPAIR 20
36:
37: #define PULL_LEFT 21
38: #define PULL_MID 22
39: #define PULL_RIG 23
40: #define SELECT_LIGHT 24
41: #define SELECT_BUZZER 25
42: #define TOPAIR 26
43: #define TOFINDME 27
44: #define SPORTMODE 28
45: #define MUSIC_PLAY_ICON 29
46: #define MUSIC_PAUSE_ICON 30
47: #define SPORT_START_ICON 31
48: #define SPORT_STOP_ICON 32
49: //-------------
50: #define MAIN_FRAME 0
51: #define SETTING_FRAME 1
52: #define SELECT_FRAME 2
53: #define ALARM_FRAME 3
54: #define NOTI_FRAME 4
55: #define NNOTI_FRAME 5
56: #define PAIR_FRAME 6
57: #define ADDRESS_FRAME 7
58: #define FINEME_FRAME 8
59: #define SPORT_FRAME 9
60: //define the font rename.
61: #define FONT_MESSAGE 0//microsoftSansSerif_8ptFontInfo
62: #define FONT_NOTINUM 1//consolas_16ptFontInfo
63: #define FONT_OTHER 2//date_16ptFontInfo
64: #define FONT_TIME 3//consolas_32ptFontInfo
65:
66: // This structure describes a single character's display information
67: typedef struct
68: {
69: const uint8_t widthBits; // width, in bits (or pixels), of the character
70: const uint8_t hightByte; // hight, in bits (or pixels), of the character
71: const uint16_t offset; // offset of the character's bitmap, in bytes, into the the FONT_INFO's data array
72: } FONT_CHAR_INFO;
73:
74: // Describes a single font
75: typedef struct
76: {
77: const uint8_t heightPages; // height, in pages (8 pixels), of the font's characters
78: const uint8_t startChar; // the first character in the font (e.g. in charInfo and data)
79: const uint8_t endChar; // the last character in the font
80: const uint8_t spacePixels; // number of pixels that a space character takes up
81: const FONT_CHAR_INFO* charInfo; // pointer to array of char information
82: const uint8_t* data; // pointer to generated array of character visual representation
83: } FONT_INFO;
84:
85: // This structure describes a single character's display information
86: typedef struct
87: {
88: const uint8_t widthBits; // width, in bits (or pixels), of the character
89: const uint8_t hightByte; // hight, in bits (or pixels), of the character
90: const uint16_t offset; // offset of the character's bitmap, in bytes, into the the FONT_INFO's data array
91: } GRAHPIC_PIC_INFO;
92:
93: // Describes a grahpic
94: typedef struct
95: {
96: const uint8_t m_version;
97: const uint8_t s_version; // the first character in the font (e.g. in charInfo and data)
98: const GRAHPIC_PIC_INFO* grahInfo; // pointer to array of char information
99: const uint8_t* data; // pointer to generated array of character visual representation
100: } FIXGRAHPIC_INFO;
101:
102:
103: // This structure describes a single character's display information
104: typedef struct
105: {
106: const uint8_t widthBits; // width, in bits (or pixels), of the character
107: const uint8_t hightByte; // hight, in bits (or pixels), of the character
108: const uint16_t offset; // offset of the character's bitmap, in bytes, into the the FONT_INFO's data array
109: } FRAME_INFO;
110: // Describes a frame stack
111: typedef struct
112: {
113: const uint8_t m_version;
114: const uint8_t s_version; // the first character in the font (e.g. in charInfo and data)
115: const FRAME_INFO* grahInfo; // pointer to array of char information
116: const uint8_t* data; // pointer to generated array of character visual representation
117: } FRAMEGRAHPIC_INFO;
118:
119: //for the font assert,for the ssd1306
120: extern const FONT_INFO fiveBySevenFontInfo;
121: extern const FONT_INFO microsoftSansSerif_8ptFontInfo;
122: extern const FONT_INFO consolas_16ptFontInfo;
123: extern const FONT_INFO date_16ptFontInfo ;
124: extern const FONT_INFO consolas_32ptFontInfo;
125:
126: // for graphic assert
127: extern const FIXGRAHPIC_INFO watch_graphic ;
128: extern const FRAMEGRAHPIC_INFO frame_graphic;
129:
130: #endif
bitmapDb.h
1: /**************************************************************************
2: *
3: * FILE NAME: bitmapDb.h
4: * FILE DESCRIPTION: Database of all bitmaps in the system
5: *
6: * FILE CREATION DATE: 24-07-2009
7: *
8: *==========================================================================
9: *
10: * Modification history:
11: * --------------------
12: * 01a,24jul09 erd written
13: *
14: ***************************************************************************/
15:
16: #ifndef __BITMAP_DB_H_
17: #define __BITMAP_DB_H_
18:
19: // ==========================================================================
20: // structure definition
21: // ==========================================================================
22:
23: // This structure describes a single character's display information
24: typedef struct
25: {
26: const uint_8 widthBits; // width, in bits (or pixels), of the character
27: const uint_16 offset; // offset of the character's bitmap, in bytes, into the the FONT_INFO's data array
28:
29: } FONT_CHAR_INFO;
30:
31: // Describes a single font
32: typedef struct
33: {
34: const uint_8 heightPages; // height, in pages (8 pixels), of the font's characters
35: const uint_8 startChar; // the first character in the font (e.g. in charInfo and data)
36: const uint_8 endChar; // the last character in the font
37: const uint_8 spacePixels; // number of pixels that a space character takes up
38: const FONT_CHAR_INFO* charInfo; // pointer to array of char information
39: const uint_8* data; // pointer to generated array of character visual representation
40:
41: } FONT_INFO;
42:
43: #endif /* __BITMAP_DB_H_ */
ref:
http://www.pavius.net/2009/07/the-dot-factory-an-lcd-font-and-image-generator/
https://github.com/pavius/The-Dot-Factory
backup:
https://drive.google.com/file/d/0B2uYQcUgyMUJbGJ2YnVWbjhlMDQ/edit?usp=sharing
https://drive.google.com/file/d/0B2uYQcUgyMUJZ3NhdkNXT0ljS28/edit?usp=sharing