1.3寸OLED 12864 sh1106带中文字库液晶屏介绍
生活随笔
收集整理的這篇文章主要介紹了
1.3寸OLED 12864 sh1106带中文字库液晶屏介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.3寸OLED 12864 sh1106帶中文字庫液晶屏庫簡介
1.3寸OLED 12864 sh1106帶中文字庫SPI接口的液晶屏,這是一款來自中景園的屏幕。
屏幕技術資料介紹
鏈接:https://pan.baidu.com/s/1setO3KIlfqRFJ-utFWSKHQ 提取碼:8888- 包含51單片機和STM32案例,滿足不同單片機的應用開發需求。提供的案例相對來講很齊全的。
相關參數介紹
-
整體的屏幕參數:
-
原理圖
-
外部引腳接口定義
-
資料所包含有的規格書
GT20L16S1Y 標準點陣漢字字庫芯片介紹
??GT20L16S1Y是一款內含16x16點陣的漢字庫芯片,支持GB2312國標簡體漢字(含有國家信標委合法授權)、ASCIl字符。排列格式為豎置橫排。用戶通過字符內碼,利用我司所提供庫文件內的函數接口可直接讀取該內碼的點陣信息。
??GT20L16S1Y除含有上述字庫以外,芯片提供64KB可擦寫空間,包含16個扇區,每個扇區4K字節或16頁,每頁256字節,可自由寫入空間地址范圍為:0x6FFFF-0x7FFFF。僅支持上位機燒錄,可重復擦寫10萬次以上。
芯片參數:
- 數據總線:SPI串行總線接口
- 點陣排列方式:豎置橫排
- 時鐘頻率:45MHz@3.3V
- 工作電壓:2.7V~3.6V
- 電流:
工作電流:5-15mA
睡眠電流:1-5uA
- 工作溫度:-40℃~85℃
- 封裝:SOT23-6
- 字符集:GB2312
- 字號:16×16點陣
漢字顯示的調用過程
這里以STC單片機為例:
- 顯示相關函數
中文顯示的過程,可以從OLED_Display_GB2312_string(u8 x,u8 y,u8 *text)了解整個調用和實現的過程。
void OLED_Display_GB2312_string(u8 x,u8 y,u8 *text) {u8 i=0;u8 addrHigh,addrMid,addrLow;u8 fontbuf[32];while(text[i]>0x00){if((text[i]>=0xb0)&&(text[i]<=0xf7)&&(text[i+1]>=0xa1)){//國標簡體(GB2312)漢字在晶聯訊字庫IC中的地址由以下公式來計算://Address = ((MSB - 0xB0) * 94 + (LSB - 0xA1)+ 846)*32+ BaseAdd;BaseAdd=0//由于擔心8位單片機有乘法溢出問題,所以分三部取地址fontaddr=(text[i]-0xb0)*94;fontaddr+=(text[i+1]-0xa1)+846;fontaddr=fontaddr*32;addrHigh=(fontaddr&0xff0000)>>16; //地址的高8位,共24位addrMid=(fontaddr&0xff00)>>8; //地址的中8位,共24位addrLow=(fontaddr&0xff); //地址的低8位,共24位OLED_get_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,32);//取32個字節的數據,存到"fontbuf[32]"OLED_Display_16x16(x,y,fontbuf);//顯示漢字到LCD上,y為頁地址,x為列地址,fontbuf[]為數據x+=16;i+=2;}else if((text[i]>=0xa1)&&(text[i]<=0xa3)&&(text[i+1]>=0xa1)){fontaddr=(text[i]-0xa1)*94;fontaddr+=(text[i+1]-0xa1);fontaddr=fontaddr*32;addrHigh=(fontaddr&0xff0000)>>16;addrMid=(fontaddr&0xff00)>>8;addrLow=(fontaddr&0xff);OLED_get_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,32);OLED_Display_16x16(x,y,fontbuf);x+=16;i+=2;}else if((text[i]>=0x20)&&(text[i]<=0x7e)){unsigned char fontbuf[16];fontaddr=(text[i]-0x20);fontaddr=(unsigned long)(fontaddr*16);fontaddr=(unsigned long)(fontaddr+0x3cf80);addrHigh=(fontaddr&0xff0000)>>16;addrMid=(fontaddr&0xff00)>>8;addrLow=fontaddr&0xff;OLED_get_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,16);OLED_Display_8x16(x,y,fontbuf);x+=8;i+=1;}else i++;} }- 首先對將要顯示的字符串從字庫芯片里面字符地址逐一查詢:
查詢字符的過程:
8位單片機地址做了拆分獲取,再拼接:
fontaddr=(text[i]-0xb0)*94;fontaddr+=(text[i+1]-0xa1)+846;fontaddr=fontaddr*32;對于使用者來說,只需關系如何調傭即可,無需關系是如何實現,這塊液晶屏也是借助的第三方的字庫芯片來實現的。
總結
以上是生活随笔為你收集整理的1.3寸OLED 12864 sh1106带中文字库液晶屏介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数学建模】基于matlab银行多机排队
- 下一篇: zigbee协议栈工作流程 From z