AWTK中怎么实现一个LCD接口

  介绍

这期内容当中小编将会给大家带来有关AWTK中怎么实现一个LCD接口,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

一、基于寄存器实现的LCD

在低端的嵌入式平台上,内存只有几十KB,没有足够的内存使用framebuffer,通常直接向寄存器中写入坐标和颜色数据.lcd_reg。公司提供了基于寄存器实现的LCD,用它实现不同平台的液晶时,只需要提供两个宏即可:

<李>

set_window_func设置要写入颜色数据的区域,相对于每次设置坐标而言,可以极大提高工作效率。

<李>

write_data_func写入颜色数据。

下面是STMF103ze上液晶的实现,这里把set_window_func定义为TFT_SetWindow,把write_data_func定义为TFT_WriteData:

 # include “tftlcd.h"
  # include “tkc/mem.h"
  # include “lcd/lcd_reg.h"
  
  typedef  uint16_t  pixel_t;
  
  # define  LCD_FORMAT  BITMAP_FMT_BGR565
  # define  pixel_from_rgb (r, g, b),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \
  ,,((((r),在祝辞,3),& lt; & lt;, 11), |, (((g),在祝辞,2),& lt; & lt;, 5), |, ((b),在祝辞,3))
  # define  pixel_to_rgba (p),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \
  {才能,(0 xff ,, ((, p 的在祝辞,11),& lt; & lt;, 3)),, (0 xff ,, ((, p 的在祝辞,5),& lt; & lt;, 2)),, (0 xff ,, (p  & lt; & lt;, 3)),}
  
  # define  set_window_func  LCD_Set_Window
  # define  write_data_func  LCD_WriteData_Color
  
  # include “基地/pixel.h"
  # include “混合/pixel_ops.inc"
  # include “lcd/lcd_reg.inc" 

基于寄存器实现的实现有几个限制:

<李>

由于内存和CPU性能的问题,不提供任何类型的动画。

<李>

由于读取液晶当前内容速度很慢,所以需要与底色进行混合时,由GUI自己处理(应用无需关心)。

<李>

屏幕大时会出现闪烁。

在AWTK中,不再推荐此方法,基于片段帧缓冲实现的液晶是更好的选择。

二,基于片段帧缓冲实现的lcd

在低端的嵌入式平台上,内存只有几十KB,没有足够的内存创建一屏的帧缓冲,而使用基于寄存器的方式屏幕容易闪烁。

比较好的办法是,创建一小块帧缓冲,把屏幕分成很多小块,一次只绘制一小块,由于有脏矩形机制,除了打开新窗口时,在正常情况下,绘制速度仍然很快,可以有效的解决闪速问题。

lcd_mem_fragment。公司提供了基于片段帧缓冲实现的LCD,用它实现不同平台的液晶时,只需要提供两个宏即可:

<李>

set_window_func设置要写入颜色数据的区域,相对于每次设置坐标而言,可以极大提高工作效率。

<李>

write_data_func写入颜色数据。

下面是STMF103ze上液晶的实现,这里把set_window_func定义为TFT_SetWindow,把write_data_func定义为TFT_WriteData:

 # include “tftlcd.h"
  
  # include “tkc/mem.h"
  # include “lcd/lcd_mem_fragment.h"
  
  typedef  uint16_t  pixel_t;
  
  # define  LCD_FORMAT  BITMAP_FMT_BGR565
  # define  pixel_from_rgb (r, g, b),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \
  ,,((((r),在祝辞,3),& lt; & lt;, 11), |, (((g),在祝辞,2),& lt; & lt;, 5), |, ((b),在祝辞,3))
  # define  pixel_to_rgba (p),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \
  {才能,(0 xff ,, ((, p 的在祝辞,11),& lt; & lt;, 3)),, (0 xff ,, ((, p 的在祝辞,5),& lt; & lt;, 2)),, (0 xff ,, (p  & lt; & lt;, 3)),}
  
  # define  set_window_func  LCD_Set_Window
  # define  write_data_func  LCD_WriteData_Color
  
  # include “基地/pixel.h"
  # include “混合/pixel_ops.inc"
  # include “lcd/lcd_mem_fragment.inc" 

三,基于framebuffer实现的lcd

这是在嵌入式平台上最常见的方式,一般有两个帧缓冲区,一个称为>上述就是小编为大家分享的AWTK中怎么实现一个lcd接口了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

AWTK中怎么实现一个LCD接口