本打算先以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所有,任何人未经允许禁止转载。