📄 lcm128645zk.c
字号:
#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 + -