Sie sind auf Seite 1von 9

Sunrom.

com Model: 3013

JHD162A SERIES
DISPLAY CONTENT 16 CHAR x 2ROW
CHAR. DOTS 5x8
DRIVING MODE 1/16D
AVAILABLE TYPES
TN STN(YELLOW GREEN GREY B/W)
REFLECTIVE WITH EL OR LED BACKLIGHT
EL/100VAC 400HZ
LED/4.2VDC

Parameter Testing Standard Values

Symbol Criteria Min. Typ. Max Unit

om
Supply voltage VDD-V - 4.5 5.0 5.5 V
SS

Input high voltage VIH - 2.2 - VDD V

Input low voltage VIL - -0.3 - 0.6 V

Output high voltage VOH -IOH=02mA 2.4 - - V

Output low voltage

Operating voltage
VOL

IDD
IOL=1.2mA

VDD=5.0V
-

-
-

1.5
.c
0.4

3.0
V

mA
m
n ro
Su

Products URL: http://www.sunrom.com/p-112.html


Sunrom.com Model: 3013

om
1
VSS
2
VCC
3
VEE
4
RS
5
R/W
6
E
7
DB0
.c
8
DB1
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
15
LED+
16
LED-
m
AC Characteristics Read Mode Timing Diagram
n ro
Su

Products URL: http://www.sunrom.com/p-112.html


Sunrom.com Model: 3013

om
.c
m
n ro
Su

Products URL: http://www.sunrom.com/p-112.html


Sunrom.com Model: 3013

om
.c
m
ro

Write Mode Timing Diagram


Timing
n
Su

Products URL: http://www.sunrom.com/p-112.html


Sunrom.com Model: 3013

Connection

om
.c
m
n ro
Su

Products URL: http://www.sunrom.com/p-112.html


Sunrom.com Model: 3013

// Sample code for 89c51


// compiler keil v8

#include <reg51.h>
#include <intrins.h>
sbit dc=0xa0; /*P2.0 LCD RS pin #21*/
sbit rw=0xa1; /*P2.1 LCD R/W pin #22*/
sbit cs=0xa4; /*P2.4 LCD E pin #25*/
sfr lcdbus=0x80; /*p0 LCD data bus D0=P0.0*/
unsigned int sys10mscounter;
unsigned char syslimitcounter;

// Self define font


char path1[8]={0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f}; // Horizontal 1
char path2[8]={0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00}; // Horizontal 2
char pats1[8]={0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15}; // Vertical 1
char pats2[8]={0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a}; // Vertical 2

void soft_nop(){}

om
void soft_10ms() // 12MHZ 10MS software delay
{ register int i;
for(i=0;i<711;i++);
}

void soft_20ms() // 12MHZ 20MS software delay


{

}
soft_10ms();
soft_10ms(); .c
m
void hard_10ms(unsigned int delaytime) // delaytime*10MS hardware delay
{ sys10mscounter=delaytime;
while(sys10mscounter);
}
ro

unsigned char data lcdcounter;


bit lcdusing1,lcdusing2;

bit lcd_checkbusy() // is LCD busy?


n

{register lcdstate;
dc=0; // dc=1 -> data, =0 -> command
Su

rw=1; // rw=1 -> read, =0 -> write


cs=1; // cs=1 -> selected
soft_nop();
lcdstate=lcdbus;
cs=0;
return((bit)(lcdstate&0x80));
}

void lcd_wrcmd(unsigned char lcdcmd) // write a character to LCD


{ lcdusing1=1;
while(lcd_checkbusy());
lcdbus=lcdcmd;
dc=0; // dc=1 -> data, =0 -> command
rw=0; // rw=1 -> read, =0 -> write
cs=1; // cs=1 -> selected
soft_nop();
cs=0;
lcdbus=0xff;
lcdusing1=0;
}

Products URL: http://www.sunrom.com/p-112.html


Sunrom.com Model: 3013

void lcd_moveto(char position) // move cursor to position 0-79


{register cmd=0x80;
lcdcounter=position;
if (position > 59)
position += 0x18;
else
{ if (position > 39) position -= 0x14;
else
{ if (position > 19) position += 0x2c;
}
}
cmd = cmd | position;
lcd_wrcmd(cmd);
}

void lcd_wrdata(char lcddata) // at surrent cursor write a character


{char i;
lcdusing2=1;
while(lcd_checkbusy());

om
if (lcdcounter==20){
lcd_moveto(20);
while(lcd_checkbusy());
}
if (lcdcounter==40){
lcd_moveto(40);
while(lcd_checkbusy());
}
if (lcdcounter==60){
lcd_moveto(60);
while(lcd_checkbusy());
.c
m
}
if (lcdcounter==80){
lcd_moveto(0);
while(lcd_checkbusy());
ro

lcdcounter=0;
}
lcdcounter++;
lcdbus=lcddata;
dc=1; // dc=1 -> data, =0 -> command
n

rw=0; // rw=1 -> read, =0 -> write


cs=1; // cs=1 -> selected
Su

soft_nop();
cs=0;
lcdbus=0xff;
lcdusing2=0;
}

void lcd_string(char *strpoint) // at current cursor write a string


{register i=0;
while(strpoint[i]!=0){
lcd_wrdata(strpoint[i]);
i++;}
}

void lcd_init() //initialize LCD


{
lcd_wrcmd(0x38); //8 bit data bus
lcd_wrcmd(0x0c); //block cursor,non blink
lcd_wrcmd(0x06); //don't move after display
lcd_wrcmd(0x01); //Clear display
lcdcounter=0;
}

Products URL: http://www.sunrom.com/p-112.html


Sunrom.com Model: 3013

void lcd_cls() // clear LCD


{
lcd_wrcmd(0x01);
lcdcounter=0;
}

void timer0(void) interrupt 1 // T0 interrupt service routine


{
TH0=0xd8; /*12M,10ms*/
TL0=0xf6;
TR0=1;
if(sys10mscounter !=0)sys10mscounter--; // 10ms timer
if(syslimitcounter!=0)syslimitcounter--; // 10ms timer
}

main()
{unsigned char j;

om
IE=0;P0=0xff;P1=0xff;P2=0xff;P3=0xff; // Initialize
lcd_init(); soft_20ms();
TMOD=0x51;
TH0=0xd8; /*12M,10ms*/
TL0=0xf6;
TR0=1;ET0=1;EA=1;
while(1)
{
// Display : .c
// All black; horizontal 1; horizontal 2; vertical 1; vertical 2
// UUUUUU...., QQQQQQQ.... ABCD...
m
lcd_init(); // all black
for(j=0;j<80;j++){lcd_wrdata(0xff);}
hard_10ms(50);
ro

lcd_init(); // Horizontal 1 -> check font definition


lcd_wrcmd(0x40);
for(j=0;j<8;j++)lcd_wrdata(path1[j]);
for(j=0;j<100;j++)lcd_wrdata(0);
hard_10ms(50);
n

lcd_init(); // Horizontal 2
Su

lcd_wrcmd(0x40);
for(j=0;j<8;j++)lcd_wrdata(path2[j]);
for(j=0;j<100;j++)lcd_wrdata(0);
hard_10ms(50);

lcd_init(); // Vertical 1
lcd_wrcmd(0x40);
for(j=0;j<8;j++)lcd_wrdata(pats1[j]);
for(j=0;j<100;j++)lcd_wrdata(0);
hard_10ms(50);

lcd_init(); // Vertical 2
lcd_wrcmd(0x40);
for(j=0;j<8;j++)lcd_wrdata(pats2[j]);
for(j=0;j<100;j++)lcd_wrdata(0);
hard_10ms(50);

lcd_init();

lcd_string("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUU");

Products URL: http://www.sunrom.com/p-112.html


Sunrom.com Model: 3013

hard_10ms(50);

lcd_init();

lcd_string("QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
QQQQQQQQQQQQQQQQQQ");
hard_10ms(50);

lcd_init();

lcd_string("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz
0123456789+-!#$%&?");
hard_10ms(50);
}
}

om
.c
m
n ro
Su

Products URL: http://www.sunrom.com/p-112.html

Das könnte Ihnen auch gefallen