打印
[LKS32 软件]

[ LKS32MC037E开发板评测 ]+MAX7219

[复制链接]
717|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
原来以为我的MAX7219模块坏了,又从网上买了4个。今天到货了,开始捣鼓一下。
原理图:

我自己做的MAX7219模块原理图:

CLK接P05,LOAD接P06,DIN接P04。
主程序代码:
#include "lks32mc03x_lib.h"
#include "hardware_init.h"
#include "delay.h"

#define CLK_0           GPIO_ResetBits(GPIO0,GPIO_Pin_5)
#define CLK_1           GPIO_SetBits(GPIO0,GPIO_Pin_5)
#define LOAD_0          GPIO_ResetBits(GPIO0,GPIO_Pin_6)
#define LOAD_1          GPIO_SetBits(GPIO0,GPIO_Pin_6)
#define DIN_0           GPIO_ResetBits(GPIO0,GPIO_Pin_4)
#define DIN_1           GPIO_SetBits(GPIO0,GPIO_Pin_4)

#define NoOp   0x00           //??2ù×÷??'??÷
#define Digit0 0x01           // êy??1ü1??'??÷
#define Digit1 0x02           // êy??1ü2??'??÷
#define Digit2 0x03           // êy??1ü3??'??÷
#define Digit3 0x04           // êy??1ü4??'??÷
#define Digit4 0x05           // êy??1ü5??'??÷
#define Digit5 0x06           // êy??1ü6??'??÷
#define Digit6 0x07           // êy??1ü7??'??÷
#define Digit7 0x08           // êy??1ü8??'??÷
#define DecodeMode 0x09       // ò?????ê???'??÷
#define Intensity 0x0a        // áá?è??'??÷
#define ScanLimit 0x0b        // é¨?è??êy??'??÷
#define ShutDown 0x0c         // µí1|o???ê???'??÷
#define DisplayTest 0x0f      // ??ê?2aê???'??÷
#define ShutdownMode 0x00     // µí1|o?·?ê?
#define NormalOperation 0x01  // ?y3?2ù×÷·?ê?
#define ScanDigit 0x07        // é¨?è??êyéè??????ê?8??êy??1ü
#define DecodeDigit 0xff      // ò???éè????8???ù?aBCD??
#define IntensityGrade 0x0a   // áá?è??±eéè??
#define TestMode 0x01         // ??ê?2aê???ê?
#define TextEnd 0x00          // ??ê?2aê??áê??????'?y3?1¤×÷??ê?
/*****************************************************************************
* Function implementation - global ('extern') and local ('static')
******************************************************************************/
uint8_t DisBuffer[8]={0,0,0,0,0,0,0,0};    // ??ê??o'???
//******************?óê±toá??**************************************
void delay(uint16_t t)
{
    uint16_t i;
    while(t--)
    {
        /* ??óú12Mê±?ó?????óê±1ms */
        for (i=0;i<36;i++)
        {}
    }
}
//*************?òMAX7219D'è?×??ú?¨8????********************
void SendChar (uint8_t ch)
{
    uint8_t i,temp;
    delay(1);
    for (i=0;i<8;i++)
    {
        temp=ch&0x80;
        ch=ch<<1;
        if(temp)
        {
            DIN_1;
            delay(1);
            CLK_0;
            delay(1);
            CLK_1;
            delay(1);
        }
        else
        {
            DIN_0;
            delay(1);
            CLK_0;
            delay(1);
            CLK_1;
            delay(1);
        }
    }
}

//**************?òMAX7219D'è?×??¨16????*****************************
void WriteWord (uint8_t addr,uint8_t num)
{
    LOAD_0;
    delay(1);
    SendChar(addr);
    delay(1);
    SendChar(num);
    delay(1);
    LOAD_1;                            // ??'????àó|??'??÷
}
//*********************** MAX72193?ê??¯ ******************
void InitDisplay (void)
{
        WriteWord (ScanLimit,ScanDigit);         // éè??é¨?è???T
        WriteWord (DecodeMode,DecodeDigit);      // éè??ò?????ê?
        WriteWord (Intensity,IntensityGrade);    // éè??áá?è
        WriteWord (ShutDown,NormalOperation);    // éè???a?y3?1¤×÷??ê?

}
/*******************************************************************************
º¯ÊýÃû³Æ£º    int main(void)
¹¦ÄÜÃèÊö£º    Ö÷³ÌÐòÈë¿Ú
ÊäÈë²ÎÊý£º    ÎÞ         
Êä³ö²ÎÊý£º    ÎÞ
·µ »Ø Öµ£º    ÎÞ
ÆäËü˵Ã÷£º    ʵÑéÒªÇó;ʹÓÃLED2 P0.9 IOû1S·­×ªÒ»´Îµçƽ¡£

ÔËÐÐЧ¹û£º    ³ÌÐòÉÕ¼ÁèŸLKS32MC033H6P8×îСϵͳ°å£¬Ê¹ÓÃʾ²¨Æ÷²âÁ¿P0.9¿Ú²¨ÐÎΪƵÂÊ
              Îª1Hz¡£

ÐÞ¸ÄÈÕÆÚ      °æ±¾ºÅ          ÐÞ¸ÄÈË            ÐÞ¸ÄÄÚÈÝ
-----------------------------------------------------------------------------
2022/4/14     V1.0          HuangMG             ´´½¨
*******************************************************************************/
int main(void)
{
        Hardware_init(); /* Ó²¼þ³õʼ»¯ */
        InitDisplay (); // MAX7219???
        WriteWord(DisplayTest,TestMode);  // ??????,????LED
        delay(1500);                      // ???1.5s
        WriteWord (DisplayTest,TextEnd);  // ????????
        WriteWord (Digit0,0);
        WriteWord (Digit1,1);
        WriteWord (Digit2,2);
        WriteWord (Digit3,3);
        for (;;)
        {
          InitDisplay (); // MAX7219???

                delay(150);                      // ???1.5s

                WriteWord (DisplayTest,TextEnd);  // ????????

                WriteWord (Digit0,0);

                WriteWord (Digit1,1);

                WriteWord (Digit2,2);

                WriteWord (Digit3,3);
                //delay_ms(1000);     
        }
}

/************************ (C) COPYRIGHT LINKO SEMICONDUCTOR **********************/
/* ------------------------------END OF FILE------------------------------------ */
初始化代码:
void Hardware_init(void)
{
    __disable_irq();                  /* ¹Ø±ÕÖÐ¶Ï ÖжÏ×Ü¿ª¹Ø */
    SYS_WR_PROTECT = 0x7a83;          /* ¿ªÆôдʹÄÜ*/
    IWDG_DISABLE();                   /* ¹Ø±Õ¶ÀÁ¢¿´ÃŹ·Ê¹ÄÜ*/
    FLASH_CFG |= 0x00080000;          /* FLASH Ԥȡ¼ÓËÙʹÄÜ*/
  
    delay_init(48);                   /* ÑÓʱº¯Êý³õʼ»¯Ê±ÖÓ48MHz*/
    GPIO_init();                      /* GPIO³õʼ»¯ */
    delay_us(100);                    /* ÑÓʱµÈ´ýÓ²¼þ³õʼ»¯Îȶ¨ */
    __enable_irq();                   /* ¿ªÆô×ÜÖÐ¶Ï */
}

void GPIO_init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_StructInit(&GPIO_InitStruct);
    /* P0.9*/
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;    /*Êä³öģʽ*/
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; /*²»ÉÏÀ­*/
    GPIO_Init(GPIO0, &GPIO_InitStruct);
          GPIO_ResetBits(GPIO0, GPIO_Pin_8);      /* LED2 Ãð*/
          
                GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;    /*Êä³öģʽ*/
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; /*²»ÉÏÀ­*/
    GPIO_Init(GPIO1, &GPIO_InitStruct);
          GPIO_ResetBits(GPIO1, GPIO_Pin_4);      /* LED2 Ãð*/
}
效果图:


使用特权

评论回复
沙发
名字是啥样| | 2023-2-14 11:15 | 只看该作者
感谢楼主分享,我也看看。

使用特权

评论回复
板凳
tpgf| | 2023-2-23 14:04 | 只看该作者
没看太明白 新买的就好使了是吗 就是说原来的那片是坏掉的?

使用特权

评论回复
地板
wakayi| | 2023-2-23 15:27 | 只看该作者
通讯这边楼主好像使用的是直连的方式 会不会电平不匹配呢

使用特权

评论回复
5
heimaojingzhang| | 2023-2-23 18:41 | 只看该作者
请教楼主一个问题 就是如果电平不匹配 可以通过串接电阻搞定吗

使用特权

评论回复
6
比神乐|  楼主 | 2023-2-24 10:06 | 只看该作者
tpgf 发表于 2023-2-23 14:04
没看太明白 新买的就好使了是吗 就是说原来的那片是坏掉的?

搞不明白,原来的一开始不好使,我又买了新的
新的换上去是好的,然后我把旧的换上去也好了,真是莫名其妙。

使用特权

评论回复
7
比神乐|  楼主 | 2023-2-24 10:07 | 只看该作者
heimaojingzhang 发表于 2023-2-23 18:41
请教楼主一个问题 就是如果电平不匹配 可以通过串接电阻搞定吗

你可以试一试。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

467

主题

3517

帖子

7

粉丝