[CW32F030系列] 【CW32F030CxTx StartKit测评】CW32+OLED

[复制链接]
1412|10
 楼主| 51xlf 发表于 2022-7-6 15:09 | 显示全部楼层 |阅读模式
PA, cw, ic, ar
这里要驱动是IIC接口的OLED,没有使用硬件IIC,这样便于移植相关的程序到其他的芯片上。
搜狗截图22年07月06日1459_1.jpg
oled的资料就不再赘述了。
OLED和CW32F030CxTx的对应接口是PA3--SCL,PA4--SDA
使用宏定义,便于后期好修改IO口。
#define OLED_SCLK_Pin GPIO_PIN_3
#define OLED_SCLK_GPIO_Port CW_GPIOA
#define OLED_SDIN_Pin GPIO_PIN_4
#define OLED_SDIN_GPIO_Port CW_GPIOA
使用宏定义,确定SCL和SDA的IO操作。CW库里面直接给定义好了如何给IO置高或者置低。
cw32f030_gpio.h里面有所有的IO的操作。
#define OLED_SCLK_Clr() PA03_SETLOW()//SCL  拉低
#define OLED_SCLK_Set() PA03_SETHIGH()   //SCL  拉高

#define OLED_SDIN_Clr() PA04_SETLOW()//SDA  拉低
#define OLED_SDIN_Set() PA04_SETHIGH()  //SDA  拉高
初始化一下IO口。
GPIO_InitTypeDef GPIO_InitStructure;
            __RCC_GPIOA_CLK_ENABLE();
    GPIO_InitStructure.Pins = OLED_SDIN_Pin|OLED_SCLK_Pin;
    GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStructure.IT = GPIO_IT_NONE;
        GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
    GPIO_Init(OLED_SDIN_GPIO_Port, &GPIO_InitStructure);
其他的设置都是开发板默认的设置了。
  1.    OLED_Init();
  2.     OLED_Clear();
  3.     OLED_ShowStringCN(0,16,"芯源CW32 MCU ",1);
  4.     OLED_ShowString(0,0,"bbs.21ic.com",16,1); //表示x=4,y=8开始显示字符串
  5.     OLED_Refresh();
主要是介绍一下,如何将汉字和英文字符混合显示。
void OLED_ShowStringCN(uint8_t x,uint8_t y,uint8_t *chr,uint8_t mode)
{   unsigned short k,x0;
    unsigned char i,j;
    while(*chr) {
        if((*chr) < 128)
        {
            OLED_ShowChar(x,y,*chr,16,mode);
            x+=8;
            chr++;
        } else {

            for (k=0; k<hz16_num; k++)
            {
                if ((hz16[k].Index[0]==*(chr))&&(hz16[k].Index[1]==*(chr+1)))
                {
                    for(i=0; i<16; i++)
                    {
                        for(j=0; j<8; j++)
                        {
                            if(hz16[k].Msk[i*2]&(0x80>>j))        OLED_DrawPoint(x+j,y+i,mode);
                            else {
                                OLED_DrawPoint(x+j,y+i,!mode);;
                            }
                        }
                        for(j=0; j<8; j++)
                        {
                            if(hz16[k].Msk[i*2+1]&(0x80>>j))        OLED_DrawPoint(x+j+8,y+i,mode);
                            else
                            {
                                OLED_DrawPoint(x+j+8,y+i,!mode);;
                            }
                        }
                    }
                }
            }
            chr+=2;
            x+=16;
        }

    }
}
看看显示的效果怎么样?
搜狗截图22年07月06日1508_2.jpg

源代码:

CW32F030.rar (2.99 MB, 下载次数: 6)

vivilyly 发表于 2022-11-5 09:42 | 显示全部楼层
这个OLED如何显示图片呢              
febgxu 发表于 2022-11-5 09:56 | 显示全部楼层
这个为什么还需要在内部设置一个数组保存数据呢?
loutin 发表于 2022-11-5 10:14 | 显示全部楼层
这个可以驱动LCD的硬件吗?              
kkzz 发表于 2022-11-5 10:51 | 显示全部楼层
OLED的驱动芯片是什么?              
cemaj 发表于 2022-11-5 11:25 | 显示全部楼层
CW32F030CxTx对OLED的刷新操作速度一般,需要自己来精确控制刷新演示。
uytyu 发表于 2022-11-5 12:09 | 显示全部楼层
这个寄存器操作的时候,需要在哪里查看
mnynt121 发表于 2022-12-3 12:33 | 显示全部楼层
这个OLED的驱动在哪里?              
bartonalfred 发表于 2022-12-3 12:42 | 显示全部楼层
使用的是哪款驱动芯片呢、              
tifmill 发表于 2022-12-3 14:01 | 显示全部楼层
可以使用硬件iic驱动吗?              
macpherson 发表于 2022-12-3 15:37 | 显示全部楼层
最大的刷屏速度可以到多少?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

551

主题

9967

帖子

24

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