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

📄 cgm12864b.c

📁 主要实现在C8051F020的平台上完成在12864液晶OCMG4C8上画正弦函数特性曲线。
💻 C
📖 第 1 页 / 共 3 页
字号:
{
   int i;                              // delay counter
   OSCXCN = 0x67;                      // start external oscillator with
                                       // 18.432MHz crystal
   for (i=0; i < 256; i++) ;           // Wait for osc. to start up
   while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
   OSCICN = 0x88;                      // select external oscillator as SYSCLK
 }        */                              // source and enable missing clock
                                       // detector
/*displaybmp(uchar * x)
{
	uchar i=0;
	while(x[i]!='\0')
	{
		LCD_WriteData(x[i]);
		i++;
	 }
}	   */
//-------------------------------------------------------------------------
//函数名称:      PORT_Init ()
//函数功能:      端口初始化;使能交叉开关
//入口参数:      无
//出口参数:      无
//全局变量引用:  无
//调用模块:      无
//----------------------------------------------------------------------

/*void PORT_Init (void)
{
   XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
   P74OUT = 0XFf;
   P2MDOUT = 0xff;
} */
/*void WriteCGRAM(uchar * p,uchar CgramAdress)		//造字
{
	uchar i;
	LCD_WriteCommand(CgramAdress);
	for(i=0;i<16;i++)
	{
		LCD_WriteCommand(CgramAdress+i);
		LCD_WriteData(p[i*2]);
		LCD_WriteData(p[i*2+1]);
		delay(50);
	}
}
void ReadCGRAM(DdramAdress,CgramCode)
{
	LCD_WriteCommand(DdramAdress);
	LCD_WriteData(0x00);
	LCD_WriteData(CgramCode);
}	  */
void SetDraw()							 //绘图设置
{
	LCD_WriteCommand(0x01);
	delay(100);
	LCD_WriteCommand(0x34);			//8位数据接口,扩充指令集
	delay(100);
}

//---------------------------------------------------------------------------
// 主程序
//----------------------------------------------------------------------------

void Draw_Pic(uchar x, uchar y, const uchar *Draw) 	   //绘图函数
{ 
	uchar i, j, temp_x, temp_y;   
	temp_x = x;       
	temp_y = y;      
	temp_x |= 0x80;     
	temp_y |= 0x80;  
       
	for(i=0;i<32;i++ )    //上半屏32行 
	{ 
 		LCD_WriteCommand(temp_y++);  //设置绘图区的Y地址坐标0 
 		LCD_WriteCommand(temp_x);    //设置绘图区的X地址坐标0 
 		for(j=0;j<16;j++)    
  		{ 
    		LCD_WriteData(*Draw++); 
  		}
  	} 

   	temp_x = 0x88;      
 	temp_y = 0x80;      
 	for(;i<64;i++ ) 
 	{ 
 		 LCD_WriteCommand(temp_y++);  //设置绘图区的Y地址坐标 
  		 LCD_WriteCommand(temp_x);   //设置绘图区的X地址坐标 
  		for(j=0;j<16;j++) 
  		{ 
    		LCD_WriteData(*Draw++);  
  		} 
 	} 
}
void Write0(uchar x, uchar y)					 //绘图区清零
{ 
 	uchar i, j, temp_x, temp_y;   
	temp_x = x;       
	temp_y = y;      
	temp_x |= 0x80;     
	temp_y |= 0x80;     
	for(i=0;i<32;i++ )    //上半屏32行 
	{ 
 		LCD_WriteCommand(temp_y++);  //设置绘图区的Y地址坐标0 
 		LCD_WriteCommand(temp_x);  //设置绘图区的X地址坐标0 
 		for(j=0;j<16;j++)    
  		{ 
    		LCD_WriteData(0x00);        //写00清除绘图区
  		}
  	} 
   	temp_x = 0x88;      
 	temp_y = 0x80;      
 	for(;i<64;i++ ) 
 	{ 
 		 LCD_WriteCommand(temp_y++);  //设置绘图区的Y地址坐标 
  		 LCD_WriteCommand(temp_x);   //设置绘图区的X地址坐标 
  		for(j=0;j<16;j++) 
  		{ 
    		LCD_WriteData(0x00);  
  		} 
 	}   
}	   
void draw_cicle(uchar *p,uchar k)		  //绘曲线
{
	uchar n,j,Y,X;
	uint a=0x8000;

	for(n=0;n<256;n++)
	{
		Y=0x80+0x1f-p[k*n+1]/8;
		if((n+1)%16==0)
			j++;
		if(j>=8)
			j=0;
		X=0x80|j;
		LCD_WriteCommand(Y);
		LCD_WriteCommand(X);
		delay(10);
		LCD_WriteData2(a);
		a>>=1;
		if(a==0)
			a=0x8000;
		LCD_WriteCommand(0x36);
		if(k*n>=255)
			break;
	}
}


void main (void) 
{
//	uchar i=1,key;
//	WDTCN = 0xde;
//	WDTCN = 0xad;           //关看门狗
//	SYSCLK_Init ();         //初始化时钟
//	PORT_Init ();           //初始化IO口
	SysInit();
	EA=1;					//开中断
 	InitLCD();              //清屏
	delay(100);             //延时1S
	SetDraw();
//	LCD_WriteCommand(0x80);
//	LCD_WriteCommand(0x80);
	delay(100);
	 Write0(0,0);
/*	 while(1)
	 {
	 	key=KeyScan();
		if(key==1)
		{
			i++;
			Write0(0,0);
		}
		draw_cicle(sin_table,i);
	 } 	*/
	 //LCD_WriteCommand(0x36);
	Draw_Pic(0,0,*gImage_123);	
	LCD_WriteCommand(0x36);
/*	LCD_WriteCommand(0x30);
	for(i=0;i<15;i++)
	 LCD_WriteCommand(0x06);
	 delay(10);	  未通 */
//	while(1);
//	{
	/*	LCD_WriteCommand(0x80);
		LCD_WriteData(0xb8);
		LCD_WriteData(0xdf);
		LCD_WriteCommand(0x90);
		LCD_WriteData(0xba);
		LCD_WriteData(0xba);
		delay(10);
		LCD_WriteCommand(0x88);
		LCD_WriteData(0xb2);
		LCD_WriteData(0xc5);
		delay(10);
		LCD_WriteCommand(0x98);
		LCD_WriteData(0xb2);
		LCD_WriteData(0xc5);*/
//		LCD_WriteCommand(0x34);
//		LCD_WriteCommand(0x30);
	/*	for(i=0;i<16;i++)
		LCD_WriteCommand(0x07);
		LCD_WriteCommand(0x34);
		LCD_WriteCommand(0x36);	*/
//		LCD_WriteCommand(0x01);	
//		Char_Set_XY(0,0, "集成运放测试仪示波器输出信号该程");
//		Char_Set_XY(0,1, "高汉才先生,你好吗!");
//		Char_Set_XY(0,3, "皮肤之魔兽主题");	 
/*		for(i=0;;i++)
		{
			LCD_WriteCommand(0x30);
			delay(100);
			LCD_WriteCommand(0x07);
			delay(100);
		}*/
/*		LCD_WriteCommand(0x34);
		LCD_WriteCommand(0x05);
		LCD_WriteCommand(0x30);
		LCD_WriteCommand(0x01);
		LCD_WriteCommand(0x34);
		LCD_WriteCommand(0x36);	*/
		/*Char_Set_XY(1,1, "欢迎您使用!");
		Char_Set_XY(0,2, "制作人:");
		Char_Set_XY(4,3, "高汉才");	*/  
   /*     delay(50);	   
		WriteCGRAM(gao,0x40);
		WriteCGRAM(gao,0x50);
		WriteCGRAM(gao,0x60);
		WriteCGRAM(gao,0x70);
		ReadCGRAM(0x80,0x00);
		ReadCGRAM(0x81,0x02);
		ReadCGRAM(0x82,0x04);
		ReadCGRAM(0x83,0x06);  	 */
	/*	LCD_WriteCommand(0x34|0x02);
		LCD_WriteCommand(0x36);
	//	LCD_WriteCommand(0x30);
		LCD_WriteCommand(0x01);
		
		for(i=0;i<16;i++)
		{
			LCD_WriteCommand(0x80+i);
			LCD_WriteCommand(0x80);
			LCD_WriteData(gao[i]);	
		}	   */
	//	displaybmp(screen1);
//	}
}

⌨️ 快捷键说明

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