首页 > 其他分享 >【正点原子K210连载】第二十四章 LCD显示实验 摘自【正点原子】DNK210使用指南-CanMV版指南

【正点原子K210连载】第二十四章 LCD显示实验 摘自【正点原子】DNK210使用指南-CanMV版指南

时间:2024-09-05 15:54:27浏览次数:11  
标签:函数 color K210 正点 原子 LCD lcd 模块 所示


第二十四章 LCD显示实验

本章将介绍初步介绍CanMV下LCD的使用。通过本章的学习,读者将学习到板载LCD的简单使用。 本章分为如下几个小节: 24.1 lcd模块介绍 24.2 硬件设计 24.3 程序设计 24.4 运行验证

24.1 lcd模块介绍 lcd模块是CanMV内置的模块,lcd模块用于驱动LCD进行一些简单的显示或获取LCD的相关信息。 lcd模块提供了init()函数,用于初始化LCD,init()函数如下所示: lcd.init(type=1, freq=15000000, color=lcd.BLACK) init()用于对LCD进行初始化,初始化时可以传入部分初始化参数。 type指的是设备类型,该参数是CanMV的保留参数,不用理会也不可传入其他非默认值。 freq指的是与LCD通讯的SPI的通讯速率,通常情况下保持默认即可。 color指的是LCD初始化后的全屏显示的颜色,默认为黑色。 init()函数的使用示例如下所示: import lcd

lcd.init() lcd模块提供了width()和height()函数,分别用于获取LCD的宽度(水平分辨率)和高度(垂直分辨率),width()和height()函数如下所示: lcd.width() lcd.height() width()和height()函数的使用示例如下所示: import lcd

width = lcd.width() height = lcd.height() lcd模块提供了fill_rectangle()函数,用于绘制一个填充矩形,fill_rectangle函数如下所示: lcd.fill_rectangle(x, y, w, h, color) x、y、w和h分别指的是矩形的左上角X和Y坐标以及矩形的宽度和高度。 color指的是矩形的填充颜色,该参数可以值元组指定的RGB三个通道的值,如(255, 255, 255)或RGB565的整数值,如0x00F8(高低字节需进行对调),也可以是lcd模块中定义好的颜色常量,如下表所示: 常量 颜色 lcd.BLACK Black lcd.NAVY Navy lcd.DARKGREEN Dark green lcd.DARKCYAN Dark cyan lcd.MAROON Maroon lcd.PURPLE Purle lcd.OLIVE Olive lcd.LIGHTGREY Light grey lcd.DARKGREY Dark grey lcd.BLUE Blue lcd.GREEN Green lcd.CYAN Cyan lcd.RED Red lcd.MAGENTA Magenta lcd.YELLOW Yellow lcd.WHITE White lcd.ORANGE Orange lcd.GREENYELLOW Green yellow lcd.PINK Pink 表24.1.1 lcd模块提供的颜色常量

fill_rectangle()函数的使用示例如下所示:
import lcd

lcd.init()
lcd.fill_rectangle(0, 0, 10, 10, lcd.RED)

lcd模块提供了clear()函数,用于清屏LCD显示,clear()函数如下所示: lcd.clear(color=lcd.BLACK) clear()函数用于清屏LCD显示,即用默认的黑色或指定颜色填充整个LCD显示屏。 color指的是用于填充整个LCD显示屏的颜色,可选参数请见上文中fill_rectangle()函数的color参数描述,若color参数为空,则使用默认的黑色填充整个LCD显示屏。 clear()函数的使用示例如下所示:

import lcd

lcd.init()
lcd.clear(color=lcd.RED)

lcd模块提供了draw_string()函数,用于在LCD上简单地显示字符串,draw_string()函数如下所示:

lcd.draw_string(x, y, string, fontc=lcd.RED, bgc=lcd.BLACK)

draw_string()函数用于在LCD的指定位置显示指定的字符串,可以指定字符串的颜色和背景颜色,但无法指定字符串的字体和字号。 x和y分别指的是字符串左上角的X和Y坐标。 string指的是指定的字符串。 fontc和bgc分别指的是字符串的字体颜色和背景颜色,可选参数请见上文中fill_rectangle()函数的color参数描述,若fontc或bgc参数为空,则分别使用对应默认的红色和黑色作为字符串的字体颜色和背景颜色。 draw_string()函数的使用示例如下所示:

import lcd

lcd.init()
lcd.draw_string(0, 0, "Hello, DNK210!")

lcd模块提供了display()函数,用于在LCD上显示一个Image对象,display()函数如下所示: lcd.display(image, roi, oft) display()函数用于在LCD的指定位置以指定的大小显示一个指定的Image对象。 image指的是Image对象,有关image的介绍会在后续的章节中提到,读者可以暂且认为Image对象就是一张图像。 roi指的是对Image对象感兴趣的区域,若未指定,即为图像矩形。 oft指的是偏移坐标。 display()函数的使用示例如下所示:

import lcd
import image

img = image.Image(size=(320, 240))
img.draw_rectangle(0, 0, 320, 240, color=(255, 255, 255), fill=True)
img.draw_string(0, 0, "Hello, DNK210!", (255, 0, 0), 2.5)

lcd.init()
lcd.display(img)

lcd模块提供了mirror()函数,用于水平镜像LCD的显示,mirror()函数如下所示: lcd.mirror(invert) mirror()函数用于水平镜像LCD的显示,水平镜像后,不论是已经显示再LCD上的画面或是后续绘制的图像都将以水平镜像的方式进行显示。 invert指的是是否使能LCD的水平镜像显示,当为True时,使能LCD的水平镜像显示,当为False时,禁止LCD的水平镜像显示。 mirror()函数的使用示例如下所示:

import lcd

lcd.init()
lcd.mirror(True)

lcd模块提供了rotation()函数,用于旋转LCD的显示,rotation()函数如下所示: lcd.rotation(dir) rotation()函数用于旋转LCD的显示,旋转后,不论是已经显示再LCD上的画面或是后续绘制的图像都将以设置的旋转方向进行显示。 dir指的是LCD旋转的方向,可选的参数为0~3这四个数,分别对应依次再默认旋转方向上顺时针旋转90°的方向。 rotation()函数的使用示例如下所示:

import lcd

lcd.init()
lcd.rotation(0)

24.2 硬件设计 24.2.1 例程功能

  1. 使用lcd模块初始化LCD,在LCD上显示一段字符串,并不断更换背景颜色 24.2.2 硬件资源
  2. LCD LCD_RD - IO34 LCD_BL - IO35 LCD_CS - IO36 LCD_RST - IO37 LCD_RS - IO38 LCD_WR - IO39 LCD_D0~LCD_D7 - SPI0_D0~SPI0_D7 24.2.3 原理图 本章实验内容,需要使用到板载的LCD显示屏,正点原子DNK210开发板上的LCD显示屏连接原理图,如下图所示:

图24.2.3.1 LCD显示屏连接原理图

24.3 程序设计 24.3.1 lcd模块 有关lcd模块的介绍,请见第24.1小节《lcd模块介绍》。 24.3.2 程序流程图

【正点原子K210连载】第二十四章 LCD显示实验 摘自【正点原子】DNK210使用指南-CanMV版指南_Image

图24.3.2.1 LCD显示实验流程图 24.3.3 main.py代码 main.py中的脚本代码如下所示:

import lcd
import time

# 初始化LCD
lcd.init()

while True:
    for bg_color in [lcd.WHITE, lcd.BLACK, lcd.BLUE, lcd.MAGENTA, lcd.GREEN, lcd.CYAN, lcd.YELLOW]:
        # 清屏LCD显示
        lcd.clear(bg_color)
        # 显示字符串
        lcd.draw_string(10, 10, "DNK210", lcd.RED, bg_color)
        lcd.draw_string(10, 20, "LCD", lcd.RED, bg_color)
        lcd.draw_string(10, 30, "ATOM@ALIENTEK", lcd.RED, bg_color)
        time.sleep_ms(1000)

可以看到首先是使用lcd模块对LCD进行初始化,接着在一个循环中不断改变LCD的背景颜色,并在LCD上显示一段字符串。

24.4 运行验证 将DNK210开发板连接CanMV IDE后,点击CanMV IDE上的“开始(运行脚本)”按钮后,可以看到LCD上显示了一段字符串,并不断地更换背景颜色,如下图所示:

【正点原子K210连载】第二十四章 LCD显示实验 摘自【正点原子】DNK210使用指南-CanMV版指南_字符串_02

图24.4.1 LCD显示(白色背景)

【正点原子K210连载】第二十四章 LCD显示实验 摘自【正点原子】DNK210使用指南-CanMV版指南_Image_03

图24.4.2 LCD显示(蓝色背景)

标签:函数,color,K210,正点,原子,LCD,lcd,模块,所示
From: https://blog.51cto.com/u_15046463/11928657

相关文章

  • 【正点原子K210连载】第二十五章 LCD图片显示实验 摘自【正点原子】DNK210使用指南-Ca
    第二十五章LCD图片显示实验本章将介绍在LCD上的图片显示。通过本章的学习,读者将学习到LCD上图片的显示。本章分为如下几个小节:25.1lcd模块介绍25.2硬件设计25.3程序设计25.4运行验证25.1lcd模块介绍有关lcd模块的介绍,请见第24.1小节《lcd模块介绍》。25.2硬件设计25......
  • C++ 原子变量atomic variable
    原子变量原子变量(atomicvariable)是C++11引入的一种同步机制,用于在多线程环境中进行无锁的、线程安全的操作。原子变量的操作是不可分割的,即在执行过程中不会被其他线程中断,从而避免了数据竞争和不一致的问题。原子变量位于头文件中。基本概念原子性原子性:一个操作是......
  • 正点原子FPGA新品ZYNQ7035/7045/7100开发板,ZYNQ 7000系列、双核ARM、PCIe2.0、SFPX2!
    正点原子FPGA新品ZYNQ7035/7045/7100开发板,ZYNQ7000系列、双核ARM、PCIe2.0、SFPX2!正点原子Z100ZYNQ开发板,搭载XilinxZynq7000系列芯片,核心板支持XilinxZynq-7035、Zynq-7045和Zynq-7100三种型号。开发板由核心板+底板组成,外设资源丰富,板载2路千兆以太网接口(PS+PL)、PCIe2.0x8、......
  • 【新品8折】正点原子ZYNQ7035/7045/7100开发板发布、ZYNQ 7000系列、双核ARM、PCIe2.0
    【新品发布】正点原子FPGA新品ZYNQ7035/7045/7100开发板,ZYNQ7000系列、双核ARM、PCIe2.0、SFPX2!正点原子Z100ZYNQ开发板,搭载XilinxZynq7000系列芯片,核心板支持XilinxZynq-7035、Zynq-7045和Zynq-7100三种型号。开发板由核心板+底板组成,外设资源丰富,板载2路千兆以太网接口(PS+P......
  • 《DNK210使用指南 -CanMV版 V1.0》第二十一章 machine.UART类实验
    第二十一章machine.UART类实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html......
  • 正点原子Linux C应用编程:移植tslib并使其适配7寸LCD1024*600的GT911触摸驱动
    正点原子LinuxC应用编程:移植tslib并使其适配7寸LCD1024*600的GT911触摸驱动作者在学习【正点原子】I.MX6U嵌入式LinuxC应用编程指南V1.4时,发现移植tslib后,触摸事件触发不正常。使用的硬件版本:正点原子I.MX6UALPHAV2.4版本底板,LCD:正点原子7寸1024*600,型号ATK-MD0700R-102460......
  • 正点原子ALPHA开发板使用4.3寸触摸屏LCD驱动实验显示不正常
    显示问题裸机开发时,驱动教程的PDF里给了4.3寸LCD屏幕的设置参数。如下图所示:但是按照这个设置,编写设备树dts文件,下载到开发板里,却出现了显示异常,具体来说就是帧率不对,图和字都是歪斜的,像果冻一样左右摇晃。但是,通过实验发现,在dts文件里将屏幕频率超频设置(大于上图的31MHz,我按照......
  • 正点原子Linux Framebuffer编程:解决示例程序在开发板上LCD显示错位和颜色异常
    正点原子LinuxFramebuffer编程:解决示例程序在开发板上运行7寸LCD显示错位和颜色异常作者在学习【正点原子】I.MX6U嵌入式LinuxC应用编程指南V1.4时,发现其配套的程序在开发板上运行不正常。使用的硬件版本:正点原子I.MX6UALPHAV2.4版本底板,LCD:正点原子7寸1024*600,型号ATK-MD0......
  • volatile,原子变量和ThreadLocal
    1、多线程中的变量首先我介绍的是volatile关键字,其次是原子变量,最后则是ThreadLocal线程本地变量2、java基本内存模型用到volatile这个关键字以及后面的原子变量之前,我们必须先了解一下什么是java基本内存模型。先明确几个概念:主内存:主内存就是所有线程共享的内存,对......
  • 关于正点原子input子系统,驱动中按键中断只检测了上升或下降沿却可以实现连按(EV_REP)的
    问题在学习到Linux内核input子系统时,产生了一个疑惑。可以看到,我们改造按键中断驱动程序(请见keyinputdriver.c(内核驱动代码)),通过检测按键的上升沿和下降沿,在中断处理函数(上半部内)通过mod_timer(&dev->timer,jiffies+msecs_to_jiffies(20))函数启动定时器。在定时器处理函数中上......