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

📄 lcd.c

📁 320*240液晶屏程序
💻 C
字号:
///////////////////////////////////////////////////////////////////////////////////////
//
//
//
//
//
//
//
/////////////////////////////////////////////////////////////////////////////////////////////

#include  "lcd.h"



/*====================== 延时子程序=================================*/   

void short_delay(uint i)
     { uint idata j;
       for(j=0;j<=i;j++);
     }
///////////////////////////////////////////////////////////////////////
void delayms(uint tickms)
     { 
	   uchar idata count,i;
       _nop_();
       _nop_();
       _nop_();
       for(i=tickms;i>0;i--)
         { for(count=0;count<=58;count++) {;}
           _nop_();
         }
      }
/* ----------------写显示数据子程序------------------------*/
 void WraDataByte(uchar dat0)             
    {
      databus = 0xff;
      a0=0;
      _nop_();
      databus=dat0;
      _nop_();
      _nop_();
      cs =0;
      wr = 0;
      _nop_();
      wr = 1;
      cs = 1;
     }
	/*---------------读显示数据子程序-------------------------*/
uchar RdaDataByte(uchar addl,uchar  addh)             
    {
	  uchar idata dat0;
      databus = 0xff;
      a0=0;
      rd = 1;
	  wr = 1;

      WraControlByte(0x59);
      WraDataByte(0x06);
      WraControlByte(0x4c);

      WraControlByte(0x46);			         //设置光标指针
      WraDataByte(addl);
      WraDataByte(addh);
		
      WraControlByte(0x43);
   
      cs =0;
      a0=1;
      _nop_(); 
      rd = 0;
      _nop_();
      dat0 = databus;
      _nop_();
      rd = 1;
      a0=1;
      cs = 1;
	  return(dat0);
     }
   /* ---------------写指令代码子程序-------------------------*/
 void WraControlByte(uchar com) 
    {
      databus=0xff;
      a0=1;
      databus=com;
      cs = 0;
      wr = 0;
      _nop_();
      wr = 1;
      cs = 1;
      a0 = 1;
    }
  /* ----------------------------------------*/
void FullWithTwoByte(uchar data1,uchar data2)
   {
     uchar idata i,j;
           for(i=0;i<40;i++)
             {
               WraDataByte(data1);
             }
           for(j=0;j<40;j++)
             {
               WraDataByte(data2);
             }
   }
/* -----------清屏子程序-----------------------------*/
 void clr(void)
        { 
		     uchar idata i;
             WraControlByte(0x59);
             WraDataByte(0x06);
             WraControlByte(0x46);
             WraDataByte(0x00);
             WraDataByte(0x00);
             WraControlByte(0x4C);
             WraControlByte(0x42);
            for(i=0;i<120;i++)
              {
               FullWithTwoByte(0x00,0x00);
              }
        }
   /* ---------------写汉字子程序-------------------------*/
 /*void wrhz(unsigned int row,unsigned int col)        
    {                                                  	
    int i,k;
	unsigned int cursor,tempaddress;
	unsigned int temprow,tempcol;
	unsigned char addl,addh;
        WraControlByte(0x59);
         WraDataByte(0x06);
	WraControlByte(0x4f);				         //光标下移
	
	for(i=0;i<4;i++)				             //4个汉字
	{	
		tempcol=col+i*2;		
		for(k=0;k<16;k++)			
		{
		temprow=row+k;			
		cursor=0x0000+temprow*40+tempcol;        //加上显示一区的起始地址
		tempaddress=cursor;
		addl=tempaddress&0x00ff;
		addh=((cursor&0xff00)>>8);
				
		WraControlByte(0x46);			         //设置光标指针
		WraDataByte(addl);
		WraDataByte(addh);
		
		WraControlByte(0x42);
		WraDataByte(hztab[i*32+2*k]);					
		}
		
		for(k=0;k<16;k++)			
		{
		temprow=row+k;			
		cursor=0x0000+temprow*40+tempcol+1;      //加上显示一区的起始地址
		tempaddress=cursor;
		addl=tempaddress&0x00ff;
		addh=((cursor&0xff00)>>8);
				
		WraControlByte(0x46);				     //设置光标指针
		WraDataByte(addl);
		WraDataByte(addh);
		
		WraControlByte(0x42);
		WraDataByte(hztab[i*32+(2*k+1)]);							
		}
	}
        WraControlByte(0x4c);
}
 */
  /* ---------------写一幅图片子程序-------------------------*/
/* void wramap(void)
        {    
		     uchar i,j;
             long int n=0;
             WraControlByte(0x59);       // 开显示
             WraDataByte(0x06);
             WraControlByte(0x46);      //设置光标指针
             WraDataByte(0x00);
             WraDataByte(0x00);
             WraControlByte(0x4C);     // 设置光标移动方向
             WraControlByte(0x42);     // 数据写入显示缓冲区

           for(i=0;i<240;i++)          // 240行
             {
             for(j=0;j<40;j++)         // 每行写40字节 40X8 = 320
               {
               WraDataByte(maptab[n]);
               n++;              
              }
            }
         }
*/
/* ---------------全显示子程序-------------------------*/
void allon(void)
        {
	         uchar idata i;
             WraControlByte(0x59);
             WraDataByte(0x06);
             WraControlByte(0x46);
             WraDataByte(0x00);
             WraDataByte(0x00);
             WraControlByte(0x4C);
             WraControlByte(0x42);
           for(i=0;i<120;i++)
              {
                FullWithTwoByte(0xFF,0xFF);
              }
      }     
 /* -------------初始化子程序---------------------------*/
 void LcdInitial()
     {
     WraControlByte(0x40);
     WraDataByte(0x30);
     WraDataByte(0x87);
     WraDataByte(0x07);
     WraDataByte(0x27);
     WraDataByte(0x39);
     WraDataByte(0xef);
     WraDataByte(0x28);
     WraDataByte(0x00);
     
     WraControlByte(0x44);       
     WraDataByte(0x00);           /* ----------一区首地址------------------------------*/
     WraDataByte(0x00);
     WraDataByte(0xef);
     WraDataByte(0x00);           /* ----------二区首地址------------------------------*/
     WraDataByte(0x40);
     WraDataByte(0xef);
     WraDataByte(0x00);           /* ----------三区首地址------------------------------*/
     WraDataByte(0x80);
     WraDataByte(0x00);
     WraDataByte(0x00);
     
     WraControlByte(0x5d);
     WraDataByte(0x07);
     WraDataByte(0x87);

     WraControlByte(0x5a);
     WraDataByte(0x00);

     WraControlByte(0x5b);
     WraDataByte(0x1c);    
   }
 /* ----------------------------------------*/
/////////////////////////写任意图片////////////////////////////
void wrtu(uint row,uint col,uint high,uint long1,uchar zimo[],uchar flag1)        
//   row   行,    0-239
//   col   列      0-319
//   high  图像高  0-240
//   long1 图像长  0-320
//   flag1=0x88写zimo[]

⌨️ 快捷键说明

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