1个不稳定版本
0.1.1 | 2023年12月17日 |
---|---|
0.1.0 |
|
888 在 嵌入式开发 中
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