MAX7219点阵屏显示

一、硬件介绍

1、MAX7219是一种集成化的串行输入/输出共阴极显示驱动器(通过读时序图写程序是重要的步骤)

2、整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存 器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。

二、引脚连接

1、本次不使用级联,只需要接DIN一排引脚即可

2、CLK是时钟序列输入端。最大速率为 10MHz.在时钟的上升 沿,数据移入内部移位寄存器。下降沿时,数据从 DOUT 端输出。对 MAX7221 来说,只有当cs 端为低电平时时 钟输入才有效。

3、DIN是串行数据输入端口。在时钟上升沿时数据被载入内部 的 16 位寄存器。

4、DIN接PA1,CLK接PA3,CS接PA2。

三、使用说明

1、

由图可见,首先要先将CS线拉低,再重复将CLK线拉低再拉高重复8次,在CLK线变化的过程中DIN引脚依次得到8位数据的高位。重复以上时序,即可点亮点阵屏。

2、点阵字符工具可以自行网上搜索

四、代码编写(c文件中的延时函数自行查找)

1、MAX7219.c 

​
#include "stm32f10x.h"
#include "DELAY.H"
#include "MAX7219.H"

#define MAX7219_CLK  GPIO_Pin_3
#define MAX7219_CS	 GPIO_Pin_2
#define MAX7219_DIN  GPIO_Pin_1


void MAX7219_GPIO_Init(void)
{

	RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA,ENABLE);//参数:选择外设,选择新状态
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;//通用推挽输出
	GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
	GPIO_InitStructure.GPIO_Speed=  GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	
}

void Write_MAX7219_byte(uint8_t Data)
{
	uint8_t i;
	GPIO_ResetBits(GPIOA,MAX7219_CS);
	for(i=8;i>=1;i--)
	{
		Delay_ms(3);
		GPIO_ResetBits(GPIOA,MAX7219_CLK);
		if(Data&0x80)//高位先行,Data把最高位复制给MAX7219_DIN引脚
		{
			GPIO_SetBits(GPIOA,MAX7219_DIN);
		}
		else
		{
			GPIO_ResetBits(GPIOA,MAX7219_DIN);
		}
	Data=Data<<1;//向左移1位
	GPIO_SetBits(GPIOA,MAX7219_CLK);
	}

}

void MAX7219_Write_Command(uint8_t Address,uint8_t Data)
{		
		GPIO_ResetBits(GPIOA,MAX7219_CS);
		Write_MAX7219_byte(Address);
  	Write_MAX7219_byte(Data);
		GPIO_SetBits(GPIOA,MAX7219_CS);
}

void MAX7219_Init(void)
{
	
	MAX7219_GPIO_Init();
	MAX7219_Write_Command(0x09,0x00);//编码格式
	MAX7219_Write_Command(0x0A,0x15);//亮度控制,可自行更改
	MAX7219_Write_Command(0x0B,0x07);//扫描控制,需扫描一个字节(8位)
	MAX7219_Write_Command(0x0C,0x01);//掉电模式
	MAX7219_Write_Command(0x0F,0x00);//显示检测
	
}


​

2、MAX7219_ArrCartoon.h

​#ifndef   __MAX7219_ARRCARTOON_H__
#define  __MAX7219_ARRCARTOON_H__

unsigned char Arr_Cartoon[]={				
							    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0xfe,0x10,0x10,0x10,0xfe,0x00,0x38,0x44,
								0x82,0xA2,0x44,0xB8,0x00,0xF2,0x92,0x92,
								0x92,0x9E,0x00,0x02,0x02,0xFE,0x02,0x02,
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
							};//滚动动画

unsigned char Arr_Char[][8]={
													                    
                                 0x00,0x00,0x80,0x82,0xFF,0x80,0x80,0x00,//数字1
													    
                                 0x00,0xF2,0x92,0x92,0x92,0x92,0x9E,0x00,//数字2
													 
                                 0x00,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,//数字3
													 
                                 0x00,0x30,0x28,0x24,0xFE,0x20,0x00,0x00,//数字4
											};//单个字符

#endif

​

3、main.c

#include "stm32f10x.h" 
#include "DELAY.H"
#include "MAX7219.H"
#include "MAX7219_ARRCARTOON.H"




int main(void)
{
	MAX7219_Init();
	int i,j;
	
	
	
	while(1)
	{			


		
		//滚动显示
				for(i=1;i<9;i++)
		{
			MAX7219_Write_Command(i,Arr_Cartoon[i-1+j]);
		}
		
		Delay_ms(50);
		j++;
		
		if(j>=32)
			j=0;

		
	}

}

五、例程

video_20240712_151408

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值