大家好,欢迎来到IT知识分享网。
一、硬件介绍
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__
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122998.html