📄 s60753.c
字号:
/******************************************************************************
*
* s60753_init - 初始化s60753 LCD显示驱动模块
*
* INPUTS:
* NONE
*
* RETURNS:
* NONE
*
******************************************************************************/
extern void s60753_init(void)
{
__LCDPowerOn();
__LCDInit();
LCD_EL_ON();
#ifdef PRJ_BUILD
s60753_Logo();
#else
s60753_Cross(0,255);
#endif
return;
}
void s60753_Logo(void)
{
unsigned char i,j,k;
for(i = 0; i < 96; i++){
for(j = 0; j < 12; j++){
for (k = 0; k < 8; k++){
if(BITS(LCDLogo1[12 * i + j], 7 - k) == 0x01)
layer1[162 * (i + 32) + (j << 3) + k + 34] = 0xFF;
else
layer1[162 * (i + 32) + (j << 3) + k + 34] = 0;
}
}
}
/*EXT 0*/
__LCDCommand(LCD_EXT_DISABLE);
/*Column Address Set*/
__LCDCommand(LCD_COLUMN_ADDR_SET);
__LCDParam(15); /* start column */
__LCDParam(68); /* end column */
/* Line Address Set */
__LCDCommand(LCD_LINE_ADDR_SET);
__LCDParam(0); /* start line */
__LCDParam(159); /* end line */
/* Writing to memory */
__LCDCommand(LCD_WRITE_DATA);
for(i = 0; i < 160; i++){
for(j = 0; j < 162; j++){
LCD_DATA_OUT(layer1[162 * i + j]);
}
}
}
/*------------------棋盘-----------------------------*/
void s60753_Cross(uchar a, uchar b)
{
unsigned char i,j,k,l;
/*EXT 0*/
__LCDCommand(LCD_EXT_DISABLE);
/*Column Address Set*/
__LCDCommand(LCD_COLUMN_ADDR_SET);
__LCDParam(15); /* start column */
__LCDParam(68); /* end column */
/* Line Address Set */
__LCDCommand(LCD_LINE_ADDR_SET);
__LCDParam(0); /* start line */
__LCDParam(159); /* end line */
/* Writing to memory */
__LCDCommand(LCD_WRITE_DATA);
for (i = 0; i < 5; i++){
for(l = 0; l < 16;l++){
LCD_DATA_OUT(a);
LCD_DATA_OUT(a);
for(j = 0; j < 5;j++){
for(k = 0; k < 16; k++){
LCD_DATA_OUT(a);
}
for(k = 0; k < 16; k++){
LCD_DATA_OUT(b);
}
}
}
for(l = 0; l < 16;l++){
LCD_DATA_OUT(b);
LCD_DATA_OUT(b);
for(j = 0; j < 5;j++){
for(k = 0; k < 16; k++){
LCD_DATA_OUT(b);
}
for(k = 0; k < 16; k++){
LCD_DATA_OUT(a);
}
}
}
}
}
void s60753_command(uchar cmd)
{
__LCDCommand(cmd);
}
void s60753_param(uchar data)
{
__LCDParam(data);
}
/******************************************************************************
*
* s60753_displayLayer - 只显示某一层,刷新到LCD上
*
* INPUTS:
* uchar layer :
* 0: layer0
* 1: layer1
*
* RETURNS:
* NONE
*
******************************************************************************/
extern void s60753_displayLayer(uchar layer)
{
unsigned int i;
uchar *displayLayer;
/* 显示图层 */
if(layer == 0)
displayLayer = layer0;
else if(layer == 1)
displayLayer = layer1;
else
return;
/*EXT 0*/
__LCDCommand(LCD_EXT_DISABLE);
/*Column Address Set*/
__LCDCommand(LCD_COLUMN_ADDR_SET);
__LCDParam(15); /* start column */
__LCDParam(68); /* end column */
/* Line Address Set */
__LCDCommand(LCD_LINE_ADDR_SET);
__LCDParam(0); /* start line */
__LCDParam(159); /* end line */
/* Writing to memory */
__LCDCommand(LCD_WRITE_DATA);
for(i = 0; i < MEM_SIZE; i++)
LCD_DATA_OUT(displayLayer[i]);
}
/******************************************************************************
*
* s60753_clearScreen - 清屏
*
* INPUTS:
* NONE
*
* RETURNS:
* NONE
*
******************************************************************************/
extern void s60753_clearScreen(void)
{
unsigned char i,j;
memset(currentLayer, 0, MEM_SIZE);
/*EXT 0*/
__LCDCommand(LCD_EXT_DISABLE);
/*Column Address Set*/
__LCDCommand(LCD_COLUMN_ADDR_SET);
__LCDParam(15); /* start column */
__LCDParam(68); /* end column */
/* Line Address Set */
__LCDCommand(LCD_LINE_ADDR_SET);
__LCDParam(0); /* start line */
__LCDParam(159); /* end line */
/* Writing to memory */
__LCDCommand(LCD_WRITE_DATA);
for (i = 0; i < 160; i++){
for(j = 0; j < 54*3; j++){
LCD_DATA_OUT(0x00);
}
}
}
/******************************************************************************
*
* s60753_setCurrentLayer - 设置当前操作的图层
*
* INPUTS:
* int layer : 所选择的图层 0:第一层 1:第二层
*
* RETURNS:
* NONE
*
******************************************************************************/
extern void s60753_setCurrentLayer(int layer)
{
if(layer == 1){
currentLayer = layer1;
/*currentLayerState |= 0x10;*/
}else if(layer == 0){
currentLayer = layer0;
/*currentLayerState |= 0x01;*/
}
}
/******************************************************************************
*
* s60753_getCurrentLayer - 获取当前操作的图层
*
* INPUTS:
* NONE:
*
* RETURNS:
* int : 所选择的图层 0:第一层 1:第二层
*
******************************************************************************/
extern int s60753_getCurrentLayer(void)
{
if(currentLayer == layer0)
return 0;
if(currentLayer == layer1)
return 1;
return -1;
}
/******************************************************************************
*
* setd1335_setLayerCompMtd - 设置图层之间的组合方法
*
* INPUTS:
* uchar mx :
* 0: OR
* 1: Exclusive OR
* 2: AND
*
* RETURNS:
* NONE
*
******************************************************************************/
extern void s60753_setLayerCompMtd(uchar mx)
{
uchar i,j;
int position;
/* 组合模式参数应为0,1,2 ,而且两层应都打开 */
if(mx > 2)
return;
/* save current component mode */
compMode = mx;
currentLayerState = 0x11;
/*EXT 0*/
__LCDCommand(LCD_EXT_DISABLE);
/*Column Address Set*/
__LCDCommand(LCD_COLUMN_ADDR_SET);
__LCDParam(15); /* start column */
__LCDParam(68); /* end column */
/* Line Address Set */
__LCDCommand(LCD_LINE_ADDR_SET);
__LCDParam(0); /* start line */
__LCDParam(159); /* end line */
/* Writing to memory */
__LCDCommand(LCD_WRITE_DATA);
switch(mx){
case 0:
for(i = 0; i < 160; i++)
for(j = 0; j < 162; j++){
position = 162 * i + j;
LCD_DATA_OUT(layer0[position] | layer1[position]);
}
break;
case 1:
for(i = 0; i < 160; i++)
for(j = 0; j < 162; j++){
position = 162 * i + j;
LCD_DATA_OUT(layer0[position] ^ layer1[position]);
}
break;
case 2:
for(i = 0; i < 160; i++)
for(j = 0; j < 162; j++){
position = 162 * i + j;
LCD_DATA_OUT(layer0[position] & layer1[position]);
}
break;
default:break;
}
}
/******************************************************************************
*
* s60753_setLayerDisplay - 设置图层的显示特征
*
* INPUTS:
* int layer : 所选择的图层 0:第一层 1:第二层
* uchar ltype:
0:关闭图层显示
1:显示图层
*
*
* RETURNS:
* NONE
*
******************************************************************************/
extern void s60753_setLayerDisplay(int layer,uchar ltype)
{
if(layer == 0){/* 0层 */
if(ltype == 1){/* 打开 */
s60753_setCurrentLayer(0);
if(currentLayerState & 0x01){
/* 原来状态是打开则直接返回 */
return;
}else{
/* 0层原关闭,则打开0层时两层均打开,并刷新显示 */
currentLayerState = 0x11;
s60753_setLayerCompMtd(compMode);
return;
}
}else{/* 关闭 */
s60753_setCurrentLayer(1);
if((currentLayerState & 0x01) == 0){
/* 原来状态是关闭则直接返回 */
return;
}else{
currentLayerState = 0x10;/* 不允许两层同时关闭 */
s60753_displayLayer(1);
return;
}
}
}else{
if(layer == 1){
if(ltype == 1){/* 打开 */
s60753_setCurrentLayer(1);
if(currentLayerState & 0x10){
/* 原来状态是打开则直接返回 */
return;
}else{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -