查看: 701|回复: 0

[分享] 【MCXC444分享】scld计数显示

[复制链接]
  • TA的每日心情
    开心
    前天 14:03
  • 签到天数: 1536 天

    连续签到: 14 天

    [LV.Master]伴坛终老

    152

    主题

    3224

    帖子

    31

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    8844
    最后登录
    2025-9-29
    发表于 2024-11-3 23:05:09 | 显示全部楼层 |阅读模式
    测试slcd显示屏计数显示。


    一、slcd部分电路图

    001.png


    二、配置slcd接口引脚
    002.png


    三、程序部分


    3.1、slcd.c
    1. #include "pin_mux.h"
    2. #include "board.h"
    3. #include "fsl_common.h"
    4. #include "fsl_slcd.h"
    5. #include "slcd_engine.h"
    6. #include "fsl_debug_console.h"
    7. #include "slcd/slcd.h"
    8. #include "systick/systick.h"

    9. /*******************************************************************************
    10. * Definitions
    11. ******************************************************************************/
    12. #define APP_SLCD_DUTY_CYCLE          kSLCD_1Div4DutyCycle
    13. #define APP_SLCD_LOW_PIN_ENABLED     0x0d10c000U /* LCD_P27/26/24/20 -> b27/26/24/20 = 1. */
    14. #define APP_SLCD_HIGH_PIN_ENABLED    0x18001d00U /* LCD_P44/43/42/40 -> b12/11/10/8 = 1. */
    15. #define APP_SLCD_BACK_PANEL_LOW_PIN  0x0000c000U /* LCD_P15/P14 -> b15/b14 = 1. */
    16. #define APP_SLCD_BACK_PANEL_HIGH_PIN 0x18000000U /* LCD_P60/P59 -> b28/27 = 1. */

    17. /*******************************************************************************
    18. * Variables
    19. ******************************************************************************/
    20. slcd_clock_config_t slcdClkConfig = {kSLCD_AlternateClk1, kSLCD_AltClkDivFactor256, kSLCD_ClkPrescaler01
    21. #if FSL_FEATURE_SLCD_HAS_FAST_FRAME_RATE
    22.                                      ,
    23.                                      false
    24. #endif
    25. };

    26. const uint8_t slcd_lcd_gpio_seg_pin[] = {
    27.     20, /* SLCD P05 --- LCD_P20. */
    28.     24, /* SLCD P06 --- LCD_P24. */
    29.     26, /* SLCD P07 --- LCD_P26. */
    30.     27, /* SLCD P08 --- LCD_P27. */
    31.     40, /* SLCD P09 --- LCD_P40. */
    32.     42, /* SLCD P10 --- LCD_P42. */
    33.     43, /* SLCD P11 --- LCD_P43. */
    34.     44, /* SLCD P12 --- LCD_P44. */
    35. };
    36. extern slcd_clock_config_t slcdClkConfig;
    37. extern const uint8_t slcd_lcd_gpio_seg_pin[];
    38. tSLCD_Engine slcdEngine;

    39. //static void SLCD_TimeDelay(uint32_t ms)
    40. //{
    41. //    SDK_DelayAtLeastUs(1000 * ms, SystemCoreClock);
    42. //}


    43. /*******************************************************************************
    44. * Code
    45. ******************************************************************************/
    46. void BOARD_SetSlcdBackPlanePhase(void)
    47. {
    48.     SLCD_SetBackPlanePhase(LCD, 59, kSLCD_PhaseAActivate); /* SLCD COM1 --- LCD_P59. */
    49.     SLCD_SetBackPlanePhase(LCD, 60, kSLCD_PhaseBActivate); /* SLCD COM2 --- LCD_P60. */
    50.     SLCD_SetBackPlanePhase(LCD, 14, kSLCD_PhaseCActivate); /* SLCD COM3 --- LCD_P14. */
    51.     SLCD_SetBackPlanePhase(LCD, 15, kSLCD_PhaseDActivate); /* SLCD COM4 --- LCD_P15. */
    52. }

    53. static void SLCD_SetLCDPin(lcd_set_type_t type, uint32_t lcd_pin, uint8_t pin_val, int32_t on)
    54. {
    55.     assert(lcd_pin > 0);

    56.     uint8_t gpio_pin = 0;
    57.     uint8_t bit_val  = 0;
    58.     uint8_t i        = 0;

    59.     /* lcd _pin starts from 1. */
    60.     gpio_pin = slcd_lcd_gpio_seg_pin[lcd_pin - 1];

    61.     if (type == SLCD_Set_Num)
    62.     {
    63.         SLCD_SetFrontPlaneSegments(LCD, gpio_pin, (on ? pin_val : 0));
    64.     }
    65.     else
    66.     {
    67.         for (i = 0; i < 8; ++i)
    68.         {
    69.             bit_val = (uint8_t)(pin_val >> i) & 0x1U;
    70.             if (bit_val)
    71.             {
    72.                 SLCD_SetFrontPlaneOnePhase(LCD, gpio_pin, (slcd_phase_index_t)i, on);
    73.             }
    74.         }
    75.     }
    76. }

    77. void slcd_disp_num(uint8_t *disp_val)
    78. {
    79.         uint8_t digital;
    80.         int32_t position;

    81.         SLCD_Engine_Show_Num(&slcdEngine, disp_val[0], 0, 1);
    82.         SLCD_Engine_Show_Num(&slcdEngine, disp_val[1], 1, 1);
    83.         SLCD_Engine_Show_Num(&slcdEngine, disp_val[2], 2, 1);
    84.         SLCD_Engine_Show_Num(&slcdEngine, disp_val[3], 3, 1);
    85. }

    86. void init_slcd(void)
    87. {
    88.         slcd_config_t config;
    89.         init_slcd_pins();
    90.        
    91.         /* SLCD get default configure. */
    92.         /*
    93.          * config.displayMode = kSLCD_NormalMode;
    94.          * config.powerSupply = kSLCD_InternalVll3UseChargePump;
    95.          * config.voltageTrim = kSLCD_RegulatedVolatgeTrim08;
    96.          * config.lowPowerBehavior = kSLCD_EnabledInWaitStop;
    97.          * config.frameFreqIntEnable = false;
    98.          * config.faultConfig = NULL;
    99.          */
    100.         SLCD_GetDefaultConfig(&config);
    101.         /* Verify and Complete the configuration structure. */
    102.         config.clkConfig          = &slcdClkConfig;
    103.         config.loadAdjust         = kSLCD_HighLoadOrSlowestClkSrc;
    104.         config.dutyCycle          = APP_SLCD_DUTY_CYCLE;
    105.         config.slcdLowPinEnabled  = APP_SLCD_LOW_PIN_ENABLED;
    106.         config.slcdHighPinEnabled = APP_SLCD_HIGH_PIN_ENABLED;
    107.         config.backPlaneLowPin    = APP_SLCD_BACK_PANEL_LOW_PIN;
    108.         config.backPlaneHighPin   = APP_SLCD_BACK_PANEL_HIGH_PIN;

    109.         config.faultConfig = NULL;
    110.         /* SLCD Initialize. */
    111.         SLCD_Init(LCD, &config);
    112.        
    113.         BOARD_SetSlcdBackPlanePhase();

    114.         memset(&slcdEngine, 0, sizeof(tSLCD_Engine));

    115.         SLCD_Engine_Init(&slcdEngine, SLCD_SetLCDPin);

    116.         /* Starts SLCD display. */
    117.         SLCD_StartDisplay(LCD);
    118. }
    119. uint16_t js=0;
    120. uint8_t dv_t[4];
    121. void slcd_test(void)
    122. {
    123.         while(1)
    124.         {
    125.                 dv_t[0]=js/1000;
    126.                 dv_t[1]=(js%1000)/100;
    127.                 dv_t[2]=((js%1000)%100)/10;
    128.                 dv_t[3]=((js%1000)%100)%10;
    129.                 slcd_disp_num(dv_t);
    130.                
    131.                 js++;
    132.                 if(js>2000)
    133.                 {
    134.                         js=0;
    135.                 }
    136.                
    137.                 SysTick_Delay_ms(200);
    138.         }
    139. }
    复制代码


    3.2、main.c
    1. #include "pin_mux.h"
    2. #include "clock_config.h"
    3. #include "board.h"
    4. #include "fsl_debug_console.h"
    5. #include "fsl_gpio.h"
    6. #include "slcd/slcd.h"
    7. #include "led/led.h"
    8. #include "systick/systick.h"
    9. #include "slcd_engine.h"

    10. void init_board(void)
    11. {
    12.         SysTick_Init();
    13.         BOARD_InitPins();
    14.         BOARD_BootClockRUN();
    15.         BOARD_InitDebugConsole();
    16.         init_led();
    17.         init_slcd();
    18.         PRINTF("\r\n MCXC444 Board Test\r\n");
    19. }

    20. int main(void)
    21. {
    22.         init_board();
    23.        
    24.         slcd_test();

    25.         while (1)
    26.         {
    27.         }
    28. }
    复制代码


    3.3、slcd驱动程序
    slcd_engine.rar (3.43 KB, 下载次数: 0)
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-10-1 09:36 , Processed in 0.087563 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表