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

📄 lcm.c

📁 自己的一个320*240的液晶屏(1335控制器)的驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
	   			set_xy(2+i+xx,7);
				write_data(0x7f); 
	   			set_xy(56+i+xx,6);
				write_data(0xfd); 
	   			set_xy(56+i+xx,7);
				write_data(0x7f); 
			}
		break;
		case 5:
			xx = 64;
		case 3:
	   		set_xy(62+xx,6);
			write_data(0xfb); 
	   		set_xy(62+xx,7);
			write_data(0xbf); 
	   		set_xy(63+xx,6);
			write_data(0x07); 
	   		set_xy(63+xx,7);
			write_data(0xc0); 
		break;
		case 6:                    // clear menu area
			 for (i=0;i<128;i++) 
			 {
	   			set_xy(i,6);
				write_data(0xff); 
	   			set_xy(i,7);
				write_data(0xff); 
			 }
		break;
	}
 }
 else 
 {
 	if(frame)
 		xx = 24;
 	else 
		xx = 8;

	 for (i=0;i<12;i++) 
  	 {
		dd=hz1212[i+n*24];             // 汉字的上半部分
		if (act) dd=255-dd;        
   		set_xy(x*12+i+xx,6);           // 左菜单右移两列
	
		ch = dd;
		dd = dd<<3;	
		dd = dd & 0xf8;
		dd = dd | 0x05;                // 加上边框
		write_data(dd);                // 先显示高4位

		dd=hz1212[i+n*24+12];          // 汉字的下半部分
		if (act) dd=255-dd;
   		set_xy(x*12+i+xx,7);
		ch = ch>>5;
		ch = ch & 0x07;
		dd = dd<<3;
		dd = dd & 0xf8;
		dd = ch | dd;
		dd = dd & 0x7f;                // 加下边框
		dd = dd | 0x40;
		write_data(dd);
 	 }
 }
}


void diplay_menu_chinese_a(unsigned char x,unsigned char frame,unsigned char n,unsigned char act) 
{
 unsigned char i,dd,ch,xx;
 
 
 if(frame > 1)	 
 {
	xx = 0;

	switch(frame)
	{
		case 4:
			xx = 64; 
		case 2:
	   		set_xy(xx,6);
			write_data(0x07); 
	   		set_xy(xx,7);
			write_data(0xc0); 
	   		set_xy(1+xx,6);
			write_data(0xfb); 
	   		set_xy(1+xx,7);
			write_data(0xbf); 
			for(i=0;i<6;i++)
			{
	   			set_xy(2+i+xx,6);
				write_data(0xfd); 
	   			set_xy(2+i+xx,7);
				write_data(0x7f); 
	   			set_xy(56+i+xx,6);
				write_data(0xfd); 
	   			set_xy(56+i+xx,7);
				write_data(0x7f); 
			}
		break;
		case 5:
			xx = 64;
		case 3:
	   		set_xy(62+xx,6);
			write_data(0xfb); 
	   		set_xy(62+xx,7);
			write_data(0xbf); 
	   		set_xy(63+xx,6);
			write_data(0x07); 
	   		set_xy(63+xx,7);
			write_data(0xc0); 
		break;
		case 6:
		case 7:
			for(i=0;i<2;i++)
			{
	   			set_xy(62+i,6);
				write_data(0xfb); 
	   			set_xy(62+1,7);
				write_data(0xbf);
 			}
			for(i=0;i<10;i++)
			{
	   			set_xy(116+i,6);
				write_data(0xfd); 
	   			set_xy(116+i,7);
				write_data(0x7f); 
			}
		break;
		case 8:                    // clear menu area
			 for (i=0;i<128;i++) 
			 {
	   			set_xy(i,6);
				write_data(0xff); 
	   			set_xy(i,7);
				write_data(0xff); 
			 }
		break;
	}
 }
 else 
 {
 	if(frame)
 		xx = 24;
 	else 
		xx = 8;

	 for (i=0;i<12;i++) 
  	 {
		dd=hz1212[i+n*24];             // 汉字的上半部分
		if (act) dd=255-dd;        
   		set_xy(x*12+i+xx,6);           // 左菜单右移两列
	
		ch = dd;
		dd = dd<<3;	
		dd = dd & 0xf8;
		dd = dd | 0x05;                // 加上边框
		write_data(dd);                // 先显示高4位

		dd=hz1212[i+n*24+12];          // 汉字的下半部分
		if (act) dd=255-dd;
   		set_xy(x*12+i+xx,7);
		ch = ch>>5;
		ch = ch & 0x07;
		dd = dd<<3;
		dd = dd & 0xf8;
		dd = ch | dd;
		dd = dd & 0x7f;                // 加下边框
		dd = dd | 0x40;
		write_data(dd);
 	 }
 }
}


/*
//显示字符,fb==1:反白显示
void display_ascii(unsigned char x,unsigned char y,unsigned char n,unsigned char fb) 
{
    unsigned char i,dd;
 
	n-=32;
	if (n>128) n=0;
	if (fb) dd=255; 
		else dd=0; 

    set_xy(x*8,y);
	write_data(dd);

  	set_xy(x*8,y+1);
	write_data(dd);

	for (i=0;i<7;i++) 
	{
		dd=asc[i+n*16];
		if (fb) dd=255-dd; 

   		set_xy(x*8+i+1,y);
		write_data(dd);

		dd=asc[i+n*16+8];
		if (fb) dd=255-dd; 

   		set_xy(x*8+i+1,y+1);
		write_data(dd);
 	}
} 
*/

// 显示字符,fb==1:反白显示
// 汉字的 x 取值范围:0~9
// ASCII字符的 x 取值范围:0~20
void display_ascii(unsigned char x,unsigned char y,unsigned char n,unsigned char fb) 
{
	unsigned char i,dd,ch,ch2,yy; 

	n-=32;
	if (n>128) n=0;
 

	switch(y)
	{
		case 0: 
			yy = 0;
		break;
		case 1: 
			yy = 1;
		break;
		case 2:
			yy = 3;
		break;
		case 3:
			yy = 4;
		break;
		case 4:
			yy = 6;
		break;
	}

	for (i=0;i<6;i++) 
	{
		dd=asc6_12[i+n*12];     // 上半部分
		if (fb) dd=255-dd; 
   		set_xy(x*6+i,yy);

	 	switch(yy)
		{
			case 1:
			//	ch = read_data();      // 上半字节拼装
			 	ch = dis_buf1[x*6+i];
				ch = ch & 0x0f;
				ch2 = dd;
				dd = dd<<4;	
				dd = dd & 0xf0;
				dd = ch | dd;          // 先显示高4位
			 	dis_buf1[x*6+i] = dd;
			break;
			case 4:
			//	ch = read_data();      // 上半字节拼装
			 	ch = dis_buf2[x*6+i];
				ch = ch & 0x0f;
				ch2 = dd;
				dd = dd<<4;	
				dd = dd & 0xf0;
				dd = ch | dd;          // 先显示高4位
			 	dis_buf2[x*6+i] = dd;
			break;
			case 6:
				ch = dd;
				dd = dd<<3;	
				dd = dd & 0xf8;
				dd = dd | 0x05;                // 加上边框  先显示高4位
			break;
		}
// 		set_xy(x*6+i,yy);
		write_data(dd);


		dd=asc6_12[i+n*12+6];         // 下半部分
		if (fb) dd=255-dd; 
   		set_xy(x*6+i,yy+1);

	 	switch(yy)
		{
			case 0: 
			//	ch = read_data();     // 下半字节拼装
			 	ch = dis_buf1[x*6+i];
				ch = ch & 0xf0;
				dd = dd & 0x0f;
				dd = ch | dd;
			 	dis_buf1[x*6+i] = dd;
			break;
			case 3: 
			//case 6:    
			//	ch = read_data();     // 下半字节拼装
			 	ch = dis_buf2[x*6+i];
				ch = ch & 0xf0;
				dd = dd & 0x0f;
				dd = ch | dd;
			 	dis_buf2[x*6+i] = dd;
			break;
			case 1: case 4:
				ch2 = ch2>>4;
				ch2 = ch2 & 0x0f;
				dd = dd << 4;
				dd = dd & 0xf0;
				dd = dd | ch2;
			break;
			case 6:
				ch = ch>>5;
				ch = ch & 0x07;
				dd = dd<<3;
				dd = dd & 0xf8;
				dd = ch | dd;
				dd = dd & 0x7f;                // 加下边框
				dd = dd | 0x40;
			break;
		}
//   		set_xy(x*6+i,yy+1);	
		write_data(dd);
 	}
} 


void display_little_ascii1(unsigned char x,unsigned char y,unsigned char n,unsigned char fb) 
{
	unsigned char i,dd; 

	n-=32;
	if (n>128) n=0;
 
	if(x>10)
	{
		for (i=0;i<6;i++) 
		{
			dd=asc6_8[i+n*6];     
			if (fb) dd=255-dd; 
  	 		set_xy(x*6+i-1,y);
			write_data(dd);
 		}
	}
	else 
	{
		for (i=0;i<6;i++) 
		{
			dd=asc6_8[i+n*6];     
			if (fb) dd=255-dd; 
  	 		set_xy(x*6+i,y);
			write_data(dd);
 		}
	}
} 


void display_little_ascii(unsigned char x,unsigned char y,unsigned char n,unsigned char fb) 
{
	unsigned char i,dd; 

	n-=32;
	if (n>128) n=0;

    if(x<14)
	{
		for (i=0;i<5;i++) 
		{
			dd=asc6_8[i+n*6];     
			if (fb) dd=255-dd; 
			set_xy(x*5+i,y);
			write_data(dd);
		}
	}
	else
    {
		for (i=0;i<5;i++) 
		{
			dd=asc6_8[i+n*6];     
			if (fb) dd=255-dd; 
 	  		set_xy(x*5+i+8,y);
			write_data(dd);
 		}
	}

} 


void display_big_ascii(unsigned char x,unsigned char y,unsigned char n,unsigned char fb)
{
	unsigned char i,dd; 

	n-=32;
	if (n>128) n=0;

	for (i=0;i<11;i++) 
	{
		dd=asc11_16[i+n*22];     
		if (fb) dd=255-dd; 
		set_xy(x*11+7+i,y);
		write_data(dd);

		dd=asc11_16[i+n*22+11];         // 下半部分
		if (fb) dd=255-dd; 
   		set_xy(x*11+7+i,y+1);
		write_data(dd);
	}
}

void display_big_ascii1(unsigned char x,unsigned char y,unsigned char n,unsigned char fb)
{
	unsigned char i,dd; 

	n-=32;
	if (n>128) n=0;

	for (i=0;i<24;i++) 
	{
		dd=asc24_32[i+n*96];     
		if (fb) dd=255-dd; 
		set_xy(x*24+i,y);
		write_data(dd);

		dd=asc24_32[i+n*96+24];         // 下半部分
		if (fb) dd=255-dd; 
   		set_xy(x*24+i,y+1);
		write_data(dd);

		dd=asc24_32[i+n*96+48];     
		if (fb) dd=255-dd; 
		set_xy(x*24+i,y+2);
		write_data(dd);

		dd=asc24_32[i+n*96+72];         // 下半部分
		if (fb) dd=255-dd; 
   		set_xy(x*24+i,y+3);
		write_data(dd);
	}
}



void clear_scr(unsigned char type) 
{
 unsigned char i,j,k;


	if(type)
		k = 6;
	else 
		k = 8;

	 for (i=0;i<128;i++) 
	 {
	  	dis_buf1[i] = 0xff;
	 	dis_buf2[i] = 0xff;
	 	for(j=0;j<k;j++)
		{
			set_xy(i,j);
			write_data(0xff); 
			set_xy(i,j);
			write_data(0xff); 
		}			
	 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -