日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

max7219驱动共阳点阵

發(fā)布時(shí)間:2025/3/21 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 max7219驱动共阳点阵 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小白在共陽(yáng)數(shù)碼管上踩過(guò)的坑

工具 芯片max7219 共陽(yáng)數(shù)碼管 stm32精英版

首先要沒(méi)有找到正確的資料,浪費(fèi)一天時(shí)間,這種芯片手冊(cè)有中文的,也很好找,在那個(gè)基礎(chǔ)上開(kāi)始搞。

在網(wǎng)上沒(méi)有找到現(xiàn)成的驅(qū)動(dòng)共陽(yáng)的程序或者相關(guān)介紹,可能是我有毒找不到吧。
找了找共陽(yáng)和共陰的區(qū)別發(fā)現(xiàn)其實(shí)就是點(diǎn)陣放的方式不同,全稱(chēng)為行共陽(yáng)和行共陰,那么只要把共陰的接線的方法改一下就好如下

按這個(gè)走線就好,另附上原理圖,按照上面的兩張圖連線時(shí),按照下面改一些這個(gè)連線就好了。

主函數(shù)

#include “l(fā)ed.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 “l(fā)ed.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);
}

//ía2??D??3·t??3ìDò
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); //??3yLINE4é?μ??D??±ê????
}

exit.h {一點(diǎn)沒(méi)改都}

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

void EXTIX_Init(void);
#endif

小白第一次寫(xiě)忘見(jiàn)諒,有錯(cuò)請(qǐng)聯(lián)系我謝謝。

總結(jié)

以上是生活随笔為你收集整理的max7219驱动共阳点阵的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。