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

📄 ziku.h

📁 LM4229电子书阅读器
💻 H
字号:
/*********************************************************************/
//	=============================================================	  */
//								                                      */
//				LM4229(240138)屏电子书阅览器	V1.0				  */
//																      */
//											湘潭大学信息工程学院      */
//												06级自动化			  */
//													瑜人码头		  */
/*********************************************************************/





uchar xdata *addx;		//地址指针

void write_hz1(uchar x,uchar y,uchar *tab_hz,uchar flag);
//=================================================
//
//		 从ROM中找到中文字模数据表
//	    	 并将其显示出来 
//
//==================================================

void  disp_zkhz(uchar x,uchar y,uchar flag)
{	
    uchar  hz_buffer[32];	//存储字模表的数
	uint  j;
	ulong k,l;
	ulong cn_1,cn_2;
	ulong addf;
	ulong *addd;				//中间变量


        cn_1=5;				///////////////5片ROM
		P1=cn_1|0xf8;

		k=*addx; 
		addx++;
		l=*addx;
		addx++;

		
		addf=((k-161)*94+(l-161))*32;		//由内码计算汉字点阵首地址
		if(k==0x0d)
		{	
			if(l==0x0a)
			addf=0;
		}		       //文本中有大量回车符,其内码为0d0a,按上式计算在lcd上显示为“光”此处使其显示为“空格”
		
		cn_2=(addf/0x10000);   	
		P1=cn_2|0xf8;	///cn_2|0xf8是为了不干预P1口的高五位	           //计算汉字点阵所在的rom,片选
				        
        for(j=0;j<32;j++)			 //得到字模数据表
      { addd=addf+j;
		hz_buffer[j]=*(addd-1);     //读取一字节的数据
	  }
	    write_hz1(x,y,hz_buffer,flag);
}

//======================================================
//======================================================
//				 自动显示一页函数
//
//
//======================================================
Disp_one_page()
{
  uchar i,j;
  
   for(j=0;j<5;j++)
   {
   	 for(i=0;i<14;i++)
	 
     disp_zkhz(16*j+24,2*i+1,1);

	}
}
//======================================================
//		  将得到的字模表在本LCD中显示出来
//
//
//		flag;0-反白显示 1-正常显示
//======================================================
void write_hz1(uchar x,uchar y,uchar *tab_hz,uchar flag)
{
  uint place;
  uchar k,temp,temp1;
  
  place=30*x+y;
  if(flag)
  temp=tab_hz[1];
  if(!flag)
  temp=~tab_hz[1];
  for(k=0;k<16;k++)     //字符设置为16*8
   {
            write_data(place&0xff);   //写入地址高位
            write_data(place/256);    //写入地址低位
            write_com(0x24);          //地址设置
            write_com(0xb0);          //设置数据自动写
            
			if(flag)
			{  
			   if(k==15)
			   {temp1=tab_hz[31];
			    tab_hz[31]=temp;}
			   
			   write_data(tab_hz[k*2+1]);			
			   delay_lcd(2);
			   
			   if(k==15)
			   tab_hz[31]=temp1;			    
			   
			   tab_hz[2*k]=tab_hz[2*(k+1)];			
			   write_data(tab_hz[k*2]);} //16*16,每行2字节	    
			else
			{
			  if(k==15)
			   {temp1=tab_hz[31];
			    tab_hz[31]=temp;}
			   
			   write_data(~tab_hz[k*2+1]);			
			   delay_lcd(2);
			   
			   if(k==15)
			   tab_hz[31]=temp1;			    
			   
			   tab_hz[2*k]=tab_hz[2*(k+1)];			
			   write_data(~tab_hz[k*2]);
			   } //16*16,每行2字节
		    write_com(0xb2);                 //自动复位
            place=place+30;                  //下一行   
	  }
        
  }
 

//===========================================================

⌨️ 快捷键说明

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