max7219驱动共阳点阵
小白在共陽數(shù)碼管上踩過的坑
工具 芯片max7219 共陽數(shù)碼管 stm32精英版首先要沒有找到正確的資料,浪費一天時間,這種芯片手冊有中文的,也很好找,在那個基礎(chǔ)上開始搞。
在網(wǎng)上沒有找到現(xiàn)成的驅(qū)動共陽的程序或者相關(guān)介紹,可能是我有毒找不到吧。
找了找共陽和共陰的區(qū)別發(fā)現(xiàn)其實就是點陣放的方式不同,全稱為行共陽和行共陰,那么只要把共陰的接線的方法改一下就好如下
按這個走線就好,另附上原理圖,按照上面的兩張圖連線時,按照下面改一些這個連線就好了。
#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;
}
}
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)
{
}
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)
{
}
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 {一點沒改都}
#ifndef __EXTI_H
#define __EXIT_H
#include “sys.h”
void EXTIX_Init(void);
#endif
小白第一次寫忘見諒,有錯請聯(lián)系我謝謝。
總結(jié)
以上是生活随笔為你收集整理的max7219驱动共阳点阵的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openCV中的findHomograp
- 下一篇: 小白视觉第一步保存图片