[STM32WB]【STM32WBA52CG测评】+点阵模块的显示驱动

本文描述了一位开发者在尝试使用I2C接口的OLED屏失败后,转向使用点阵模块并成功点亮的过程。通过Arduino接口和Max7219芯片,详细展示了GPIO引脚配置、初始化及数据发送函数,并提供了主程序代码,实现了数字、字符和中文的显示。
摘要由CSDN通过智能技术生成

本打算先以I2C接口的OLED屏掌握第一个测试目标,无奈的是几经能力也没能成功,只好更换目的那点阵模块来测试一番。还别说,尽管它比OLED屏要多占用一个GPIO口,且它的能耗也比OLED屏要高,但它还是不负期待地被点亮了!

为了便于连接,所使用的引脚均由Arduino接口连接,点阵模块与开发板的具体连接关系为:
sda---pb4
cs ---pb3
scl---pa15

 


图1 使用接口

为使所用引脚输出高低电平其定义语句为;
#define DIN_SetHigh()  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,GPIO_PIN_SET)
#define DIN_SetLow()   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET)

#define CS_SetHigh()   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3,GPIO_PIN_SET)
#define CS_SetLow()    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3,GPIO_PIN_RESET)

#define CLK_SetHigh()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15,GPIO_PIN_SET)

#define CLK_SetLow()   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15,GPIO_PIN_RESET)该点阵模块所采用的芯片为Max7219,其所用引脚的配置函数为:
 

void max7219_GPIO_Init(void)

{

__HAL_RCC_GPIOB_CLK_ENABLE();

GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull  = GPIO_NOPULL; 

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

GPIO_InitStruct.Pin = GPIO_PIN_4;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_3;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

__HAL_RCC_GPIOA_CLK_ENABLE();

GPIO_InitStruct.Pin = GPIO_PIN_15;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}

Max7219发送字节数据的函数为:
 

void Write_Max7219_byte(char DATA)

{

   char i;

   CS_SetLow();

   for(i=8;i>=1;i--)

   {

     CLK_SetLow();

     if(DATA&0x80)

          DIN_SetHigh();

     else

          DIN_SetLow();

     DATA=DATA<<1;

     CLK_SetHigh();

   }

}

Max7219向指定寄存器发送数据的函数为:
 

void Write_Max7219(char address,chardat)

{

     CS_SetLow();

     Write_Max7219_byte(address);

     Write_Max7219_byte(dat);

     CS_SetHigh();

}

Max7219的初始化函数为:
 

void Init_MAX7219_D(void)

{

   Write_Max7219(0x0b, 0x07);

   Write_Max7219(0x0c, 0x01);

   Write_Max7219(0x0f, 0x00);

}

为进行测试,其主程序为:
 

int main(void)

{

unsigned int i,k,j=0;

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();

MX_ICACHE_Init();

max7219_GPIO_Init();

Init_MAX7219();

while(1)

{

       for(j=0;j<38;j++)

       {

          for(i=1;i<9;i++)

          {

                            Write_Max7219(i,disp[j][i-1]);

                            HAL_Delay(40);

           }

           HAL_Delay(200);

       }

}

}

经程序的编译和下载,其显示效果如图2至图4所示。

 

图2 显示数字

 


图3 显示字符

 


图4 显示中文

---------------------
作者:jinglixixi
链接:https://bbs.21ic.com/icview-3313774-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值