📄 lcd3300.c
字号:
#include <reg51.h>
#include <string.h>
#include <ascii.h>
#include <image.h>
#define uchar unsigned char
#define uint unsigned int
//#define LCD_RET_H PORTD|=0x80 //RESET ---- PD7
//#define LCD_RET_L PORTD&=0x7f
sbit RET=P1^4;
//#define LCD_CS_H PORTD|=0x40 //CS ---- PD6
//#define LCD_CS_L PORTD&=0xbf
sbit CS=P1^5;
//#define LCD_CLK_H PORTB|=0x20 //CLK ---- PB5
//#define LCD_CLK_L PORTB&=0xdf
sbit CLK=P1^2;
//#define LCD_DIN_H PORTB|=0x08 //DIN ---- PB3
//#define LCD_DIN_L PORTB&=0xf7
sbit DIN=P1^3;
// Epson S1D15G10 Command Set
#define DISON 0xaf
#define DISOFF 0xae
#define DISNOR 0xa6
#define DISINV 0xa7
#define COMSCN 0xbb
#define DISCTL 0xca
#define SLPIN 0x95
#define SLPOUT 0x94
#define PASET 0x75
#define CASET 0x15
#define DATCTL 0xbc
#define RGBSET8 0xce
#define RAMWR 0x5c
#define RAMRD 0x5d
#define PTLIN 0xa8
#define PTLOUT 0xa9
#define RMWIN 0xe0
#define RMWOUT 0xee
#define ASCSET 0xaa
#define SCSTART 0xab
#define OSCON 0xd1
#define OSCOFF 0xd2
#define PWRCTR 0x20
#define VOLCTR 0x81
#define VOLUP 0xd6
#define VOLDOWN 0xd7
#define TMPGRD 0x82
#define EPCTIN 0xcd
#define EPCOUT 0xcc
#define EPMWR 0xfc
#define EPMRD 0xfd
#define EPSRRD1 0x7c
#define EPSRRD2 0x7d
#define NOP 0x25
//void init_lcd ();
//void init_mcu ();
//void lcd_data (uchar data);
//void lcd_command (uchar command);
void delay(unsigned int time)
{
while(time--);
}
void lcd_data (uchar data11)
{
uchar i;
uchar idata data1;
data1=data11;
CS=0;
CLK=0;
DIN=1; //数据
CLK=1;
//for(i=0;i<8;i++)
//{
CLK=0;
DIN=(data1)&0x80;
CLK=1;
CLK=0;
DIN=(data1)&0x40;
CLK=1;
CLK=0;
DIN=(data1)&0x20;
CLK=1;
CLK=0;
DIN=(data1)&0x10;
CLK=1;
CLK=0;
DIN=(data1)&0x08;
CLK=1;
CLK=0;
DIN=(data1)&0x04;
CLK=1;
CLK=0;
DIN=(data1)&0x02;
CLK=1;
CLK=0;
DIN=(data1)&0x01;
CLK=1;
// }
CS=1;
}
void lcd_data1 (uchar data11)
{
uchar i;
uchar idata data1;
data1=data11;
CS=0;
CLK=0;
DIN=1; //数据
CLK=1;
//for(i=0;i<8;i++)
//{
CLK=0;
DIN=(data1)&0x01;
CLK=1;
CLK=0;
DIN=(data1)&0x02;
CLK=1;
CLK=0;
DIN=(data1)&0x04;
CLK=1;
CLK=0;
DIN=(data1)&0x08;
CLK=1;
CLK=0;
DIN=(data1)&0x10;
CLK=1;
CLK=0;
DIN=(data1)&0x20;
CLK=1;
CLK=0;
DIN=(data1)&0x40;
CLK=1;
CLK=0;
DIN=(data1)&0x80;
CLK=1;
// }
CS=1;
}
void lcd_command (uchar command1)
{
uchar i;
uchar idata command;
command=command1;
CS=0;
CLK=0;
DIN=0; //命令
CLK=1;
//for(i=0;i<8;i++)
//{
CLK=0;
DIN=(command)&0x80;
CLK=1;
CLK=0;
DIN=(command)&0x40;
CLK=1;
CLK=0;
DIN=(command)&0x20;
CLK=1;
CLK=0;
DIN=(command)&0x10;
CLK=1;
CLK=0;
DIN=(command)&0x08;
CLK=1;
CLK=0;
DIN=(command)&0x04;
CLK=1;
CLK=0;
DIN=(command)&0x02;
CLK=1;
CLK=0;
DIN=(command)&0x01;
CLK=1;
// }
CS=1;
}
void ClrScr(unsigned char bcolor)
{
unsigned int num;
unsigned char n,x;
x=0;
for (n=0;n<5;n++)
{
lcd_command (PASET);
lcd_data (x);
x+=25;
lcd_data (x++);
lcd_command (CASET);
lcd_data (2);
lcd_data (131);
lcd_command (RAMWR);
num=130*26;
while (num--)
lcd_data (bcolor);
}
}
void init_lcd ()
{
RET=0;
delay(10);
RET=1;
lcd_command (DISCTL);
lcd_data (0x0f);
lcd_data (0x20);
lcd_data (0x0f);
lcd_data (0x01);
lcd_command (COMSCN); //上下半图象扫描顺序
lcd_data (0x01);
lcd_command (OSCON);
lcd_command (SLPOUT);
lcd_command (VOLCTR);
lcd_data (0x0E); //调整对比度,越大越亮
lcd_data (5); //色彩调整,5最合适
lcd_command (PWRCTR);
lcd_data (0x0f);
lcd_command (DISINV); //颜色顺序
lcd_command (SLPOUT);
lcd_command (DATCTL);
lcd_data (0x01); //改变增量方向
lcd_data (0x00);
lcd_data (0x01);
lcd_command (RGBSET8); //调色板设置
lcd_data (0x00);
lcd_data (0x02);
lcd_data (0x04);
lcd_data (0x06);
lcd_data (0x08);
lcd_data (0x0a);
lcd_data (0x0c);
lcd_data (0x0f);
lcd_data (0x00);
lcd_data (0x02);
lcd_data (0x04);
lcd_data (0x06);
lcd_data (0x08);
lcd_data (0x0a);
lcd_data (0x0c);
lcd_data (0x0f);
lcd_data (0x00);
lcd_data (0x06);
lcd_data (0x09);
lcd_data (0x0f);
lcd_command (DISON);
}
void PutChar(unsigned char x,unsigned char y,unsigned char bcolor,unsigned char fcolor,char c)
{
unsigned char i,j,temp;
lcd_command (PASET);
lcd_data(0+y);
lcd_data(0+y+16);
lcd_command(CASET);
lcd_data(1+x);
lcd_data(x+8);
lcd_command(RAMWR);
for(i=0;i<16;i++)
{
temp=asc[c-32][i];
for(j=0;j<8;j++)
{
lcd_data(((temp>>j)&0x01)?fcolor:bcolor);
}
}
}
void PutStr(unsigned char x,unsigned char y,unsigned char bcolor,unsigned char fcolor,char *s)
{
unsigned char len;
unsigned char i;
len=strlen(s);
for(i=0;i<len;i++)
{
PutChar(x,y,bcolor,fcolor,s[i]);
x+=8;
if(x>125)
{
x=0;
y+=16;
}
}
}
void PutImg(unsigned char x,unsigned char y,unsigned char width,unsigned char height,unsigned char *img)
{
unsigned long i,num;
num=width*height;
lcd_command (PASET);
lcd_data(0+y);
lcd_data(0+y+height);
lcd_command(CASET);
lcd_data(1+x);
lcd_data(x+width);
//lcd_command(DISINV);
lcd_command(RAMWR);
for(i=0;i<num;i++)
{
lcd_data(img[i]);
}
}
void main ()
{
unsigned char i,j;
uchar x=0,n=0;
/*
for (n=0;n<5;n++)
{
lcd_command (PASET);
lcd_data (x);
x+=25;
lcd_data (x++);
lcd_command (CASET);
lcd_data (2);
lcd_data (131);
lcd_command (RAMWR);
num=130*26;
while (num--)
lcd_data (color[n]);
}
*/
/*
lcd_command (PASET);
lcd_data (60);
//x+=25;
lcd_data (130);
lcd_command (CASET);
lcd_data (2);
lcd_data (131);
lcd_command (RAMWR);
for(num=60*130;num<16900;num++)
{
lcd_data(gImage_1[num]);
} */
//PutChar(10,10,0x00,0xff,'A');
//for(i=0;i<255;i++)
init_lcd ();
//while(1)
ClrScr(0x07);
delay(1000);
ClrScr(0x38);
delay(1000);
ClrScr(0xC0);
delay(1000);
ClrScr(0x19);
delay(10000);
ClrScr(0x34);
delay(10000);
//for(i=0;i<256;i++)
//{
//PutStr(10,10,0,i,"I love this LCD!!!yahoo,yahoo,yahoo,yahoo.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1");
//}
//for(i=0;i<7;i++)
//for(j=0;j<37;j++)
while(1)
{
/*
PutImg(0,0,123,94,gImage_1),ClrScr(0);
PutImg(0,0,72,65,gImage_2),ClrScr(0);
PutImg(0,0,130,43,gImage_3),ClrScr(0);
PutImg(0,0,100,100,gImage_4),ClrScr(0);
PutImg(0,0,50,50,gImage_5),ClrScr(0);
PutImg(0,0,123,93,gImage_6),ClrScr(0);*/
PutImg(0,0,100,100,gImage_14),ClrScr(10);
delay(30000);
//PutImg(0,0,50,50,gImage_8);
//PutImg(0,0,128,128,gImage_9);
PutImg(0,0,102,130,gImage_16),ClrScr(44);
delay(30000);
PutImg(0,0,93,140,gImage_12),ClrScr(100);
delay(30000);
PutImg(0,0,140,103,gImage_13),ClrScr(200);
delay(30000);
}
while (1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -