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

📄 m320240.c

📁 液晶显示
💻 C
字号:
/********************************************************
        this is demo for test  lcd 320240
        writed by MBEST COMPANY
        2005.8.19   TEST OK
        mcu  :   AT89C52          
*********************************************************/

#include <reg52.h>
/*for XBYTE define*/
#include <absacc.h>    

#define  uchar  unsigned char
#define  uint   unsigned int
#define  ulong  unsigned long

/********************************************************
         define command address
*********************************************************/
#define  command_port    XBYTE[0x8100]
#define  data_port       XBYTE[0x8000]
sbit p_cs=P3^2;
sbit p_sel=P3^1;
sbit p_st=P3^0;

#define  system_set      0x40
#define  sleep_in        0x53
#define  disp_on         0x59
#define  disp_off        0x58
#define  scroll          0x44
#define  csrrform         0x5d
#define  cgram_adr       0x5c
#define  csrdir_r        0x4c
#define  csrdir_l        0x4d
#define  csrdir_u        0x4e
#define  csrdir_d        0x4f
#define  hdot_scr        0x5a
#define  ovlay           0x5b
#define  csrw            0x46
#define  csrr            0x47
#define  mwrite          0x42
#define  mread           0x43
void    show320 ( uint code *dd );

/*********************************************************
            some test word lib
**********************************************************/

uchar code HUAN[32]={
0x00,0x80,0x00,0x80,0xFC,0x80,0x05,0xFE,0x85,0x04,0x4A,0x48,0x28,0x40,0x10,0x40,
0x18,0x40,0x18,0x60,0x24,0xA0,0x24,0x90,0x41,0x18,0x86,0x0E,0x38,0x04,0x00,0x00
};/*--  文字:  欢  --*/

uchar code YING[32]={
0x40,0x00,0x21,0x80,0x36,0x7C,0x24,0x44,0x04,0x44,0x04,0x44,0xE4,0x44,0x24,0x44,
0x25,0x44,0x26,0x54,0x24,0x48,0x20,0x40,0x20,0x40,0x50,0x00,0x8F,0xFE,0x00,0x00

};/*--  文字:  迎  --*/

uchar code LE[128]={/*--  文字:  乐  --*/
/*--  宋体22;  此字体下对应的点阵为:宽x高=29x29   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x02,0x01,0xFF,0x00,
0x03,0xFF,0xFC,0x00,0x03,0xF0,0x00,0x00,0x03,0x03,0x00,0x00,0x03,0x03,0xC0,0x00,
0x07,0x03,0x80,0x00,0x07,0x03,0x80,0x00,0x07,0x03,0x80,0x00,0x07,0x03,0x80,0x80,
0x06,0x03,0x81,0xC0,0x0F,0xFF,0xFF,0xE0,0x06,0x03,0x80,0x00,0x00,0x03,0x80,0x00,
0x00,0x63,0x90,0x00,0x00,0xF3,0x9C,0x00,0x00,0xE3,0x8E,0x00,0x01,0xC3,0x87,0x00,
0x03,0x83,0x83,0x80,0x07,0x03,0x83,0xC0,0x0E,0x03,0x81,0xC0,0x18,0x03,0x81,0xC0,
0x30,0x13,0x80,0x80,0x20,0x1F,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x02,0x00,0x00,
0x00,0x00,0x00,0x00

};


void write_com ( uchar a ) 
{
	command_port = a ;
	return ;   
}

void write_data ( uchar a )
{
	data_port = a ;
	return;
}



//-------------------------------------------------------------------
//	clear display region
//
void clear_disp ()
{

        uint  i ;

	//------------------1 CSRDIR---------------------//
		write_com ( csrdir_r );
	
	//------------------2 CSRw------------------------//
		write_com (  csrw );
		write_data ( 0x00 );
		write_data ( 0x00 );
	        
	//------------------3 MwRITE-----------------------//
		write_com ( mwrite );

		for(i= 0; i< 9600 ; i++)       //320/8*240 = 9600 byte
		{
			write_data ( 0x00);
               	                
		}
		 	
}


//-------------------------------------------------------------------
//	initialate the display
void Init_disp()
{
       
 	 int i;

        //--------------0 reset display controllor-----//
	  p_st = 0;
        for(i = 0 ; i < 250 ; i ++)
        p_st = 1;


       	//--------------1  SYSTEM_SET------------------//
	write_com ( system_set );
	write_data ( 0x30 );
	write_data ( 0x87 );
	write_data ( 0x07 );
	write_data ( 0x27 );//0x28 );
	write_data ( 0x30 );//0x35 );
	write_data ( 0xf0 );
	write_data ( 0x28 );
	write_data ( 0x00 );
       
       	
	//--------------2  SCROLL---------------------//
	write_com ( scroll );
	write_data ( 0x00 );
	write_data ( 0x00 );
	write_data ( 0xf0);
	write_data ( 0x00 );
	write_data ( 0x40 );
	write_data ( 0xf0 );

	write_data ( 0x00 );
	write_data ( 0x00 );
	write_data ( 0x00 );
	write_data ( 0x00 );
        

       
	//--------------3 HDOT_SCR--------------------//
	write_com ( hdot_scr );
	write_data ( 0x00 );

	//--------------4 OVLAY------------------------//
	write_com ( ovlay );
	write_data ( 0x1c );
 
	//-------------6 DISP_ON-------------------------//
	write_com ( disp_on );
	write_data ( 0x04 );
      //--------------5invoking clear_disp()-----------//
	clear_disp ( );
}

//------------------------------------------------------------
//           show 16x16 word
//
void show1616 (uint  baseaddr, uchar code * string)
{
	//uint baseaddr ;
	uchar addrl;
	uchar addrh;
	uchar	counter;

for ( counter = 0; counter <16; counter++ )
	{
		write_com ( csrw );
		addrl = (baseaddr+counter*0x28) & 0x00ff;         // 0x28 bytes/line
		addrh = ((baseaddr+counter*0x28)& 0xff00)>>8;
		write_data (	addrl );
		write_data ( 	addrh );
		
		write_com ( mwrite );
	        write_data ( *(string+2*counter));
		write_data ( *(string+2*counter + 1)  );
	       		
	}
 

	return;			
		
}

//------------------------------------------------------------
//           show 32x32 word
//
void show3232 (uint  baseaddr, uchar code * string)
{
	
	uchar addrl;
	uchar addrh;
	uchar	counter;

	//baseaddr = 0x0064;

	for ( counter = 0; counter <128; counter++ )
	{
		write_com ( csrw );
		addrl = (baseaddr+counter*0x0028) & 0x0fff;         // 0x28 bytes/line
		addrh = ((baseaddr+counter*0x0028)& 0xfff0)>>8;
		write_data (addrl );
		write_data (addrh );
		
		write_com ( mwrite );
	        write_data ( *(string+4*counter));
		  write_data ( *(string+2*counter+1 ) );
	       		
	}
 
	return;			
		
}

void show320 ( uint code * dd)
{
	//uint baseaddr ;
	//uint addrl;
	//uint addrh;
	uint	counter;
	
		write_com ( csrdir_r );
		write_com ( csrw );
		write_data (0x00 );
		write_data (0x00 );
            write_com ( mwrite );

	for ( counter = 0; counter <9600; counter++ )
	{
		
		
	        write_data ( *dd);
                   dd++;
	}
      return;
}
void   Delay5()
{
	uchar i = 15;
	uint j;
	while(i--)
	{
		j=37269;
		while(j--);
             ;
	};

return;
}


void main ( void )
{
     int i ,  j ;
     uint addr ; 
     p_cs = 0 ;
     p_sel  =1 ;   /* select 80 series cpu*/
     
     Init_disp();
     show3232( 5+3,LE );
     Delay5();
     Delay5();
     clear_disp ();
     show1616( 15 , BAI );
     show1616 ( 15 + 4 , SI ); 
     show1616 ( 15 + 8 , TE );
     

     for( j = 60 ; j  <  240 ; )
    {
     	addr = 0x00 + j*0x20;
     	for ( i = 0 ;  i < 40  ; )
     	{
        	show1616(addr+i*2 ,  HUAN);
        	show1616(  addr +(i+1)*2 ,  YING);
        	i+=2;
     	}
       j += 32 ;
    }
     
     
     while(1)
      {
          for(i = 0 ; i < 250 ; i ++)
           for( j = 0 ; j < 750 ; j ++ )
           ;
       }

      return;
}

⌨️ 快捷键说明

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