像素屏幕 (16x16)
概述
- 用途:像素屏幕 (16x16) 是一种可视化组件,显示 16x16 的像素网格,每个像素的状态由内存值决定。此组件可用于创建简单的图形、显示图案或可视化数字电路中的内存内容。
- 符号:像素屏幕以矩形显示网格表示。它没有外部连接引脚——它直接从连接的 RAM 组件的内部存储器中读取显示数据。
- DigiSim.io 角色:为数字电路提供视觉输出功能,支持图形显示、图案可视化和内存内容监控。
![]()
功能描述
像素屏幕组件从连接的 RAM 组件读取显示数据,将内存中的每一位解释为一个像素,可以是开启或关闭状态。该组件提供 16x16 像素(共 256 个像素)的分辨率,需要 32 字节的内存来表示(每像素 1 位)。
引脚
像素屏幕有 0 个输入 和 0 个输出。它没有任何外部连接引脚。相反,它直接从连接的 RAM 组件的内部存储器中读取显示数据,使用配置的起始地址来定位像素数据。
配置
像素屏幕有几个可配置的属性:
- 起始地址:显示数据开始的内存起始地址(默认:0xE0)
- 前景色:活动(ON)像素的颜色
- 背景色:非活动(OFF)像素的颜色
- 像素缩放:显示中每个像素的大小
内存映射
16x16 像素网格映射到内存的方式如下:
- 内存中的每个字节代表 8 个水平像素
- 32 个连续字节(256 位)用于整个显示
- 位在每个字节内从 MSB 到 LSB 映射
例如,起始地址为 0xE0 时:
| 地址 | 字节 | 描述 |
|---|---|---|
| 0xE0 | [76543210] | 第 0 行的前 8 个像素 |
| 0xE1 | [76543210] | 第 0 行的后 8 个像素 |
| 0xE2 | [76543210] | 第 1 行的前 8 个像素 |
| 0xE3 | [76543210] | 第 1 行的后 8 个像素 |
| ... | ... | ... |
| 0xFE | [76543210] | 第 15 行的前 8 个像素 |
| 0xFF | [76543210] | 第 15 行的后 8 个像素 |
注:每个字节中的第 7-0 位代表 8 个水平像素,从 MSB 到 LSB 映射
使用方法
要使用像素屏幕组件:
将该组件与 RAM 组件一起添加到电路中
像素屏幕自动从连接的 RAM 组件的存储器中读取——不需要引脚接线
在组件属性中设置起始地址,指定 RAM 中显示数据的起始位置
将位模式写入内存地址以创建显示:
- 写入 1 开启像素
- 写入 0 关闭像素
当 RAM 内容发生变化时,显示自动更新
应用示例
简单图案显示
// 存储棋盘格图案
// 第一行(交替像素)
RAM[0xE0] = 0b10101010;
RAM[0xE1] = 0b10101010;
// 第二行(反转图案)
RAM[0xE2] = 0b01010101;
RAM[0xE3] = 0b01010101;
// 对剩余行重复图案...
16x16 精灵显示
// 显示一个简单的笑脸
// 眼睛(第 4-5 行)
RAM[0xE8] = 0b00100100;
RAM[0xE9] = 0b00000000;
RAM[0xEA] = 0b00100100;
RAM[0xEB] = 0b00000000;
// 嘴巴(第 10 行)
RAM[0xF4] = 0b00011000;
RAM[0xF5] = 0b00100100;
创建动画
要创建动画:
- 为每帧更新 RAM 内容
- 使用时钟分频器控制刷新率
- 将 RAM 写入与显示的刷新周期同步以防止闪烁
提示和技巧
- 使用单独的 RAM 区域作为"后备缓冲区"来准备下一帧,然后将其复制到显示区域以防止闪烁
- 创建绘图程序,通过计算适当的位和字节来设置单个像素
- 对于颜色效果,可以通过组件属性修改前景色和背景色
- 与计数器或控制单元等其他组件结合使用,创建自主显示
- 为实现平滑动画,确保电路以一致的速率更新显示