嵌入式Linux开发,如何让LCD屏幕显示图片,有函数调用么?

嵌入式Linux开发,如何让LCD屏幕显示图片,有函数调用么?,第1张

两种实现,一是用 framebuffer,二是开 X 服务。

相对来说,低性能的嵌入式竖李用 framebuffer 更好。如果性能好可以用 X 服务实现图形显示。前者基于内核的显示驱动,后者肆纤轮看 X 服务的驱动了。

X 服务可以跑很多软件不需要重新开发,但 c/s 架构效率不是很好。

framebuffer 是软件直接 *** 作硬件的存储器,性能实现比较好。但很多功能都要自己写代码实现。

显裂信示图片在 fb 里面我要是没记错,就是把图片解码成你的软件支持的格式,之后把这部分数据写入 fb 内存。

怎么弄就别找我了。建议看看相关的开发文章。

还有就是 QT 库本身就有直接 fb 输出的函数库,GTK 似乎也有,但目前好像还不是完全可用。用他们作为过渡函数库还不错的。但要注意他们的软件协议!

楼主可以参考这个程序,只要稍微修改一下端口或参考一些函数即可,希望对您有用,有什么问题的话可以问我~~

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

//这三个引脚参考资料

sbit E=P2^7 //1602使能引脚

sbit RW=P2^6 //1602读写引脚

sbit RS=P2^5 //1602数据/命令选择引脚

/********************************************************************

* 名称 : delay()

* 功能 : 延时,延时时间大概为140US。拆厅

* 输入 : 无

* 输出 : 无

***********************************************************************/

void delay()

{

int i,j

for(i=0i<=100i++)

for(j=0j<=20j++)

}

/********************************************************************

* 名称 : enable(uchar del)

* 功能 : 1602命令函数

* 输入 : 输入的命令值

* 输出 : 无

***********************************************************************/

void enable(uchar del)

{

P0 = del

RS = 0

RW = 0

E = 0

delay()

E = 1

delay()

}

/********************************************************************

* 名称 : write(uchar del)

* 功能 : 1602写数据函数

* 输入 : 需要写入旅宏隐1602的绝御数据

* 输出 : 无

***********************************************************************/

void write(uchar del)

{

P0 = del

RS = 1

RW = 0

E = 0

delay()

E = 1

delay()

}

/********************************************************************

* 名称 : L1602_init()

* 功能 : 1602初始化,请参考1602的资料

* 输入 : 无

* 输出 : 无

***********************************************************************/

void L1602_init(void)

{

enable(0x01)

enable(0x38)

enable(0x0c)

enable(0x06)

enable(0xd0)

}

/********************************************************************

* 名称 : L1602_char(uchar hang,uchar lie,char sign)

* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下

L1602_char(1,5,'b')

* 输入 : 行,列,需要输入1602的数据

* 输出 : 无

***********************************************************************/

void L1602_char(uchar hang,uchar lie,char sign)

{

uchar a

if(hang == 1) a = 0x80

if(hang == 2) a = 0xc0

a = a + lie - 1

enable(a)

write(sign)

}

/********************************************************************

* 名称 : L1602_string(uchar hang,uchar lie,uchar *p)

* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下

L1602_string(1,5,"ab cd ef")

* 输入 : 行,列,需要输入1602的数据

* 输出 : 无

***********************************************************************/

void L1602_string(uchar hang,uchar lie,uchar *p)

{

uchar a

if(hang == 1) a = 0x80

if(hang == 2) a = 0xc0

a = a + lie - 1

enable(a)

while(1)

{

if(*p == '\0') break

write(*p)

p++

}

}

/********************************************************************

* 名称 : Main()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

***********************************************************************/

void Main()

{

uchar i = 48

L1602_init()

L1602_char(1,5,'b')

L1602_string(1,1," 0123456789 ")

L1602_string(2,1," ABCDEDGHIJ ")

while(1)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12369203.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存