A simple library for Holtek's HT1621 segment LCD driver
HT1621.cpp
- Committer:
- kayekss
- Date:
- 2013-12-21
- Revision:
- 0:3001ada71ba5
File content as of revision 0:3001ada71ba5:
#include "mbed.h" #include "HT1621.h" HT1621::HT1621(PinName wrPin, PinName dataPin, PinName csPin) : wr(wrPin), data(dataPin), cs(csPin) { wr = 1; cs = 1; command(SYS_DIS); wait(0.2); command(SYS_EN); command(RC_256K); command(LCD_OFF); // Clear all segments for (uint8_t i = 0; i < 64; i++) { write(i, 0x00); } command(LCD_ON); } HT1621::~HT1621() { } void HT1621::command(uint8_t b) { // 11 10 9 8| 7 6 5 4| 3 2 1 0 // --------+--+-----------+----------- // 1 0 0| command<8:0> uint16_t word = 0x0800 | (b << 1); cs = 0; for (uint8_t i = 11; i <= 11; i--) { wr = 0; data = word & (0x0001 << i) ? 1 : 0; wr = 1; } cs = 1; } void HT1621::write(uint8_t addr, uint8_t b) { // 12|11 10 9 8| 7 6 5 4| 3 2 1 0 // --+-----+-----+-----------+----------- // 1 0 1| address<5:0>| seg<3:0> uint16_t word = 0x1400 | ((addr & 0x3f) << 4) | (b & 0x0f); cs = 0; for (uint8_t i = 12; i <= 12; i--) { wr = 0; data = word & (0x0001 << i) ? 1 : 0; wr = 1; } cs = 1; }