⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd6610.h

📁 NOKIA 6610液晶初始化程序
💻 H
📖 第 1 页 / 共 2 页
字号:
		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 + -