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

📄 12864_paiallel.c

📁 AVR Devolpment Board
💻 C
📖 第 1 页 / 共 2 页
字号:
	 SET_EN;	 
	 OUTDATA=Cbyte;
	 CLR_EN;
}

/******************************************************************************************
* 函数名称    :WriteData
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void WriteData(unsigned char Dbyte )
{
     CheckBusy();
     SET_RS;
	 CLR_RW;
	 SET_EN;
	 OUTDATA=Dbyte;
	 CLR_EN;
}


/******************************************************************************************
* 函数名称    :LcmInit
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void LcmInit( void )
{	 
	 DDRD |= (1<<PD4)|(1<<PD5)|(1<<PD6)|(1<<PD7);
	 PORTD|= (1<<PD7);
     WriteCommand(0x30);      //8BitMCU,基本指令集合
     WriteCommand(0x03);      //AC归0,不改变DDRAM内容 //地址归0
     WriteCommand(0x0C);      //显示ON,游标OFF,游标位反白OFF //整体显示开,游标显示关,反白关
     WriteCommand(0x01);      //清屏,AC归0 //清除显示
     WriteCommand(0x06);      //写入时,游标右移动 //进入设定点
}

/******************************************************************************************
* 函数名称    :LcmClearTXT
* 功能描述    :文本区清RAM函数
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void LcmClearTXT( void )
{
     uchar i;
     WriteCommand(0x30);      //8BitMCU,基本指令集合
     WriteCommand(0x80);      //AC归起始位
     for(i=0;i<64;i++)
     WriteData(0x20);
}

/*********************
* 函数名称    :LcmClearBMP
* 功能描述    :图形区清RAM函数
* 参数        :  参数名称:	输入/输出?	类型		描述
* 图形区和文本区显示在两个不同的RAM区
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void LcmClearBMP( void )
{
     uchar i,j;
     WriteCommand(0x34);      //8Bit扩充指令集,即使是36H也要写两次
     WriteCommand(0x36);      //绘图ON,基本指令集里面36H不能开绘图
     for(i=0;i<32;i++)            //12864实际为256x32
     {
           WriteCommand(0x80|i);      //行位置
           WriteCommand(0x80);      //列位置
           for(j=0;j<32;j++)            //256/8=32 byte
                WriteData(0);
     }
}

/******************************************************************************************
* 函数名称    :PutStr
* 功能描述    :PutStr(x,y,str1); //X为行0--3 Y为行起始位置0--7
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void PutStr(uchar row,uchar col,uchar *puts)
{
    WriteCommand(0x30);      //8BitMCU,基本指令集合
	switch(row)
	{
		case 0:
			WriteCommand(0x80+col);
			break;
		case 1:
			WriteCommand(0x90+col);
			break;
		case 2:
			WriteCommand(0x88+col);
			break;
		case 3:
			WriteCommand(0x98+col);
			break;
		default:
			break;
	}
	while(*puts != '\0')      //判断字符串是否显示完毕
	{
		WriteData(*puts);
		puts++;
	}
}

void PutBMP(const unsigned char *puts)
{
	uchar n,i,j;
	unsigned char RamVar; //定义无符号变量(Ram变量)
	for(n=0;n<2;n++)		//分两屏显示
	for(i=0;i<32;i++)		//每屏32行	
	for(j=0;j<8;j++)	     //每行8个X地址坐标
	{
		WriteCommand(0x80+i);	          //写Y坐标
		WriteCommand(0x80+j+n*8);		  //写X坐标。上半屏(n=0)地址为0x80-0x87,下半屏(n=1)地址为0x88-0x8f
		RamVar = pgm_read_byte( &(*puts));
		//也可RamVar = pgm_read_byte(puts);
		WriteData(RamVar);					  //每个地址写两字节
		RamVar = pgm_read_byte( &(*(puts+1)));
		//也可RamVar = pgm_read_byte(puts+1);
		WriteData(RamVar);
		puts+=2;
	}	 
	WriteCommand(0x36);	       //打开绘图
}

/***********************************************/
 /*******PutBMP1显示16*16点阵*******************/
 /*****X0---3**************Y0--7***************************/
 /***********将16*16点阵显示在第X行第Y列**********************/
void Put16_16BMP1(const uchar *puts1,uchar x,uchar y)
{
     uchar i,j;
	 unsigned char RamVar; //定义无符号变量(Ram变量)
	 
	 //Row 行==0
	 if(x==0){x=0x80;y=x+y;}
	 if(x==1){x=0x90;y=x+y;}
	 if(x==2){x=0x80;y=x+y+8;}
	 if(x==3){x=0x90;y=x+y+8;}
     WriteCommand(0x34);      //8Bit扩充指令集,即使是36H也要写两次
     WriteCommand(0x36);      //绘图ON,基本指令集里面36H不能开绘图
     for(i=0;i<16;i++)            //12864实际为256x32
     {
           WriteCommand(x|i);      //行位置
           WriteCommand(y);      //列位置
           for(j=0;j<2;j++)      //256/8=32 byte
           {            //列位置每行自动增加
		   		 RamVar = pgm_read_byte( &(*puts1));////////////
				 //也可RamVar = pgm_read_byte(puts1);
                 WriteData(RamVar);
                 puts1++;
           }
     }
}


int main(void)
{
	LcmInit();
	LcmClearTXT();
	LcmClearBMP();
	while(1)
	{
		PutStr(0,0,"Welcome To HRBUST!");
		delay_ms(2000);
		LcmClearTXT();
		LcmClearBMP();
		PutStr(0,0,"欢迎来到哈尔滨理工大学!");
		delay_ms(2000);
		LcmClearTXT();
		LcmClearBMP();
		PutBMP(bmp0);
		delay_ms(2000);
		LcmClearTXT();
		LcmClearBMP();
		PutBMP(bmp1);
		delay_ms(2000);
		LcmClearTXT();
		LcmClearBMP();
		PutStr(1,2,str1);
		PutStr(3,0,str2);
		Put16_16BMP1(BMP0,0,0);
		Put16_16BMP1(BMP1,0,7);
		delay_ms(2000);
		LcmClearTXT();
		LcmClearBMP();

	
	}
}

⌨️ 快捷键说明

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