本文來源電子發燒友社區,作者:jennyzhaojie, 帖子地址:https://bbs.elecfans.com/jishu_2284197_1_1.html
HPM6750EVKMINI是一款外設及接口十分豐富的開發板,它所提供的LCD接口是通過窄間距的線排來連接顯示屏,由于手頭沒有這種顯示的顯示屏,只好以最小的資源占用為其配置一個I2C接口的顯示屏,除了進行視頻顯示它還是可以滿足一般的顯示需求的,其顯示效果如圖1所示。
HPM6750EVKMINI是一款外設及接口十分豐富的開發板,它所提供的LCD接口是通過窄間距的線排來連接顯示屏,由于手頭沒有這種顯示的顯示屏,只好以最小的資源占用為其配置一個I2C接口的顯示屏,除了進行視頻顯示它還是可以滿足一般的顯示需求的,其顯示效果如圖1所示。
圖1 顯示效果
由圖1可知,該顯示屏可支持字符串、數值及漢字的顯示,且可顯示2種字體大小的顯示。
為防止引腳使用上的重疊,該顯示屏所使用的引腳為擴展接口上的引腳,其連接關系為:
SCL---PB13
SDA---PB14
圖2 引腳位置及名稱
將所用引腳配置為輸出模式的函數為:
在使用GPIO口模擬I2C通訊的情況下,實現高低電平輸出的語句定義為:
以GPIO口模擬I2C發送字節數據的函數如下:
由于開發板的工作主頻高達816MHz,因此在引腳輸出信號時,一定要加適當的延時,否則會影響顯示輸出。
兩種顯示字模的結構如下:
- unsignedchar F6x8[][6] =
- {
- 0x00,0x00, 0x00, 0x00, 0x00, 0x00,// sp
- 0x00,0x00, 0x00, 0x2f, 0x00, 0x00,// !
- 0x00,0x00, 0x07, 0x00, 0x07, 0x00,// "
- ...
- }
- unsignedchar F8X16[]=
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//0
- 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//!1
- 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"2
- ...
- }
在以上字庫的支持下,實現字符顯示的函數為:
- void OLED_ShowChar(uint8_t x,uint8_t y,uint8_t chr,uint8_t Char_Size)
- {
- unsigned char c=0,i=0;
- c=chr-' ';
- if(x>Max_Column-1)
- {
- x=0;
- y=y+2;
- }
- if(Char_Size ==16)
- {
- OLED_Set_Pos(x,y);
- for(i=0;i<8;i++) OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
- OLED_Set_Pos(x,y+1);
- for(i=0;i<8;i++) OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
- }
- else
- {
- OLED_Set_Pos(x,y);
- for(i=0;i<6;i++) OLED_WR_Byte(F6x8[c][i],OLED_DATA);
- }
- }
實現字符串顯示的函數為:
- void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr,uint8_t Char_Size)
- {
- unsigned char j=0;
- while (chr[j]!='')
- {
- OLED_ShowChar(x,y,chr[j],Char_Size);
- x+=8;
- if(x>120)
- {
- x=0;
- y+=2;
- }
- j++;
- }
- }
為實現漢字的顯示,需要自行構建一個小型的字庫,見圖3所示。
圖3 提取字模
配合該字庫的漢字顯示函數為:
- void OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no)
- {
- uint8_t t,adder=0;
- OLED_Set_Pos(x,y);
- for(t=0;t<16;t++)
- {
- OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
- adder+=1;
- }
- OLED_Set_Pos(x,y+1);
- for(t=0;t<16;t++)
- {
- OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
- adder+=1;
- }
- }
實現他顯示效果的主程序為:
- int main(void)
- {
- app_init_oled_pins();
- OLED_Init();
- OLED_Clear();
- OLED_ShowString(0,2,"HPM6750 EVKMINI",16);
- OLED_ShowString(20,4,"OLED test",16);
- OLED_ShowString(20,6,"jennyzhaojie",8);
- OLED_ShowCHinese(20,0,0);
- OLED_ShowCHinese(40,0,1);
- OLED_ShowCHinese(60,0,2);
- OLED_ShowCHinese(80,0,3);
- OLED_ShowCHinese(100,0,4);
- while(1);
- return 0;
- }
有了OLED屏的顯示功能,進行人機交互就方便了許多。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
mcu
+關注
關注
146文章
17171瀏覽量
351519 -
先楫半導體
+關注
關注
10文章
214瀏覽量
2127
發布評論請先 登錄
相關推薦
有獎提問!先楫半導體HPM6E00系列新品發布會!!
半導體HPM6E00新品預覽”的活動,盛況空前。
自此之后一直收到大家的信息,問什么時候能夠買到HPM6E00,這不,我們來了~
先楫
發表于 06-20 11:45
先楫半導體 hpm_sdk v1.5.0 正式發布
先楫半導體 hpm_sdk v1.5.0 正式發布!功能升級更強大
版本更新概況
新支持的IDE
IAR Embedded Workbench for RISC-V (測試版本3.20
發表于 04-08 11:14
先楫高性能MCU HPM6800系列產品生態綻放,共鏈未來
2024年3月28日,上海 - 國產高性能微控制器廠商上海先楫半導體科技有限公司(先楫半導體,H
芯原2.5D GPU IP賦能先楫半導體HPM6800系列RISC-V MCU
芯原股份(股票代碼:688521.SH)與先楫半導體(簡稱“先楫”)的合作,為高性能圖形處理領域帶來了新的突破。
【先楫HPM5361EVK開發板試用體驗】(原創)5.手把手實戰AI機械臂
與ChatGPT API結合,使機械臂能夠基于視覺信息和AI指令進行動作。
今天先更新到這里...
謝謝!
接上四篇:
【先楫HPM5361EVK開發
發表于 02-06 10:28
評論