有个程序在lcd ili9341白屏,但是在st7735上可以正常显示怎么回事

有个程序在lcd ili9341白屏,但是在st7735上可以正常显示怎么回事,第1张

spi在不同的ic,一次会传送不同bit数,可能芹袜仿是8bit,10bit,11bit,16bit都有可能。ILI9341应该支持,很久没看,有点忘记了,命令发送和数据发送,通常先传递一嫌纤个命令字,而之后会有一个或多个数据字,一下好羡都是猜测:buffer[0]:可能只是存放命。

翻了一下库文件,发现可能是原开发者屏幕的颜色模式和我手中这块屏幕的颜色模式不一样,一个是RGB,一个是BGR;修改好内容后保存并关闭,重启Arduino后重新编译并上传程序,会发现颜色问题已经被Adafruit_GFX库总是与每个特定显示驱动类型的附加库一起工作——例如,ST7735 1.8英寸的彩色LCD需要安装Adafruit_GFX、Adafruit_BusIO和Adafruit_ST7735库像素—图像元素,组成数字图像的块——通过它们的水平(X)和垂直(Y)坐标进行定位。坐标系将原点(0,0)放在左上角,正X向右递增,正Y向下递增。这与数学中的标准笛卡尔坐标系统是颠倒的,但在许多计算机图形系统中已经建立了实践(追溯到光栅扫描CRT图形的时代,它自上而下地工作)。要使用高大的“纵向”布局而不是宽的“横向”格式,或者如果物理安装方向限制了附件中显示的方向,也可以应用四个旋转设置中的一个,即显示的哪个角代表左上角。坐标总是用像素单位表示;没有像毫米或英寸这样的现实测量的隐含比例,显示图形的大小将是特定显示的点间距或像素密度的函数。如果你的目标是真实的维度,你需要缩放你的坐标来适应。点间距通常可以在显示屏的数据手册中找到,或者通过测量屏幕宽度并将像素数除以这个测量值。

对于彩色显示器,颜色表示为无符号的16位值。 某些显示器实际上可能比这更多或更少,但是该库以16位值运行……这些对于Arduino来说很容易使用,同时还为所有不同的显示器提供一致的数据类型。 红色,绿色和蓝色等原色分量全部“打包”成单个16位变量,其中最高有效5位传达红色,中间6位传达绿色,最低5位传达蓝色。 多余的部分分配给绿色,因为我们的眼睛对绿光最敏感对于单色显示,颜色总是简单地指定为1 (set)或0 (clear)。set/clear的语义是特定于显示类型的:像发光的OLED显示,“set”像素是发光的,而反光的LCD显示,“set”像素通常是暗的。可能会有例外,但通常您可以期望0 (clear)表示新初始化的显示的默认背景状态,无论结果如何。每个用于特定显示屏的显示库都有自己的构造函数和初始化函数。这些在每个显示屏类型的单独教程中都有记录,或者通常在特定的库头文件中有说明。本教局友程的其余部分将介绍与显示类型无关的通用图形函数。

下面的函数描述只是原型—假设显示对象是由特定于设备的库根据需要声明和初始化的。查看每个库的示例代码,了解它的实际使用情况。例如,在我们显示print(1234.56)的地方,你的实际代码会把对象名称放在这之前,例如,它可能会读做screen.print(1234.56)(如果你已经声明了显示对象的名称为:screen)。接下来,使用以下程序可以绘制和填充矩形和正方形。每个都可以输入矩形左上角的X、Y对、宽度和高度(以像素为单位)以及颜色。drawRect()只渲染矩形的框架(轮廓)-内部不受影响-而fillRect()用给定的颜色填充整个区域: 对于圆角矩形,绘制和填充功能都是可用的。每个矩形都以X、Y、宽度和高度(就像普通矩形一样)开始,然后是角半径(以像素为单位),最后是颜色值: 这里还有一个额外的小技巧:因为画圆函数总是相对于一个中心点像素绘制的,所以最终的圆直径将总是一个奇数像素。如果需要一个均匀大小的圆(这将在像素之间放置中心点),可以使用一个圆角矩形函数来实现:传递相同的宽度和高度(均为偶数),以及刚好为该值一半的角半径输出文本有两个基本的字符串绘制过程。第一个只是针对一个字符。你可以把这个字符放在任何位置并使用任意颜色。只有一种字体(为了节早山省空间),它应该是5x8像素,但是可以传递一个可选的大小参数,根据这个因素来缩放字体(例如size=2将渲染文本为每个字符10x16像素)。它是一个小块状,但只有一个字体有助于保持程序代码的占用空间。它将把文本的左上角放在您需要的任何位置。 最初将其设置为(0,0)(屏幕的左上角)。 然后使用setTextColor(color)设置文本颜色-默认情况下为白色。 文本通常以“清晰”的形式绘制-每个字符的开放部分均显示原始背景内容,但是如果您希望文本遮挡下面的内容,则可桐睁槐以将背景色指定为可选的第二个参数tosetTextColor()。 最后,setTextSize(size)将文本的比例乘以给定的整数因子。 在下面,您可以看到1(默认),2和3的比例尺。在较大的尺寸下,它看起来像块状的,因为我们仅以单一的简单字体提供了该库,以节省空间。在设置好所有内容之后,您可以使用print()或println()—就像您使用串行打印一样!例如,要打印一个字符串,使用print(“Hello world”)—这是上面图像的第一行。还可以对数字和变量使用print()—上面的第二行是print(1234.56)的输出,第三行是print(0xDEADBEEF, HEX)。默认情况下,超出一行的长文本被设置为自动“换行”到最左边的列。要取消此行为(这样文本就会从显示屏的右侧运行——这对于滚动字幕效果很有用),请使用setTextWrap(false)。使用setTextWrap(true)恢复正常的“换行”行为。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12407286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存