龙芯1B:LCD显示例程

0c9867f7846745bfa090c5fe0f93f6c0.png

文章目录


前言

一、LCD

二、触摸屏芯片XPT2046

1.XPT2046

2.函数

3.实用程序

三、示例程序

总结



前言

一个系统最缺不了人机交互的界面,就像电脑显示器一样,如果没有显示器,电脑自然就失去了很多的有意思的地方,嵌入式系统更是如此,不管做多少最终还是要拿出来展示,要让人轻而易举的理解,要让自己展示的东西通俗易懂。本文章部分参考官网数据手册,只供学习,如有侵权,请联系我,马上删帖道歉!


一、LCD

1B 芯片内 LCD 控制器(Display Controller)的详细描述和配置。Display Controller 作为一个整体的模块,该模块读取指针数据和图像数据,通过对这些数据进行格 式转换、颜色抖动、gamma 调整等步骤产生最终的数据输出,同时为两个显示处理单元产生 同步信号和数据使能信号,最后将最终处理后的图像数据和同步信号发往显示接口。

特性:

⚫ 支持格式转换

⚫ 最大显示支持到 1920×1080@60Hz

⚫ 同步信号可编程

⚫ Gamma 调整查找表

⚫ VBLANK 同步

数据格式:

Display Controller 支持以下数据格式:

R4G4B4 -> 12 bits per pixel

R5G5B5 -> 15 bits per pixel

R5G6B5 -> 16 bits per pixel

R8G8B8 -> 24 bits per pixel        (由此可见,内部并没有很大的字库,字体的大小最大24,如需更大需要文字取模)

寄存器:

765d7df8f11446d582ba2cef2ee65464.png

 8cbcc62ce5884c73b38846cfba598c56.png

 更多LCD详解在:

                链接:https://pan.baidu.com/s/15sifp9y_oxGASH_gAUsP2Q 
                提取码:1234

二、触摸屏芯片XPT2046

1.XPT2046

源代码:ls1x‐drv/spi/xpt2046/xpt1046.c

头文件:ls1x‐drv/include/spi/xpt2046.h

XPT2046 是否使用,在 bsp.h 中配置宏定义:

#define XPT2046_DRV

XPT2046 连接在 SPI0 的片选 1,在 xpt1046.c 中定义:

#define XPT2046_CS 

XPT2046 的通信参数,在 XPT2046_read 函数中定义:

通信参数:

LS1x_SPI_mode_t tfr_mode =
{
    baudrate:       2000000,
    bits_per_char:  8,
    lsb_first:      false,
    clock_pha:     true,
    clock_pol:     true,
    clock_inv:      true,
    clock_phs:      false,
};
/* 通信速率 20M */
/* 通信字节的位数 */
/* 低位先发送 */
/* spi 时钟相位 */
/* spi 时钟极性 */
/* true: 片选低有效 */
/* true: spi 接口模式,
时钟与数据发送同步 */

2.函数

驱动程序 xpt1046.c 实现的函数:

int XPT2046_initialize(void *dev, void *arg); 初始化

int W25X40_read(void *dev, void *buf, int size, void *arg); 读数据

#if (PACK_DRV_OPS)
    extern driver_ops_t *ls1x_xpt2046_drv_ops;
    #define ls1x_xpt2046_init(spi, arg) \
         ls1x_xpt2046_drv_ops‐>init_entry(spi, arg)
 
    #define ls1x_xpt2046_read(spi, buf, size, arg) \
    ls1x_xpt2046_drv_ops‐>read_entry(spi, buf, size, arg)
#else
    #define ls1x_xpt2046_init(spi, arg)          XPT2046_initialize(spi, arg)
    #define ls1x_xpt2046_read(spi, buf, size, arg    XPT2046_read(spi, buf, size, arg)
#endif
注:XPT2046 芯片设计在 LCD 转接板上,通过 40Pins FPC 接口和主板连接;
    XPT2046 的 PENIRQ 信号使用 GPIO54(UART2_RX)连接芯片:
#define XPT2046_USE_GPIO_INT    0     /* 触摸屏 GPIO 中断支持 */
#define XPT2046_USE_GPIO_NUM    54       /* 触摸屏 GPIO 端口 */

3.实用程序

源代码:ls1x‐drv/spi/xpt2046/touch_utils.c

头文件:ls1x‐drv/include/spi/xpt2046.h

触摸信号使用消息发送的宏定义:

#define TOUCHSCREEN_USE_MESSAGE   0

触摸屏回调函数原型:

typedef void (*touch_callback_t)(int x, int y);

实用函数:

int do_touchscreen_calibrate(void); 执行触摸屏校正

int start_touchscreen_task(touch_callback_t cb); 启动触摸屏任务/线程

int stop_touchscreen_task(void); 终止触摸屏任务/线程

三、示例程序

取模说明:

e0360354ed1247ca9a521844183c8575.png

取模软件链接:

                链接:https://pan.baidu.com/s/1jwCGSg-9n37bp-WMoyV0Yg 
                提取码:1234

官方出品是没有显示图片的函数,故而需要自己添加:

f2df7cb9c3404c8fb956956a64074d06.png

disp_p:

void disp_p(unsigned int xpos,unsigned int ypos,unsigned int x1,unsigned int y1,unsigned char *ptrs)
{
    {
        int x, y;
        unsigned char *ptr = ptrs;

        for (y=0; y<y1; y++)
        {
            for (x=0; x<x1; x++)
            {
                unsigned int color;

                color = (*ptr << 8) | *(ptr+1);

                LS1x_draw_rgb565_pixel(x+xpos, y+ypos, color);

                ptr += 2;
            }
        }

        flush_dcache();
    }

}

文字和背景色函数内部都有,直接调用即可!


总结

源码链接:

                文本显示:龙芯1B:LCD显示文本例程-单片机文档类资源-CSDN文库

                文字、图片:龙芯1B:LCD文字、图片显示例程-单片机文档类资源-CSDN文库  (总例程)

 各效果:                 龙芯1B:LCD显示矩形框、水平线、对角线、画点、显示背景色、前景色、清屏例程-单片机文档类资源-CSDN文库

 


联系我们

                vx ——>  buildupup     公众号   嵌入式up   如果文章对您有帮助,请打赏一元呗,感谢支持,分享不易,码字不易。希望对大家帮助!


总有人要赢,为什么不能是我?

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
#include //包含头文件 #include //包含固有函数 #define uint unsigned int //定义一下方便使用 #define uchar unsigned char //定义一下方便使用 #define DATA P0 //LCD12864数据线 sbit RS=P2^2; // 数据\指令 D、I 选择 sbit RW=P2^1; // 读\写 选择 R、W sbit EN=P2^0; // 读\写使能 sbit cs1=P2^4; // 片选1 sbit cs2=P2^3; // 片选2 /********************************/ /* 定义图形字库 */ uchar code Hzk[]={ //左屏幕第1页 0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0x3F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF, 0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF, 0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF, 0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF,0x1F,0xBF, //左屏幕第2页 0xFF,0xFF,0xFF,0xAB,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA, 0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA, 0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA, 0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA, //左屏幕第3页 0xFF,0xFF,0xFF,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0xE0,0xEA,0xE0,0xEA, 0xE0,0xEA,0xE0,0xEA,0xE0,0xEA,0xC0,0xAA,0x00,0xAA,0xE0,0xEA,0xE0,0xEA,0xE0,0xEA, 0xE0,0xEA,0xE0,0xEA,0xE0,0xEA,0x80,0xAA,0x00,0xAA,0x00,0xAA,0xC0,0xEA,0xE0,0xEA, 0xE0,0xEA,0xE0,0xEA,0xC0,0xEA,0x80,0xAA,0x00,0xAA,0xE0,0xEA,0xE0,0xEA,0xE0,0xEA, //左屏幕第4页 0xFF,0xFF,0xFF,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0xFF,0xFF,0xFF,0xFF, 0x38,0xBA,0x38,0xBF,0x3F,0xBF,0x1F,0xAF,0x00,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA, 0x78,0xFA,0xFD,0xFF,0xDF,0xBF,0x0F,0xAA,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x01,0xAA, 0x00,0xAA,0x01,0xEF,0xFF,0xFF,0xFF,0xFE,0x00,0xAA,0x00,0xAA,0x00,0xAA,0xFF,0xFF, //左屏幕第5页 0xFF,0xFF,0xFF,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x0F,0xAF,0x0F,0xAF, 0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x00,0xAA,0x0F,0xAF,0x0F,0xAF,0x0F,0xAA, 0x00,0xAA,0x03,0xAF,0x0F,0xAF,0x0F,0xAE,0x00,0xAA,0x01,0xAB,0x07,0xAF,0x0F,0xAE, 0x0E,0xAE,0x0F,0xAF,0x07,0xAF,0x03,0xAA,0x00,0xAA,0x00,0xAA,0

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值