Dependents:   vmConfort_v6 Programski_zadatak_23 Projektni_zadatak_23 tempivolt

Committer:
RichardUK
Date:
Fri Apr 06 19:22:15 2012 +0000
Revision:
0:6c0e68e0d876
Child:
1:fc4c861451e1
Publishing my little ib. :)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardUK 0:6c0e68e0d876 1
RichardUK 0:6c0e68e0d876 2 #ifndef __DISPLAY1602_H__
RichardUK 0:6c0e68e0d876 3 #define __DISPLAY1602_H__
RichardUK 0:6c0e68e0d876 4
RichardUK 0:6c0e68e0d876 5 #include "mbed.h"
RichardUK 0:6c0e68e0d876 6 #include <stdarg.h>
RichardUK 0:6c0e68e0d876 7
RichardUK 0:6c0e68e0d876 8 /*
RichardUK 0:6c0e68e0d876 9 INITIALIZING BY INSTRUCTION
RichardUK 0:6c0e68e0d876 10 1) 8-bit interface mode (Condition: fosc = 270KHZ)
RichardUK 0:6c0e68e0d876 11
RichardUK 0:6c0e68e0d876 12 Codes
RichardUK 0:6c0e68e0d876 13 N = 0 1-line mode , 1 2-line mode
RichardUK 0:6c0e68e0d876 14 D = 0 display off, 1 display on
RichardUK 0:6c0e68e0d876 15 C = 0 cursor off, 1 cursor on
RichardUK 0:6c0e68e0d876 16 B = 0 blink off, 1 blink on
RichardUK 0:6c0e68e0d876 17 I/D = 0 decrement mode, 1 increment mode
RichardUK 0:6c0e68e0d876 18 SH = 0 entire shift off, 1 entire shift on
RichardUK 0:6c0e68e0d876 19
RichardUK 0:6c0e68e0d876 20
RichardUK 0:6c0e68e0d876 21 *** Power on
RichardUK 0:6c0e68e0d876 22 Wait for more than 30 ms after VDD rises to 4.5 v
RichardUK 0:6c0e68e0d876 23
RichardUK 0:6c0e68e0d876 24 *** Function set
RichardUK 0:6c0e68e0d876 25 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
RichardUK 0:6c0e68e0d876 26 0 0 0 0 1 1 N D X X
RichardUK 0:6c0e68e0d876 27 Wait for more than 39 &#956;s
RichardUK 0:6c0e68e0d876 28
RichardUK 0:6c0e68e0d876 29 *** Display ON/OFF Control
RichardUK 0:6c0e68e0d876 30 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
RichardUK 0:6c0e68e0d876 31 0 0 0 0 0 0 1 D C B
RichardUK 0:6c0e68e0d876 32 Wait for more than 39 &#956;s
RichardUK 0:6c0e68e0d876 33
RichardUK 0:6c0e68e0d876 34
RichardUK 0:6c0e68e0d876 35 *** Display Clear
RichardUK 0:6c0e68e0d876 36 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
RichardUK 0:6c0e68e0d876 37 0 0 0 0 0 0 0 0 0 1
RichardUK 0:6c0e68e0d876 38 Wait for more than 1.53 ms
RichardUK 0:6c0e68e0d876 39
RichardUK 0:6c0e68e0d876 40 *** Entry Mode Set
RichardUK 0:6c0e68e0d876 41 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
RichardUK 0:6c0e68e0d876 42 0 0 0 0 0 0 0 1 I/D SH
RichardUK 0:6c0e68e0d876 43
RichardUK 0:6c0e68e0d876 44 *** Initialization end ***
RichardUK 0:6c0e68e0d876 45
RichardUK 0:6c0e68e0d876 46
RichardUK 0:6c0e68e0d876 47 */
RichardUK 0:6c0e68e0d876 48
RichardUK 0:6c0e68e0d876 49 /*
RichardUK 0:6c0e68e0d876 50 * Written by Richard e Collins.
RichardUK 0:6c0e68e0d876 51 * Basic bit of code for using a standard 1602 display in 8 bit mode.
RichardUK 0:6c0e68e0d876 52 * When wiring one of these displays up make sure the power to the LCD on pin 3 is correct, too high and it will not display anything. About 0.2v is good, I use a POT to set it.
RichardUK 0:6c0e68e0d876 53 *
RichardUK 0:6c0e68e0d876 54 * Example use.
RichardUK 0:6c0e68e0d876 55 * Display1602 display(p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20);
RichardUK 0:6c0e68e0d876 56 * display.SetXY(0,0);
RichardUK 0:6c0e68e0d876 57 * display.Print("Hello world");
RichardUK 0:6c0e68e0d876 58 */
RichardUK 0:6c0e68e0d876 59 struct Display1602
RichardUK 0:6c0e68e0d876 60 {
RichardUK 0:6c0e68e0d876 61 Display1602(PinName registerSelect,PinName readWriteSelect,PinName readWriteEnable,PinName d0,PinName d1,PinName d2,PinName d3,PinName d4,PinName d5,PinName d6,PinName d7) ;
RichardUK 0:6c0e68e0d876 62
RichardUK 0:6c0e68e0d876 63 void Clear();
RichardUK 0:6c0e68e0d876 64
RichardUK 0:6c0e68e0d876 65 void Print(const char *text);
RichardUK 0:6c0e68e0d876 66
RichardUK 0:6c0e68e0d876 67 void printf(const char *format,...);
RichardUK 0:6c0e68e0d876 68
RichardUK 0:6c0e68e0d876 69 void SetXY(int x,int y);
RichardUK 0:6c0e68e0d876 70
RichardUK 0:6c0e68e0d876 71 private:
RichardUK 0:6c0e68e0d876 72 DigitalOut rs; //Register select, high value in data is data char data, when low is a command.
RichardUK 0:6c0e68e0d876 73 DigitalOut rw; //Data direction, high read operation, low is write operation.
RichardUK 0:6c0e68e0d876 74 DigitalOut e; //When high the value in data is read from or written to the register selected.
RichardUK 0:6c0e68e0d876 75 DigitalOut bf; //Used by the hardware to say when busy, this is also data bit 7. I am assuming it is only valid to read when readWriteEnable is false.
RichardUK 0:6c0e68e0d876 76 BusOut data; //The data sent.
RichardUK 0:6c0e68e0d876 77
RichardUK 0:6c0e68e0d876 78 void SendCommand(int cmd);
RichardUK 0:6c0e68e0d876 79
RichardUK 0:6c0e68e0d876 80 void SendChar(char c);
RichardUK 0:6c0e68e0d876 81 };
RichardUK 0:6c0e68e0d876 82
RichardUK 0:6c0e68e0d876 83 #endif //#ifndef __DISPLAY1602_H__