有人知道关于这个主题的任何资源吗?
我正在开发一个用于 2x16 LCD 显示器的嵌入式应用程序。理想情况下,我希望有一个通用的(独立于显示器的)框架,几乎可以在任何显示器上使用 - 一个或多个段 LED、1x16、2x16 LCD 等。还想了解这种小型用户界面的一般准则。
编辑:我对高级功能感兴趣,如何组织用户界面 - 菜单,选项和用户输入。我们不在这里讨论LCD控制器的问题。
我会为单行接口设计它,使用更多的行会给你更多的空间。
我会选择至少 4 个按钮:
- 菜单
- 向上
- 下
- 还行
如果指定线宽(如 16),则适用于 16x2、16x1 和 16 个 7 段显示器。在设计菜单上的文本时,您会考虑到这一点。
如果您添加更多按钮,UI 会更有用,我会考虑这些按钮,按优先级排序,但这些不是必需的:
- 左和右
- 数字键
- 键盘
您将有一个主菜单,它将带您进入嵌套的子菜单或操作项。
我举个例子,假设你正在做一个可以在 16x1 或 16x2 上运行的数字时钟。
主屏幕类似于08:15P SUN101908当您按菜单键时,它将显示一个菜单(设置时间,设置日期,设置闹钟,设置显示),UP&DOWN移动项目,确定选择一个项目。
如果您选择"设置时间",向上和向下箭头将更改小时,确定将接受并移动到分钟选择...等。
如果你有一个数字键盘,它会更容易使用。
如果您指的是 2 行 x 16 个字符的显示,它们通常是基于像素的,并且会有一个集成的控制器,因为它们的控制要复杂得多。 我过去使用的 2x16 和 4x16 LCD 设备实际上有一个半字节宽的接口,命令以<command>[<address>][<data>]
样式发送到设备,有效命令所需的半字节数由命令本身决定。 如果您链接到目标设备会有所帮助,因为制造商之间似乎确实没有标准。
关于分段 LED 和 LCD,所谓的七段设备有一个标准布局,这些设备从小精灵管开始。 下图显示了此细分:
a
---
f| g |b
---
e| |c
---
d
另一个问题是是要直接驱动显示器还是使用控制器IC。 驱动七段 LED 非常容易,因为它们通常具有公共阴极或阳极,您只需要能够吸收或提供足够的电流。 直接驱动LCD稍微复杂一些,因为应用于像素或段的极性必须不断翻转以避免损坏设备。 找到带有集成时钟的控制器来执行此功能要容易得多。
1x16 和 2x16 LCD 之间的差异如此之大,以至于您不应该努力创建一个可以同时处理两者的 GUI 库 - 就像您不尝试创建一个可以同时处理 CURSES 和 Cocoa 作为后端的 GUI 库(嗯,有人做到了,但它是......错)。
由于显示如此之少,您的 GUI 应该非常面向域......也就是说,在不知道你的领域是什么的情况下,我无法告诉你什么是好的概念。
显示器的大小将对用户界面产生巨大影响。
1 行只够单级菜单,尽管我认为即使这样也在推动它。我将把所有功能都作为按钮,而显示器仅用于显示数据。
2行足以满足多级菜单的需求。在菜单模式下,顶行用于指示它们在菜单树中的位置,第二行可用于菜单选择。我不建议在菜单中设置许多级别,否则用户会忘记它们的位置,并且也很难记住菜单树中的内容。在函数模式下,顶行可用于指示所选函数,第二行用于指示数据。您可以为按钮提供向上菜单,但我会考虑仍然有专用于功能的按钮。
4行适合菜单。与上面的布局类似,额外的行可帮助用户记住他们在菜单树中的位置。它可以帮助他们在空间上可视化它。在这种情况下,我建议使用向上菜单 ok 按钮,并且没有特定的功能键。特定的功能键有时会使用户对菜单范式感到困惑。
我不会为1行或2行显示器使用数字键盘而烦恼,并且完全放弃QWERTY键盘。如果你能负担得起在前面放这么多按钮的空间,那么你就应该为你的用户提供一个更大的显示器!想象一下带有 1 x 16 显示器的 QWERTY。荒谬。UI 的复杂性应反映设备的复杂性。
考虑奥萨马的单线时钟示例。这可以通过两个按钮和没有菜单来实现。这些按钮可以称为"设置"和"调整"。
操作将是:
- 正常 - 显示屏显示时间和日期:08:15P SUN101908 闹钟 - 按"设置"
- - 显示屏显示小时闪烁的闹钟,按"调整"递增小时数,再次按设置更改分钟数,再次按设置更改开/关状态。 例如:AL:08:00 关闭
- 再次按"设置"(或按住设置)随着时间的推移也会发生同样的事情。在一定时间内不按按钮也会使菜单超时。
数字键盘将是矫枉过正的,从工程的角度来看,更多的硬件和更多的成本。这就是为什么闹钟上没有数字键盘的原因。
有任何"项目"或库是为这个明确的目的而构建的。
我建议您采用在屏幕和字段概念上运行的"显示层"代码的方法。 屏幕负责"拥有"屏幕上的所有字段,字段负责指定显示的内容、字段影响的变量以及影响字段值的输入法。 这些字段还存储指向字段设置/验证前和字段后设置/验证函数的任何函数指针。
这样做将帮助您维护相当一致的 UI。 代码也将集中在一个位置,因此可能更容易调试。
类似任天堂的控制器制作简单,几乎可用于任何应用程序。您只需要 8 把钥匙;4 个用于方向键,2 个在中间,2 个用于 A 和 B 按钮。创建这种控制器非常简单,对于用户来说非常直观。它也是用户可以握在手中的东西,使其比安装的控件更加用户友好。
索尼的旋钮也是一个不错的选择:向上/向下/按(输入)/按和按住(转义)。如果点动模块不可用。然后尝试拆卸鼠标滚轮。