1个不稳定版本

0.1.1 2023年12月17日
0.1.0 2023年12月17日

888嵌入式开发

MIT 许可证

21KB
540

点阵LCD显示的嵌入式HAL异步驱动器

LCD被重置并初始化为显示:关闭,只是因为它在重置过程中就是这样,

即使它看起来在显示:开启时也能工作

目前只支持只写模式

使用模拟引脚作为RW引脚

不跟踪当前位置

这是因为这个驱动器被设计成占用非常小的内存

Lcd类型的大小可以是零,取决于引脚类型和延迟类型

您应使用seek来更改行和位置

目前不支持阻塞I/O和全宽总线

(不应该“硬”支持)我只是懒惰

RW引脚将允许使用忙标志,但尚未实现

相反,此驱动器通过等待一段时间来工作

等待时间比规范中的时间长,这是因为我在兼容芯片(例如ks0066)上发现了问题

不支持RW引脚

示例

pub struct EmbassyDelayNs;

impl DelayNs for EmbassyDelayNs {
    async fn delay_ns(&mut self, ns: u32) {
        embassy_time::Timer::after_micros(ns.div_ceil(1000) as u64).await;
    }
}
    let mut lcd = Lcd::<_, _, _, _, Infallible>::new(
        LcdPinConfiguration {
            en: pins.d7.into_output(),
            rs: pins.d6.into_output(),
            bus: HalfWidthBus {
                d4: pins.d8.into_output(),
                d5: pins.d9.into_output(),
                d6: pins.d10.into_output(),
                d7: pins.d11.into_output()
            }
        },
        EmbassyDelayNs,
        Lines::TwoLines,
        EntryMode::default()
    ).await.unwrap();

    lcd.set_display_control(DisplayControl::default()).await.unwrap();
    lcd.seek(SeekFrom::Start(0)).await.unwrap(); //first line address 0..16
    lcd.write_all("first line".as_bytes()).await.unwrap();
    lcd.seek(SeekFrom::Start(40)).await.unwrap(); //second line address 40..56
    lcd.write_all("second line".as_bytes()).await.unwrap();

依赖项

~140KB