逐行扫描型Memory LCD显存管理与emWin移植
因为Memory LCD 的特性,不能设置像素坐标,只能用缓存整体刷新。
所以对于Memory LCD来说,emWin移植仅与打点函数有关,这里用Sharp Memory LCD(ls013b7dh03)作为实例。
//LCD的显存,逐行扫描
//存放格式如下.
//[0]0 1 2 3 ... 16
//[1]0 1 2 3 ... 16
//[2]0 1 2 3 ... 16
//[3]0 1 2 3 ... 16
//[4]0 1 2 3 ... 16
//[5]0 1 2 3 ... 16
//[6]0 1 2 3 ... 16
//[7]0 1 2 3 ... 16
...
//[127]0 1 2 3 ... 16
#define OLED_MAX_X 128
#define OLED_MAX_Y 128
#define LINE (128)
#define LINE_SIZE (16)
static char LCD_GRAM[LINE][LINE_SIZE];
void lcd_drawpoint(uint16_t x,uint16_t y,bool bDraw){
uint16_t pos,bx,tmp;
if(x>OLED_MAX_X-||y>OLED_MAX_Y-)
return;
pos=-y/;
bx=y%;
tmp=<<(bx);
if(bDraw)
LCD_GRAM[x][pos]|= tmp;
else
LCD_GRAM[x][pos]&= ~tmp;
}
void lcd_fillRect(uint16_t x,uint16_t y,uint16_t w,uint16_t h,bool bDraw)
{
uint16_t wi,hi;
for(hi=;hi<h;hi++){
for(wi=;wi<w;wi++)
lcd_drawpoint(x+wi,y+hi,bDraw);
}
}
void lcd_fillRectByXY(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,bool bDraw)
{
uint16_t xStart=,yStart=;
uint16_t w,h;
if(x0<x1){
xStart=x0;
w=x1-x0+;
}else{
xStart=x1;
w=x0-x1+;
}
if(y0<y1){
yStart=y0;
h=y1-y0+;
}else{
yStart=y1;
h=y0-y1+;
}
lcd_fillRect(xStart,yStart,w,h,bDraw);
}
uint32_t lcd_getpoint(uint16_t x,uint16_t y)
{
}
逐行扫描型Memory LCD显存管理与emWin移植的更多相关文章
- 分页型Memory LCD显存管理与emWin移植
上一篇随笔整理了一下逐行扫描型Memory LCD的显存管理与emWin移植,这篇就整理一下分页型Memory LCD显存管理与emWin移植. //此处以SSD1306作为实例 //OLED的显存/ ...
- TensorFlow中的显存管理器——BFC Allocator
背景 作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 使用GPU训练时,一次训练任务无论是模型参数还是中间结果都需要占用大量显存.为了 ...
- 【原创】Linux环境下的图形系统和AMD R600显卡编程(4)——AMD显卡显存管理机制
显卡使用的内存分为两部分,一部分是显卡自带的显存称为VRAM内存,另外一部分是系统主存称为GTT内存(graphics translation table和后面的GART含义相同,都是指显卡的页表,G ...
- tensorflow显存管理
在运行上面的blog的Tensorflow小程序的时候程序我们会遇到一个问题,当然这个问题不影响我们实际的结果计算,但是会给同样使用这台计算机的人带来麻烦,程序会自动调用所有能调用到的资源,并且全占满 ...
- 6G显卡显存不足出现CUDA Error:out of memory解决办法
从6月初开始,6G显存的显卡开始出现CUDA Error:out of memory的问题,这是因为dag文件一直在增加,不过要增加到6G还需要最少两年的时间. 现在出现问题的原因是1.内核太古老 ...
- [置顶]
基于FPGA的VGA简易显存设计&NIOS ii软核接入
项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...
- [Pytorch]深度模型的显存计算以及优化
原文链接:https://oldpan.me/archives/how-to-calculate-gpu-memory 前言 亲,显存炸了,你的显卡快冒烟了! torch.FatalError: cu ...
- Cpu Gpu 内存 显存 数据流
[精]从CPU架构和技术的演变看GPU未来发展 http://www.pcpop.com/doc/0/521/521832_all.shtml 显存与纹理内存详解 http://blog.csdn.n ...
- 李洪强iOS经典面试题137-内存管理
内存管理 ARC处理原理 ARC是Objective-C编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只不过是在代码编译时为你自动在合适的位置插入release或autoreleas ...
随机推荐
- 开启基本数据结构和算法之路--初识Graphviz
在我的Linux刀耕开荒阶段,就想开始重拾C,利用C实现常用的基本数据结构和算法,而数据结构和算法的掌握的熟练程度正是程序的初学者与职业程序员的分水岭. 那么怎么开启这一段历程呢? 按照软件工程的思想 ...
- Dojo: Quick Start
1.Dojo学习地址 2.Dojo快速开始 2.1.Dojo引入 2.2.指定Dojo模块的位置 2.3.模块加载require 3.查找Dom节点 3.1.根据id查找dom节点 3.2.根据c ...
- sqlserver中根据表中的配置概率取到数据
create proc pr_zhanglei_test1 /*功能描述: 根据t_zhanglei_test1中perc设置的概率,取到相应数据old_id */ as declare @per ...
- Linux文件操作的主要接口API及相关细节
操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...
- Re 模块
re模块提供方法如compile, search, findall, match和其他的方法.这些函数是使用REGEX语法建立了一个模式来处理文本的. 第一个方法:search. 一个基本的搜索工作原 ...
- [LeetCode] Game of Life 生命游戏
According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a cellul ...
- FineUI(专业版)v3.2.0 发布(ASP.NET UI控件库)!
+2016-08-20 v3.2.0 +表格增强. +表格列RenderField增加属性ClientHtmlEncode,用于在客户端进行HTML编码. -增加示例:单元格编辑->杂项-> ...
- JAVA多线程的总结
1-----------------------------------基本概念------------------------------------------------- (1)多线程:一个应 ...
- MVC跨域CORS扩展
一般的基于浏览器跨域的主要解决方法有这么几种:1.JSONP 2.IFrame方式 3.通过flash实现 4.CORS跨域资源共享 ,这里我们主要关注的是在MVC里面的CORS ...
- MySQL字符串函数substring:字符串截取
MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...