C coded library to use 1Wire LCD

Dependencies:   mbed

This method allows you to control an lcd with a 74x595 shift register.

/media/uploads/ahmetunal/shift1.gif /media/uploads/ahmetunal/shift1b.gif /media/uploads/ahmetunal/shift1c.gif /media/uploads/ahmetunal/_scaled_one_wire_lcd.bmp.jpg

Import program1WireLcd

C coded library to use 1Wire LCD

Revision:
0:fcd5b3044e79
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/1WireLcd/1WireLcd.cpp	Sun Apr 10 08:38:02 2011 +0000
@@ -0,0 +1,118 @@
+#include "1WireLcd.h"
+#include "mbed.h"
+
+DigitalOut wire(p21);
+
+
+
+
+void lcd_putc(unsigned char c)
+{
+   unsigned char data;
+    data = 0x00;
+    data |=0x50;
+    one_wire(data);
+    data |= ((c & 0xF0)>>4);
+    one_wire(data);
+    data &= 0x1F;
+    one_wire(data);
+    wait_us(100);
+    
+    data = 0x00;
+    data |= 0x50;
+    one_wire(data);
+    data |= (((c & 0x0F) << 4) >> 4);
+    one_wire(data);
+    data &= 0x1F;
+    one_wire(data);
+    wait_us(100);
+
+}
+
+void lcd_command(unsigned char c)
+{
+   unsigned char data;
+    data = 0x00;
+    data |=0x40;
+    one_wire(data);
+    data |= ((c & 0xF0)>>4);
+    one_wire(data);
+    data &= 0x0F;
+    one_wire(data);
+    wait_us(100);
+    
+    data = 0x00;
+    data |= 0x40;
+    one_wire(data);
+    data |= (((c & 0x0F) << 4) >> 4);
+    one_wire(data);
+    data &= 0x0F;
+    one_wire(data);
+    wait_us(100);
+
+}
+
+
+void lcd_init()
+{
+    one_wire(0);
+    wait_ms(15);
+    lcd_command(GoToFirst);
+    wait_ms(2);
+    lcd_command(TwoLine4Bit);    
+    lcd_command(WriteRight);    
+    lcd_command(HidePointer);    
+    lcd_clear();
+
+
+    lcd_command(FirstLine); 
+}
+
+
+void lcd_clear(void)
+{
+    lcd_command(0x1);
+    wait_ms(2);
+}
+
+void lcd_position(unsigned char x,unsigned char y)
+{
+    if(x==1)
+        lcd_command(0x80+((y-1)%20));
+    else
+        lcd_command(0xC0+((y-1)%20));
+}
+
+void lcd_printf(const char * a)
+{
+    wait_us(100);
+    while(*a)
+        lcd_putc(*a++);
+}
+
+void one_wire(unsigned char data)
+{
+    char i;
+    wire=1;
+    for(i=0;i < 8;i++)
+    {
+        if((data<<(i))&0x80)
+        {
+            wire=0;
+            wait_us(1);
+            wire=1;
+        }
+        else
+        {
+            wire=0;
+            wait_us(15);
+            wire=1;
+            wait_us(30);
+        }
+    }
+    wire=0;
+    wait_us(210);
+    wire=1;
+    wait_us(300);
+}
+