Library for DogM163 text display 3x16 character

Dependents:   DogMTest WavPlayerSD_CB_using_RiceGulumb WavPlayer_CB

Revision:
0:f7a30e1476bd
Child:
1:1e693c7d1389
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DogM163.cpp	Wed Dec 08 13:28:53 2010 +0000
@@ -0,0 +1,117 @@
+#include "DogM163.h"
+
+DogM163::DogM163(PinName miso, PinName clk, PinName cs, PinName rs):_spi(miso,NC,clk),_rs(rs),_cs(cs) {
+    _spi.format(8,0);
+    _spi.frequency(250000);
+    Init();
+}
+
+void DogM163::Init() {
+     _cs=0;
+    wait_ms(50);
+    WriteCommandByte( 0x39 );     // Function set; 8 bit Datenl�nge, 2 Zeilen, Instruction table 1
+    wait_us(27);          // mehr als 26,3�s warten
+    WriteCommandByte( 0x15 );     // Bias Set; BS 1/4; 3 zeiliges Display
+    wait_us(30);         // mehr als 26,3�s warten
+    WriteCommandByte( 0x70 );     // Kontrast C3, C2, C1 setzen
+    wait_us(30);
+    WriteCommandByte( 0x55 );     // Booster aus; Kontrast C5, C4 setzen
+    wait_us(30);
+    WriteCommandByte( 0x6e );     // Spannungsfolger und Verst�rkung setzen /6c
+    wait_ms(200);               // mehr als 200ms warten !!!
+    WriteCommandByte( 0x0f );     // Display EIN, Cursor EIN, Cursor BLINKEN /0f
+    wait_us(30);
+    WriteCommandByte( 0x01 );     // Display l�schen, Cursor Home
+    wait_ms(50);
+    WriteCommandByte( 0x06 );     // Cursor Auto-Increment
+    wait_us(30);
+    WriteCommandByte( 0x02 );     // Cursor Auto-Increment
+    wait_us(30);
+    _cs=1;
+}
+
+void DogM163::WriteCommandByte(char cmd) {
+    _rs = 0;
+    _spi.write(cmd);
+}
+void DogM163::WriteDataByte(char cmd) {
+    _rs = 1;
+    _spi.write(cmd);
+}
+
+/** Clear Display
+ * 
+ * Write spaces into DDRAM and set address to (0,0) 
+ *
+ */
+void DogM163::Clear()
+{
+_cs = 0;
+WriteCommandByte(0x01);
+wait_ms(50);
+_cs = 1;
+}
+
+/** Set Position to (x,line)
+ * 
+ * @param x new x position
+ * @param line new line (LINE_1,LINE_2 or LINE_3)
+ */
+void DogM163::SetPosition(unsigned char x, unsigned char line)
+{
+_cs=0;
+WriteCommandByte(0x80 + line*16 + x);
+_cs=1;
+}
+
+/** Write a character at the current position
+ *
+ * @param character character
+ */
+void DogM163::WriteCharacter(char character) {
+    _cs=0;
+    WriteDataByte(character);
+    _cs=1;
+}
+
+/** Write a character at position (x,line)
+ *
+ * @param character character
+ * @param x x-position (starting with 0)
+ * @param line (LINE_1, LINE_2 or LINE3)
+ */
+void DogM163::WriteCharacter(char character,unsigned char x,unsigned char line)
+{
+    SetPosition(x,line);
+    WriteCharacter(character);
+}
+
+/** Write a null terminated string at the current position
+ *
+ * @param string string
+ */
+void DogM163::WriteString(char* string)
+{
+  _rs = 1;
+  _cs = 0;
+  while (string[0]  != 0x00)
+  {
+    wait_us(30);
+    _spi.write( string[0] );
+    string++;
+  }
+  _cs = 1;
+}
+
+/** Write a null terminated string at position (x,line)
+ *
+ * @param string string
+ * @param x x-position (starting with 0)
+ * @param line (LINE_1, LINE_2 or LINE3)
+ */
+void DogM163::WriteString(char* string, unsigned char x, unsigned char line)
+{
+    SetPosition(x,line);
+    WriteString(string);
+}
+