日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1.3寸OLED 12864 sh1106带中文字库液晶屏介绍

發布時間:2024/8/1 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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單片機為例:

  • 顯示相關函數
void OLED_Display_GB2312_string(u8 x,u8 y,u8 *text); void OLED_Display_string_5x7(u8 x,u8 y,u8 *text); void OLED_ShowNum(u8 x,u8 y,float num,u8 len); void OLED_Display_128x64(u8 *dp); void OLED_Display_16x16(u8 x,u8 y,u8 *dp); void OLED_Display_8x16(u8 x,u8 y,u8 *dp); void OLED_Display_5x7(u8 x,u8 y,u8 *dp); //舉例: OLED_Display_GB2312_string(0,0,"12864,帶中文字庫"); OLED_Display_16x16(97,6,jiong1);/*在第7頁,第81列顯示單個自編生僻漢字“囧”*/ OLED_Display_string_5x7(0,2,"<!@#$%^&*()_-+]/;.,?[");/*在第3頁,第1列,顯示一串5x7點陣的ASCII字*/

中文顯示的過程,可以從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++;} }
  • 首先對將要顯示的字符串從字庫芯片里面字符地址逐一查詢:

查詢字符的過程:

  • 字符的地址獲取: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;
  • 通過字符地址,去獲取字符數據。
  • 取32個字節的數據,存到"fontbuf[32]" OLED_get_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,32); //從相關地址(addrHigh:地址高字節,addrMid:地址中字節,addrLow:地址低字節)中連續讀出DataLen個字節的數據到 pbuff的地址 //連續讀取 void OLED_get_data_from_ROM(u8 addrHigh,u8 addrMid,u8 addrLow,u8 *pbuff,u8 DataLen) {u8 i;OLED_ROM_CS_Clr();//這里將字庫芯片SPI片選(CS引腳)拉低,訪問有效Send_Command_to_ROM(0x03);Send_Command_to_ROM(addrHigh);Send_Command_to_ROM(addrMid);Send_Command_to_ROM(addrLow);for(i=0;i<DataLen;i++){*(pbuff+i)=Get_data_from_ROM();}OLED_ROM_CS_Set();//這里獲取完字符數據后,將字庫片選引腳(CS引腳)拉高 }
  • 從字庫芯片取到數據后,顯示到OLED屏幕上。
  • //顯示漢字到LCD上,y為頁地址,x為列地址,fontbuf[]為數據 OLED_Display_16x16(x,y,fontbuf); //顯示16x16點陣圖像、漢字、生僻字或16x16點陣的其他圖標 void OLED_Display_16x16(u8 x,u8 y,u8 *dp) {u8 i,j;for(j=0;j<2;j++){OLED_address(x,y);for(i=0;i<16;i++){OLED_WR_Byte(*dp,OLED_DATA); //寫數據到OLED,每寫完一個8位的數據后列地址自動加1dp++;}y++;} }

    對于使用者來說,只需關系如何調傭即可,無需關系是如何實現,這塊液晶屏也是借助的第三方的字庫芯片來實現的。


    ??有愛情,便全心對待,沒有愛情,也一個人愜意。學會一個人生活,不論身邊是否有人疼愛。做好自己該做的,有愛或無愛,都安然對待。緣份到了,便去伸手抓住,緣份未到,就讓自己活得精彩。愛情,本就是件寧缺勿濫的事,急不得。

    總結

    以上是生活随笔為你收集整理的1.3寸OLED 12864 sh1106带中文字库液晶屏介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。