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

📄 lcd.h

📁 LPC1114_例程和教程
💻 H
📖 第 1 页 / 共 2 页
字号:
				}
		}
}


//*******************************************************************		
void Red(void)
 {	
    send_command(MEMORY_WRITE);
	for (i= 0; i<128;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0xf8);
				send_data(0x00);
				}
		} 
		delay_nms(500);
  }

void Green(void)
 {
    send_command(MEMORY_WRITE);
	for (i= 0; i<128;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0x07);
				send_data(0xe0);
				}
		} 
		delay_nms(500);
  }

void Blue(void)
 {  uint8_t Xs=0,Ys=0;
    send_command(COLUMN_ADDRESS_SET);			//XS,XE
	send_data(Xs);								//0~128
	send_data(0x7f);   
	send_command(ROW_ADDRESS_SET);				//YS,YE
	send_data(Ys);								//0~128
	send_data(0x7f);
    send_command(MEMORY_WRITE);
	for (i= 0; i<128;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0x00);
				send_data(0x1f);
				}
		} 
		delay_nms(500);
  }

void BlackBar(void)
 {
    send_command(MEMORY_WRITE);
	for (i= 0; i<16;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0x00);
				send_data(0x00);
				}
		} 
		delay_nms(500);
  }

void ThreeColourBar(void)
 {
    send_command(MEMORY_WRITE);
	for (i= 0; i<42;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0xf8);
				send_data(0x00);
				}
		} 
	for (i= 0; i<43;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0x07);
				send_data(0xe0);
				}
		} 
	for (i= 0; i<43;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0x00);
				send_data(0x1f);
				}
		} 
		delay_nms(500);
  }

void ThreeColourBar1(void)
 {
    send_command(MEMORY_WRITE);
	for (i= 0; i<128;i++)
		{
			for (j=0;j<42;j++)
				{
		      	send_data(0xf8);
				send_data(0x00);
				}
			for (j=0;j<43;j++)
				{
		      	send_data(0x07);
				send_data(0xe0);
				}
			for (j=0;j<43;j++)
				{
		      	send_data(0x00);
				send_data(0x1f);
				}
		}  
		delay_nms(500);
  }

void B_Grey_W(void)
 {
    send_command(MEMORY_WRITE);
	for (i= 0; i<42;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0xff);
				send_data(0xff);
				}
		} 
	for (i= 0; i<43;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0x84);
				send_data(0x10);
				}
		} 
	for (i= 0; i<43;i++)
		{
			for (j=0;j<128;j++)
				{
		      	send_data(0x00);
				send_data(0x00);
				}
		} 
		delay_nms(500);
  }	 

void writeData16(unsigned int usData)                                       /* 写16位数据函数               */
{
	send_data((char)((usData>>8)&0xff));
	send_data((char)(usData&0xff));

}
 /*********************************************************************************************************
** 函数名称: setCoordinate
** 功能描述: 写绘图坐标
** 输   入: x 起点所在列的位置
**           y 起点所在行的位置
** 输   出: 无
** 全局变量: 无
** 返    回:无
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void setCoordinate(unsigned short Xs, unsigned short Ys)
{
    send_command(COLUMN_ADDRESS_SET);			//XS,XE
	send_data(Xs);								//0~128
	send_data(0x7f);   
	send_command(ROW_ADDRESS_SET);				//YS,YE
	send_data(Ys);								//0~128
	send_data(Ys+n-1);
    send_command(MEMORY_WRITE); 
}
/*********************************************************************************************************
** 函数名称: writeOneHzChar
** 功能描述: 在指定的起始坐标处写一个汉字
** 输   入: pucMsk 指向汉字字模存放的起始地址
**           x0 起始坐标所在列的位置
**           y0 起始坐标所在行的位置
**           color 字符显示的颜色
** 输   出: 无
** 全局变量: 无
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned long writeOneHzChar(unsigned char  *pucMsk,
                               unsigned short x0,
                               unsigned short y0,
                               unsigned short color)
{
    unsigned long i,j;
    unsigned short mod[16];                                             /* 当前字模                     */
    unsigned short *pusMsk;                                             /* 当前字库地址                 */
    unsigned short y;   
    pusMsk = (unsigned short *)pucMsk;
    for(i=0; i<16; i++)                                                 /* 保存当前汉字点阵式字模       */
    {
        mod[i] = *pusMsk++;                                             /* 取得当前字模,半字对齐访问   */
        mod[i] = ((mod[i] & 0xff00) >> 8) | ((mod[i] & 0x00ff) << 8);   /* 字模交换高低字节(为了显示   */
                                                                        /* 需要)                       */
    }
    y = y0;
    for(i=0; i<16; i++) {                                               /* 16行                         */
        #ifdef __DISPLAY_BUFFER                                         /* 使用显存显示                 */
        for(j=0; j<16; j++) {                                           /* 16列                         */
            if((mod[i] << j)& 0x8000) {                                 /* 显示字模                     */
                DispBuf[128*(y0+i) + x0+j] = color;
            }
        }
        #else                                                           /* 直接显示                     */
        
        setCoordinate(x0, y);                                           /* 设置写数据地址指针           */
        send_command(MEMORY_WRITE); //data write command
		for(j=0; j<16; j++) {                                           /* 16列                         */
            if((mod[i] << j) & 0x8000) {                                /* 显示字模                     */
                writeData16(color);
            } else {
            	writeData16(WHITE);                                       /* 用读方式跳过写空白点的像素   */
            }
        }
        y++;
        #endif
    }
    return (16);                                                        /* 返回16位列宽                 */
}

/*********************************************************************************************************
** 函数名称: writeOneASCII
** 功能描述: 在指定的起始坐标处写一个ASCII码字符
** 输   入: pucMsk 指向ASCII码字符字模存放的起始地址
**           x0 起始坐标所在列的位置
**           y0 起始坐标所在行的位置
**           color 字符显示的颜色
** 输   出: 无
** 全局变量: 无
** 调用模块: setCoordinate()、__writeData16()、__readData16()
** 返    回:所写字符的列宽8
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned long writeOneASCII(unsigned char *pucMsk,
                              unsigned int x0,
                              unsigned int y0,
                              unsigned int color)
{
    unsigned int i,j;
    unsigned int y;
    unsigned char ucChar; 
    y = y0;
    for(i=0; i<16; i++) {                                               /* 16行                         */
        ucChar = *pucMsk++;
        #ifdef __DISPLAY_BUFFER                                         /* 使用显存显示                 */
        for(j=0; j<8; j++) {                                            /* 8列                          */
            if((ucChar << j)& 0x80) {                                   /* 显示字模                     */
                DispBuf[128*(y0+i) + x0+j] = color;
            }
        }
        #else                                                           /* 直接显示                     */
        
        setCoordinate(x0, y);                                           /* 设置写数据地址指针           */
        send_command(MEMORY_WRITE); //data write command
		for(j=0; j<8; j++) {                                            /* 8列                          */
            if((ucChar << j) & 0x80) {                                  /* 显示字模                     */
               	writeData16(color);
            } else {
				writeData16(WHITE); 
            }
        }
        y++;
        #endif
    }
    return (8);                                                         /* 返回16位列宽                 */
}

/*********************************************************************************************************
** 函数名称: writeString
** 功能描述: 在指定的坐标处开始显示字符串
** 输   入: pcStr 字符串存放首地址
**           x0 起始坐标所在列的位置
**           y0 起始坐标所在行的位置
**           color 字符串的显示颜色
** 输   出: 无
** 全局变量: GBHZ_16 自定义汉字库字模数表
**           ASCII   自定义的ASCII码字库字模数表
** 调用模块: findHzIndex()、__writeOneHzChar()、__writeOneASCII()
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void writeString(uint8_t *pcStr, unsigned short x0, unsigned short y0, unsigned short color)
{
    unsigned short usIndex;
    unsigned short usWidth = 0;
    FNT_GB16 *ptGb16 = 0;
    
    ptGb16 = (FNT_GB16 *)GBHZ_16;                                       /*                              */
    while(1)
    {
        if(*pcStr == 0) {
            break;                                                      /* 字符串结束                   */
        }
        
        x0 = x0 + (usWidth);                                            /* 调节字符串显示松紧度         */
        if(*pcStr > 0x80) {                                             /* 判断为汉字                   */
            if((x0 + 16) >= Gus_LCM_XMAX) {                             /* 检查剩余空间是否足够         */
                x0 = 0;
                y0 = y0 + 16;                                           /* 改变显示坐标                 */
                if(y0 >= Gus_LCM_YMAX) {                                /* 纵坐标超出                   */
                    y0 = 0;
                }
            }
            usIndex = findHzIndex(pcStr);
            usWidth = writeOneHzChar((unsigned char *)&(ptGb16[usIndex].Msk[0]), x0, y0, color);
                                                                        /* 显示字符                     */
            pcStr += 2;
        } else {                                                        /* 判断为非汉字                 */
            if (*pcStr == '\r') {                                       /* 换行                         */
                y0 = y0 + 16;                                           /* 改变显示坐标                 */
                if(y0 >= Gus_LCM_YMAX) {                                /* 纵坐标超出                   */
                    y0 = 0;
                }
                pcStr++;
                usWidth = 0;
                continue;
            } else if (*pcStr == '\n') {                                /* 对齐到起点                   */
                x0 = 0;
                pcStr++;
                usWidth = 0;
                continue;
            } else {
                if((x0 + 8) >= Gus_LCM_XMAX) {                          /* 检查剩余空间是否足够         */
                    x0 = 0;
                    y0 = y0 + 16;                                       /* 改变显示坐标                 */
                    if(y0 >= Gus_LCM_YMAX) {                            /* 纵坐标超出                   */
                        y0 = 0;
                    }
                }
                usWidth = writeOneASCII((unsigned char *)&ASCII[(*pcStr - 0x20)][0], x0, y0, color);                                                              /* ASCII码表21H的值对应区位码3区*/
                pcStr += 1;
            }
        }
    }
}

//画横线,定义起始X坐标,长度,高度,颜色和宽度提前定义
void Xline(unsigned char Xs,unsigned char Ys,unsigned char len,unsigned int color)
{   
/*   send_command(COLUMN_ADDRESS_SET);			//XS,XE
	send_data(Xs);								//0~128
	send_data(0x7f);   
	send_command(ROW_ADDRESS_SET);				//YS,YE
	send_data(Ys);								//0~128
	send_data(Ys+n-1);
    send_command(MEMORY_WRITE); 		  */
	setCoordinate(Xs,Ys);
	for (j=0;j<len;j++)
	{
	//	send_data(0x00);
	//	send_data(0x00);
		writeData16(color);
	}
}

//画横线,定义起始Y坐标,长度,高度,颜色和宽度提前定义
void Yline(unsigned char Xs,unsigned char Ys,unsigned char len,unsigned int color)
{   
//	setCoordinate(Xs,Ys);
	for (j=0;j<len;j++)
	{
	//	send_data(0x00);
	//	send_data(0x00);
		setCoordinate(Xs,Ys+j);
		writeData16(color);
	}
}

⌨️ 快捷键说明

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