菲律宾申博太阳城会员注册开户网登入: [其他] HC32L136 demo板 之四、LCD

永利游戏开户直营
215|2
楼主
       很喜欢板子上的那个液晶显示屏,菲律宾申博太阳城会员注册开户网登入:拿到手上就想先驱动起来。本次实验就是以HC32L136 demo板官方例程为基础对HC32L136K8TA的LCD模块进行学习,LCD上的数字从“0”开始加“1”到“9999”,然后再归“0”重复进行。
一、实验资源
1、HC32L136 demo板;
2、keil 5.28.0.0;
3、HC32L136 SDK支持包;
更多资讯请访问http://www.elr.cao858.com/mcu.htm

二、相关资源简介
1、LCD模块
       HC32L136K8TA的LCD模块功能非常强大,主要特性如下:
?  高度灵活的帧速率控制
?  支持静态、1/2、1/3、1/4、1/6 和  1/8  占空比
?  支持1/2、1/3 偏置
?  多达16个寄存器的 LCD数据RAM
?  可通过软件配置 LCD 的对比度
?  3种驱动波形生成方式
–  内部电阻分压、外部电阻分压,外部电容分压方式   
–  可通过软件配置内部电阻分压方式的功耗,从而匹配 LCD 面板所需的电容电荷
?  支持低功耗模式:LCD控制器可在Active、Sleep、DeepSleep 模式下进行显示
?  可配置帧中断
?  支持 LCD闪烁功能且可配置多种闪烁频率
?  未使用的 LCD 区段和公共引脚可配置为数字或模拟功能。


2、LCD模块寄存器。寄存器看上去不少,但都非常简单。

其中的配置寄存器0(LCD_CR0)  应该是模块的核心寄存器,涉及的内容比较多,但使用也是非常简单。通过对该寄存的配置可对所驱动液晶显示屏的对比度调整、Bias电压来源选择及Bias配置、duty配置、电压泵时钟频率选择、LCD扫描频率选择及LCD使能失能等进行相应配置。其中的“Bias电压来源选择”提供三种选择,一、内部电阻分压;二、外部电阻分压;三、外部电容分压,这对于实际应用非常方便灵活。








其它的寄存器在手册中也同样有着非常详细的描述,这对于LCD模块的正确使用是非常有用的。配置寄存器1(LCD_CR1)中有个位比较重要,即“Mode”位,它与所使用的LCD显示器有关,支持两种显示模式:模式0与模式1。下面是1/4Duty下两种显示模式图例:


输出配置寄存器 0(LCD_POEN0)及输出配置寄存器 1(LCD_POEN1)对具备LCD功能的引脚进行配置,根据所使用LCD的不同可灵活地对"SEG"及“COM”进行配置,将用不的引脚配置为其它用途。


LCD_RAM0~7及LCD_RAM8~F两个寄存器也是非常容易理解,相让LCD的那一段点亮告诉它们就可以了;



三、本次实验
1、硬件连接
       HC32L136 demo板上所配置的LCD显示屏是一款3.3v工作电压,支持1/4 Duty、1/3 Bias驱动方式的小巧型段式液晶屏。对于Bias 产生电路在DEMO板提供了外部电容(C26~C28)分压模式,外部电阻分压模式的电阻(R20~R23)没有焊接。

  


2、程序实现。实验程序是在官方提供的例程基础上进行了更改,例程中Bias 产生电路选用了内部电阻分压模式,显示模式为“模式0”;
主要代码如下:
  1. void LCD_Config(void)
  2. {
  3.         stc_lcd_config_t stcLcdCfg;
  4.    
  5.         DDL_ZERO_STRUCT(stcLcdCfg);
  6.        
  7.         Sysctrl_ClkSourceEnable(SysctrlClkRCL,TRUE);//系统时钟源使能,内部低速时钟
  8.         Sysctrl_SetRCLTrim(SysctrlRclFreq32768);                //内部低速时钟频率TRIM值加载
  9.        
  10.         Sysctrl_SetPeripheralGate(SysctrlPeripheralLcd,TRUE);
  11.         Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
  12.        
  13.         /*和LCD相关端口都要配置为模拟端口*/
  14.         Gpio_SetAnalogMode(GpioPortA, GpioPin9);//COM0
  15.         Gpio_SetAnalogMode(GpioPortA, GpioPin10);//COM1
  16.         Gpio_SetAnalogMode(GpioPortA, GpioPin11);//COM2
  17.         Gpio_SetAnalogMode(GpioPortA, GpioPin12);//COM3
  18.         Gpio_SetAnalogMode(GpioPortA, GpioPin8);//SEG0
  19.         Gpio_SetAnalogMode(GpioPortC, GpioPin9);//SEG1
  20.         Gpio_SetAnalogMode(GpioPortC, GpioPin8);//SEG2
  21.         Gpio_SetAnalogMode(GpioPortC, GpioPin7);//SEG3
  22.         Gpio_SetAnalogMode(GpioPortC, GpioPin6);//SEG4
  23.         Gpio_SetAnalogMode(GpioPortB, GpioPin15);//SEG5
  24.         Gpio_SetAnalogMode(GpioPortB, GpioPin14);//SEG6
  25.         Gpio_SetAnalogMode(GpioPortB, GpioPin13);//SEG7
  26. //        Gpio_SetAnalogMode(GpioPortB, GpioPin3);//VLCDH
  27. //        Gpio_SetAnalogMode(GpioPortB, GpioPin4);//VLCD3
  28. //        Gpio_SetAnalogMode(GpioPortB, GpioPin5);//VLCD2
  29. //        Gpio_SetAnalogMode(GpioPortB, GpioPin6);//VLCD1

  30.         LCD_SetSegCom(0,0xffffff00);                                //设置seg0-7
  31.         LCD_SetSegCom(1,0x10ff);                                                //设置com0-3
  32.         stcLcdCfg.enDispMode = LcdMode0;                //显示模式为模式0
  33.         stcLcdCfg.enBias = LcdBias3;                                //1/3 Bias
  34.         stcLcdCfg.enBiasSrc = LcdInRes_High;//内部电阻分压,大功耗模式
  35.         stcLcdCfg.enClk = LcdRCL;                                                //内部32k
  36.         stcLcdCfg.enDuty = LcdDuty4;                                //1/4Duty
  37.         stcLcdCfg.enCpClk = LcdClk2k;                                //电压泵时钟频率2k
  38.         stcLcdCfg.enScanClk = LcdClk128hz;        //LCD扫描频率
  39.         LCD_Init(&stcLcdCfg);
  40.         LCD_EnFunc(LcdEn,TRUE);                                                        //模块使能或闪屏使能禁止
  41.         LCD_ClearDisp();                                                                                //清屏
  42. }
复制代码
  1. int32_t main(void)
  2. {
  3.         uint16_t cont;
  4.        
  5.         LCD_Config();
  6.        
  7.         //LCD_Display(3579);
  8.         //LCD_FullDisp();                                                //全屏显示
  9.         while(1)
  10.         {
  11.                 for(cont=0; cont<10000; cont++)
  12.                 {
  13.                         LCD_Display(cont);
  14.                         delay1ms(300);
  15.                 }
  16.         }
  17. }
复制代码

四、实验结果


五、总结
       之前只用过HT1621B对段码液晶进行过驱动,第一次使用微控制器所带的LCD控制器模块成功驱动LCD显示屏还是比较兴奋的,不过这都是源于华大电子好的产品及丰富的参考例程。参照官方例程再结合配套的数据及用户手册上手还是挺快的。接下来的时间里还要尝试一下其它的操作。

附件:编译好的测试文件 main.rar (3.8 KB, 下载次数: 6)

沙发
| 2019-8-7 23:22 | 只看该作者
没有电荷泵,对比度会随着电池电压变化。
板凳
| 2019-8-11 21:17 | 只看该作者
小伙不错。。。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

永利游戏开户直营 快速回复 返回顶部 返回列表
339sun.com 老k游戏大厅下载登入 彩票2元网开户直营网 奥门赌场输多赢少网上娱乐场 永利游戏开户直营
澳门赌场招聘网站 天王娱乐城 澳门旧区地图 德州扑克葫芦登入 太阳城娱乐网游戏导航
bbin中国 葡京酒店风水 星际上海时时乐开奖结果 澳门太皇宫网上娱乐场 新濠影汇 银河
yg扑克K登入 太阳城AG国际馆最牛攻略 www.77msc.com 香港到澳门外港码头登入 网络棋牌赢了几千块网上娱乐场