📄 lcd6610.h
字号:
point2();
zy=Oy+yt+h-(r*2); //第三象限
point2();
zx=Ox+xt+w-(r*2); //第四象限
point2();
//-----------------------------------------
zx=Ox+yt+w-(r*2); //第一象限
zy=Oy-xt;
point2();
//zy=Oy-xt;//+w-(r*2);
zx=Ox-yt;//+h-(r*2); //第二象限
point2();
zy=Oy+xt+h-(r*2); //第三象限
point2();
zx=Ox+yt+w-(r*2); //第四象限
point2();
}
}
}
void init_lcd(void)
{
int i;
//glcdn_Delay(20000);
PORTB&=0b11010111;
DDRB|= 0b00101000;
PORTD&=0b11111100;
DDRD|= 0b00000011;
glcdSetRect(glcd_Clip, 0, 0, 130, 130);
csh;
NOP();
csl;//sbi(GLCD_CTRL_PORT, GLCD_CE_);
restl;
glcdn_Delay(60);
resth;//sbi(GLCD_CTRL_PORT, GLCD_RES_);
glcdn_Delay(600);
sclkh;//sbi(GLCD_SER_PORT, GLCD_SCLK);
sdatah;//sbi(GLCD_SER_PORT, GLCD_MOSI);
csh;
glcdn_Delay(6000);
glcdn_WriteCommand(0x82);//温度校正
glcdn_WriteData(1);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteData(0);
glcdn_WriteCommand(0xD1);//内部晶震打开
glcdn_WriteCommand(0x94);//Sleep Out
glcdn_WriteCommand(0xA9);//Partial Display Out
glcdn_WriteCommand(0xCA); //屏幕控制/亮度
glcdn_WriteData(0b00001111);
glcdn_WriteData(0b00100000);
glcdn_WriteData(0b00001111);
glcdn_WriteData(0b00000001);
glcdn_WriteCommand(0x20);//电源控制
glcdn_WriteData(0b00001111);
glcdn_WriteCommand(0x81);//电压控制/亮度
glcdn_WriteData(0b00001111);
glcdn_WriteData(0b00000101);
glcdn_WriteCommand(0xA7);//inverse display
glcdn_WriteCommand(0xBC);//显示方向
glcdn_WriteData(0b00000101);
glcdn_WriteData(0x00);
glcdn_WriteData(0b00000100);
glcdn_Delay(50000);
glcdn_WriteCommand(0xBB);//扫描线方向
glcdn_WriteData(0b00000001);
glcdn_WriteCommand(0xAF);//显示器开
glcdn_WriteCommand(0xCE);//256 Color Position Set
glcdn_WriteData(0x00);
glcdn_WriteData(0x02);
glcdn_WriteData(0x04);
glcdn_WriteData(0x06);
glcdn_WriteData(0x09);
glcdn_WriteData(0x0B);
glcdn_WriteData(0x0D);
glcdn_WriteData(0x0F);
glcdn_WriteData(0x00);
glcdn_WriteData(0x02);
glcdn_WriteData(0x04);
glcdn_WriteData(0x06);
glcdn_WriteData(0x09);
glcdn_WriteData(0x0B);
glcdn_WriteData(0x0D);
glcdn_WriteData(0x0F);
glcdn_WriteData(0x00);
glcdn_WriteData(0x04);
glcdn_WriteData(0x0B);
glcdn_WriteData(0x0F);
glcdn_ClearLcd();
}
void glcdn_SetPageArea(char x1, char x2, char y1, char y2)
{
glcdn_WriteCommand(ADDRX);
glcdn_WriteData(x1+1);
glcdn_WriteData(x2+1);
glcdn_WriteCommand(ADDRY);
glcdn_WriteData(y1+1);
glcdn_WriteData(y2+1);
}
void glcdn_ClearLcd(void)
{unsigned long i;
unsigned char r=0,g=0,b=0;
glcdn_SetPageArea(0, GLCD_X_END, 0, GLCD_Y_END);
glcdn_WriteCommand(MEMWRITE);
for(i=0; i<(GLCD_PIXELX*GLCD_PIXELY);i++)//(GLCD_PIXELX*GLCD_PIXELY)
{
glcdn_WriteData(Color1);
glcdn_WriteData(Color2);
}
}
void glcdn_WriteData(unsigned char myData)
{
csl; //cbi(GLCD_CTRL_PORT, GLCD_CE_);
sclkl; //cbi(GLCD_SER_PORT, GLCD_SCLK);
sdatah;//sbi(GLCD_SER_PORT, GLCD_MOSI);
sclkh; //sbi(GLCD_SER_PORT, GLCD_SCLK);
SPCR = 0x50; //setup SPI
SPDR = myData;
while(!(SPSR & 0x80));
csh;
SPCR = 0x00;
}
void glcdn_WriteCommand(unsigned char myData)
{
csl;//cbi(GLCD_CTRL_PORT, GLCD_CE_);
sclkl;//cbi(GLCD_SER_PORT, GLCD_SCLK);
sdatal;//cbi(GLCD_SER_PORT, GLCD_MOSI);
sclkh;//sbi(GLCD_SER_PORT, GLCD_SCLK);
SPCR = 0x50; //setup SPI
SPDR = myData;
while(!(SPSR & 0x80));
csh;
SPCR = 0x00;
}
unsigned int RGB(unsigned char red,unsigned char green,unsigned char blue)
{
unsigned int c1,c2;
Color1=(red&0b11110000>>4);
Color2=(green&0b11110000)|((blue&0b11110000)>>4);
c1=(int)Color1;
c2=(int)Color2;
return (c1<<8)|c2;
}
void RGB2(unsigned char red,unsigned char green,unsigned char blue)
{
Color1=(red&0b11110000>>4);
Color2=(green&0b11110000)|((blue&0b11110000)>>4);
}
void RGBToChar(unsigned int color)
{
Color1=(char)(color>>8);
Color2=(char)color;
}
void point(unsigned char x,unsigned char y)
{glcdn_SetPageArea(x,GLCD_X_END,y, GLCD_Y_END);
glcdn_WriteCommand(MEMWRITE);
//RGBToChar(color);
glcdn_WriteData(Color1);
glcdn_WriteData(Color2);
}
void point2(void)
{glcdn_SetPageArea(zx,GLCD_X_END,zy, GLCD_Y_END);
glcdn_WriteCommand(MEMWRITE);
//RGBToChar(color);
glcdn_WriteData(Color1);
glcdn_WriteData(Color2);
}
void point3(void)
{//glcdn_SetPageArea(zx,GLCD_X_END,zy, GLCD_Y_END);
glcdn_WriteCommand(MEMWRITE);
//RGBToChar(color);
glcdn_WriteData(Color1);
glcdn_WriteData(Color2);
}
void TestLcd(void)
{
init_lcd();
RGB2(255,255,255);
glcdn_ClearLcd();
sc_cbk(255,0,255,1);
sc_cfg(0,255,255,1);
sc_cfr(0,0,255,1);
sc_csh(0,0,255,1);
sc_ctext(0,0,0,1);
glcdRectangle(1,1,31,31);
sc_cbk(255,0,255,0);
glcdRectangle(33,1,64,31);
sc_cfg(255,0,0,1);
sc_cbk(0,0,255,1);
RoundRect(66,1,31,31,4);
sc_cfg(0,0,255,1);
sc_cbk(100,0,208,0);
RoundRect(99,1,29,31,8);
sc_cfg(0,0,255,0);
sc_cbk(0,255,128,1);
RoundRect(1,33,31,31,6);
sc_cfg(0,255,0,1);
glcdCircle(48,48,15);
glcdEllipse(82,48,15,12);
RGB2(0,0,255);
sc_cfg(0,0,255,1);
sc_cbk(255,255,0,1);
sc_csh(0,0,255,1);
glcdFrame(1,66,31,97);
RGB2(255,0,255);
glcdLine(99,33,130,64);
}
void DrawStr(unsigned char x,unsigned char y,unsigned char *str,unsigned char tm)
{
unsigned char x1=x,w,e=0,c=0;
//for(x1=0;x1<)
RGB2(0,255,0);
if(tm)
{
RGB2(0,0,255);
while(*str)
{
if(*str<0x19)w=12;
else w=6;
DrawChartm(x1,y,*str++);
x1+=w;
}
}
else
{
RGB2(0,0,255);
while(*str)
{
if(*str<0x19)w=12;
else w=6;
DrawChar(x1,y,*str++);
x1+=w;
}
}
}
/*
void DrawStr(unsigned char x,unsigned char y,unsigned char *str,unsigned char tm)
{
unsigned char x1=x,w,e=0,c=0;
//for(x1=0;x1<)
RGB2(0,255,0);
//if(tm)
{
for(w=0;w<strlen(str);w++)
{
if(str[w]<0x20)e++;
else c++;
}
//glcdFillRect(x,y,x+e*12+c*6,y+11);
}
glcdn_SetPageArea(x,y,x+e*12+c*6,y+11);
glcdn_WriteCommand(MEMWRITE);
RGB2(0,0,255);
for(w=0;w<strlen(str);w++)
{
if(*str<0x19)w=12;
else w=6;
DrawChar(x1,y,*str++);
x1+=w;
}
}
*/
void DrawChar(unsigned char x,unsigned char y,char c)
{
char e=0,i,j,ed,cotx1,cotx2,cobk1,cobk2;
int u;
//RGB2(255,0,0);
RGBToChar(cotext);
cotx1=Color1;
cotx2=Color2;
RGBToChar(cobk);
cobk1=Color1;
cobk2=Color2;
if(c>0x19)
{
u=(c-0x20)*12;
glcdn_SetPageArea(x,x+5,y,y+11);
glcdn_WriteCommand(MEMWRITE);
for(i=1;i<11;i++)
{
ed=ENDOT[u+i];
for(j=0;j<6;j++)
if((ed>>j)&0x1)
{
glcdn_WriteData(cotx1);
glcdn_WriteData(cotx2);
}
else
{
glcdn_WriteData(cobk1);
glcdn_WriteData(cobk2);
}
}
}
else
{
u=(c-1)*24;
glcdn_SetPageArea(x,x+10,y,y+11);
glcdn_WriteCommand(MEMWRITE);
for(i=0;i<22;i++)
{
ed=hzdot[u+i];
if(i%2==0)
e=8;
else
e=3;
for(j=0;j<e;j++)
if((ed>>j)&0x1)
{
glcdn_WriteData(cotx1);
glcdn_WriteData(cotx2);
}
else
{
glcdn_WriteData(cobk1);
glcdn_WriteData(cobk2);
}
}
}
}
void DrawChartm(unsigned char x,unsigned char y,char c)
{
char e=0,i,j,ed;
int u;
RGB2(255,0,0);
if(c>0x19)
{
u=(c-0x20)*12;
for(i=0;i<6;i++)
{
ed=ENDOT[u++];
for(j=0;j<8;j++)
if((ed>>j)&0x1)
point(x+i,y+j);
}
y+=8;
for(i=0;i<6;i++)
{
ed=ENDOT[u++];
for(j=0;j<8;j++)
if((ed>>j)&0x1)
point(x+i,y+j);
}
}
else
{
u=(c-1)*24;
for(i=0;i<12;i++)
{
ed=hzdot[u++];
for(j=0;j<8;j++)
if((ed>>j)&0x1)
point(x+i,y+j);
}
y+=8;
for(i=0;i<12;i++)
{
ed=hzdot[u++];
for(j=0;j<8;j++)
if((ed>>j)&0x1)
point(x+i,y+j);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -