韦东山 IMX6ULL和正点原子_「正点原子Linux连载」 第二十四章RGBLCD显示实验(二)...

这篇博客介绍了在Linux开发板上进行RGB LCD显示的实验,包括LCD初始化、API函数的使用,如画线、矩形、圆以及字符和数字显示。博主详细解析了《正点原子I.MX6U嵌入式Linux驱动开发指南》中的内容,提到了函数声明和实现,以及如何使用PCtoLCD2002软件提取字符点阵数据。文章还给出了main.c文件的代码示例,展示如何调用LCD API实现图形和文本的显示。最后,讲述了编译下载验证的步骤,包括编写Makefile和链接脚本,以及使用imxdownload工具烧录固件。
摘要由CSDN通过智能技术生成

1)实验平台:正点原子Linux开发板

2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南
关注官方微信号公众号,获取更多资料:正点原子

348874aecee417a35a3aa6e37c6f333b.png

文件bsp_lcd.c里面一共有10个函数,第一个函数是lcd_init,这个是LCD初始化函数,此函数先调用LCD的IO初始化函数、时钟初始化函数、复位函数等,然后会按照我们前面讲解的步骤初始化eLCDIF相关的寄存器,最后使能eLCDIF。第二个函数是lcdgpio_init,这个是LCD的IO初始化函数。第三个函数lcdclk_init是LCD的时钟初始化函数。第四个函数lcd_reset和第五个函数lcd_noreset分别为复位LCD的停止LCD复位函数。第六个函数lcd_enable是eLCDIF使能函数,用于使能eLCDIF。第七个和第八个是画点和读点函数,分别为lcd_drawpoint和lcd_readpoint,通过这两个函数就可以在LCD的指定像素点上显示指定的颜色,或者读取指定像素点的颜色。第九个函数lcd_clear是清屏函数,使用指定的颜色清除整个屏幕。最后一个函数lcd_fill是填充函数,使用此函数的时候需要指定矩形的起始坐标、终止坐标和填充颜色,这样就可以填充出一个矩形区域。

在bsp_lcdapi.h中输入如下所示内容:

示例代码24.3.3 bsp_lcdapi.h文件代码

1 #ifndef BSP_LCDAPI_H

2 #define BSP_LCDAPI_H

3/***************************************************************

4 Copyright © zuozhongkai Co., Ltd. 1998-2019. All rights reserved.

5文件名 : bsp_lcdapi.h

6作者 : 左忠凯

7版本 : V1.0

8描述 : LCD显示API函数。

9其他 : 无

10论坛 : www.openedv.com

11日志 : 初版V1.0 2019/3/18 左忠凯创建

12 ***************************************************************/

13 #include "imx6ul.h"

14 #include "bsp_lcd.h"

15

16/* 函数声明 */

17void lcd_drawline(unsignedshort x1,unsignedshort y1,unsigned

short x2,unsignedshort y2);

18void lcd_draw_rectangle(unsignedshort x1,unsignedshort y1,

unsignedshort x2,unsignedshort y2);

19void lcd_draw_circle(unsignedshort x0,unsignedshort y0,

unsignedchar r);

20void lcd_showchar(unsignedshort x,unsignedshort y,

unsignedchar num,unsignedchar size,

unsignedchar mode);

21unsignedint lcd_pow(unsignedchar m,unsignedchar n);

22void lcd_shownum(unsignedshort x,unsignedshort y,

unsignedint num,unsignedchar len,

unsignedchar size);

23void lcd_showxnum(unsignedshort x,unsignedshort y,

unsignedint num,unsignedchar len,

unsignedchar size,unsignedchar mode);

24void lcd_show_string(unsignedshort x,unsignedshort y,

unsignedshort width,unsignedshort height,

unsignedchar size, char*p);

25 #endif

文件bsp_lcdapi.h内容很简单,就是函数声明。在bsp_lcdapi.c中输入如下内容:

示例代码24.3.4 bsp_lcdapi.c文件代码

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

Copyright © zuozhongkai Co., Ltd. 1998-2019. All rights reserved.

文件名 : bsp_lcdapi.c

作者 : 左忠凯

版本 : V1.0

描述 : LCD API函数文件。

其他 : 无

论坛 : www.openedv.com

日志 : 初版V1.0 2019/3/18 左忠凯创建

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

1 #include "bsp_lcdapi.h"

2 #include "font.h"

3

4/*

5 * @description : 画线函数

6 * @param - x1 : 线起始点坐标X轴

7 * @param - y1 : 线起始点坐标Y轴

8 * @param - x2 : 线终止点坐标X轴

9 * @param - y2 : 线终止点坐标Y轴

10 * @return : 无

11 */

12void lcd_drawline(unsignedshort x1,unsignedshort y1,

unsignedshort x2,unsignedshort y2)

13{

14 u16 t;

15int xerr =0, yerr =0, delta_x, delta_y, distance;

16int incx, incy, uRow, uCol;

17 delta_x = x2 - x1; /* 计算坐标增量 */

18 delta_y = y2 - y1;

19 uRow = x1;

20 uCol = y1;

21if(delta_x >0) incx =1; /* 设置单步方向 */

22elseif(delta_x==0) incx =0;/* 垂直线 */

23else

24{

25 incx =-1;

26 delta_x =-delta_x;

27}

28

29if(delta_y>0) incy=1;

30elseif(delta_y ==0) incy=0; /* 水平线 */

31else

32{

33 incy =-1;

34 delta_y =-delta_y;

35}

36if( delta_x > delta_y) distance = delta_x;/*选取基本增量坐标轴 */

37else distan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值