因dt609專案開發,接觸到1602
和12864
兩款單色液晶模組的驅動開發。其中1602
是帶字型檔版本,而12864
則不是。帶字型檔的液晶模組一大優勢是內建cgram,支援gb2312
字型,因而軟體設計時只需要將**檔案設定成gb2312
格式,通過printf
就可以處理。而對於無字型檔模組,則需要軟體取模,制定陣列後進行呼叫,增加了很多任務作量。為提高研發效率,同時便於後期維護。在網上搜尋了諸多開源的字型檔軟體並對比後,最終選擇u8g2
字型檔進行移植。
本文主要分為三個部分,首先介紹u8g2
字型檔,其次介紹移植流程,最後介紹移植過程中的注意事項。
u8g2
是用於嵌入式裝置的單色圖形庫。u8g2
支援基於控制器(例如ssd1306
)的單色oled和lcd(有關支援的顯示控制器的完整列表,請參閱u8g2
/u8x8
設定指南)。
參照github上porting to new mcu platform指導,本平台控制器為7565,選擇full buff模式。因此驅動移植需要實現u8g2_setup_st7565_64128n_f
函式
void u8g2_setup_st7565_64128n_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb)
函式入參
含義可選項
u8g2
字型檔資料結構指標
rotation
顯示方向
0度,90度,180度,270度
byte_cb*
硬體通訊方式選擇
4線spi,硬體spi。。。
gpio_and_delay_cb**
管腳配置及延時
[*]硬體平台通訊方式選則4線模擬spi連線,byte_cb
直接呼叫字庫函式u8x8_byte_4wire_sw_spi
。
[**]gpio_and_delay_cb
實現如下:
uint8_t registergpioanddelayfunc(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr)
case u8x8_msg_delay_100nano:
case u8x8_msg_delay_10micro:
case u8x8_msg_delay_milli:
case u8x8_msg_gpio_cs:
else
break;
}case u8x8_msg_gpio_reset:
else
break;
}case u8x8_msg_gpio_spi_data:
else
break;
}case u8x8_msg_gpio_dc:
else
break;
}case u8x8_msg_gpio_spi_clock:
else
break;
}default:
}return 1;
}
完整字型檔初始化流程為:
u8g2
字型檔提供了完善的應用層介面函式,包括線、塊、圓、橢圓、三角形等等,我們在其基礎上又進行了一層封裝,用以適配原有的選單設計。詳細函式介面有:
函式介面
含義apisetfont
字型檔設定
lcd_enableshow
重新整理字型檔buf內容,顯示於螢幕
apiwritestr
寫入字元到資料結構中,不立即重新整理顯示
lcdouttext
輸出單行文字到視訊記憶體,並立即重新整理
lcd_clearbuffer
清空buf
apisethline
設定水平線
flashhline
閃爍水平線,游標效果
apicleanhline
擦除水平線,清除游標
實際應用中並不需要gb2312
全部中文字元,為節約**空間,選擇建立乙個自定義字型檔,並進行維護。
新建utf-8格式txt檔案,將用到的中文寫到其中,可以有回車換行,但是不能有ascii字元。
echo
'32-128,'
> myfont.map
cat str.txt |
iconv -f utf-8 -t c99 |
sed's/\\u\([0-9a-f]\\)/\$\1,\n/g'
|sort
|uniq
|sed
'/^$/d'|tr
'/a-f/'
'/a-f/'
>> myfont.map
bdfconv.exe -v -b 0 -f 1 -m ../myfont.map -n u8g2_font_myfont -o u8g2_font_myfont.c ../bdf/wenquanyi_10pt.bdf
注意: 參考文件3中的說明有誤,bdfconv**已無需修改。
u8g2_fonts.c
包含字型檔支援的所有字型陣列,可只留乙個自用的字型,其餘刪除。
u8g2_d_setup.c
包含所有的驅動函式介面,可只留至工程用到的,其餘刪除。
u8g2 github**庫
如何自定義中文字庫
bdfconv命令解釋
基於以7920為核心的點陣型lcd12864成熟**工程u8g2的移植
U8成本管理應用
概述 成本核算基本概念 u8成本管理系統的版本演化 與u8系列產品的介面 行業應用 成本核算基本概念 成本中心 在什麼範圍內核算成本 成本物件 核算誰的成本 成本費用專案 用什麼核算 表現 費用分配率 怎麼算 方法 行業應用 針對行業特性,開發重點行業 製藥 食品 包裝材料 機加工 服裝 家電等 積...
列表應用2 (day 8)
names liuyang yaopeng yp yaop 列表裡可巢狀列表 用二維陣列方式訪問 names 2 0 yp print names 0 2 1 切片片長 輸出 liuyang yaopeng yp yaop 起始值0,終止 1,步長1 均可以省略不寫 for i in names p...
U盤1G變8M解決辦法
本人曾有乙個大小為1g的紐曼u盤,在一年前不幸中毒,格式化之後就只剩8m了,然後再也無法正常格式化。雖然只有8m,但總覺得扔了可惜,於是乎,就一直束之高閣。昨天突然心血來潮,決定再試一試,純粹是死馬當活馬醫,想不到最後竟然被我弄好了,太有成就感了!其中曲折,聽我慢慢道來。只有8m的u盤既然無法採用正...