小白在共阳数码管上踩过的坑

                    工具      芯片max7219 共阳数码管 stm32精英版

首先要没有找到正确的资料,浪费一天时间,这种芯片手册有中文的,也很好找,在那个基础上开始搞。

在网上没有找到现成的驱动共阳的程序或者相关介绍,可能是我有毒找不到吧。
找了找共阳和共阴的区别发现其实就是点阵放的方式不同,全称为行共阳和行共阴,那么只要把共阴的接线的方法改一下就好如下

按这个走线就好,另附上原理图,按照上面的两张图连线时,按照下面改一些这个连线就好了。

 主函数

#include “led.h”
#include “delay.h”
#include “key.h”
#include “sys.h”
#include “usart.h”
#include “exti.h”
#include “beep.h”
#include “datMaxtrix.h”
int mode;
int main(void)
{
int i;uchar* adress;
uchar arrow[]={0x0,0x1C,0x38,0x70,0x38,0x1C,0x0,0x0};
uchar quanliang[]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};
uchar clear[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
BEEP_Init();
EXTIX_Init();
LED0=0;
dotMaxtrixGPIO_Init();
delay_ms(50);
datMaxtrix_Init();
mode=0;
while(1)
{
if(mode0)
{
adress=arrow;
}
else
if(mode1)
{
adress=quanliang;
}
else
{
adress=clear;
}

     for(i=1;i<9;i++){Write_Max7219(i,adress[i-1]);//delay_ms(10);}delay_ms(100);
}

}

datMaxtrix.c
#include “datMaxtrix.h”
#include “delay.h”

void Write_Max7219_byte(u8 DATA)
{
int i;
Max7219_pinCS=0;
for(i=0;i<8;i++)
{
delay_us(1);
Max7219_pinCLK=0;
Max7219_pinDIN=((DATA>>7)&0x01);
DATA=DATA<<1;
delay_us(1);
Max7219_pinCLK=1;
}
}
void Write_Max7219(u8 address,u8 dat)
{
Max7219_pinCS=0;
Write_Max7219_byte(address);
Write_Max7219_byte(dat);
Max7219_pinCS=1;
delay_us(1);
}
void datMaxtrix_Init(void)
{
Write_Max7219(DECODE_MODE,0X00);
Write_Max7219(INTENSITY,0x0FF);
Write_Max7219(SCAN_LIMIT,0x07);
Write_Max7219(SHUT_DOWN,0x01);
Write_Max7219(DISPLAY_TEST,0x00);
}
void dotMaxtrixGPIO_Init(void)
{

GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;               GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      GPIO_Init(GPIOA, &GPIO_InitStructure);                  GPIO_SetBits(GPIOA,GPIO_Pin_4);                     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;               GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      GPIO_Init(GPIOA, &GPIO_InitStructure);                  GPIO_SetBits(GPIOA,GPIO_Pin_5);                        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      GPIO_Init(GPIOA, &GPIO_InitStructure);                  GPIO_SetBits(GPIOA,GPIO_Pin_7);

}
dotMatrix.h
#ifndef __datMaxtrix_H
#define __datMaxtrix_H
#include “sys.h”

#define uchar unsigned char
#define uint unsigned int

#define Max7219_pinCS PAout(4)

#define Max7219_pinCLK PAout(5)

#define Max7219_pinDIN PAout(7)

#define DECODE_MODE 0x09

#define INTENSITY 0x0A

#define SCAN_LIMIT 0x0B

#define SHUT_DOWN 0x0C

#define DISPLAY_TEST 0x0F

#define Max7219_pinCS PAout(4)
#define Max7219_pinCLK PAout(5)
#define Max7219_pinDIN PAout(7)

void datMaxtrix_Init(void);
void Write_Max7219(uchar address,uchar dat);
void Write_Max7219_byte(u8 dat);
void dotMaxtrixGPIO_Init(void);

#endif

exit.c { 在原子哥的按键中断那里直接改的 }
#include “exti.h”
#include “led.h”
#include “key.h”
#include “delay.h”
#include “usart.h”
#include “beep.h”
void EXTIX_Init(void)
{

EXTI_InitTypeDef EXTI_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;KEY_Init();  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);
EXTI_InitStructure.EXTI_Line=EXTI_Line3;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStructure);   GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);
EXTI_InitStructure.EXTI_Line=EXTI_Line4;
EXTI_Init(&EXTI_InitStructure);     GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0); EXTI_InitStructure.EXTI_Line=EXTI_Line0;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_Init(&EXTI_InitStructure);     NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);      NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

}

void EXTI0_IRQHandler(void)
{
extern int mode;
delay_ms(10);
if(WK_UP==1)
{
//BEEP=!BEEP;
mode=1;
}
EXTI_ClearITPendingBit(EXTI_Line0);
}

//ÍⲿÖжÏ3·þÎñ³ÌÐò
void EXTI3_IRQHandler(void)
{
extern int mode;
delay_ms(10);//Ïû¶¶
if(KEY1==0) //°´¼üKEY1
{
LED1=!LED1;
mode=0;
}
EXTI_ClearITPendingBit(EXTI_Line3);
}

void EXTI4_IRQHandler(void)
{
delay_ms(10);//Ïû¶¶
if(KEY0==0) //°´¼üKEY0
{
extern int mode;
mode=3;
LED0=!LED0;
LED1=!LED1;
}
EXTI_ClearITPendingBit(EXTI_Line4); //Çå³ýLINE4ÉϵÄÖжϱê־λ
}

exit.h {一点没改都}

#ifndef __EXTI_H
#define __EXIT_H
#include “sys.h”

void EXTIX_Init(void);
#endif

小白第一次写忘见谅,有错请联系我谢谢。

max7219驱动共阳点阵相关推荐

  1. 【Multisim仿真】74LS47译码器驱动共阳数码管显示(0-8)数字显示

    [Multisim仿真]74LS47译码器驱动共阳数码管显示(0-8)数字显示 Multisim仿真演示 74ls47引脚功能 LT: 试灯输入,是为了检查数码管各段是否能正常发光而设置的.当LT=0 ...

  2. 物联网开发笔记(77)- 使用Micropython开发ESP32开发板之使用MAX7219驱动控制8x8LED点阵模块(续)

    一.目的 这一节我们继续学习如何使用我们的ESP32开发板控制带MAX7219驱动的8x8LED点阵模.我们使用库来显示,更加方便. 二.环境 ESP32 + MAX7219驱动的8x8LED点阵模块 ...

  3. 两个74HC595驱动共阳4位段选数码管

    74HC595-串入/串并出带锁存的移位寄存器,实在是灰常magic,用它来驱动8段数码管太方便了!除了静态驱动可无限串联的一位数码管,它还能用来动态驱动4位段选数码管,而且由于串入/串并出和锁存特性 ...

  4. VK1650是LED数显驱动IC/数码管显示驱动控制电路(IC),8*4共阴/4*8共阳驱动,SOP16封装,可兼容替代市面上1650,FAE技术支持

    产品品牌:永嘉微电/VINKA 产品型号:VK1650 封装形式:SOP16 概述: VK1650 SOP16是一种带键盘扫描电路接口的 LED 驱动控制专用芯片,内部集成有数据锁存 器.LED 驱动 ...

  5. STM32F103C8T6 I/O口驱动4位共阳数码管

    STM32F103C8T6 I/O口驱动4位共阳数码管 看了网上很多的资料.很少有单独讲解STM32 I/O口直接驱动数码管的资料,有的网上还禁用了JTAG和SWD口,对很多刚入门的学者会造成不必要的 ...

  6. Arduino 驱动TM1638显示十位的共阳数码管

    Arduino 驱动TM1638显示十位的共阳数码管 二话不说先上图: 这个是电路图,下面我在上传TM1638的手册 哈哈太乱了先凑合着看吧!效果是实现了,画了板还没有发过来. 我也不多说什么了上代码 ...

  7. c语言8 8点阵,共阴共阳的疑问解答以及8*8LED点阵基础知识讲解

    描述 最近需要用点阵做个小实验,就去买了几块,当时店家问我一句"你要共阳的还是共阴的".当时我就犯嘀咕啦,这也分共阴和共阳?共阳的转90度不就和共阴的一样啦,共阴的转90度不就和共 ...

  8. Arduino UNO+ MAX7219驱动8X8点阵显示+Proteus仿真

    Arduino UNO+ MAX7219驱动8X8点阵显示 Proteus仿真 所需库:LedControl 取模软件:pctolcd2002 图像取模:8X8点阵 取模注意,需要右移一个像素,请照着 ...

  9. 74HC595驱动八段共阳数码管工程文件

    飞猫盘|文件加速传输工具|云盘|橘猫旗下新概念云平台 此文件是包括了protues文件仿真和keil文件以及cubemx文件配置 HARDWARE文件里面有关于74HC595的基本驱动代码,可移植 数 ...

最新文章

  1. UVA1364 Knights of the Round Table(双连通分量、二分图染色,超详细解释)
  2. 【OGG】OGG的单向复制配置-支持DDL(二)
  3. SpringBoot核心注解介绍
  4. 启动马达接线实物图_东元伺服驱动马达
  5. 各大网站猪年新春应景LOGO秀
  6. 详细讲解大型数据库的设计原则与开发技巧
  7. Qt: 解决Qt语言家 更新翻译(lupdate) 非常慢卡死没反应现象
  8. 医疗行业用户容灾备份方案
  9. Spring实战——ByteArrayResource
  10. VBA操作EXCEL根据单元格数值填充颜色
  11. Twitter引流如何开发客户
  12. windows磁盘分区合并(比如合并到C盘/分区扩容)问题/删除恢复分区
  13. 和女友做完后.......她说.....
  14. excel去重函数的使用方法_Excel的去除重复项你真的明白原理吗?浅尝去除重复项的函数奥秘...
  15. 害怕失败,所以全力以赴
  16. php打印99乘法表加粗,PHP基础循环语句之打印99乘法表
  17. Linux下提示命令找不到:bash:command not found
  18. 2006-2020年10月各类型国债利率
  19. c语言课后题2.52.8答案,新概念第二册课后题答案详解:Lesson52
  20. 【洛谷】P1747 好奇怪的游戏(bfs)

热门文章

  1. c#多线程实现函数同步运行
  2. Docker说了这么多 最全的一篇在这里
  3. 微服务可靠性设计--转
  4. Exchanging Partitions and Subpartitions with Tables--官方文档
  5. 金融风控实战——集成学习
  6. 金融风控实战——信贷业务架构与业务分析
  7. 【科技金融】互金欺诈黑话大集锦
  8. 【人工智能】人工智能的发展历程
  9. 【大数据-Hadoop】Hive
  10. 深度学习在推荐领域的应用