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

📄 lcd19264.txt

📁 在aduc834成功稳定运行的函数文件,有详尽的注释.在清达光电hg192646-syh上成功显示
💻 TXT
字号:
/***************************************************
             LCD显示相关函数以及字符代码
     此文件主要可以显示任意大小任意内容的图片和文字.
	        

 

    Version :  1.1
    author :  frubby
    date   :  二○○九年三月六日
    last modify :

    any question ,please contact :

    zhu.zhenghao@hotmail.com        

 

 /***********************************************************/

#include <intrins.h>

#include<ADUC834.H>



/********************引脚定义********************/

sbit RS  =P2^5; //数据指令
sbit RW  =P2^6; //读写
sbit E   =P2^7; //使能


sbit CSA =P3^3;
sbit CSB =P3^6;
//      左  中  右
/*CSA	0	1	0	1
  CSB	0	0	1	1*/



unsigned char Page; //页地址
unsigned char Col; //列地址



void Delay(unsigned int MS);
void wtcom(void);

/***************************/
/*检查Busy                 */
/***************************/
void BusyL(void)
{
CSA=0;
CSB=0;
 wtcom();
}

void BusyM(void)
{
CSA=1;
CSB=0;
 wtcom();
}

void BusyR(void)
{
CSA=0;
CSB=1;
 wtcom();
}

void wtcom(void)
{
 RS = 0;  //指令
 RW = 1;
 P0 = 0xFF; //输出0xff以便读取正确
 E  = 1;
 _nop_();
 //while(P0 & 0x80); //Status Read Bit7 = BUSY
 E  = 0;
 _nop_();
}

/********************************************************/
/*根据设定的坐标数据,定位LCM上的下一个操作单元位置 */
/********************************************************/
void Locatexy(void)
{
 unsigned char x,y;
 switch (Col&0xc0) /*  col.and.0xC0 */
 {   /*条件分支执行  */
  case 0: {BusyL();break;}/*左区 */
  case 0x40: {BusyM();break;}/*中区 */
  case 0x80: {BusyR();break;}/*右区 */
 }
 x = Col&0x3F|0x40; /* col.and.0x3f.or.Set Y Address*/
 y = Page&0x07|0xB8; /* row.and.0x07.or.set Page */
 wtcom();  /* waitting for enable */
 RS = 0;   //指令
 RW = 0;   //写
 P0 = y;   //设置页面地址
 E  = 1;
 _nop_();
 E  = 0;
 _nop_();
 wtcom();  /*  waitting for enable */
 RS = 0;
 RW = 0;
 P0 = x;   //设置列地址
 E  = 1;
 _nop_();
 E  = 0;
 _nop_();
}

/***************************/
/*写指令                   */
/***************************/
void WriteCommandL( unsigned char CommandByte )
{
 BusyL();
 P0 = CommandByte;
 RS = 0;  //指令
 RW = 0;
 E  = 1;
 _nop_();
 E  = 0;
 _nop_();
}

void WriteCommandM( unsigned char CommandByte )
{
 BusyM();
 P0 = CommandByte;
 RS = 0;  //指令
 RW = 0;
 E  = 1;
 _nop_();
 E  = 0;
 _nop_();
}

void WriteCommandR( unsigned char CommandByte )
{
 BusyR();
 P0 = CommandByte;
 RS = 0;  //指令
 RW = 0;
 E  = 1;
 _nop_();
 E  = 0;
 _nop_();
}

/***************************/
/*读数据                   */
/***************************/
unsigned char ReadData( void )
{
 unsigned char DataByte;
 Locatexy(); /*坐标定位,返回时保留分区状态不变 */
 RS = 1;  /*数据输出*/
 RW = 1;  /*读入  */
 P0 = 0xFF;  //输出0xff以便读取正确
 E  = 1;  /*读入到LCM*/
 _nop_();
 DataByte = P0; /*数据读出到数据口P0 */
 E  = 0;
 _nop_();
 return DataByte;
}

/***************************/
/*写数据                   */
/***************************/
void WriteData( unsigned char DataByte )
{
 Locatexy(); /*坐标定位,返回时保留分区状态不变 */
 RS = 1;  /*数据输出*/
 RW = 0;  /*写输出  */
 P0 = DataByte; /*数据输出到数据口 */
 E  = 1;  /*写入到LCM*/
 _nop_();
 E  = 0;
 _nop_();
}
 /*************************************************************************************
函数名称:void LcmClear( void )
 
函数功能:此函数用来 将LCD液晶屏清除原先显示的内容
函数参数:无
***************************************************************************************/
void LcmClear( void )
{
 Page = 0;
 Col  = 0;
 for(Page=0;Page<8;Page++)
  for(Col=0;Col<192;Col++)
   WriteData(0);
}
 /*************************************************************************************
函数名称:void LcmInit( void )
 
函数功能:此函数用来 将LCD液晶屏初始化 
函数参数:无
***************************************************************************************/
void LcmInit( void )
{
 WriteCommandL(0x3f);//开显示
 WriteCommandM(0x3f);
 WriteCommandR(0x3f);

 WriteCommandL(0xc0); //设置起始地址=0
 WriteCommandM(0xc0);
 WriteCommandR(0xc0);

 WriteCommandL(0x3f); //开显示
 WriteCommandM(0x3f);
 WriteCommandR(0x3f);

 LcmClear();
 Col = 0;
 Page= 0;
 Locatexy();
}
/*************************************************************************************
函数名称:void LcmPutDots( unsigned char DotByte )
 
函数功能:此函数用来显示显示屏上显示任意字节的数字.然后取反显示 
函数参数:有1个 参数,DOTBYTE为要显示的字节
***************************************************************************************/
void LcmPutDots( unsigned char DotByte )
{
 Page = 0;
 Col  = 0;
 for(Page=0;Page<8;Page++)
 {
  for(Col=0;Col<192;Col++)
  {
   WriteData( DotByte );
   DotByte = ~DotByte;
  }
 }
}
/*************************************************************************************
函数名称:void LcmPutWord(unsigned char *words,unsigned char wpage1,unsigned char wpage2,unsigned char wcol1,unsigned char wcol2)
 
函数功能:此函数用来显示显示屏上显示出任意大小和内容的图形,也可以用来显示任意大小的文字
函数参数:有5个 参数,words为要显示的图形的数组, wpage1wpage2为起始页和结束页+1, wcol1wcol2为起始列和结束列+1
***************************************************************************************/															
void LcmPutWord(unsigned char *words,unsigned char wpage1,unsigned char wpage2,unsigned char wcol1,unsigned char wcol2)
{
unsigned int X=0;

	for(Page=wpage1;Page<wpage2;Page++)
	for(Col=wcol1;Col<wcol2;Col++)
	{
	 WriteData(words[X]);
	 X++;
	}
}
/*************************************************************************************
函数名称:void LcmPutBMP( unsigned char *puts )
 
函数功能:此函数用来显示196*64的图形 
函数参数:有1个 参数, puts指针指向图形的数组
***************************************************************************************/
void LcmPutBMP( unsigned char *puts )
{
 unsigned int X=0;
 Page = 0;
 Col  = 0;
 for(Page=0;Page<8;Page++)
 {
  for(Col=0;Col<192;Col++)
  {
   WriteData( puts[X] );
   X++;
  }
 }
}
/*************************************************************************************
函数名称:void LcmReverseBMP( void )
 
函数功能:此函数用来将整个画面显示取反
函数参数:无
***************************************************************************************/
void LcmReverseBMP( void )
{
 unsigned char temp;
 Page = 0;
 Col  = 0;
 for(Page=0;Page<8;Page++)
 {
  for(Col=0;Col<192;Col++)
  {
   temp = ReadData(); //空读一次
   temp = ReadData();
   temp = ~temp;
   WriteData(temp);
  }
 }
}

void Delay(unsigned int MS)
{
 unsigned char us,usn;
 while(MS!=0)
 {
  usn = 2; //for 12M
  while(usn!=0)
  {
   us=0xf6;
   while (us!=0){us--;};
   usn--;
  }
  MS--;
 }
}

⌨️ 快捷键说明

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