默谷资源网

专业网站建设资源库

让屏幕动起来:使用.NET玩转NV3030B驱动

本文将深入探讨如何使用 Sang.IoT.NV3030B 来驱动 NV3030B 显示屏。并介绍如何使用这个库来控制显示屏,以及在不同设备的使用方法。

1. 背景

在物联网设备中,显示屏是一个常见的输出设备。NV3030B 是一种常用的显示控制器,支持262K色显示,能清晰地展示彩色图片,在智能家居控制面板、便携式设备等场景广泛应用。在本文中,我们将介绍如何使用 Sang.IoT.NV3030B 库来控制 NV3030B 显示屏。

2. 安装

对于 SPI 的接线和设备检查,这里我们不再赘述,可以参考前面的文章。安装 Sang.IoT.NV3030B 库,可以使用以下命令:

dotnet add package Sang.IoT.NV3030B


Package



3. 使用

安装完成后,我们可以开始编写代码来驱动LCD显示屏。

首先,我们需要引入相关的命名空间:

using Iot.Device.Graphics;using Iot.Device.Graphics.SkiaSharpAdapter;using Sang.IoT.NV3030B;using System.Device.Gpio;using System.Device.Spi;

然后,设置 GPIO 引脚:

const int pinID_DC = 25;const int pinID_Reset = 27;const int pinID_BL = 18;

接着,注册 SkiaSharp 适配器。注意:这里千万不要忘记注册适配器,否则无法正常使用 SkiaSharp 绘图。

SkiaSharpAdapter.Register();

接下来,设置 SPI 创建显示设备:

SpiDevice displaySPI = SpiDevice.Create(new SpiConnectionSettings(0, 0){ Mode = SpiMode.Mode0, DataBitLength = 8, ClockFrequency = 40_000_000});using var display = new NV3030B(displaySPI, pinID_DC, pinID_Reset, pinID_BL);

最后,我们可以使用 display 对象来控制显示屏。

4. 显示测试

基础的显示测试代码如下:

// 使用红色清空屏幕display.ClearScreen(System.Drawing.Color.Red, true);await Task.Delay(10000);// 使用蓝色和绿色填充两个矩形display.FillRect(System.Drawing.Color.Blue, 0, 0, 100, 100);display.FillRect(System.Drawing.Color.Green, 100, 0, 100, 100);display.SendFrame(false);await Task.Delay(10000);

这段代码会在屏幕上显示一个红色背景,然后在屏幕上绘制两个矩形,一个蓝色,一个绿色。


基础图形


图片展示方法:

using var image = BitmapImage.CreateFromFile("LCD_1inch5.jpg");display.DrawBitmap(image);


图片


这里的调光是通过 pinID_BL 引脚来控制的,可以通过调整 pinID_BL 引脚的电压来调整显示屏的亮度。直接使用 display.SetBacklight(100); 来设置最大亮度。

Console.WriteLine("Testing backlight...");display.SetBacklight(20);await Task.Delay(500);display.SetBacklight(50);await Task.Delay(500);display.SetBacklight(100);

5. 在 LuckFox 上的使用

在 LuckFox 上使用时,需要先用 luckfox-config 开启 SPI 和 PWM,注意:需要先关闭 LCD 和 I2C4,否则会占用 SPI 引脚。PWM 是接给 pinID_BL 引脚的,可以自己选一个,示例中使用的是 40,即 PWM3_M1

然后在代码中使用 SysFsDriver 驱动 GPIO,代码如下:

const int pinID_DC = 32;const int pinID_Reset = 33;const int pinID_BL = 40;
var gpioController = new GpioController(PinNumberingScheme.Logical, new SysFsDriver());using var display = new NV3030B(displaySPI, pinID_DC, pinID_Reset, pinID_BL, gpioController: gpioController);

这样就可以在 LuckFox 上使用 NV3030B 显示屏了。

luckfox

6. 总结

通过使用 Sang.IoT.NV3030B 库,我们可以方便地控制 NV3030B 显示屏。在实际项目中,我们可以根据需要,进一步扩展和优化显示功能,实现更加丰富的显示效果。

后续该库也会不断更新,提供更多功能和优化。同时会拆分基类,方便后续接入更多显示屏。


控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言