[PIC®/AVR®/dsPIC®产品] ATMega4809 Curiosity Nano 开发板驱动OLED屏显示

[复制链接]
3113|4
 楼主| jinglixixi 发表于 2020-8-24 01:33 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2020-8-30 00:58 编辑

Mega4809Curiosity Nao 开发板是一款近于最小系统的核心板,因此其资源基本可以完全供用户使用。
为使该开发板有一个可供直接观查的窗口,故为它配置了一个OLED显示屏。此外,值得指出的是在程序下载时是不可带着显示屏的,否则无法进行下载。
要在该开发板上驱动OLED屏显示,要完成的主要有3件事:
1)指定驱动OLED屏的I/O口
2)设置延时程序
3)配置OLED屏的显示函数
1. 驱动引脚的配置
为驱动OLED屏,所使用的2个I/O口是PF3和PF4,对应的连接关系为:
SDA---PF3
SCL---PF4
引脚配置如图1所示

图1 引脚配置
2.设置延时
按图2 所示,使用系统的资源可生成延时函数,所得到的毫秒级的延时函数为:
  1. void DELAY_milliseconds(uint16_t milliseconds)
  2. {
  3.   while(milliseconds--){
  4.   _delay_ms(1);
  5.   }
  6. }
图2 生成延时函数

3. 配置显示函数
由于本次所使用的OLED屏是I2C接口的,使用只需I/O口即可模拟产生。
其中的IIC_Start()函数和IIC_Stop()函数的内容如下:
  1. void IIC_Start()
  2. {
  3.    SCL_SetHigh();           
  4.    SDA_SetHigh();
  5.    SDA_SetLow();
  6.    SCL_SetLow();
  7. }

  8. void IIC_Stop()
  9. {
  10.    SCL_SetLow();
  11.    SDA_SetLow();
  12.    SCL_SetHigh();
  13.    SDA_SetHigh();
  14. }

OLED屏的初始化函数为:
  1. void OLED_Init(void)
  2. {
  3.          DELAY_milliseconds(500);
  4.          OLED_WrCmd(0xae);
  5.          OLED_WrCmd(0x00);
  6.          OLED_WrCmd(0x10);
  7.          OLED_WrCmd(0x40);
  8.          OLED_WrCmd(0x81);
  9.          OLED_WrCmd(Brightness);
  10.          OLED_WrCmd(0xa1);
  11.          OLED_WrCmd(0xc8);
  12.          OLED_WrCmd(0xa6);
  13.          OLED_WrCmd(0xa8);
  14.          OLED_WrCmd(0x3f);
  15.          OLED_WrCmd(0xd3);
  16.          OLED_WrCmd(0x00);
  17.          OLED_WrCmd(0xd5);
  18.          OLED_WrCmd(0x80);
  19.          OLED_WrCmd(0xd9);
  20.          OLED_WrCmd(0xf1);
  21.          OLED_WrCmd(0xda);
  22.          OLED_WrCmd(0x12);
  23.          OLED_WrCmd(0xdb);
  24.          OLED_WrCmd(0x40);
  25.          OLED_WrCmd(0x20);
  26.          OLED_WrCmd(0x02);
  27.          OLED_WrCmd(0x8d);
  28.          OLED_WrCmd(0x14);
  29.          OLED_WrCmd(0xa4);
  30.          OLED_WrCmd(0xa6);
  31.          OLED_WrCmd(0xaf);
  32.          OLED_Fill(0x00);
  33.          OLED_Set_Pos(0,0);
  34. }

显示图3所示效果的主程序为:
  1. int main(void)
  2. {
  3.     /* Initializes MCU, drivers and middleware */
  4.     SYSTEM_Initialize();
  5.     OLED_Init();
  6.     OLED_CLS();
  7.     OLED_P8x16Str(0,0,"ATmega4809");
  8.     OLED_P8x16Str(0,2,"OLED Display");
  9.     /* Replace with your application code */
  10.     while (1){
  11.         LED_Toggle();
  12.         DELAY_milliseconds(500);
  13.     }
  14. }
3 显示效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
lcczg 发表于 2020-8-24 09:51 | 显示全部楼层
赞一个!
 楼主| jinglixixi 发表于 2020-8-24 13:26 | 显示全部楼层

感谢支持!
CoolSilicon 发表于 2020-8-24 13:50 | 显示全部楼层
跑起来了,效果看起来不错啊.
 楼主| jinglixixi 发表于 2020-8-24 14:02 | 显示全部楼层
CoolSilicon 发表于 2020-8-24 13:50
跑起来了,效果看起来不错啊.

是的,刷新速度也较快,拍照时需连拍,否则难获得好的效果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部