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

📄 lcd1305.c

📁 W78E58与1305液晶模块的接口程序
💻 C
字号:
/*=========================================================================================*/
/*张刚--修改于2005年11月18日*/

/*液晶显示驱动程序*/
/*=========================================================================================*/
#include <77e58.h>
#include <constdef.h>
#include <sys.h>
#include <intrins.h>
#include <name.h>
#include <table.h>
#include <x25045.h>

#define DataPort   P0
#define NOP5() {_nop_();_nop_();_nop_();_nop_();_nop_();}

sbit Enable=P2^3;
sbit DI=P2^4;
sbit CS1=P2^6;
sbit CS2=P2^2;

//---写命令;cChip=0为1片---//
void OutCommand(uchar cCommand,uchar cChip)   
{
	switch (cChip)
	{
	case 0:
		CS1=0;
		CS2=1;
		break;
	case 1:
		CS1=1;
		CS2=0;
		break;
	default:
		CS1=1;
		CS2=1;
		break;
	}
	if (cChip<2)
	{
		DI=0;
   	DataPort=cCommand;
		Enable=1;
		Enable=0;
	}

	return;
}

//---写数据---//
void OutData(uchar cData)   
{
	DI=1;
   DataPort=cData;
	Enable=1;
	Enable=0;

	return;
}

//---设定显示地址---//
void SetLine(uchar cLine)
{
	cLine&=0x07;  	//cLine<=7
	cLine|=0xb8;	//commond
	OutCommand(cLine,0);
	OutCommand(cLine,1);

	return;
}

void SetCol(uchar cColumn)
{
	uchar cTemp;
	
	cTemp=cColumn%64;
	cTemp&=0x3f;
	cTemp|=0x40;
	OutCommand(cTemp,(uchar)(cColumn>63));

	return;	
}

//设定显示起始行--Z坐标
void SetStartLine(uchar cStartLine) 
{
	cStartLine&=0x03f;
	cStartLine|=0xc0; 

	OutCommand(cStartLine,0);
	OutCommand(cStartLine,1);

	return;
}

//---开关显示---//
void SetOnOff(uchar cOnOff) //0-off,1-on
{
	cOnOff&=0x01;
	cOnOff|=0x3e;
	OutCommand(cOnOff,0);
	OutCommand(cOnOff,1);

	return;
}

// 清屏
void ClrLcd()
{
	uchar cLine,cTemp;

   WatchDog();
   for (cLine=0;cLine<8;cLine++)
   {
   	SetLine(cLine);
		SetCol(0);
      for (cTemp=0;cTemp<64;cTemp++)
		{
			_nop_();
			OutData(0);
      }
      SetCol(64);
      for (cTemp=0;cTemp<64;cTemp++)
		{
			_nop_();
			OutData(0);
      }
   }

	return;
}

//---初始化LCD---//
void InitLCD() 
{ 
	SetOnOff(0); 		//关显示
	ClrLcd();			//清屏
	SetOnOff(1); 		//开显示
	SetStartLine(0); 	//开始行:0

	return;
}

//---显示汉字---//
void ShowHZ(uchar cLine,uchar cColumn,uchar cCode,bit bReverse)
{
	uchar idata cLinTmp,cTemp;

	WatchDog();

	for (cLinTmp=0;cLinTmp<2;cLinTmp++)//行数循环
	{
		SetLine(cLine*2+cLinTmp);
		SetCol(cColumn*6);
		for (cTemp=0;cTemp<12;cTemp++)//点阵循环
		{
			if ((cColumn*6+cTemp)==64)
				SetCol(64);
			if (bReverse)
			{
				OutData(~HZTable[cCode][cLinTmp*12+cTemp]);
			}
			else
			{
				OutData(HZTable[cCode][cLinTmp*12+cTemp]);
			}
		}
	}

	return;
}			
	

⌨️ 快捷键说明

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