龙芯1B:LCD显示例程
文章目录
前言
一、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,如需更大需要文字取模)
寄存器:
更多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); 终止触摸屏任务/线程
三、示例程序
取模说明:
取模软件链接:
链接:https://pan.baidu.com/s/1jwCGSg-9n37bp-WMoyV0Yg
提取码:1234官方出品是没有显示图片的函数,故而需要自己添加:
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文库
龙芯1B:LCD显示例程相关推荐
- 【龙芯1B】:LCD显示图片文字背景色前景色、小创语音控制lcd显示、数码管倒计时
项目场景: 闲来无事,写了几个关于嵌入式技能大赛的任务.希望对大家有所帮助.本文开发板由百科荣创的龙芯1b开发板支持,关于嵌入式技能大赛的开发板. LCD显示图片&文字&背景 ...
- 龙芯1B:光照BH1750例程
文章目录 前言 一.BH1750是什么? 二.引脚图以及引脚说明 三.BH1750特点 四.使用步骤 1.基本步骤 2.代码 总结 前言 感谢各位朋友的关注,大家的关注是我不断更新的动力!这一期就写一 ...
- 龙芯1B:pwm的使用例程
文章目录 前言 一.PWM是什么? 二.PWM 芯片 GP7101 1.驱动程序 gp7101.c 实现的函数: 三.pwm波形的产生 1.开发步骤 2.代码实现 总结 前言 up主的联系方式: 微信 ...
- 【龙芯1B】:有源蜂鸣器例程
前言 大家对龙芯1B200有任何问题都可以私信我,大家的关注才是我不断更新的动力. 可能私信不能很及时的回,大家稍微谅解一下,看到立马就回. 一.蜂鸣器介绍 这里简单的介绍一下大家众所周知的蜂鸣器,蜂 ...
- 龙芯1B:串口通信例程
文章目录 前言 一.串口通信? 1.串口通信的基础与分类 2.波特率 3.单工.半双工和全双工 4.起始位.数据位.奇偶校验位.停止位 5.TXD,RXD,GND 二.龙芯UART串口介绍 三.程序代 ...
- 龙芯1B:独立按键例程
目录 前言 一.独立按键说明 二.示例程序 总结 前言 up主的联系方式: 微信公众号:嵌入式up 大家好!大家点点关注,大家的关注才是我持续更新的动力! ls1x-drv:开发板设备的通用驱动,包含 ...
- 龙芯1B:按键外部中断例程
目录 前言 一.什么是外部中断? 1.外部中断:单片机实时地处理外部事件的一种内部机制. 二.外部中断程序开发步骤 1.步骤 2.函数介绍 GPIO中断API函数介绍: 编辑 3.外部中断代码 总结 ...
- 龙芯1B:timer定时器例程
目录 前言 一.定时器是什么? 二.定时器编码示例 1.开发步骤 2.代码 总结 前言 up主的联系方式: 微信公众号:嵌入式up 大家好!大家点点关注,大家的关注才是我持续更新的动力! 一.定时器是 ...
- 【龙芯1B例程】:串口中断实验
龙芯(只供学习,不可商用) 文章目录 前言 一.串口中断是什么? 二.开发步骤 1.龙芯1B串口驱动函数(内置) 2.串口中断示例代码 3.代码示例图 总结 前言 文章参考官方各类书籍,以及网络知识, ...
最新文章
- linux下安装sbt_如何在Linux上安装SBT
- 彩色图像到灰度转换 常见方法汇总与对比
- 关于MySQL二次安装问题
- mysql 增加建表权限,mysql_基本权限模型建表结构
- rpg制作大师2003_RPG制作大师MV 我们一起做游戏(十四)
- 天主教、新教、东正教
- D3.js制作地图等值线与饼图
- C语言链表翻转的三种实现方式(栈、头插法、递归法)
- 计算机基础知识2003,计算机基础知识PPT2003练习题及答案(DOC)
- Windows7旗舰版安装 Anaconda3 详细图文教程
- JS·经典·炫彩菜单(动画效果) for jquery
- 七大热门小程序框架横评,谁是性能之王
- 代码没问题但运行不出来
- Lcd ST7789S寄存器初始化配置
- 托运行李安检系统行业研究及十四五规划分析报告
- 趣图:代码突然又可以运行了,why?
- 2022.3.4总结+45. 跳跃游戏 II 力扣
- 【时间序列分析】03. 谱密度
- 那些外贸老鸟们都在认真使用的8个实用小工具
- vue+vuecli+webpack中使用mockjs模拟后端数据
热门文章
- sql字段拼接成新字段
- 疲劳驾驶监测方案_疲劳驾驶检测方法
- 【2020年10月新书推荐】程序员值得一读的Python新书
- linux c 定义结构体,Linux查看C结构体定义
- 嘉实基金或将成国内首家发行合规「港元稳定币」的公司
- itune备份在哪里_iTune的iPhone备份文件在哪里,以及如何从中获取真实文件?
- Nancy使用模型(Using Models)
- vue中使用echarts做一个雷达图
- ::before / ::after怎么使用hover
- AVX 指令集并行技术优化积分计算圆周率 π