打印
[CW32F030系列]

【CW32F030CxTx StartKit测评】CW32+OLED

[复制链接]
754|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
51xlf|  楼主 | 2022-7-6 15:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
PA, cw, ic, ar
这里要驱动是IIC接口的OLED,没有使用硬件IIC,这样便于移植相关的程序到其他的芯片上。

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);
其他的设置都是开发板默认的设置了。
   OLED_Init();
    OLED_Clear();
    OLED_ShowStringCN(0,16,"芯源CW32 MCU ",1);
    OLED_ShowString(0,0,"bbs.21ic.com",16,1); //表示x=4,y=8开始显示字符串
    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;
        }

    }
}
看看显示的效果怎么样?


源代码:

CW32F030.rar (2.99 MB)

使用特权

评论回复
沙发
vivilyly| | 2022-11-5 09:42 | 只看该作者
这个OLED如何显示图片呢              

使用特权

评论回复
板凳
febgxu| | 2022-11-5 09:56 | 只看该作者
这个为什么还需要在内部设置一个数组保存数据呢?

使用特权

评论回复
地板
loutin| | 2022-11-5 10:14 | 只看该作者
这个可以驱动LCD的硬件吗?              

使用特权

评论回复
5
kkzz| | 2022-11-5 10:51 | 只看该作者
OLED的驱动芯片是什么?              

使用特权

评论回复
6
cemaj| | 2022-11-5 11:25 | 只看该作者
CW32F030CxTx对OLED的刷新操作速度一般,需要自己来精确控制刷新演示。

使用特权

评论回复
7
uytyu| | 2022-11-5 12:09 | 只看该作者
这个寄存器操作的时候,需要在哪里查看

使用特权

评论回复
8
mnynt121| | 2022-12-3 12:33 | 只看该作者
这个OLED的驱动在哪里?              

使用特权

评论回复
9
bartonalfred| | 2022-12-3 12:42 | 只看该作者
使用的是哪款驱动芯片呢、              

使用特权

评论回复
10
tifmill| | 2022-12-3 14:01 | 只看该作者
可以使用硬件iic驱动吗?              

使用特权

评论回复
11
macpherson| | 2022-12-3 15:37 | 只看该作者
最大的刷屏速度可以到多少?              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

534

主题

9586

帖子

23

粉丝