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

📄 070.txt

📁 串口st7905的控制
💻 TXT
📖 第 1 页 / 共 2 页
字号:

#pragma db code
#include<reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int 

/////////////////////////////////////////////
//根据液晶segment,common值改变。
#define picture1

#define  	interface_16_bit

#define common 		68		  
#define segment     96



#define 	PORTL	P0
#define 	PORTH	P2
//control bus
sbit CS_MAIN=P3^0;		//chip select signal
sbit RES=P3^7;			//reset signal 
sbit SCL=P3^1;			//data/command  control signal
sbit SDA=P3^2;		//write strobe signal
sbit READ=P3^3;
//shift key 
sbit KEY5=P1^0;     	//waitkey 
sbit KEY1=P1^1;
//define tsc2046 interface

sbit DCLK 	= 	P1^2;
sbit CS_TP  = 	P1^3;
sbit DIN  	= 	P1^4;
sbit BUSY 	= 	P1^5;
sbit DOUT 	= 	P1^6;
sbit PIN  	= 	P1^7;


//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&



/****************************************************************************
** 函数声明
*****************************************************************************/
void LCD_write_c(uint com);
void LCD_write_d(uint dat);

void cpu_initial(void);
void init_lcd(void);
void MainLcdFill(uint A);
void picture_display(unsigned char *pi);
void Delay(uint adj);
void LCD_reset(void);
void cpu_initial(void);
void waitkey(void);
void lcd_clr( void );
void show_word(void);
void MainLcdcross_1();
void MainLcdcross();
/****************************************************************************
** 主程序
*****************************************************************************/

//////////////////////////////////////
//test the touch panel
/////////////////////////////////////



int main(void)
{  
 	cpu_initial();
 	LCD_reset();	
 	init_lcd();	
	
    

	

        MainLcdFill(0xffff);
    	Delay(50);
     	waitkey();
    	
				
		MainLcdFill(0x00aa);
    	Delay(50);
    	waitkey(); 


		MainLcdcross_1();
		Delay(500);
    	waitkey(); 

		MainLcdcross();
		Delay(500);
    	waitkey(); 

		MainLcdFill(0x0000);
    	Delay(50);
    	waitkey(); 
	

	

		show_word();
		Delay(500);
    	waitkey();

	
 

  
    
 }



 /*===========================================================================
** 函数名称: 	cpu_initial()
** 功能描述:	GPIO口PIN脚设置
============================================================================*/
void cpu_initial(void)
{
    P0=0xff;
	P1=0xff;
	P2=0xff;
	P3=0xff;
}
/*===========================================================================
** 函数名称: LCD_write_d()
** 功能描述: 输出数据,并行,软件模拟8080,
** 功能描述: 8bit,通过P0.10-P0.17传送数据
** 入口参数:dat: 输出数据
** 出口参数: 无
============================================================================*/

#ifdef interface_8_bit

void LCD_write_d(uint dat)
{
    CS_MAIN=0;
	DC=1;
	READ=1;
	  //WRITE=0;
	  PORTL=(dat>>8);
      WRITE=0;
      //WRITE=0;
      WRITE=1;
     //WRITE=0; 
	PORTL=(dat&0x00ff);
    WRITE=0;
    //WRITE=0;
    WRITE=1; 
  
	
}
/*===========================================================================
** 函数名称: LCD_write_c()
** 功能描述: 输出指令,并行,软件模拟8080
** 功能描述: 8 bit,通过P0.10-P0.17 传送数据
** 入口参数:com: 指令码
** 出口参数:无
============================================================================*/
void LCD_write_c(uint com)
{
 	
    CS_MAIN=0;
	DC=0;
    //WRITE=0;
	PORTL=(com>>8);
    WRITE=0;
    WRITE=1;
    //WRITE=0;
	PORTL=(com&0x00ff);   
    WRITE=0;
    WRITE=1;
 


}
 #endif

/*===========================================================================
** 函数名称: LCD_write_d()
** 功能描述: 输出数据,并行,软件模拟8080,
** 功能描述: 16bit,通过P0-P2传送数据
** 入口参数:dat: 输出数据
** 出口参数: 无
============================================================================*/

#ifdef interface_16_bit

void LCD_write_d(uint dat)
{
  uchar i;
    CS_MAIN=0;
	SCL=0;
	SDA=1;
	SCL=1;
          for(i=0;i<8;i++)
	{
    SCL=0;
		if(dat&0x80)
	    SDA=1;
	    else
	    SDA=0;
    SCL=1;
    dat<<=1;
    }       
	   
	CS_MAIN=1;
}

/*===========================================================================
** 函数名称: LCD_write_c()
** 功能描述: 输出指令,并行,软件模拟8080 
** 功能描述: 16 bit,通过P0 ,p2 传送数据
** 入口参数:com: 指令码
** 出口参数:无
============================================================================*/
void LCD_write_c(uint com)
{
      uchar i;    
 	CS_MAIN=0;
	SCL=0;
	SDA=0;
	SCL=1;
for(i=0;i<8;i++)
	{
    SCL=0;
		if(com&0x80)
	    SDA=1;
	    else
	    SDA=0;
    SCL=1;
    com<<=1;
	}   
	CS_MAIN=1;
 }
 
#endif

/*===========================================================================
** 函数名称: init_lcd
** 功能描述: 输出显示数据,并行,软件模拟8080
** 功能描述: 对LCD进行初始化
** 功能描述: 显示图片数据8bit
============================================================================*/
   
void init_lcd(void)
{ 
            
Delay(50);

	
LCD_write_c(0xe2);//

	
LCD_write_c(0x2f);


LCD_write_c(0x7a);


LCD_write_c(0xa4);

LCD_write_c(0xaf);

lcd_clr();


} 	
 


 

/*===========================================================================
** 函数名称: show_standard()
** 功能描述: 显示
** 入口参数: A : 16位显示数据/象素
============================================================================*/
void MainLcdFill(uint A )
 {
    uint t,l;
      
    for(l=0;l<common;l++)
    {
         for(t=0;t<segment;t++)
         {
              LCD_write_d(A);
			  
         }
     //  waitkey();    
 
    }
 }
///////cross///////
void MainLcdcross()
 {
    uint t,l;
   for(l=0;l<9;l++)
    {
         for(t=0;t<24;t++)
         {
              LCD_write_d(0xcc);
			  LCD_write_d(0xcc);
			  LCD_write_d(0x33);
			  LCD_write_d(0x33);
			  
         }
     //  waitkey();    
 
    }

        
 }



///////cross1///////
 void MainLcdcross_1()
 {
    uint t,l;
   for(l=0;l<9;l++)
    {
         for(t=0;t<48;t++)
         {
              LCD_write_d(0xff);
			  LCD_write_d(0x00);
			 
			  
         }
     //  waitkey();    
 
    }
	}
/*===========================================================================
** 函数名称: LCD_reset()
** 功能描述: 复位LCD,注意,有时需调整前后两个delay()的输入值大小
============================================================================*/
void LCD_reset(void)
{
    Delay(1);
	RES=0;
	
    Delay(2);
    RES=1;
    
    Delay(20);
  }

/*===========================================================================
** 函数名称: waitkey
** 功能描述: 
** 功能描述:
============================================================================*/	
void waitkey(void)
{
  while(1)  
  {
         while(KEY5!= 0);
         
         Delay(1);
         
         if (KEY5 == 0) break;
         
   }
     
  
      
      
 }

/*===========================================================================
** 函数名称: Delay
** 功能描述: 1ms
** 功能描述:
============================================================================*/
void Delay(uint adj)
{
  uint i;
  for(;adj>0;adj--)
  {
    for(i=0;i<250;i++);
  }
}




/************清屏***********/
void lcd_clr( void )
{	
	unsigned char i,j,page;
	for( i = 0; i < 8; i++ )
	{
		page = i;
		page |= 0xb8;
		LCD_write_d( page );
	    LCD_write_d( 0x40 );
		for( j = 0; j < 68; j++ )
			LCD_write_d( 0  );
		LCD_write_d( page );
		LCD_write_d( 0x40 );
		for( j = 0; j < 68; j++ )
			LCD_write_d( 0);

	   	for( i = 0; i < 8; i++ )
	{
		page = i;
		page |= 0xb8;
		LCD_write_c( page );
	    LCD_write_c( 0x40 );
		for( j = 0; j < 68; j++ )
			LCD_write_d( 0 );
		LCD_write_d( page );
		LCD_write_d( 0x40 );
		for( j = 0; j < 68; j++ )
			LCD_write_d( 0 );
    }	
    }	
}


/*===========================================================================
** 函数名称: void show_word()
** 功能描述: 显示文字
============================================================================*/


void show_word(void)
{
   


         LCD_write_c(0xb3);   //寄存器
		 LCD_write_c(0x10);
		 LCD_write_c(0x10);

		 LCD_write_c(0xa1);   //刷屏方式
		 LCD_write_c(0xc0);


	  	  
        



		  
         LCD_write_d(0x00);//SP

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);


		  LCD_write_d(0x46);//S

		 LCD_write_d(0x49);

		 LCD_write_d(0x49);

		 LCD_write_d(0x49);

		 LCD_write_d(0x31);


		 
         LCD_write_d(0x00);//SP

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);


		  LCD_write_d(0x3C);//U

		 LCD_write_d(0x40);

		 LCD_write_d(0x40);

		 LCD_write_d(0x20);

		 LCD_write_d(0x7C);


		 
         LCD_write_d(0x00);//SP

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);



		  LCD_write_d(0x7C);//N

		 LCD_write_d(0x08);

		 LCD_write_d(0x04);

		 LCD_write_d(0x04);

		 LCD_write_d(0x78);


		 
         LCD_write_d(0x00);//SP

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);

		 LCD_write_d(0x00);

⌨️ 快捷键说明

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