一、
#include <reg51.h>
#include <intrins.h>
sbit RS=0xb0; //P3.0
sbit RW=0xb1; //P3.1
sbit E=0xb2; //P3.2
void lcd_w_cmd(unsigned char com);
void lcd_w_dat(unsigned char dat);
unsigned char lcd_r_start();
void lcd_int();
void delay(unsigned int i);
void delay1();
void main()
{
unsigned char lcd[]="SHEN ZHEN";
unsigned char i;
P1=0xff;
lcd_int();
delay(255);
lcd_w_cmd(0x83);
delay(255);
for(i=0;lcd[i]!='\0';i++)
{
lcd_w_dat(lcd[i]);
delay(200);
}
while(1);
}
void delay1()
{
_nop_();
_nop_();
_nop_();
}
void lcd_int()
{
lcd_w_cmd(0x3c);
lcd_w_cmd(0x0e);
lcd_w_cmd(0x01);
lcd_w_cmd(0x06);
lcd_w_cmd(0x80);
}
unsigned char lcd_r_start()
{
unsigned char s;
RW=1;
delay1();
RS=0;
delay1();
E=1;
delay1();
s=P1;
delay1();
E=0;
delay1();
RW=0;
delay1();
return(s);
}
void lcd_w_cmd(unsigned char com)
{
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay(2);
}while(i!=0);
RW=0;
delay1();
RS=0;
delay1();
E=1;
delay1();
P1=com;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
void lcd_w_dat(unsigned char dat)
{
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay(2);
}while(i!=0);
RW=0;
delay1();
RS=1;
delay1();
E=1;
delay1();
P1=dat;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
void delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
二、显示屏——显示“工人”
#include <reg51.h>
#include <intrins.h>
sbit RS=0xb0;
sbit RW=0xb1;
sbit E=0xb2;
void lcd_w_cmd(unsigned char com);
void lcd_w_dat(unsigned char dat);
unsigned char lcd_r_start();
void lcd_int();
void delay(unsigned int i);
void delay1();
//功能:显示"工人"
void GONG_ZI()
{
lcd_w_cmd(0x40); //写入第1行CGRAM地址
lcd_w_dat(0x1f); //写入第1行CGRAM数据
lcd_w_cmd(0x41); //写入第2行CGRAM地址
lcd_w_dat(0x1f); //写入第2行CGRAM数据
lcd_w_cmd(0x42); //写入第3行CGRAM地址
lcd_w_dat(0x04); //写入第3行CGRAM数据
lcd_w_cmd(0x43); //写入第4行CGRAM地址
lcd_w_dat(0x04); //写入第4行CGRAM数据
lcd_w_cmd(0x44); //写入第5行CGRAM地址
lcd_w_dat(0x04); //写入第5行CGRAM数据
lcd_w_cmd(0x45); //写入第6行CGRAM地址
lcd_w_dat(0x1f); //写入第6行CGRAM数据
lcd_w_cmd(0x46); //写入第7行CGRAM地址
lcd_w_dat(0x1f); //写入第7行CGRAM数据
lcd_w_cmd(0x47); //写入第8行CGRAM地址
lcd_w_dat(0x00); //写入第8行CGRAM数据
}
void REN_ZI()
{
lcd_w_cmd(0x48); //写入第1行CGRAM地址
lcd_w_dat(0x00); //写入第1行CGRAM数据
lcd_w_cmd(0x49); //写入第2行CGRAM地址
lcd_w_dat(0x04); //写入第2行CGRAM数据
lcd_w_cmd(0x4A); //写入第3行CGRAM地址
lcd_w_dat(0x04); //写入第3行CGRAM数据
lcd_w_cmd(0x4B); //写入第4行CGRAM地址
lcd_w_dat(0x0A); //写入第4行CGRAM数据
lcd_w_cmd(0x4C); //写入第5行CGRAM地址
lcd_w_dat(0x0A); //写入第5行CGRAM数据
lcd_w_cmd(0x4D); //写入第6行CGRAM地址
lcd_w_dat(0x11); //写入第6行CGRAM数据
lcd_w_cmd(0x4E); //写入第7行CGRAM地址
lcd_w_dat(0x11); //写入第7行CGRAM数据
lcd_w_cmd(0x4F); //写入第8行CGRAM地址
lcd_w_dat(0x00); //写入第8行CGRAM数据
}
void main()
{
P1=0xff;
lcd_int();
delay(255);
GONG_ZI();
REN_ZI();
lcd_w_cmd(0x81);
lcd_w_dat(0x00);
lcd_w_dat(0x01);
while(1);
}
void delay1()
{
_nop_();
_nop_();
_nop_();
}
void lcd_int()
{
lcd_w_cmd(0x3c);
lcd_w_cmd(0x0e);
lcd_w_cmd(0x01);
lcd_w_cmd(0x06);
lcd_w_cmd(0x80);
}
unsigned char lcd_r_start()
{
unsigned char s;
RW=1;
delay1();
RS=0;
delay1();
E=1;
delay1();
s=P1;
delay1();
E=0;
delay1();
RW=0;
delay1();
return(s);
}
void lcd_w_cmd(unsigned char com)
{
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay(2);
}while(i!=0);
RW=0;
delay1();
RS=0;
delay1();
E=1;
delay1();
P1=com;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
void lcd_w_dat(unsigned char dat)
{
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay(2);
}while(i!=0);
RW=0;
delay1();
RS=1;
delay1();
E=1;
delay1();
P1=dat;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
void delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
三、显示屏:显示英文
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P3^1;
sbit E=P3^2;
uchar code table[]="I LOVE YOU ZZY";
void delay(ms){
uint i,j;
for(i=0;i<ms;i++){
for(j=0;j<123;j++){
}
}
}
void write_com(uchar com){
E=0;
RS=0;
P0=com;
delay(5);
E=1;
delay(5);
E=0;
}
void write_data(uchar dat){
E=0;
RS=1;
P0=dat;
delay(5);
E=1;
delay(5);
E=0;
}
void init(){
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main(){
uint i;
init();
write_com(0x80+0x40);
for(i=0;i<16;i++){
write_data(table[i]);
delay(5);
}while(1);
}