7个不稳定版本
0.4.1 | 2022年1月3日 |
---|---|
0.4.0 | 2022年1月3日 |
0.4.0-alpha.0 | 2021年2月15日 |
0.3.0 | 2017年9月27日 |
0.1.1 | 2017年9月11日 |
#416 在 嵌入式开发
99 每月下载量
在 lcd-pcf8574 中使用
22KB
300 代码行数
lcd
实现与日立HD44780兼容的LCD设备的低级协议的库。
为日立HD44780兼容的LCD设备提供高级API。默认使用4位模式(只使用4个数据引脚)加上两个控制引脚(R/S和EN)。R/W引脚未使用,应连接为"写入"(低电平,0)。
实现完全无状态。客户端可以自由地重用相同的Display
对象,或者每次需要访问LCD时创建一个。
Display
还实现了core::fmt::Write
特质,因此它可以作为write!
宏的目标。
此库不依赖于std
包,可以在裸金属嵌入式开发中使用。
示例
use core::fmt::Write; // for write!
use lcd::*;
// implement HAL...
struct HW {
// any data needed to access low-level peripherals
}
// implement `Hardware` trait to give access to LCD pins
impl Hardware for HW {
fn rs(&mut self, bit: bool) {
// should set R/S pin on LCD screen
}
fn enable(&mut self, bit: bool) {
// should set EN pin on LCD screen
}
fn data(&mut self, data: u8) {
// should set data bits to the LCD screen (only lowest 4 bits are used in 4-bit mode).
}
// optionally, override the following function to switch to 8-bit mode
fn mode(&self) -> lcd::FunctionMode {
lcd::FunctionMode::Bit8
}
// optionally, implement the following three functions to enable polling busy flag instead of delay
fn can_read(&self) -> bool {
true
}
fn rw(&mut self, bit: bool) {
// configure pins for input _before_ setting R/W to 1
// configure pins for output _after_ setting R/W to 0
}
fn read_data(&mut self) -> u8 {
0 // read data from the port
}
}
// implement `Delay` trait to allow library to sleep for the given amount of time
impl Delay for HW {
fn delay_us(&mut self, delay_usec: u32) {
// should sleep for the given amount of microseconds
}
}
// create HAL and LCD instances
let hw = HW { /* ... */ };
let mut lcd = Display::new(hw);
// initialization
lcd.init(FunctionLine::Line2, FunctionDots::Dots5x8);
lcd.display(
DisplayMode::DisplayOn,
DisplayCursor::CursorOff,
DisplayBlink::BlinkOff);
lcd.entry_mode(EntryModeDirection::EntryRight, EntryModeShift::NoShift);
// print something
write!(&mut lcd, "Hello, my number today is {: >4}", 42).unwrap();
请参阅lcd-example-bluepill
以获取针对Blue Pill开发板的示例。
许可证
许可协议为以下之一:
- Apache License,版本2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交的工作的任何贡献,都将如上所述双重许可,没有任何额外的条款或条件。