STM8L052R8T6屏幕点亮


前言

初接触这个屏幕还真有点无从下手,网上教程也不多。

参考的是这个教程https://www.cnblogs.com/IdeaMing/p/10985980.html


但是不太详细

一、LCD驱动初始化

void LCD_GLASS_Init(void){
  CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);//打开RTC时钟
  CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);//打开LCD时钟
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);//设置RTC时钟源
  
  LCD_Init( LCD_Prescaler_1,//
           LCD_Divider_31, //
           LCD_Duty_1_4,   //使用的4个COM所以是1/4
           LCD_Bias_1_3,   //
           LCD_VoltageSource_Internal);//内部电压源
  
  //设置需要使用为LCD的IO口
  LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);   //7-0  
  LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0xFF);//15-8
  LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0xF0);//23-16,此处开启23-20
  //  LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0x00);//
  LCD_PortMaskConfig(LCD_PortMaskRegister_4, 0xF0);//
  //  LCD_PortMaskConfig(LCD_PortMaskRegister_5, 0x00);
  /* To set contrast to mean value */
  LCD_ContrastConfig(LCD_Contrast_Level_3);//设置对比度
  LCD_DeadTimeConfig(LCD_DeadTime_0);//设置死区时间
  LCD_PulseOnDurationConfig(LCD_PulseOnDuration_1);//设置停留时间
  
  /* Enable LCD peripheral */
  LCD_Cmd(ENABLE);//使能驱动
}

初始化就不多说了,下面简要说一下我曾遇到问题的函数

  1. LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);
    这个函数配置的时候要参考原理图,原理图上哪些是接的屏幕就配置哪些就行了。
  2. 如果屏幕不清晰就调对比度

二、LCD显示

显示

LCD初始化之后就可以使用下面的函数来让屏幕显示内容

//屏幕全亮
void LCD_GLASS_Check(void)
{
  uint8_t counter = 0;
  for (counter = 0; counter <= LCD_RAMRegister_21; counter++)
  {
    LCD->RAM[counter] = 0xff;
  }
}

每一个寄存器控制8个段,此时就已经可以显示

三、真值表

但是想精准显示任意一个段你还需要知道屏幕和寄存器之间的对应关系。

  1. 首先获取屏幕的真值表信息,以数字1为例。
    在这里插入图片描述
    在这里插入图片描述

  2. 然后查看参考手册看对应关系。
    page284有以下说明:
    The LCD RAM bits S0[i] corresponds to SEG[i] of COM0
    The LCD RAM bits S1[i] corresponds to SEG[i] of COM1
    The LCD RAM bits S2[i] corresponds to SEG[i] of COM2
    The LCD RAM bits S3[i] corresponds to SEG[i] of COM3
    意思是S0[i]对应COM0的SEG[i]

由下图可知LCD_RAM[i]和Sn[i]的对应关系。
在这里插入图片描述
在这里插入图片描述

  1. 查看原理图获取对应关系
    在这里插入图片描述
    在这里插入图片描述
    可知COM1对应LCD_COM3,pin1对应LCD_SEG16
    我们可以得出下图
    在这里插入图片描述

使用

要想让1F亮,直接执行以下代码即可。

LCD->RAM[12] |= 0x10;

总结

1F对应COM1,PIN1
COM1对应LCD_COM3,PIN1对应LCD_SEG16
所以1F对应S3(16)
S3(16)对应LCD_RAM12的第4位(从0开始)。
其他的以此类推

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值