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

📄 ra8803.c

📁 三元液晶测试程序
💻 C
字号:
//====================================================================================
//                                   捌祘Α籔Waveform籔Initial
//====================================================================================
#include <hnk51.h>
#include <lcd_command.h>
#include <testchip.h>

void lcd_cmdwrite (unsigned char cmdx , unsigned char cmdy)
{

	lcd_CMD=cmdx;
	lcd_CS=0;
	lcd_RD=1;
	lcd_RS=0;
	   
	lcd_WR=0;
	lcd_WR=1;
	   
	lcd_RS=1;
	lcd_CS=1;
	   
	lcd_CMD=cmdy;
	lcd_CS=0;
	lcd_RD=1;
	lcd_RS=0;
	   
	lcd_WR=0;
	lcd_WR=1;
	    
	lcd_RS=1;
	lcd_CS=1;
}

void lcd_datawrite(unsigned char datax)
{

    lcd_DATA=datax;
	lcd_CS=0;
	lcd_RD=1;
	lcd_RS=1;
	
	lcd_WR=0;
	lcd_WR=1;
	
	lcd_RS=0;
	lcd_CS=1;
}

unsigned lcd_cmdread(unsigned char cmdx)
{

unsigned char address_cmd;

	lcd_CMD=cmdx;
	lcd_CS=0;
	lcd_RD=1;
	lcd_RS=0;
	
	lcd_WR=0;
	lcd_WR=1;
		
	lcd_RS=1;
	lcd_CS=1;
	
	lcd_DATA=0xff;
	lcd_CS=0;
	lcd_WR=1;
	lcd_RS=0;
		
	lcd_RD=0;
	address_cmd=lcd_DATA;
	lcd_RD=1;
	
	lcd_RS=1;
	lcd_CS=1;
	return(address_cmd);
}

unsigned lcd_dataread(void)
{

unsigned char address_data;
	lcd_DATA=0xff;
	lcd_CS=0;
	lcd_WR=1;
	lcd_RS=1;
	
	lcd_RD=0;
	address_data=lcd_DATA;
	lcd_RD=1;
	
	lcd_RS=0;
	lcd_CS=1;
	return(address_data);
}

void lcd_Initial(void)
{
	lcd_cmdwrite(0x00,0xcd);   //WLCR  
	lcd_cmdwrite(0x01,0x02);   //MISC   
	lcd_cmdwrite(0x02,0x10);   //APSR   
	lcd_cmdwrite(0x03,0x80);   //ADSR
	lcd_cmdwrite(0x10,0x6b);   //WCCR  
	

	lcd_cmdwrite(0x12,0xb3);   //MAMR    
	
	lcd_cmdwrite(0x20,0x27);   //AWRR   
	lcd_cmdwrite(0x30,0xef);   //AWBR   
	lcd_cmdwrite(0x40,0x00);   //AWLR   
	lcd_cmdwrite(0x50,0x00);   //AWTR   
	
	lcd_cmdwrite(0x21,0x27);   //DWRR   
	lcd_cmdwrite(0x31,0xef);   //DWBR   
	lcd_cmdwrite(0x41,0x00);   //DWLR
	lcd_cmdwrite(0x51,0x00);   //DWTR
	
	lcd_cmdwrite(0x60,0x00);   //CPXR
	lcd_cmdwrite(0x61,0x00);   //BGSG
	lcd_cmdwrite(0x70,0x00);   //CPYR
	lcd_cmdwrite(0x71,0x00);   //BGCM
	lcd_cmdwrite(0x72,0xef);   //EDCM        
	
//	lcd_cmdwrite(0x80,0x33);   //BTMR
//	lcd_cmdwrite(0x81,0x00);   //FRCA
	
//	lcd_cmdwrite(0x91,0x00);   //FRCB
	lcd_cmdwrite(0x90,0x09);   //SCCR   
	
//	lcd_cmdwrite(0xa0,0x00);   //INTR   
//	lcd_cmdwrite(0xa1,0x00);   //KSCR
//	lcd_cmdwrite(0xa2,0x00);   //KSDR
//	lcd_cmdwrite(0xa3,0x00);   //KSER
	
//	lcd_cmdwrite(0xb0,0x1d);   //INTX
//	lcd_cmdwrite(0xb1,0x3f);   //INTY

	lcd_cmdwrite(0xc0,0xc8);   //TPCR   
	lcd_cmdwrite(0xc1,0x3a);   //TPSR   
	lcd_cmdwrite(0xc8,0x80);   //TPXR
	lcd_cmdwrite(0xc9,0x80);   //TPYR
	lcd_cmdwrite(0xca,0x00);   //TPZR

	lcd_cmdwrite(0xd0,0x0f);   //LCCR   
	
	lcd_cmdwrite(0xe0,0x00);   //PNTR
	
	lcd_cmdwrite(0xf0,0xa0);   //FNCR   
	lcd_cmdwrite(0xf1,0x0f);   //FVHT   
}

void lcd_reset(void)
{

     lcd_RS=0;
     lcd_WR=1;
     lcd_RD=1;
     lcd_CS=1;

     lcd_RES = 0;
     delay1ms(50);
     lcd_RES = 1;
     delay1ms(300);
}

void delay1ms(unsigned int count) 
{
    int i,j;
    for(i=0;i<=count;i++)
      for(j=0;j<=583;j++);
}

void lcd_on(void)
{
	
    unsigned char datax;
    datax =lcd_cmdread(0x00);
    datax |= 0x04;                
    lcd_cmdwrite(0x00,datax);

}

void lcd_off(void)
{
   unsigned char datax;
   datax =lcd_cmdread(0x00);
   datax &=0xfb;
   lcd_cmdwrite(0x00,datax);	
}


void lcd_clear(void)
{
	unsigned char reg;
	lcd_cmdwrite(0xe0,0x00);
	reg = lcd_cmdread(0xf0);
	reg |=0x08;
	lcd_cmdwrite(0xf0,reg);

	 
}

void lcd_cursorxy(unsigned int x,unsigned int y)
{
	lcd_cmdwrite(0x60,x);
	lcd_cmdwrite(0x70,y);
}

void lcd_showbig(unsigned char *text,unsigned int x)
{ 
    while(*text != '\0')          
	{
    	lcd_datawrite(*text);
    	++text; 

	    delay1ms(x);
    }
}

//==============================================================================
//                              Touch Panel 
//==============================================================================

unsigned char Touch_check(void)
{
  unsigned char tamp,tamp1;
    
    tamp=lcd_cmdread(0xc0);
    tamp&=0xfe;   
    tamp&=0xfd;   
    tamp&=0xfb;   
    tamp|=0x08;   
	lcd_cmdwrite(0xc0,tamp);				
	delay1ms(2);

	tamp1=lcd_cmdread(0xc1);

    tamp1=tamp1&0x40;
	if(tamp1==0x40)
		return 1;
	else
		return 0;  
}

unsigned char get_TouchyH(void)
{
unsigned char y_get,tamp;

    tamp=lcd_cmdread(0xc0);
	tamp&=0xfb;   
	lcd_cmdwrite(0xc0,tamp);
    tamp&=0xf7;   
    lcd_cmdwrite(0xc0,tamp);
    tamp|=0x01;   
	lcd_cmdwrite(0xc0,tamp);
    tamp|=0x02;   
	lcd_cmdwrite(0xc0,tamp);
	delay1ms(2);

	y_get = lcd_cmdread(0xc9); 
  
	return y_get;             

 

}

unsigned char get_TouchyL(void)
{
unsigned char y_get,tamp;

    tamp=lcd_cmdread(0xc0);
	tamp&=0xfb;  
	lcd_cmdwrite(0xc0,tamp);
    tamp&=0xf7; 
    lcd_cmdwrite(0xc0,tamp);
    tamp|=0x01;   
	lcd_cmdwrite(0xc0,tamp);
    tamp|=0x02;   
	lcd_cmdwrite(0xc0,tamp);
	delay1ms(2);

	y_get =  (lcd_cmdread(0xca) ) & 0x0c;

	return y_get;              
}


unsigned char get_TouchxH(void)
{
unsigned char x_get,tamp;
  
    tamp=lcd_cmdread(0xc0);
	tamp&=0xfe;   
	lcd_cmdwrite(0xc0,tamp);
    tamp&=0xfd;   
    lcd_cmdwrite(0xc0,tamp);
    tamp|=0x04;  
	lcd_cmdwrite(0xc0,tamp);
    tamp|=0x08;  
	lcd_cmdwrite(0xc0,tamp);
	delay1ms(2);


	x_get = lcd_cmdread(0xc8);

	return x_get;
}
unsigned char get_TouchxL(void)
{
unsigned char x_get,tamp;
  
    tamp=lcd_cmdread(0xc0);
	tamp&=0xfe;   
	lcd_cmdwrite(0xc0,tamp);
    tamp&=0xfd;   
    lcd_cmdwrite(0xc0,tamp);
    tamp|=0x04;   
	lcd_cmdwrite(0xc0,tamp);
    tamp|=0x08;   
	lcd_cmdwrite(0xc0,tamp);
	delay1ms(2);



	x_get = (lcd_cmdread(0xca)>>4) & 0x0c;

	return x_get;
}

void show_data(unsigned char h,unsigned char L)
{
	unsigned char bitHH,bitH,bitL,test;


    lcd_datawrite(hex(h));         
	
	bitH=L;
	lcd_datawrite(hex(L>>4)); 
	L=bitH;
    lcd_datawrite(hex(L));          

}

unsigned char hex(unsigned char r)
{
	r &= 0x0f;

	if(r < 10)
	   r += 0x30;                 
	else
	   r += 0x37;                   
	return r;
}

unsigned char Touch(unsigned char Tx,unsigned char Ty)
{
	unsigned char temp;
	

	   if((Tx >= 0x00) && (Tx < 0x50))   
         temp = 1;             
	   else if((Tx >= 0x51) && (Tx < 0x80))
    	 temp = 2;             
	   else if((Tx >= 0x81) && (Tx < 0xc0))
         temp = 3;             
	   else if((Tx >= 0xc1) && (Tx < 0xff))
         temp = 4; 

	 return temp;		
}



⌨️ 快捷键说明

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