With a 595 shift register shifting one wire lcd.

Committer:
ahmetunal
Date:
Tue Feb 22 10:41:38 2011 +0000
Revision:
0:9245c05647c9

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ahmetunal 0:9245c05647c9 1 #include "1wire_lcd.h"
ahmetunal 0:9245c05647c9 2 #include "mbed.h"
ahmetunal 0:9245c05647c9 3
ahmetunal 0:9245c05647c9 4 DigitalOut wire(p21);
ahmetunal 0:9245c05647c9 5
ahmetunal 0:9245c05647c9 6
ahmetunal 0:9245c05647c9 7 void one_wire(unsigned char data)
ahmetunal 0:9245c05647c9 8 {
ahmetunal 0:9245c05647c9 9 char i;
ahmetunal 0:9245c05647c9 10 wire=1;
ahmetunal 0:9245c05647c9 11 for(i=0;i < 8;i++)
ahmetunal 0:9245c05647c9 12 {
ahmetunal 0:9245c05647c9 13 if((data<<(i))&0x80)
ahmetunal 0:9245c05647c9 14 {
ahmetunal 0:9245c05647c9 15 wire=0;
ahmetunal 0:9245c05647c9 16 wire=1;
ahmetunal 0:9245c05647c9 17 }
ahmetunal 0:9245c05647c9 18 else
ahmetunal 0:9245c05647c9 19 {
ahmetunal 0:9245c05647c9 20 wire=0;
ahmetunal 0:9245c05647c9 21 wait_us(15);
ahmetunal 0:9245c05647c9 22 wire=1;
ahmetunal 0:9245c05647c9 23 wait_us(30);
ahmetunal 0:9245c05647c9 24 }
ahmetunal 0:9245c05647c9 25 }
ahmetunal 0:9245c05647c9 26 wire=0;
ahmetunal 0:9245c05647c9 27 wait_us(210);
ahmetunal 0:9245c05647c9 28 wire=1;
ahmetunal 0:9245c05647c9 29 wait_us(300);
ahmetunal 0:9245c05647c9 30 }
ahmetunal 0:9245c05647c9 31
ahmetunal 0:9245c05647c9 32
ahmetunal 0:9245c05647c9 33 void lcd_putc(unsigned char c)
ahmetunal 0:9245c05647c9 34 {
ahmetunal 0:9245c05647c9 35 unsigned char data;
ahmetunal 0:9245c05647c9 36 data = 0x00;
ahmetunal 0:9245c05647c9 37 data |=0x50;
ahmetunal 0:9245c05647c9 38 one_wire(data);
ahmetunal 0:9245c05647c9 39 data |= ((c & 0xF0)>>4);
ahmetunal 0:9245c05647c9 40 one_wire(data);
ahmetunal 0:9245c05647c9 41 data &= 0x1F;
ahmetunal 0:9245c05647c9 42 one_wire(data);
ahmetunal 0:9245c05647c9 43 wait_us(100);
ahmetunal 0:9245c05647c9 44
ahmetunal 0:9245c05647c9 45 data = 0x00;
ahmetunal 0:9245c05647c9 46 data |= 0x50;
ahmetunal 0:9245c05647c9 47 one_wire(data);
ahmetunal 0:9245c05647c9 48 data |= (((c & 0x0F) << 4) >> 4);
ahmetunal 0:9245c05647c9 49 one_wire(data);
ahmetunal 0:9245c05647c9 50 data &= 0x1F;
ahmetunal 0:9245c05647c9 51 one_wire(data);
ahmetunal 0:9245c05647c9 52 wait_us(100);
ahmetunal 0:9245c05647c9 53
ahmetunal 0:9245c05647c9 54 }
ahmetunal 0:9245c05647c9 55
ahmetunal 0:9245c05647c9 56 void lcd_command(unsigned char c)
ahmetunal 0:9245c05647c9 57 {
ahmetunal 0:9245c05647c9 58 unsigned char data;
ahmetunal 0:9245c05647c9 59 data = 0x00;
ahmetunal 0:9245c05647c9 60 data |=0x40;
ahmetunal 0:9245c05647c9 61 one_wire(data);
ahmetunal 0:9245c05647c9 62 data |= ((c & 0xF0)>>4);
ahmetunal 0:9245c05647c9 63 one_wire(data);
ahmetunal 0:9245c05647c9 64 data &= 0x0F;
ahmetunal 0:9245c05647c9 65 one_wire(data);
ahmetunal 0:9245c05647c9 66 wait_us(100);
ahmetunal 0:9245c05647c9 67
ahmetunal 0:9245c05647c9 68 data = 0x00;
ahmetunal 0:9245c05647c9 69 data |= 0x40;
ahmetunal 0:9245c05647c9 70 one_wire(data);
ahmetunal 0:9245c05647c9 71 data |= (((c & 0x0F) << 4) >> 4);
ahmetunal 0:9245c05647c9 72 one_wire(data);
ahmetunal 0:9245c05647c9 73 data &= 0x0F;
ahmetunal 0:9245c05647c9 74 one_wire(data);
ahmetunal 0:9245c05647c9 75 wait_us(100);
ahmetunal 0:9245c05647c9 76
ahmetunal 0:9245c05647c9 77 }
ahmetunal 0:9245c05647c9 78
ahmetunal 0:9245c05647c9 79 void lcd_clear(void)
ahmetunal 0:9245c05647c9 80 {
ahmetunal 0:9245c05647c9 81 lcd_command(0x1);
ahmetunal 0:9245c05647c9 82 wait_ms(2);
ahmetunal 0:9245c05647c9 83 }
ahmetunal 0:9245c05647c9 84
ahmetunal 0:9245c05647c9 85 void lcd_position(unsigned char x,unsigned char y)
ahmetunal 0:9245c05647c9 86 {
ahmetunal 0:9245c05647c9 87 if(x==1)
ahmetunal 0:9245c05647c9 88 lcd_command(0x80+((y-1)%20));
ahmetunal 0:9245c05647c9 89 else
ahmetunal 0:9245c05647c9 90 lcd_command(0xC0+((y-1)%20));
ahmetunal 0:9245c05647c9 91 }
ahmetunal 0:9245c05647c9 92
ahmetunal 0:9245c05647c9 93 void lcd_printf(const char * a)
ahmetunal 0:9245c05647c9 94 {
ahmetunal 0:9245c05647c9 95 wait_us(100);
ahmetunal 0:9245c05647c9 96 while(*a)
ahmetunal 0:9245c05647c9 97 lcd_putc(*a++);
ahmetunal 0:9245c05647c9 98 }
ahmetunal 0:9245c05647c9 99
ahmetunal 0:9245c05647c9 100 void lcd_init()
ahmetunal 0:9245c05647c9 101 {
ahmetunal 0:9245c05647c9 102 one_wire(0);
ahmetunal 0:9245c05647c9 103 wait_ms(15);
ahmetunal 0:9245c05647c9 104 lcd_command(0x02);
ahmetunal 0:9245c05647c9 105 wait_ms(2);
ahmetunal 0:9245c05647c9 106 lcd_command(40); //2line 4bit
ahmetunal 0:9245c05647c9 107 lcd_command(6); //write right
ahmetunal 0:9245c05647c9 108 lcd_command(12); //pointer hidden
ahmetunal 0:9245c05647c9 109 lcd_clear();
ahmetunal 0:9245c05647c9 110
ahmetunal 0:9245c05647c9 111
ahmetunal 0:9245c05647c9 112 lcd_command(128); //first line
ahmetunal 0:9245c05647c9 113
ahmetunal 0:9245c05647c9 114 }
ahmetunal 0:9245c05647c9 115
ahmetunal 0:9245c05647c9 116