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

📄 lcm128645zk.c

📁 此文件是LCM12864在LPC2131上的驱动代码
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "config.h"
#include "LCM128645ZK.h" 
#define Num1    { GUI_RLine(110,20,50,1);} 
/*#define Num2    	 {
    					GUI_HLine(110,20,120,1);
    					GUI_RLine(120,20,35,1); 
    					GUI_HLine(110,35,120,1);
    					GUI_RLine(110,35,50,1); 
    					GUI_HLine(110,50,120,1);
  					 }*/
#define Num8    {GUI_Rectangle(110,20,120,50,1); GUI_HLine(110,35,120,1); } 

Tcolor  gui_disp_buf[64][16];  

 uint8 a[]="请选择游戏等级  1 2 3 4 ";
 
const uint8 PIC1[64][16]={
/*--  调入了一幅图像:C:\Documents and Settings\Administrator\桌面\atmel.bmp  --*/
/*--  宽度x高度=128x64  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,
0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xE7,0xFC,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x00,0x3F,0xE7,0xFC,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x00,0x7F,0xE7,0xFC,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x00,0x7F,0xE7,0xFC,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x00,0xFF,0xE7,0xFC,0xFF,0xBF,0xEF,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x00,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x01,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x03,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x03,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x07,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFC,0x00,0x0F,0xF8,0x00,0x00,0x00,
0x00,0x07,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x0F,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x0F,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x1F,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x1F,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x3F,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x3F,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0x7F,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0xFF,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xF8,0x00,0x00,0x00,
0x00,0xFF,0xFF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFC,0x00,0x0F,0xF8,0x00,0x00,0x00,
0x01,0xFF,0xBF,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFE,0x00,0x0F,0xF8,0x00,0x00,0x00,
0x01,0xFF,0x3F,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xFF,0xF8,0x00,0x00,
0x03,0xFF,0x3F,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xFF,0xF8,0x00,0x00,
0x03,0xFE,0x3F,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xFF,0xF0,0x00,0x00,
0x07,0xFE,0x3F,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xFF,0xF0,0x00,0x00,
0x07,0xFF,0x3F,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xFF,0xE0,0x00,0x00,
0x0F,0xFF,0x3F,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xFF,0xE0,0x00,0x00,
0x0F,0xFF,0x3F,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xFF,0xC0,0x00,0x00,
0x1F,0xFF,0x3F,0xE7,0xFC,0xFF,0xBF,0xE7,0xFC,0xFF,0xFF,0xCF,0xFF,0xC0,0x00,0x00,
0x1F,0xFF,0x3F,0xE7,0xFC,0xFF,0x1F,0xE7,0xFC,0xFF,0xFF,0xCF,0xFF,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3E,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x63,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xB6,0x80,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xBE,0x80,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xB6,0x80,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF7,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x63,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
}; 






/********************************************************************************************************* 
函数名:LCM128645ZK_ShortDelay(uint32 n)
参数: j----代表延时的长短
功能:延时 
说明:j=7时,此延时函数大约延时1us
*********************************************************************************************************/ 
void LCM128645ZK_Shortdelay(uint32 i)
{for(;i>0;i--);}
/********************************************************************************************************* 
函数名: LCM128645ZK_INIT(void)
参数: 
功能:初始化
说明:
**************************************************************/
void  LCM128645ZK_INIT(void)
{
 uint8 cmd;
 PINSEL0=0x00000000;
 PINSEL1=0x00000000;
 IO0DIR|=0x7ffff;
 IO0PIN=(IO0PIN&0xfffff00f)|(0x00<<4);
 
 cmd=0x30;			//功能设置 8位数据,基本指令
 LCM128645ZK_cmd(cmd);		//写指令
 cmd=0x0C;
 			//显示状态 ON,游标OFF,反白OFF
 LCM128645ZK_cmd(cmd);		//写指令
 cmd=0x01;			//清除显示
 LCM128645ZK_cmd(cmd);
 
 	//写指令
 cmd=0x06;
 LCM128645ZK_cmd(cmd);
 cmd=0x02;			//地址归位
 LCM128645ZK_cmd(cmd);		//写指令
 cmd=0x80;			//设置DDRAM地址
 LCM128645ZK_cmd(cmd);		//写指令
 
}
/********************************************************************************************************* 
函数名: void LCM128645ZK_Test(void)
参数: 
功能:测试
说明:显示测试成功字样及arm图片
**************************************************************/

void LCM128645ZK_Test(void)
{   Char_Set_XY(0,0,a);
  
    LCM128645ZK_Shortdelay(100000);
   
   // Set_Draw();
  //Draw_Pic(0,0,*PIC1);
 
}
/********************************************************************************************************* 
函数名:uint8 CheckBusy(void)
参数: 
功能:测试是否忙的状态
说明:忙返回1,不忙返回0
**************************************************************/
uint32 CheckBusy(void)
{
	uint32 temp;
	Clr_LCM128645ZK_RS();  		   
	Set_LCM128645ZK_RW();
	Set_LCM128645ZK_EN();
	Set_LCM128645ZK_input();
	temp = IO0PIN;
	Clr_LCM128645ZK_EN();
	Set_LCM128645ZK_output();
	temp &= 0x00000800;
	return(temp);
}
/********************************************************************************************************* 
函数名:void LCM128645ZK_cmd(uint8 CMD)
参数: 8位的指令
功能:写指令函数
说明:
**************************************************************/
void LCM128645ZK_cmd(uint8 CMD)		
{
	while(CheckBusy());			//检测液晶内部是否忙
	Clr_LCM128645ZK_RS();
	Clr_LCM128645ZK_RW();
	Set_LCM128645ZK_EN();
	IO0PIN =(IO0PIN&0xfffff00f)|( CMD<<4);
	if(CMD==0x01)
	LCM128645ZK_Shortdelay(5000);
	
	Clr_LCM128645ZK_EN();
}
/********************************************************************************************************* 
函数名:void LCM128645ZK_data(uint8 DAT)
参数: 8位的数据
功能://写数据函数
说明
**************************************************************/
void LCM128645ZK_data(uint8 DAT)		
{
	while(CheckBusy());			//检测液晶内部是否忙
	Set_LCM128645ZK_RS();
	Clr_LCM128645ZK_RW();
	Set_LCM128645ZK_EN();
	IO0PIN =(IO0PIN&0xfffff00f)|( DAT<<4);
	
	Clr_LCM128645ZK_EN();
}
/********************************************************************************************************* 
函数名:void Char_Set_XY(uint8 x, uint8 y, uint8 *p)
参数: x为横坐标,y是纵坐标,p是显示的字的地址
功能://显示数据的函数
说明
**************************************************************/
void Char_Set_XY(uint8 x, uint8 y, uint8 *p)
{
  	if(y == 0)
	{
	 	LCM128645ZK_cmd((0x80+x));	
	}
	if(y == 1)
	{
		LCM128645ZK_cmd((0x90+x));
	}
	if(y == 2)
	{
		LCM128645ZK_cmd((0x88+x));
	}
	if(y == 3)
	{
		LCM128645ZK_cmd((0x98+x));
	}
	while(*p != 0)
	{
		LCM128645ZK_data(*p++);
	}
}
/********************************************************************************************************* 
函数名:void Set_Draw(void)
参数:
功能:设置为绘图功能的函数
说明
**************************************************************/
void Set_Draw(void)
{
	LCM128645ZK_cmd(0x01);		  //清屏
 	LCM128645ZK_cmd(0x06);        //地址归位
    LCM128645ZK_cmd(0x02);		  //写指令			
	LCM128645ZK_cmd(0x36);	      //8BIT控制界面,扩充指令集,,绘图显示ON
				
}
/********************************************************************************************************* 
函数名:void Draw_Pic(uint8_t x, uint8_t y, const uint8_t *Draw)
参数:x,y为起始点,图像文件的地址(如二维数组)
功能:绘图函数
说明
**************************************************************/
void Draw_Pic(uint8 x, uint8 y, const uint8 *Draw)
{   
	uint8 i, j, temp_x, temp_y;
	LCM128645ZK_cmd(0x01);
	temp_x = x;
	temp_y = y;
	temp_x |= 0x80;
	temp_y |= 0x80;
	for(i=0;i<32;i++ )
	{
		LCM128645ZK_cmd(temp_y++);			//设置绘图区的Y地址坐标
		LCM128645ZK_cmd(temp_x);			//设置绘图区的X地址坐标
		for(j=0;j<16;j++)
		{
			LCM128645ZK_data(*Draw);
			 Draw++;
		}
	}
	temp_x = 0x88;
	temp_y = 0x80;
	j = 0;
	for(;i<64;i++ )
	{
		LCM128645ZK_cmd(temp_y++);			//设置绘图区的Y地址坐标
		LCM128645ZK_cmd(temp_x);			//设置绘图区的X地址坐标	 
		for(j=0;j<16;j++)
		{
			 LCM128645ZK_data(*Draw);
			 Draw++;
		}
	}
 
}

/********************************************************************************************************* 
函数名:void LCM128645ZK_Draw_clear(void)
参数
功能:绘图清屏函数
说明
**************************************************************/
void LCM128645ZK_Draw_clear(void)
{
uint8 x,y;

LCM128645ZK_cmd(0x36); //设置扩展指令集,按手册说明,仅设置了绘图位,
LCM128645ZK_cmd(0x36); //需要两次,本次设置扩展指令集。
//以下程序会将屏幕清空。如果更改高位和低位的数据,就可以改变显示的内容。

{for (y=0;y<32;y++)
  {
 LCM128645ZK_cmd(0x80+y); //设置y=0000+000x,y+1则往下一行
 LCM128645ZK_cmd(0x80); //设置x=0000 0000
 for (x=0;x<8;x++)
 	{ gui_disp_buf[y][x]=0x00;
 	  gui_disp_buf[y][x+8]=0x00;
 	
 	
 	
 	
 //此处连续写数据,由于y为行号,在本循环内不变,
 //而连续写16个数据时,x位址自动增加,
 //因此实际上可以写入16个汉字的位置。
 LCM128645ZK_data(0x00); //高字节数据
   LCM128645ZK_data(0x00); //低字节数据
 	}
 	}
 	}
y=y-32;
 	
 {	
 for (;y<32;y++)
  {
 LCM128645ZK_cmd(0x80+y); //设置y=0000+000x,y+1则往下一行
 LCM128645ZK_cmd(0x88); //设置x=0000 0000

⌨️ 快捷键说明

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