You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
1.9 KiB
C

1 year ago
#include<reg51.h>
#include<intrins.h>
sbit RS=P3^0;
sbit RW=P3^1;
sbit E= P3^2;
void lcd_w_cmd(unsigned char com);
void lcd_w_dat(unsigned char dat);
unsigned char lcd_r_start();
void lcd_init();
void delay100us(unsigned char t);
void delay5us(unsigned char n);
void main()
{
unsigned char Disp[]="Hello Everyone";
unsigned char i;
P1=0xff;
lcd_init();
delay100us(255);
lcd_w_cmd(0x82);
delay100us(255);
for(i=0;i<14;i++)
{
lcd_w_dat(Disp[i]);
delay100us(200);
}
while(1);
}
void delay100us(unsigned char t)
{
unsigned char j,i;
for(i=0;i<t;i++)
for(j=0;j<10;j++);
}
void delay5us(unsigned char n)
{ do
{
_nop_();
_nop_();
_nop_();
n--;
}
while(n);
}
void lcd_init()
{
lcd_w_cmd(0x3c);
lcd_w_cmd(0x0c);
lcd_w_cmd(0x01);
lcd_w_cmd(0x06);
lcd_w_cmd(0x80);
}
unsigned char lcd_r_start()
{
unsigned char s;
RW=1;
delay5us(1);
RS=0;
delay5us(1);
E=1;
delay5us(1);
s=P1;
delay5us(1);
E=0;
delay5us(1);
RW=0;
delay5us(1);
return(s);
}
void lcd_w_cmd(unsigned char com)
{
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay100us(2);
}while(i!=0);
RW=0;
delay5us(1);
RS=0;
delay5us(1);
E=1;
delay5us(1);
P1=com;
delay5us(1);
E=0;
delay5us(1);
RW=1;
delay100us(255);
}
void lcd_w_dat(unsigned char dat)
{
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay100us(2);
}while(i!=0);
RW=0;
delay5us(1);
RS=1;
delay5us(1);
E=1;
delay5us(1);
P1=dat;
delay5us(1);
E=0;
delay5us(1);
RW=1;
delay100us(255);
}