[LKS32 软件] [ LKS32MC037E开发板评测 ]+MAX7219

[复制链接]
1163|6
 楼主| 比神乐 发表于 2023-2-4 15:36 | 显示全部楼层 |阅读模式
原来以为我的MAX7219模块坏了,又从网上买了4个。今天到货了,开始捣鼓一下。
原理图:
1.jpg
我自己做的MAX7219模块原理图:
2.jpg
CLK接P05,LOAD接P06,DIN接P04。
主程序代码:
  1. #include "lks32mc03x_lib.h"
  2. #include "hardware_init.h"
  3. #include "delay.h"

  4. #define CLK_0           GPIO_ResetBits(GPIO0,GPIO_Pin_5)
  5. #define CLK_1           GPIO_SetBits(GPIO0,GPIO_Pin_5)
  6. #define LOAD_0          GPIO_ResetBits(GPIO0,GPIO_Pin_6)
  7. #define LOAD_1          GPIO_SetBits(GPIO0,GPIO_Pin_6)
  8. #define DIN_0           GPIO_ResetBits(GPIO0,GPIO_Pin_4)
  9. #define DIN_1           GPIO_SetBits(GPIO0,GPIO_Pin_4)

  10. #define NoOp   0x00           //??2ù×÷??'??÷
  11. #define Digit0 0x01           // êy??1ü1??'??÷
  12. #define Digit1 0x02           // êy??1ü2??'??÷
  13. #define Digit2 0x03           // êy??1ü3??'??÷
  14. #define Digit3 0x04           // êy??1ü4??'??÷
  15. #define Digit4 0x05           // êy??1ü5??'??÷
  16. #define Digit5 0x06           // êy??1ü6??'??÷
  17. #define Digit6 0x07           // êy??1ü7??'??÷
  18. #define Digit7 0x08           // êy??1ü8??'??÷
  19. #define DecodeMode 0x09       // ò?????ê???'??÷
  20. #define Intensity 0x0a        // áá?è??'??÷
  21. #define ScanLimit 0x0b        // é¨?è??êy??'??÷
  22. #define ShutDown 0x0c         // µí1|o???ê???'??÷
  23. #define DisplayTest 0x0f      // ??ê?2aê???'??÷
  24. #define ShutdownMode 0x00     // µí1|o?·?ê?
  25. #define NormalOperation 0x01  // ?y3?2ù×÷·?ê?
  26. #define ScanDigit 0x07        // é¨?è??êyéè??????ê?8??êy??1ü
  27. #define DecodeDigit 0xff      // ò???éè????8???ù?aBCD??
  28. #define IntensityGrade 0x0a   // áá?è??±eéè??
  29. #define TestMode 0x01         // ??ê?2aê???ê?
  30. #define TextEnd 0x00          // ??ê?2aê??áê??????'?y3?1¤×÷??ê?
  31. /*****************************************************************************
  32. * Function implementation - global ('extern') and local ('static')
  33. ******************************************************************************/
  34. uint8_t DisBuffer[8]={0,0,0,0,0,0,0,0};    // ??ê??o'???
  35. //******************?óê±toá??**************************************
  36. void delay(uint16_t t)
  37. {
  38.     uint16_t i;
  39.     while(t--)
  40.     {
  41.         /* ??óú12Mê±?ó?????óê±1ms */
  42.         for (i=0;i<36;i++)
  43.         {}
  44.     }
  45. }
  46. //*************?òMAX7219D'è?×??ú?¨8????********************
  47. void SendChar (uint8_t ch)
  48. {
  49.     uint8_t i,temp;
  50.     delay(1);
  51.     for (i=0;i<8;i++)
  52.     {
  53.         temp=ch&0x80;
  54.         ch=ch<<1;
  55.         if(temp)
  56.         {
  57.             DIN_1;
  58.             delay(1);
  59.             CLK_0;
  60.             delay(1);
  61.             CLK_1;
  62.             delay(1);
  63.         }
  64.         else
  65.         {
  66.             DIN_0;
  67.             delay(1);
  68.             CLK_0;
  69.             delay(1);
  70.             CLK_1;
  71.             delay(1);
  72.         }
  73.     }
  74. }

  75. //**************?òMAX7219D'è?×??¨16????*****************************
  76. void WriteWord (uint8_t addr,uint8_t num)
  77. {
  78.     LOAD_0;
  79.     delay(1);
  80.     SendChar(addr);
  81.     delay(1);
  82.     SendChar(num);
  83.     delay(1);
  84.     LOAD_1;                            // ??'????àó|??'??÷
  85. }
  86. //*********************** MAX72193?ê??¯ ******************
  87. void InitDisplay (void)
  88. {
  89.         WriteWord (ScanLimit,ScanDigit);         // éè??é¨?è???T
  90.         WriteWord (DecodeMode,DecodeDigit);      // éè??ò?????ê?
  91.         WriteWord (Intensity,IntensityGrade);    // éè??áá?è
  92.         WriteWord (ShutDown,NormalOperation);    // éè???a?y3?1¤×÷??ê?

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

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

  103. ÐÞ¸ÄÈÕÆÚ      °æ±¾ºÅ          ÐÞ¸ÄÈË            ÐÞ¸ÄÄÚÈÝ
  104. -----------------------------------------------------------------------------
  105. 2022/4/14     V1.0          HuangMG             ´´½¨
  106. *******************************************************************************/
  107. int main(void)
  108. {
  109.         Hardware_init(); /* Ó²¼þ³õʼ»¯ */
  110.         InitDisplay (); // MAX7219???
  111.         WriteWord(DisplayTest,TestMode);  // ??????,????LED
  112.         delay(1500);                      // ???1.5s
  113.         WriteWord (DisplayTest,TextEnd);  // ????????
  114.         WriteWord (Digit0,0);
  115.         WriteWord (Digit1,1);
  116.         WriteWord (Digit2,2);
  117.         WriteWord (Digit3,3);
  118.         for (;;)
  119.         {
  120.           InitDisplay (); // MAX7219???

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

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

  123.                 WriteWord (Digit0,0);

  124.                 WriteWord (Digit1,1);

  125.                 WriteWord (Digit2,2);

  126.                 WriteWord (Digit3,3);
  127.                 //delay_ms(1000);     
  128.         }
  129. }

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

  13. void GPIO_init(void)
  14. {
  15.     GPIO_InitTypeDef GPIO_InitStruct;
  16.     GPIO_StructInit(&GPIO_InitStruct);
  17.     /* P0.9*/
  18.     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;    /*Êä³öģʽ*/
  19.     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;
  20.     GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; /*²»ÉÏÀ­*/
  21.     GPIO_Init(GPIO0, &GPIO_InitStruct);
  22.           GPIO_ResetBits(GPIO0, GPIO_Pin_8);      /* LED2 Ãð*/
  23.           
  24.                 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;    /*Êä³öģʽ*/
  25.     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
  26.     GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; /*²»ÉÏÀ­*/
  27.     GPIO_Init(GPIO1, &GPIO_InitStruct);
  28.           GPIO_ResetBits(GPIO1, GPIO_Pin_4);      /* LED2 Ãð*/
  29. }
效果图:
0.jpg

名字是啥样 发表于 2023-2-14 11:15 | 显示全部楼层
感谢楼主分享,我也看看。
tpgf 发表于 2023-2-23 14:04 | 显示全部楼层
没看太明白 新买的就好使了是吗 就是说原来的那片是坏掉的?
wakayi 发表于 2023-2-23 15:27 | 显示全部楼层
通讯这边楼主好像使用的是直连的方式 会不会电平不匹配呢
heimaojingzhang 发表于 2023-2-23 18:41 | 显示全部楼层
请教楼主一个问题 就是如果电平不匹配 可以通过串接电阻搞定吗
 楼主| 比神乐 发表于 2023-2-24 10:06 | 显示全部楼层
tpgf 发表于 2023-2-23 14:04
没看太明白 新买的就好使了是吗 就是说原来的那片是坏掉的?

搞不明白,原来的一开始不好使,我又买了新的
新的换上去是好的,然后我把旧的换上去也好了,真是莫名其妙。
 楼主| 比神乐 发表于 2023-2-24 10:07 | 显示全部楼层
heimaojingzhang 发表于 2023-2-23 18:41
请教楼主一个问题 就是如果电平不匹配 可以通过串接电阻搞定吗

你可以试一试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3537

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部