Ejemplo n.º 1
0
/*******************************************************************************
* Function Name  : Chk_DMA_Busy
* Description    : Check whether the DMA is busy
* Input          : None
* Output         : None
* Return         : None
* Attention		   : None
*******************************************************************************/
void Chk_DMA_Busy(void)
{
	uint8_t temp;
	do
	{
	LCD_WriteCmd(0xbf);
	temp = LCD_ReadData();
	}while((temp&0x01)==0x01);
}
Ejemplo n.º 2
0
//******************************************************************************
//*函数名称:void LCD_Point(unsigned char x,unsigned char y,unsigned char color)*
//*函数功能:使用绘图的方法,在(x,y)处画一个16*16点阵的图案,也可以是字符		   *
//*形式参数:unsigned char x,unsigned char y,unsigned char color                *
//*			x取值范围:0~127													   *
//*			y取值范围:0~63 (针对CM12864-12型液晶)						       *
//*形参说明:坐标水平位置,坐标垂直位置           							   *
//*液晶屏坐标说明:															   *
//*      ________________128个像素______________________              *
//*      |(0,0)                                    (7,0)|             *
//*      |                                              |             *
//*   64 |                                              |             *
//*   个 |(0,31)                                  (7,31)|             *
//*   像 |(8,0)                                   (15,0)|             *
//*   素 |                                              |             *
//*      |                                              |             *
//*      |(8,31)                                 (15,31)|             *
//*      |______________________________________________|             *
//*                                                                   *
//*返回参数:无                                                              *
//*使用说明:此函数适用于CM12864-12型液晶			*
//******************************************************************************
void LCD_Point(unsigned char x,unsigned char y,unsigned char color)
{
	unsigned char i,AddrX,AddrY;	//寄存器地址
	unsigned char BitTemp;		//该点在16bit的位置
	unsigned char DataH,DataL;

	AddrX = x>>4;				// x/16
	AddrY = y&0x3F;				// y%64
	if(y > 31)
	{
		AddrX += 8;
		AddrY -= 32;
	}
	BitTemp = x&0x0F;			// x%16

	
 	LCD_GraphModeSet(0x00);		//先关闭图形显示功能
    //LCD_Write(LCD_COMMAND,LCD_EXTEND_FUNCTION);
	
	for(i=0;i<4;i++)
	{
	LCD_GDRAM_AddressSet(0x80+AddrY);
	LCD_GDRAM_AddressSet(0x80+AddrX);
	//LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION);			//基本指令集
	DataH = LCD_ReadData();
	DataH = LCD_ReadData();
	DataL = LCD_ReadData();
	//DataH = LCD_ReadData();
	//DataL = LCD_ReadData();
	}

	if(color == LCD_COLOR_BLACK)
	{
		if(BitTemp > 7)
		{
			DataL |= (0x80>>(BitTemp-8));
		}
		else
		{
Ejemplo n.º 3
0
//*********************************************************************************
//*函数名称:void LCD_DisplayStrings(unsigned char x,unsigned char y,unsigned char code *p)	  *
//*函数功能:在(文本区)ucAdd指定的位置显示一串ASCII                                *
//*形式参数:unsigned char x,unsigned char y,const char *p						  *
//*形参说明:指定的位置,要显示的字符串											  *
//*地址必须是: x<16, y<4			                       						  *
//*返回参数:无																	  *
//*使用说明:使用之前要初始化液晶												  *
//*********************************************************************************
void LCD_DisplayStrings(unsigned char x,unsigned char y,const char *p)
{
	unsigned char length,addr;
	unsigned char AddrEO;	//x地址是奇偶
	unsigned char Data1;

	y &= 0x03;	//y < 4
	x &= 0x0F;	//x < 16

	switch( y )
	{
		case 0:
			addr = 0x80;
		break;

		case 1:
			addr = 0x90;
		break;

		case 2:
			addr = 0x88;
		break;

		case 3:
			addr = 0x98;
		break;
	}

	addr += x/2;
	AddrEO = x&0x01;

	length = strlen(p);

	LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION);  			//基本指令动作   
	LCD_DDRAM_AddressSet(addr);

	if(AddrEO == 0x01)
		{
		Data1 = LCD_ReadData();
		LCD_DDRAM_AddressSet(addr);
		LCD_Write(LCD_DATA, Data1);
		}

	for( ;  length ; length -- )
		LCD_Write(LCD_DATA, *(p++));
}
Ejemplo n.º 4
0
uint16_t LCD_ReadReg(uint16_t _reg) {
	LCD_WriteIndex(_reg);
	uint16_t LCD_RAM = LCD_ReadData();
	return LCD_RAM;
}