[综合信息] 【HC32L136_DEMO板评测】给LCD写接口函数

[复制链接]
1645|1
 楼主| caizhiwei 发表于 2019-12-6 13:48 | 显示全部楼层 |阅读模式
看着sdk里的驱动 挺难受的:
比如:
  1.   LCD_WriteRam0_7Int32(0,0x0b060600);
  2.    LCD_WriteRam0_7Int32(1,0x0d030f02);
以上两行代码要显示什么呢?入口参数第二个参数是啥?看不懂,可读性极差!

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


  6. static void Lcd_SetPortAnalog(void)
  7. {
  8.     Gpio_SetAnalogMode(GpioPortA, GpioPin9);//COM0
  9.     Gpio_SetAnalogMode(GpioPortA, GpioPin10);//COM1
  10.     Gpio_SetAnalogMode(GpioPortA, GpioPin11);//COM2
  11.     Gpio_SetAnalogMode(GpioPortA, GpioPin12);//COM3
  12.     Gpio_SetAnalogMode(GpioPortA, GpioPin8);//SEG0
  13.     Gpio_SetAnalogMode(GpioPortC, GpioPin9);//SEG1
  14.     Gpio_SetAnalogMode(GpioPortC, GpioPin8);//SEG2
  15.     Gpio_SetAnalogMode(GpioPortC, GpioPin7);//SEG3
  16.     Gpio_SetAnalogMode(GpioPortC, GpioPin6);//SEG4
  17.     Gpio_SetAnalogMode(GpioPortB, GpioPin15);//SEG5
  18.     Gpio_SetAnalogMode(GpioPortB, GpioPin14);//SEG6
  19.     Gpio_SetAnalogMode(GpioPortB, GpioPin13);//SEG7
  20.    // Gpio_SetAnalogMode(GpioPortB, GpioPin3);//VLCDH
  21.    // Gpio_SetAnalogMode(GpioPortB, GpioPin4);//VLCD3
  22.    // Gpio_SetAnalogMode(GpioPortB, GpioPin5);//VLCD2
  23.    // Gpio_SetAnalogMode(GpioPortB, GpioPin6);//VLCD1
  24. }


  25. void LCD_config(void)
  26. {
  27.     stc_lcd_config_t stcLcdCfg;
  28.   
  29.     DDL_ZERO_STRUCT(stcLcdCfg);
  30.   
  31.     Sysctrl_SetPeripheralGate(SysctrlPeripheralLcd,TRUE);
  32.     Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
  33.     Lcd_SetPortAnalog();//和LCD相关端口都要配置为模拟端口
  34.    
  35.     LCD_SetSegCom(0,0xffffff00);//设置seg0-7
  36.           LCD_SetSegCom(1,0x10ff);//设置com0-3
  37.     stcLcdCfg.enDispMode = LcdMode0;
  38.     stcLcdCfg.enBias = LcdBias3;
  39.     stcLcdCfg.enBiasSrc = LcdInRes_Low;//内部电阻方式
  40.     stcLcdCfg.enClk = LcdRCL;
  41.     stcLcdCfg.enDuty = LcdDuty4;
  42.     stcLcdCfg.enCpClk = LcdClk2k;
  43.     stcLcdCfg.enScanClk = LcdClk128hz;
  44.     LCD_Init(&stcLcdCfg);
  45.     LCD_EnFunc(LcdEn,TRUE);  
  46.     LCD_ClearDisp();
  47.   
  48.     return;
  49. }  
  50.   

  51. /*显示数字,成两组,左边和右边
  52. index : 0 左对齐,1 右对齐
  53. mun : 数字范围在 0 ~99
  54. */
  55. void LCD_disp_num(uint8_t index, uint8_t mun)
  56. {
  57.   int a = 0;
  58.   int b = 0;
  59.   a=mun/10;       
  60.   b=mun%10;
  61.   LCD_WriteRam0_7Int32(index,(code[b]<<16) + code[a]);   
  62. }
  63.   
  64. /*显示小数点,冒号*/  
  65. void LCD_disp_dot(uint8_t index)
  66. {
  67.   if(index == 1)
  68.   {
  69.        LCD_WriteRam(0,3,1); /*first dot  */
  70.   }
  71.   else if(index == 2)
  72.   {
  73.        LCD_WriteRam(1,3,1); /*second dot */
  74.   }
  75.   else if(index == 3)
  76.   {   
  77.       LCD_WriteRam(1,19,1); /*third dot */
  78.   }
  79.   else
  80.   {
  81.       LCD_WriteRam(0,19,1); /*maohao*/
  82.   }
  83.   return;
  84. }
下载运行,结果OK。

评论

您好,这两天在看LCD部分,想问一下,显示点那一部分是怎么处理的,就是传参的几个数字怎么来的  发表于 2019-12-12 11:35
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

856

帖子

16

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