1)实验平台:正点原子Linux开发板
2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南》
关注官方微信号公众号,获取更多资料:正点原子
文件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