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

📄 nt7538_6800.c

📁 nt7538 6800 mpu test
💻 C
📖 第 1 页 / 共 2 页
字号:
//-----------------------------------------------------------------------------
void wr_cmd(uchar wrcmd)
{
	wait();
	RS =0;	//select instruction
	RW =0;	//to write
	LCD_DATA=wrcmd;
	E  =1;
	delay_us(1);
	E  =0;
	delay_us(1);
}
//-----------------------------------------------------------------------------
void wr_data(uchar wrdata)
{
	wait();
	RS =1;	//select data
	RW =0;	//to write
	LCD_DATA=wrdata;
	E  =1;
	delay_us(1);
	E  =0;
	delay_us(1);
}
//-----------------------------------------------------------------------------
void init_lcd()
{
	constr=v0;		//
	autoid=1;		//
	bmp_id=0;		//
	dispid=1;		//

	wr_cmd(0xa4);	//EON=0,normal display
	wr_cmd(0xa6);	//REV=0,normal display
 	wr_cmd(0xa1);	//segment drive is normal ADC=0;0xa1 is Reverse
        wr_cmd(0x40);	//Initial display line for COM0
	wr_cmd(0xc0);	//Com drive is normal;0xc8 is Reverse
        delay_us(1);
	wr_cmd(Rab);	//(1+R2/R1)
        delay_us(1);
	wr_cmd(0x81);   //contrast control
	wr_cmd(constr);	//Set step=8 (first set step=64)
        delay_us(1);
	wr_cmd(bias);   //set bias
        wr_cmd(0x2c);
        wr_cmd(0x2e);
        wr_cmd(0x2f);   //set power control
        delay_us(1);
        //wr_cmd(0xa4);
	wr_cmd(0xaf);		//Turn Display On

        delay_ms(1);
}
//-----------------------------------------------------------------------------
void disp_panxl(uchar dat1,dat2)
{
	uchar ii,jj;
  wr_cmd(0x40);
	for(ii=0;ii<9;ii++)
	{
		wr_cmd(0xb0+ii);	//select page
		wr_cmd(0x10);		  //set MSB
		wr_cmd(0x00);		  //set LSB
		for(jj=0;jj<66;jj++)
			{
				wr_data(dat1);
				wr_data(dat2);
      }
	}
}
//-----------------------------------------------------------------------------
void disp_bmp(uchar *dat)
{
	uchar ii,jj;
        wr_cmd(0x40);
	for(ii=0;ii<8;ii++)
	{
		wr_cmd(0xb0+ii);	//select page
		wr_cmd(0x10);		//set MSB
		wr_cmd(0x00);		//set LSB
		for(jj=0;jj<132;jj++)
		{
			wr_data(*(dat++));
		}
	}
}
//-----------------------------------------------------------------------------
/*void disp_frame()
{
	uchar ii,jj;
        wr_cmd(0x40);
	wr_cmd(0xb0);	//select page
	wr_cmd(0x10);		//set MSB
	wr_cmd(0x00);		//set LSB
		wr_data(0xff);
		for(jj=0;jj<126;jj++)
    	        wr_data(0x01);
		wr_data(0xff);
  for(ii=0;ii<6;ii++)
	 {
	   wr_cmd(0xb1+ii);	//select page
            wr_cmd(0x10);		//set MSB
	    wr_cmd(0x00);		//set LSB
    		wr_data(0xff);
		    for(jj=0;jj<126;jj++)
		     wr_data(0x00);
		     wr_data(0xff);
   }
  wr_cmd(0xb7);	//select page
	wr_cmd(0x10);		//set MSB
	wr_cmd(0x00);		//set LSB
		wr_data(0xff);
		for(jj=0;jj<126;jj++)
		 wr_data(0x80);
		wr_data(0xff);
}*/
//-----------------------------------------------------------------------------
void disp_qq()
{
	uint ii;
	uint jj,kk;
        wr_cmd(0x40);
	for(ii=0;ii<8;ii++)
	{
		wr_cmd(0xb0+ii);	//select page
		wr_cmd(0x10);		//set MSB
		wr_cmd(0x00);		//set LSB
		for(jj=0;jj<17;jj++)
			for(kk=0;kk<8;kk++)
				wr_data(q[kk]);
	}
}
//-----------------------------------------------------------------------------
void show_constr()
{
	uchar nn;
	uchar tmph,tmpl;

	tmph=constr/10;
	tmpl=constr%10;

	//显示对比度
	wr_cmd(0xb0);		//select 13 page
	wr_cmd(0x17);		//set MSB
	wr_cmd(0x02);		//set LSB
	for(nn=0;nn<6;nn++)	//write *10
		wr_data(num[tmph*6+nn]);
	for(nn=0;nn<6;nn++) //write *1
		wr_data(num[tmpl*6+nn]);
}
//-----------------------------------------------------------------------------
void do_key()
{
	uchar tkeyin;

	KEY_IN=0xff;
	delay_ms(5);
	tkeyin=KEY_IN;

	//判断自动刷新标志
	if((tkeyin&AUTO)==0x00)	autoid=1;
	else autoid=0;

	//画面往下翻bmp_id++
	if((tkeyin&ADDU)==0x00)
	{
		dispid=1;		//刷新标志置"1"
		bmp_id++;
		if(bmp_id>=BmpMax)
			bmp_id=0;
	}

	//画面往上翻bmp_id--
	if((tkeyin&SUBD)==0x00)
	{
		dispid=1;		//刷新标志置"1"
		if(bmp_id>0)
		{
			bmp_id--;
		}
		else bmp_id=BmpMax-1;
	}

	//对比度参数constr++
	if((tkeyin&ADUP)==0x00)
	{
		if(constr<63) constr++;
		wr_cmd(0x81);		//SET Register
    	wr_cmd(constr);
		delay_us(2);
		show_constr();
	}
	//对比度参数constr--
	if((tkeyin&ADDN)==0x00)
	{
		if(constr>0) constr--;
		wr_cmd(0x81);		//SET Register
    	wr_cmd(constr);
		delay_us(2);
		show_constr();
	}
	delay_ms(50);
}
//-----------------------------------------------------------------------------
void main (void)
{
        init_cpu();
        delay_us(5);
	init_lcd();
	delay_us(5);
	disp_panxl(0x00,0x00);
	delay_us(100);

	while(1)
	{
		do_key();
		if(dispid==1)
		{
			switch(bmp_id)
			{
				case 0:	 	disp_panxl(0xff,0xff); break;
                                case 1:		disp_panxl(0x00,0x00); break;
				case 2:		disp_panxl(0x55,0xaa); break;
				case 3:		disp_panxl(0xaa,0x55); break;
				case 4:		disp_bmp(huiz);  break;
				case 5:	        disp_qq();             break;
				case 6:	        disp_bmp(hanz);          break;
				default:		break;
			}
			dispid=0;			//清除刷新标志
		}
		//For auto display switch
		if(autoid==1)
		{
			dispid=1;
			bmp_id++;
			if(bmp_id>=BmpMax) bmp_id=0;
			delay_ms(dl0);	//自动显示时延时dl0
		}
	}
}
//-----------------------------------------------------------------------------

⌨️ 快捷键说明

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