历史上的今天
返回首页

历史上的今天

今天是:2025年06月01日(星期日)

2019年06月01日 | stemwin 19264液晶屏底层驱动编写

2019-06-01 来源:eefocus

使用stemwin会使开发界面编的简单快捷。对于单色屏19264只需要编写打点和获取点这两个函数。19264在Y方向显示上使用分页显示,即有8页 192列,所以在编写dadi大点函数时最简便的方法就是分配一块显示hua缓存,所有数据的显示都通过操作这块现存来实现。下面贴出代码方便以后查看


 

//定义显示缓存64行192列 由于64行 必须同时操作一页所以数组定义64/8页

char g_arrDispBuf[64/8][192]={0,};

const uint8_t aOrTab[8]  = {0x01, 0x02, 0x04, 0x08,0x10,0x20,0x40,0x80};

const uint8_t aAndTab[8] = {0xFE, 0xFD, 0xFB, 0xF7,0xEF,0xDF,0xBF,0x7F};

 

 

#define LCD_RST_0 LCD_RST_PORT->BSRRH = LCD_RST_PINS

#define LCD_RST_1 LCD_RST_PORT->BSRRL = LCD_RST_PINS

 

#define LCD_CS_0 LCD_CS_PORT->BSRRH = LCD_CS_PINS

#define LCD_CS_1 LCD_CS_PORT->BSRRL = LCD_CS_PINS

#define LCD_CD_0 LCD_CD_PORT->BSRRH = LCD_CD_PINS

#define LCD_CD_1 LCD_CD_PORT->BSRRL = LCD_CD_PINS

#define LCD_SCK_0 LCD_SCK_PORT->BSRRH = LCD_SCK_PINS

#define LCD_SCK_1 LCD_SCK_PORT->BSRRL = LCD_SCK_PINS

#define LCD_SDA_0 LCD_SDA_PORT->BSRRH = LCD_SDA_PINS

#define LCD_SDA_1 LCD_SDA_PORT->BSRRL = LCD_SDA_PINS

#define LCD_BL_ON LCD_BL_PORT->BSRRH = LCD_BL_PINS

#define LCD_BL_OFF     LCD_BL_PORT->BSRRL = LCD_BL_PINS

 

//写指令到 LCD 模块

void LCD_SendCmd(int data)

{

char i;

LCD_CS_0;

LCD_CD_0;

for(i=0;i<8;i++)

{

LCD_SCK_0;

if(data&0x80)

{

LCD_SDA_1;

}

else 

{

LCD_SDA_0;

}

LCD_SCK_1;

data=data<<=1;

}

LCD_CS_1;

}

//写数据到 LCD 模块

void LCD_SendData(int data)

{

char i;

LCD_CS_0;

LCD_CD_1;

for(i=0;i<8;i++)

{

LCD_SCK_0;

if(data&0x80) 

{

LCD_SDA_1;

}

else 

{

LCD_SDA_0;

}

LCD_SCK_1;

data=data<<=1;

}

LCD_CS_1;

}

 

//u8 page(0-7共8页),

//u8 column(列0-191)

void LCD_SetAddr(u8 page,u8 column)

{

//设置页地址。每页是 8 行。一个画面的 64 行被分成 8 个页。

//0-7页共8页

LCD_SendCmd(0xb0+page); 

//0-191列共192列

//设置列地址的高 4 位

LCD_SendCmd(((column>>4)&0x0f)+0x10); 

//设置列地址的低 4 位

LCD_SendCmd(column&0x0f); 

 

}

 

/*

 (x 0,y 0)

..............................................(y 0,x 191)

. |

. |

. |

.-----------.(y 4,x 12)

.

.

.

.

.

  (y 63,x 0)

*/

//y(0-63)  x(0-191) nColor(0不显示 1显示)

void LCD_DrawDots(u8 x,u8 y, u8 nColor)

{

//判断X(列0-191)在哪一列

u8 nColumnIndex;

//判断Y(行0-64)在哪一页

u8 nPageIndex ;

//判断这一页的哪一位

u8 nBitIndex;

u8 h = y;//行

u8 l = x;//列

//y(0-63)  x(0-191)

//LIMIT(0,l,191);

//LIMIT(0,h,63);

  //判断列(0-191)在哪一列

nColumnIndex = l;

//判断行(0-64)在哪一页

//nPageIndex = row/8;

nPageIndex = h>>3;

//判断这一页的哪一位

//nBitIndex = row%8;

nBitIndex = h-(nPageIndex<<3);

//显示 

if(nColor == 0)

{

//g_arrDispBuf[nColumnIndex][nPageIndex] |= (0x01< g_arrDispBuf[nPageIndex][nColumnIndex] |= aOrTab[nBitIndex];

}

else

{

//g_arrDispBuf[nColumnIndex][nPageIndex] &= ~(0x01< g_arrDispBuf[nPageIndex][nColumnIndex] &= aAndTab[nBitIndex];

}

 

//设置地址

LCD_SetAddr(nPageIndex,nColumnIndex);

//写数据

LCD_SendData(g_arrDispBuf[nPageIndex][nColumnIndex]);

}

 

 

//y(0-63)  x(0-191) nColor(0不显示 1显示)

u8 LCD_GetDots(u8 x,u8 y)

{

//判断X(列0-191)在哪一列

u8 nColumnIndex;

//判断Y(行0-63)在哪一页

u8 nPageIndex ;

//判断这一页的哪一位

u8 nBitIndex;

//查找出这一页的这一列缓存数据

u8 h = y;//行

u8 l = x;//列

  //判断列(0-191)在哪一列

nColumnIndex = l;

//判断行(0-64)在哪一页

//nPageIndex = row/8;

nPageIndex = h>>3;

//判断这一页的哪一位

//nBitIndex = row%8;

nBitIndex = h-(nPageIndex<<3);

//显示

//return ((g_arrDispBuf[nPageIndex][nColumnIndex] & (0x01< return ((g_arrDispBuf[nPageIndex][nColumnIndex] & aOrTab[nBitIndex])?0:1);

 

}

 

 

//全屏清屏

void LCD_ClearScreen(void)

{

//行row  列column

u8 page,column;

for(page=0;page<8;page++)

{

LCD_SetAddr(page,0);

for(column=0;column<192;column++)

{

LCD_SendData(0x00);

g_arrDispBuf

推荐阅读

史海拾趣

AEMC Instruments公司的发展小趣事

随着产品的不断完善和升级,AEMC Instruments公司开始积极拓展市场。公司加强与国际市场的合作,通过参加国际展会、建立全球分销商网络等方式,将产品推向全球。同时,公司还积极寻求与国际知名企业的合作,共同研发新产品和技术,以进一步提升产品的竞争力。这些举措不仅扩大了公司的市场份额,也提高了公司的国际知名度。

Advanced Ceramic X Corporation公司的发展小趣事

AEMC Instruments公司始终注重产品品质和质量管理。公司建立了完善的质量管理体系,并通过了多项国际认证,如ISO 9001质量管理体系认证等。这些认证不仅证明了公司在品质管理方面的实力,也提高了客户对产品的信任度。同时,公司还加强了对供应商和生产过程的管理,确保从原材料采购到产品生产的每一个环节都符合国际标准和客户要求。

乾坤(Cyntec)公司的发展小趣事

乾坤(Cyntec)公司在电子行业初创时期面临着诸多挑战。由于市场上已经存在多家知名的电子产品制造商,作为一家新兴公司,乾坤必须要在激烈的市场竞争中找到自己的定位。公司创始人深知,只有通过技术创新和产品差异化,才能在市场中站稳脚跟。于是,他们投入大量资源进行研发,专注于开发高性能、高稳定性的电子元器件。经过一段时间的努力,乾坤成功推出了一系列具有自主知识产权的新型电子元器件,这些产品很快在市场上获得了良好的口碑,为公司的后续发展奠定了坚实的基础。

ACI [Applied Concepts, Inc.]公司的发展小趣事

在电子行业的激烈竞争中,ACI公司凭借其卓越的技术创新能力脱颖而出。公司研发团队不断攻克技术难关,推出了一系列具有竞争力的电子产品。这些产品不仅性能卓越,而且设计独特,满足了消费者的多样化需求。通过技术创新,ACI成功打开了市场,赢得了消费者的青睐。

ANADIGICS公司的发展小趣事

随着全球电子市场的不断扩大,ACI公司开始将目光投向海外市场。公司积极实施国际化战略,通过设立海外分支机构、参加国际展会等方式拓展市场。同时,ACI还加强了与国际同行的交流与合作,共同推动电子行业的发展。通过国际化布局,ACI成功打开了海外市场的大门,为公司的发展注入了新的动力。

Cavium Networks公司的发展小趣事

在电子行业的快速发展中,Cavium Networks 公司凭借其创新的技术和敏锐的市场洞察力,成功推出了基于 MIPS64 的单核和双核 OCTEON 处理器系列。这款处理器为网络、无线、控制和存储应用提供了高度集成化和低成本的64位计算解决方案,成为当时业界领先的面向下一代智能网络的新型处理器。OCTEON 处理器的诞生,标志着 Cavium Networks 在网络通信领域的技术实力得到了进一步提升,也为其后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

0-30v_4a数控稳压电源

0-30v_4a数控稳压电源…

查看全部问答>

mmc国赛程序

本帖最后由 paulhyde 于 2014-9-15 08:55 编辑  …

查看全部问答>

【专题讲座】你不可不知的嵌入式发展趋势(一)

  身在嵌入式领域做设计的我们,是不是有时也会爆出这样的疑问:究竟什么是嵌入式?嵌入式未来几年将如何发展?目前市场最火的嵌入式应用有哪些?最新的嵌入式技术又包括什么?还有哪些是我们未曾想到的?   本期的专题,将携嵌入式领域诸多大 ...…

查看全部问答>

请教SD卡启动NK.bin

小弟遇到难题,请教各位前辈!分都用完了,还请各位前辈帮帮我。 问题:在eboot启动后,添加从SD(fat or fat32)卡直接启动NK的工作。目前进展,nk.nb0已经可以读到ram,ce也已经起来了。 目前需要使nk.bin也可以这样放到SD卡里面启动。不知道nk ...…

查看全部问答>

[猎头职位]招聘硬件工程师(北京)

一家从事数字移动电视,宽带网络等产品开发的大型欧洲企业招聘硬件工程师,高级硬件工程师,Leader.工作职责包括: 客户需求分析; ?产品具体硬件技术规范的制定; ?完成复杂的技术模块的可行性研究,管理各种硬件设计工作,如:原理图设计,PCB ...…

查看全部问答>

WDM驱动安装制作

我有一个虚拟串口驱动,和相应的inf文件,在控制面板中,通过\"添加硬件\"(xp系统)可以安装成功.我想编写一个自己的安装程序代替此windows的功能。不知有什么思路? 我的邮箱709326052@qq.com…

查看全部问答>

请教arm仿真器问题

请问如果使用AXD和仿真器调试,板子的flash上要先烧boot么? 我每次都要先烧一个boot来初始化CPU,才能用AXD和仿真器调试其他程序。 是不是一定要烧BOOT呢? 我想如果仿真器连上芯片,应该和板子上的程序无关才对啊~…

查看全部问答>

有没有domino中用ajax生成树形部门选择对话框的代码?

因人数较多时,一次显示出来有点慢,就像eeworld那样的,点击时异步计算下级菜单并显示出来。在domino中做出来的朋友提供一下,谢谢! 给出方案的送100分。…

查看全部问答>

打印机旋转180度打印问题

请问一下 OKI 1190C 针孔打印机 能不能旋转180度打印,我向打印的是  超市的标价签,有没有什么外部驱动什么的,打印机设置里面根本没有反转打印这一项,那位能帮个忙吗?…

查看全部问答>

新手请教关于stm8的捕获问题

我现在使用的是STM8s103单片机,哪位大侠有这款单片机的捕获功能的例子,如果是用库函数写的程序就不用了,因为初学这个cpu所以想参考下,希望各位大侠帮个忙。。。。。。。我的邮箱307179045@qq.com…

查看全部问答>