本文来源电子发烧友社区,作者: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文章
17316浏览量
352404 -
先楫半导体
+关注
关注
10文章
217浏览量
2173
发布评论请先 登录
相关推荐
有奖提问!先楫半导体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
评论