caizhiwei 发表于 2019-12-6 13:48

【HC32L136_DEMO板评测】给LCD写接口函数

看着sdk里的驱动 挺难受的:
比如:
LCD_WriteRam0_7Int32(0,0x0b060600);
   LCD_WriteRam0_7Int32(1,0x0d030f02);以上两行代码要显示什么呢?入口参数第二个参数是啥?看不懂,可读性极差!

折腾一下,随手写了几个函数,分分钟,贴上来和大家共享。
/*
***显示译码 “0,1,2,3,4,5,6,7,8,9,关闭”************
**************************************************
*/
uint16_t code={0xf05,0x600,0xb06,0xf02,0x603,0xd03,0xd07,0x700,0xf07,0xf03,0x000}; // 0,1,2,3,4,5,6,7,8,9,关闭


static void Lcd_SetPortAnalog(void)
{
    Gpio_SetAnalogMode(GpioPortA, GpioPin9);//COM0
    Gpio_SetAnalogMode(GpioPortA, GpioPin10);//COM1
    Gpio_SetAnalogMode(GpioPortA, GpioPin11);//COM2
    Gpio_SetAnalogMode(GpioPortA, GpioPin12);//COM3
    Gpio_SetAnalogMode(GpioPortA, GpioPin8);//SEG0
    Gpio_SetAnalogMode(GpioPortC, GpioPin9);//SEG1
    Gpio_SetAnalogMode(GpioPortC, GpioPin8);//SEG2
    Gpio_SetAnalogMode(GpioPortC, GpioPin7);//SEG3
    Gpio_SetAnalogMode(GpioPortC, GpioPin6);//SEG4
    Gpio_SetAnalogMode(GpioPortB, GpioPin15);//SEG5
    Gpio_SetAnalogMode(GpioPortB, GpioPin14);//SEG6
    Gpio_SetAnalogMode(GpioPortB, GpioPin13);//SEG7
   // Gpio_SetAnalogMode(GpioPortB, GpioPin3);//VLCDH
   // Gpio_SetAnalogMode(GpioPortB, GpioPin4);//VLCD3
   // Gpio_SetAnalogMode(GpioPortB, GpioPin5);//VLCD2
   // Gpio_SetAnalogMode(GpioPortB, GpioPin6);//VLCD1
}


void LCD_config(void)
{
    stc_lcd_config_t stcLcdCfg;

    DDL_ZERO_STRUCT(stcLcdCfg);

    Sysctrl_SetPeripheralGate(SysctrlPeripheralLcd,TRUE);
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
    Lcd_SetPortAnalog();//和LCD相关端口都要配置为模拟端口
   
    LCD_SetSegCom(0,0xffffff00);//设置seg0-7
          LCD_SetSegCom(1,0x10ff);//设置com0-3
    stcLcdCfg.enDispMode = LcdMode0;
    stcLcdCfg.enBias = LcdBias3;
    stcLcdCfg.enBiasSrc = LcdInRes_Low;//内部电阻方式
    stcLcdCfg.enClk = LcdRCL;
    stcLcdCfg.enDuty = LcdDuty4;
    stcLcdCfg.enCpClk = LcdClk2k;
    stcLcdCfg.enScanClk = LcdClk128hz;
    LCD_Init(&stcLcdCfg);
    LCD_EnFunc(LcdEn,TRUE);
    LCD_ClearDisp();

    return;
}


/*显示数字,成两组,左边和右边
index : 0 左对齐,1 右对齐
mun : 数字范围在 0 ~99
*/
void LCD_disp_num(uint8_t index, uint8_t mun)
{
int a = 0;
int b = 0;
a=mun/10;       
b=mun%10;
LCD_WriteRam0_7Int32(index,(code<<16) + code);   
}

/*显示小数点,冒号*/
void LCD_disp_dot(uint8_t index)
{
if(index == 1)
{
       LCD_WriteRam(0,3,1); /*first dot*/
}
else if(index == 2)
{
       LCD_WriteRam(1,3,1); /*second dot */
}
else if(index == 3)
{   
      LCD_WriteRam(1,19,1); /*third dot */
}
else
{
      LCD_WriteRam(0,19,1); /*maohao*/
}
return;
}
下载运行,结果OK。

页: [1]
查看完整版本: 【HC32L136_DEMO板评测】给LCD写接口函数