📄 lcm128645zk0.c
字号:
#include "config.h"
#include "LCM128645ZK.h"
Tcolor gui_disp_buf[GUI_LCM_XMAX][GUI_LCM_YMAX/8]; //[128][8]
uint8 a[]="换个数据" ;
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=0xfffff;
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(5000000);
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<64;y++)
{
LCM128645ZK_cmd(0x80+y); //设置y=0000+000x,y+1则往下一行
LCM128645ZK_cmd(0x80); //设置x=0000 0000
for (x=0;x<16;x++)
{
//此处连续写数据,由于y为行号,在本循环内不变,
//而连续写16个数据时,x位址自动增加,
//因此实际上可以写入16个汉字的位置。
LCM128645ZK_data(0x00); //高字节数据
LCM128645ZK_data(0x00); //低字节数据
}
}
}
//uint8 const DEC_HEX_TAB[8] = {0x80,0x40,0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
uint8 const DEC_HEX_TAB[8] = {0x01,0x02,0x40, 0x80, 0x10, 0x20, 0x40, 0x80};
/****************************************************************************
* 名称:GUI_Point()
* 功能:在指定位置上画点。
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* color 显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出缓冲区范围。
****************************************************************************/
uint8 GUI_Point(uint8 x, uint8 y, Tcolor color)
{ uint8 bak;
// 参数过滤
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
// 设置相应的点为1或0
bak = LCM_ReadByte(x,y);
if(0==color)
{ bak &= (~DEC_HEX_TAB[y&0x07]);
}
else
{ bak |= DEC_HEX_TAB[y&0x07];
}
// 刷新显示
LCM_WriteByte(x, y, bak);
return(1);
}
/***********************************************************************
* 名称:LCM_ReadByte()
* 功能:读取指定点上的数据。
* 入口参数:x x坐标值(0-127)
* y y坐标值(0-63)
* 出口参数:返回该点上的字节数据。
***********************************************************************/
uint8 LCM_ReadByte(uint8 x, uint8 y)
{ x = x&0x7f; // 参数过滤
y = y&0x3f;
y = y>>3;
return(gui_disp_buf[x][y]);
}
/***********************************************************************
* 名称:LCM_WriteByte()
* 功能:向指定点写数据(一字节)。
* 入口参数:x x坐标值(0-127)
* y y坐标值(0-63)
* wrdata 所要写的数据
* 说明:会重新设置CS1/CS2,及其内部指针
***********************************************************************/
void LCM_WriteByte(uint8 x, uint8 y, uint8 wrdata)
{ x = x&0x7f; // 参数过滤
y = y&0x3f;
// CCS1();
// CCS2();
//更新显示缓冲区
y = y>>3;
gui_disp_buf[x][y] = wrdata;
// 更新LCD显示
/* if(x<64) // 选择液晶控制芯片(即CS1--控制前64个点,CS2--控制后64个点)
{ SCS1();
}
else
{ SCS2();
x = x-64;
}
*/
LCM128645ZK_cmd(0x80+x); // 设置当前列地址,即x坐标
LCM128645ZK_cmd(0x80+y); // 设置当前页地址,即y坐标
LCM128645ZK_data(wrdata);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -