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

📄 ym-qd12864.c

📁 ym12864的驱动应用程序
💻 C
📖 第 1 页 / 共 2 页
字号:



void GXM12864_KS0108_delay(uint xms)
 {
  	uint i,j,m;
 	 for(i=0;i<xms;i++)
  		{
   		for(j=0;j<280;j++)
   			{
    		for(m=0;m<125;m++)
     			{
      			 nop();
      			 nop();
       			 nop();
       			 nop();
     			}
   			}
  		}
 }

void delay(uint xms)
{
	uint i,j;
  	for(i=0;i<xms;i++)
  		{
		for(j=0;j<125;j++)
    		{
       		nop();
       		nop();
       		nop();
       		nop();
   			}
  		}
}
/****DM12864写命令函数*****/
void GXM12864_KS0108_write_command(uchar command)

{
     uchar  data  busy_bit1=0;
     GXM12864_KS0108_ID=0 ;
     GXM12864_KS0108_RW=1;
busyflag:
     P1=0x0ff;
     GXM12864_KS0108_E=1;
     nop();
     busy_bit1=P1;
     busy_bit1=busy_bit1>>0x07;
     GXM12864_KS0108_E=0;
     if(busy_bit1==0X01)
 	{
     	goto busyflag;
  	}
     GXM12864_KS0108_RW=0;
     P1=command;
     GXM12864_KS0108_E=1;
     nop();
     GXM12864_KS0108_E=0;
}
/******DM12864写数据函数*******/
void GXM12864_KS0108_write_data(uchar data_buffer)
{   
	uchar data busy_bit2;
    GXM12864_KS0108_ID=0 ;
    GXM12864_KS0108_RW=1;
busyflag0:
    P1=0x0ff;
    GXM12864_KS0108_E=1;
    nop();
    busy_bit2=P1;
    GXM12864_KS0108_E=0;
    busy_bit2=busy_bit2>>0x07;
    if(busy_bit2==0x01)
	{
     	goto busyflag0;
    }
    GXM12864_KS0108_RW=0;
    GXM12864_KS0108_ID=1;
    P1=data_buffer;
    GXM12864_KS0108_E=1;
    nop();
    GXM12864_KS0108_E=0;
}




//**********DM12864清屏函数**********//
void  GXM12864_KS0108_disp_clrscreen()
{
  	uchar data i,j,page_address;
 	for(j=0;j<8;j++)
 	{
		page_address=0x00;
  		page_address=j;
  		page_address=page_address|0x0b8;
     	GXM12864_KS0108_CSA=1;
     	GXM12864_KS0108_CSB=0;
     	GXM12864_KS0108_write_command(page_address);  // left screen write
     	GXM12864_KS0108_CSA=0;
     	GXM12864_KS0108_CSB=1;
     	GXM12864_KS0108_write_command(page_address); // middle screen write
 		for (i=0;i<32;i++)
    	{
     		GXM12864_KS0108_CSA=1;
     		GXM12864_KS0108_CSB=0;
     		GXM12864_KS0108_write_data(0x0);
     		GXM12864_KS0108_CSA=0;
     		GXM12864_KS0108_CSB=1;
     		GXM12864_KS0108_write_data(0x0);

     		GXM12864_KS0108_CSA=1;
     		GXM12864_KS0108_CSB=0;
     		GXM12864_KS0108_write_data(0x0);
     		GXM12864_KS0108_CSA=0;
     		GXM12864_KS0108_CSB=1;
     		GXM12864_KS0108_write_data(0x0);
     	}
   	}
}

/*******DM12864初始化函数*******/
void  GXM12864_KS0108_int(void)
{ 
	GXM12864_KS0108_CSA=0;
    GXM12864_KS0108_CSB=0;
    P3=0X0C;
    GXM12864_KS0108_CSA=1;
    GXM12864_KS0108_CSB=0;
    GXM12864_KS0108_write_command(0X00);  // left screen write
    GXM12864_KS0108_CSA=0;
    GXM12864_KS0108_CSB=1;
    GXM12864_KS0108_write_command(0X00); // right screen  write
    GXM12864_KS0108_CSA=1;
    GXM12864_KS0108_CSB=0;
    GXM12864_KS0108_write_command(0x3f); // middle screen write
    GXM12864_KS0108_CSA=0;
    GXM12864_KS0108_CSB=1;
    GXM12864_KS0108_write_command(0X3f); // right screen  write
    GXM12864_KS0108_CSA=1;
    GXM12864_KS0108_CSB=0;
    GXM12864_KS0108_write_command(0Xc0); // middle screen write
    GXM12864_KS0108_CSA=0;
    GXM12864_KS0108_CSB=1;
    GXM12864_KS0108_write_command(0Xc0); // right screen  write
    GXM12864_KS0108_CSA=1;
    GXM12864_KS0108_CSB=0;
    GXM12864_KS0108_write_command(0X0b8); // middle screen write
    GXM12864_KS0108_CSA=0;
    GXM12864_KS0108_CSB=1;
    GXM12864_KS0108_write_command(0X0b8); // right screen  write
    GXM12864_KS0108_CSA=1;
    GXM12864_KS0108_CSB=0;
    GXM12864_KS0108_write_command(0X40); // middle screen write
    GXM12864_KS0108_CSA=0;
    GXM12864_KS0108_CSB=1;
    GXM12864_KS0108_write_command(0X40); // right screen  write
}


/**显示函数,select的范围为0或者1,即0选择左半屏,1选择右半屏**/
/******页面地址pag的范围为0到7,列地址col的范围为0到63********/
void  GXM12864_test(bit select,uchar pag,uchar col,uchar src)
{	
	uchar data page_address=0;
	uchar data col_address=0;
   
	page_address =pag;
	col_address  =col;
    
  	page_address=page_address|0x0b8;
    GXM12864_KS0108_CSA=~select;                   //选择左半屏显示
    GXM12864_KS0108_CSB=select;
    GXM12864_KS0108_write_command(page_address);  // 左屏幕行(页面地址)
    
	col_address  = col_address|0x040;
	GXM12864_KS0108_CSA=~select;
    GXM12864_KS0108_CSB=select;
    GXM12864_KS0108_write_command(col_address);   // 整个屏幕列地址

	GXM12864_KS0108_CSA=~select;
    GXM12864_KS0108_CSB=select;
	GXM12864_KS0108_write_data(src);
}



/****显示半个字函数。行row的范围为0到3,列col的范围为0到3******/
void  GXM12864_left_up(bit select,uchar row,uchar col,uchar *pHZSrc)
{
	uchar data page0 = 2*row; 	// 奇数行
	uchar data hz_start =16*col; //列数
	uchar data i;

    for(i = hz_start;i<(hz_start+16);i++)
	{
		delay(1);
		GXM12864_test(select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
}

/****显示半个字函数*******/
void  GXM12864_left_down(bit select,uchar row,uchar col,uchar *pHZSrc)
{
 	uchar data page1 = 2*row+1; // ou
	uchar data hz_start =16*col; //lie 
	uchar data i;

	for(i = hz_start;i<(hz_start+16);i++)
	{
		delay(1);
		GXM12864_test(select,page1,i,*pHZSrc);
		pHZSrc += 2;
	}
}

          /******显示一个字函数*********/
/****select选择左右半屏,0选择左半屏,1选择右半屏*****/
/******显示行row范围为0到3,列col范围为0到3****/
void  GXM12864_display_one(bit select,uchar row,uchar col,uchar *pHZSrc)
{
	GXM12864_left_up(select,row,col,pHZSrc);
	GXM12864_left_down(select,row,col,&pHZSrc[1]);
}


/****整行显示函数——page0_pp为要显示的行,数值为0到3******/
void  GXM12864_display_one_row(uchar page0_pp,uchar *pHZSrc)
{
	uchar data page0;// = 2*row; 	// 奇数行
	uchar data hz_start=0;// =16*col; //列数
    uchar data i;
	bit select=0;
	page0=page0_pp;
   for(i = hz_start;i<(hz_start+16);i++)
   {
		delay(1);
		GXM12864_test(select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}

    hz_start=0;
	page0++;
    pHZSrc=pHZSrc-31;
	for(i = hz_start;i<(hz_start+16);i++)
    {
		delay(1);
		GXM12864_test(select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	
    hz_start=16;
	page0=page0_pp;
	pHZSrc=pHZSrc-1;
	for(i = hz_start;i<(hz_start+16);i++)
	{
		delay(1);
		GXM12864_test(select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	hz_start=16;
	page0++;
    pHZSrc=pHZSrc-31;
	for(i = hz_start;i<(hz_start+16);i++)
    {
		delay(1);
		GXM12864_test(select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}

     hz_start=32;
	 page0=page0_pp;
	 pHZSrc=pHZSrc-1;
	for(i = hz_start;i<(hz_start+16);i++)
	{
		delay(1);
		GXM12864_test(select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	hz_start=32;
	page0++;
	pHZSrc=pHZSrc-31;
	for(i = hz_start;i<(hz_start+16);i++)
    {
		delay(1);
		GXM12864_test(select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
     hz_start=48;
	 page0=page0_pp;
	 pHZSrc=pHZSrc-1;
	for(i = hz_start;i<(hz_start+16);i++)
	{
		delay(1);
		GXM12864_test(select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	hz_start=48;
	page0++;
	pHZSrc=pHZSrc-31;
	for(i = hz_start;i<(hz_start+16);i++)
    {
		delay(1);
		GXM12864_test(select,page0,i,*pHZSrc);//第一行左半屏显示
		pHZSrc += 2;
	}

	 hz_start=0;
	 page0=page0_pp;
	 pHZSrc=pHZSrc-1;
	for(i = hz_start;i<(hz_start+16);i++)
	{
		delay(1);
		GXM12864_test(~select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	hz_start=0;
	page0++;
	pHZSrc=pHZSrc-31;
	for(i = hz_start;i<(hz_start+16);i++)
    {
		delay(1);
		GXM12864_test(~select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	 hz_start=16;
	 page0=page0_pp;
	 pHZSrc=pHZSrc-1;
	for(i = hz_start;i<(hz_start+16);i++)
	{
		delay(1);
		GXM12864_test(~select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	hz_start=16;
	page0++;
	pHZSrc=pHZSrc-31;
	for(i = hz_start;i<(hz_start+16);i++)
    {
		delay(1);
		GXM12864_test(~select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	 hz_start=32;
	 page0=page0_pp;
	 pHZSrc=pHZSrc-1;
	for(i = hz_start;i<(hz_start+16);i++)
	{
		delay(1);
		GXM12864_test(~select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	hz_start=32;
	page0++;
	pHZSrc=pHZSrc-31;
	for(i = hz_start;i<(hz_start+16);i++)
    {
		delay(1);
		GXM12864_test(~select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	 hz_start=48;
	 page0=page0_pp;
	 pHZSrc=pHZSrc-1;
	for(i = hz_start;i<(hz_start+16);i++)
	{
		delay(1);
		GXM12864_test(~select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
	hz_start=48;
	page0++;
	pHZSrc=pHZSrc-31;
	for(i = hz_start;i<(hz_start+16);i++)
    {
		delay(1);
		GXM12864_test(~select,page0,i,*pHZSrc);
		pHZSrc += 2;
	}
}

/******整个屏幕显示函数********/
void  GXM12864_display_hole_row(uchar *pHZSrc)
{     
      bit select_pp=0;
	  uchar page0_pp=0;
	  uchar hz_start_pp=0;
	  GXM12864_display_one_row(page0_pp, pHZSrc);
	  GXM12864_KS0108_delay(1);
	  page0_pp=2;
	  pHZSrc=pHZSrc+256;
	  GXM12864_display_one_row( page0_pp,  pHZSrc);
	  GXM12864_KS0108_delay(1);
      page0_pp=4;
	  pHZSrc=pHZSrc+256;
	  GXM12864_display_one_row(  page0_pp, pHZSrc);
	  GXM12864_KS0108_delay(1);
	  
	  page0_pp=6;
	  pHZSrc=pHZSrc+256;
	  GXM12864_display_one_row( page0_pp, pHZSrc);
	  GXM12864_KS0108_delay(1);
}


//&&&&&&&&&&&&&&&&&main主函数&&&&&&&&&&&&&&&&//
main()
{
   	GXM12864_KS0108_int();
	GXM12864_KS0108_disp_clrscreen();
	delay(1);
	 while(1) 
	{
    GXM12864_KS0108_disp_clrscreen();
	GXM12864_display_one_row(0,hzdot1);
	GXM12864_KS0108_delay(1);
    GXM12864_display_one_row(2,hzdot2);
    GXM12864_KS0108_delay(1);
	GXM12864_display_one_row(4,hzdot3);
	GXM12864_KS0108_delay(1);
	GXM12864_display_one_row(6,hzdot4);
	GXM12864_KS0108_delay(20);
	GXM12864_KS0108_disp_clrscreen();
	GXM12864_display_hole_row(hzdotzz);
	GXM12864_KS0108_delay(20);
   	}
 }

⌨️ 快捷键说明

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