在线时间906 小时
UID3067179
注册时间2014-10-23
NXP金币3157
TA的每日心情 | 开心 前天 14:03 |
---|
签到天数: 1536 天 连续签到: 14 天 [LV.Master]伴坛终老
版主
  
- 积分
- 8844
- 最后登录
- 2025-9-29
|
测试slcd显示屏计数显示。
一、slcd部分电路图
二、配置slcd接口引脚
三、程序部分
3.1、slcd.c
- #include "pin_mux.h"
- #include "board.h"
- #include "fsl_common.h"
- #include "fsl_slcd.h"
- #include "slcd_engine.h"
- #include "fsl_debug_console.h"
- #include "slcd/slcd.h"
- #include "systick/systick.h"
- /*******************************************************************************
- * Definitions
- ******************************************************************************/
- #define APP_SLCD_DUTY_CYCLE kSLCD_1Div4DutyCycle
- #define APP_SLCD_LOW_PIN_ENABLED 0x0d10c000U /* LCD_P27/26/24/20 -> b27/26/24/20 = 1. */
- #define APP_SLCD_HIGH_PIN_ENABLED 0x18001d00U /* LCD_P44/43/42/40 -> b12/11/10/8 = 1. */
- #define APP_SLCD_BACK_PANEL_LOW_PIN 0x0000c000U /* LCD_P15/P14 -> b15/b14 = 1. */
- #define APP_SLCD_BACK_PANEL_HIGH_PIN 0x18000000U /* LCD_P60/P59 -> b28/27 = 1. */
- /*******************************************************************************
- * Variables
- ******************************************************************************/
- slcd_clock_config_t slcdClkConfig = {kSLCD_AlternateClk1, kSLCD_AltClkDivFactor256, kSLCD_ClkPrescaler01
- #if FSL_FEATURE_SLCD_HAS_FAST_FRAME_RATE
- ,
- false
- #endif
- };
- const uint8_t slcd_lcd_gpio_seg_pin[] = {
- 20, /* SLCD P05 --- LCD_P20. */
- 24, /* SLCD P06 --- LCD_P24. */
- 26, /* SLCD P07 --- LCD_P26. */
- 27, /* SLCD P08 --- LCD_P27. */
- 40, /* SLCD P09 --- LCD_P40. */
- 42, /* SLCD P10 --- LCD_P42. */
- 43, /* SLCD P11 --- LCD_P43. */
- 44, /* SLCD P12 --- LCD_P44. */
- };
- extern slcd_clock_config_t slcdClkConfig;
- extern const uint8_t slcd_lcd_gpio_seg_pin[];
- tSLCD_Engine slcdEngine;
- //static void SLCD_TimeDelay(uint32_t ms)
- //{
- // SDK_DelayAtLeastUs(1000 * ms, SystemCoreClock);
- //}
- /*******************************************************************************
- * Code
- ******************************************************************************/
- void BOARD_SetSlcdBackPlanePhase(void)
- {
- SLCD_SetBackPlanePhase(LCD, 59, kSLCD_PhaseAActivate); /* SLCD COM1 --- LCD_P59. */
- SLCD_SetBackPlanePhase(LCD, 60, kSLCD_PhaseBActivate); /* SLCD COM2 --- LCD_P60. */
- SLCD_SetBackPlanePhase(LCD, 14, kSLCD_PhaseCActivate); /* SLCD COM3 --- LCD_P14. */
- SLCD_SetBackPlanePhase(LCD, 15, kSLCD_PhaseDActivate); /* SLCD COM4 --- LCD_P15. */
- }
- static void SLCD_SetLCDPin(lcd_set_type_t type, uint32_t lcd_pin, uint8_t pin_val, int32_t on)
- {
- assert(lcd_pin > 0);
- uint8_t gpio_pin = 0;
- uint8_t bit_val = 0;
- uint8_t i = 0;
- /* lcd _pin starts from 1. */
- gpio_pin = slcd_lcd_gpio_seg_pin[lcd_pin - 1];
- if (type == SLCD_Set_Num)
- {
- SLCD_SetFrontPlaneSegments(LCD, gpio_pin, (on ? pin_val : 0));
- }
- else
- {
- for (i = 0; i < 8; ++i)
- {
- bit_val = (uint8_t)(pin_val >> i) & 0x1U;
- if (bit_val)
- {
- SLCD_SetFrontPlaneOnePhase(LCD, gpio_pin, (slcd_phase_index_t)i, on);
- }
- }
- }
- }
- void slcd_disp_num(uint8_t *disp_val)
- {
- uint8_t digital;
- int32_t position;
- SLCD_Engine_Show_Num(&slcdEngine, disp_val[0], 0, 1);
- SLCD_Engine_Show_Num(&slcdEngine, disp_val[1], 1, 1);
- SLCD_Engine_Show_Num(&slcdEngine, disp_val[2], 2, 1);
- SLCD_Engine_Show_Num(&slcdEngine, disp_val[3], 3, 1);
- }
- void init_slcd(void)
- {
- slcd_config_t config;
- init_slcd_pins();
-
- /* SLCD get default configure. */
- /*
- * config.displayMode = kSLCD_NormalMode;
- * config.powerSupply = kSLCD_InternalVll3UseChargePump;
- * config.voltageTrim = kSLCD_RegulatedVolatgeTrim08;
- * config.lowPowerBehavior = kSLCD_EnabledInWaitStop;
- * config.frameFreqIntEnable = false;
- * config.faultConfig = NULL;
- */
- SLCD_GetDefaultConfig(&config);
- /* Verify and Complete the configuration structure. */
- config.clkConfig = &slcdClkConfig;
- config.loadAdjust = kSLCD_HighLoadOrSlowestClkSrc;
- config.dutyCycle = APP_SLCD_DUTY_CYCLE;
- config.slcdLowPinEnabled = APP_SLCD_LOW_PIN_ENABLED;
- config.slcdHighPinEnabled = APP_SLCD_HIGH_PIN_ENABLED;
- config.backPlaneLowPin = APP_SLCD_BACK_PANEL_LOW_PIN;
- config.backPlaneHighPin = APP_SLCD_BACK_PANEL_HIGH_PIN;
- config.faultConfig = NULL;
- /* SLCD Initialize. */
- SLCD_Init(LCD, &config);
-
- BOARD_SetSlcdBackPlanePhase();
- memset(&slcdEngine, 0, sizeof(tSLCD_Engine));
- SLCD_Engine_Init(&slcdEngine, SLCD_SetLCDPin);
- /* Starts SLCD display. */
- SLCD_StartDisplay(LCD);
- }
- uint16_t js=0;
- uint8_t dv_t[4];
- void slcd_test(void)
- {
- while(1)
- {
- dv_t[0]=js/1000;
- dv_t[1]=(js%1000)/100;
- dv_t[2]=((js%1000)%100)/10;
- dv_t[3]=((js%1000)%100)%10;
- slcd_disp_num(dv_t);
-
- js++;
- if(js>2000)
- {
- js=0;
- }
-
- SysTick_Delay_ms(200);
- }
- }
复制代码
3.2、main.c
- #include "pin_mux.h"
- #include "clock_config.h"
- #include "board.h"
- #include "fsl_debug_console.h"
- #include "fsl_gpio.h"
- #include "slcd/slcd.h"
- #include "led/led.h"
- #include "systick/systick.h"
- #include "slcd_engine.h"
- void init_board(void)
- {
- SysTick_Init();
- BOARD_InitPins();
- BOARD_BootClockRUN();
- BOARD_InitDebugConsole();
- init_led();
- init_slcd();
- PRINTF("\r\n MCXC444 Board Test\r\n");
- }
- int main(void)
- {
- init_board();
-
- slcd_test();
- while (1)
- {
- }
- }
复制代码
3.3、slcd驱动程序
slcd_engine.rar
(3.43 KB, 下载次数: 0)
|
|