Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: UIT2_MovingAv_Intr UIT2_VariableFIR UIT2_VowelSynthesizer UIT2_ALE_LeakyLMS ... more
AQM1602.cpp
- Committer:
- MikamiUitOpen
- Date:
- 2015-07-06
- Revision:
- 4:c943f05b7843
- Parent:
- 3:414f98234c94
- Child:
- 7:5375acc9a74a
File content as of revision 4:c943f05b7843:
//-------------------------------------------------------
// Class for LCD, AQM1602XA-RN-GBW
//
// 2015/07/06, Copyright (c) 2015 MIKAMI, Naoki
//-------------------------------------------------------
#include "AQM1602.hpp"
namespace Mikami
{
// Constructor
Aqm1602::Aqm1602(PinName sda, PinName scl, uint32_t clock,
bool cursor, bool blink)
: i2c_(sda, scl)
{
if (clock != 100000) i2c_.frequency(clock);
wait_ms(40);
connected_ = Clear(); // Clear display
WriteCmd(0x39); // To extended command
if (!connected_)
{
fprintf(stderr, "\r\nLCD AQM1602 not connected\r\n");
return;
}
WriteCmd(0x14); // Internal OSC frequency
WriteCmd(0x70 | 0x00); // Contrast set
WriteCmd(0x54 | 0x02); // Power/ICON/Contrast control
WriteCmd(0x6C); // Follower control
wait_ms(200);
WriteCmd(0x38); // data length:8-bit, 2-line, 5×8 dots
WriteCmd(0x0C | (cursor << 1) | blink);
}
// All clear
bool Aqm1602::Clear()
{
bool ok = WriteCmd(0x01);
wait_ms(50);
return ok;
}
// Write string
void Aqm1602::WriteString(const char str[])
{
for (int n=0; n<N_CHR; n++)
if (str[n] == 0) break;
else WriteChar(str[n]);
}
// Write string from specified position
void Aqm1602::WriteStringXY(const char str[],
uint8_t x, uint8_t y)
{
SetXY(x, y);
WriteString(str);
}
// Clear of specified line
void Aqm1602::ClearLine(uint8_t line)
{
SetXY(0, line);
for (int n=0; n<N_CHR; n++)
WriteString(" ");
}
// Set contrast
void Aqm1602::SetContrast(uint8_t c)
{
WriteCmd(0x39);
WriteCmd(0x70 | (c & 0x0f)); // Lower 4 bits
WriteCmd(0x5C | ((c >> 4) & 0x03)); // Higher 2 bits
WriteCmd(0x38);
}
//---------------------------------------------------
// Following functions: private
// Send command and data
bool Aqm1602::LcdTx(uint8_t cmdData, uint8_t data)
{
char tx[2] = { cmdData, data };
int rt = i2c_.write(LCD_ADDRESS_, tx, 2);
return (rt == 0) ? true : false;
}
}