Demo entry 6623891

uasrt.h

   

Submitted by anonymous on Jun 11, 2017 at 16:58
Language: C. Code size: 6.8 kB.

/************************************************************************/

void Lcd_GPIO_init(void);
void Lcd_Init( void ) ;
void Lcd_En_Toggle(void);
void Lcd_Busy(void);
void Gpio_data(unsigned char x);
void Lcd_Write_Command(unsigned char x,char Busy);
void Lcd_Write_Data( unsigned char x); 
void Lcd_SetXY(unsigned char x,unsigned char y);
void Lcd_Puts(unsigned char x,unsigned char y, unsigned char *string);
int RxCounter1=0;
/************************¶Ë¿Ú³õʼ»¯*******************************/
void Lcd_GPIO_init(void)
{
     GPIO_InitTypeDef GPIO_InitStructure;   //ÉùÃ÷½á¹¹Ìå

    /********Data¶Ë¿ÚÉèÖÃ*************/
	 RCC_APB2PeriphClockCmd(RCC_GPIO_DATA, ENABLE);  //´ò¿ª¶Ë¿ÚBʱÖÓ 
     GPIO_InitStructure.GPIO_Pin  = GPIO_DATA_0_PIN|GPIO_DATA_1_PIN|GPIO_DATA_2_PIN|GPIO_DATA_3_PIN|GPIO_DATA_4_PIN|GPIO_DATA_5_PIN|GPIO_DATA_6_PIN|GPIO_DATA_7_PIN; //  DB8~DB15
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //±ê×¼Êä³öģʽ
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MʱÖÓËÙ¶È
     GPIO_Init(GPIO_DATA_0, &GPIO_InitStructure);      //³õʼ»¯¶Ë¿Ú

	 /********ʹÄܶ˿ÚÉèÖÃ**********/
	 RCC_APB2PeriphClockCmd(RCC_GPIO_EN, ENABLE);    //´ò¿ª¶Ë¿ÚʱÖÓ 
     GPIO_InitStructure.GPIO_Pin =  GPIO_EN_PIN;     // ʹÄܶ˿Ú
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //±ê×¼Êä³öģʽ
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MʱÖÓËÙ¶È
     GPIO_Init(GPIO_EN, &GPIO_InitStructure);

	 /********¶Á/д¶Ë¿ÚÉèÖÃ**********/
	 RCC_APB2PeriphClockCmd(RCC_GPIO_RW, ENABLE);    //´ò¿ª¶Ë¿ÚʱÖÓ 
     GPIO_InitStructure.GPIO_Pin =  GPIO_RW_PIN;     // ʹÄܶ˿Ú
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //±ê×¼Êä³öģʽ
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MʱÖÓËÙ¶È
     GPIO_Init(GPIO_RW, &GPIO_InitStructure);

	 /********Ö¸Áî/Êý¾Ý¶Ë¿ÚÉèÖÃ**********/
	 RCC_APB2PeriphClockCmd(RCC_GPIO_RS, ENABLE);    //´ò¿ª¶Ë¿ÚʱÖÓ 
     GPIO_InitStructure.GPIO_Pin =  GPIO_RS_PIN;     // ʹÄܶ˿Ú
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍ츴ÓÃÊä³ö
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MʱÖÓËÙ¶È
     GPIO_Init(GPIO_RS, &GPIO_InitStructure);


}
/******************************************************************/



void Lcd_Init( void )  //³õʼ»¯
{  
 	Lcd_GPIO_init();
	delay_us(1500);                     //ÑÓʱ15ms
	Lcd_Write_Command( 0x38,0);       // дָÁî38H ²»¼ì²âæÐźÅ
	delay_us(500);				      //ÑÓʱ5ms
    Lcd_Write_Command( 0x38,0);       // дָÁî38H ²»¼ì²âæÐźÅ
	delay_us(500);					  //ÑÓʱ5ms
    Lcd_Write_Command( 0x38,0);       // дָÁî38H ²»¼ì²âæÐźÅ
   									  //ÒÔºóÿ´ÎдָÁî¡¢¶Á/дÊý¾Ý²Ù×÷֮ǰÐè¼ì²âæÐźÅ
	Lcd_Write_Command( 0x38,1);       //ÏÔʾģʽÉèÖà 
    Lcd_Write_Command( 0x08,1);		  //ÏÔʾ¹Ø±Õ
	Lcd_Write_Command( 0x01,1);       //ÏÔʾÇåÆÁ
    Lcd_Write_Command( 0x06,1);       //ÏÔʾ¹â±êÒƶ¯ÉèÖà 
    Lcd_Write_Command( 0x0C,1); 	  //ÏÔʾ¿ª¡¢¹â±ê²»ÏÔʾ
} 
/******************************************************/

void Lcd_En_Toggle(void) //·¢Ê¹ÄÜÂö³å
{
	SET_EN;        //ʹÄÜ1
	delay_us(5);   //ÑÓʱ160us
	CLE_EN;
}


void Lcd_Busy(void)//ÅжÏæ
{
     GPIO_InitTypeDef GPIO_InitStructure;
	 RCC_APB2PeriphClockCmd(RCC_GPIO_DATA, ENABLE);    //´ò¿ªDATA¶Ë¿ÚʱÖÓ 

     GPIO_InitStructure.GPIO_Pin  = GPIO_DATA_0_PIN|GPIO_DATA_1_PIN|GPIO_DATA_2_PIN|GPIO_DATA_3_PIN|GPIO_DATA_4_PIN|GPIO_DATA_5_PIN|GPIO_DATA_6_PIN|GPIO_DATA_7_PIN; //  DB8~DB15
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÊäÈëģʽ = ÉÏÀ­ÊäÈë
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MʱÖÓËÙ¶È
     GPIO_Init(GPIO_DATA_7, &GPIO_InitStructure);      //´ò¿ªÃ¦¼ì²â¶Ë¿Ú

 	 CLE_RS; //RS = 0
	 //delay_us(1);   //ÑÓʱ10us
	 SET_RW; //RW = 1
	 //delay_us(1);   //ÑÓʱ10us
	 SET_EN; //EN = 1
	 //delay_us(2);   //ÑÓʱ20us
     while (GPIO_ReadInputDataBit(GPIO_DATA_7,GPIO_DATA_7_PIN)); //Ñ­»·µÈ´ýæ¼ì²â¶Ë¿Ú = 0
	 CLE_EN; //EN = 0

     //»Ö¸´¶Ë¿ÚΪÊä³ö״̬ 
   	 RCC_APB2PeriphClockCmd(RCC_GPIO_DATA, ENABLE);    //´ò¿ªDATA¶Ë¿ÚʱÖÓ 
	 GPIO_InitStructure.GPIO_Pin  = GPIO_DATA_0_PIN|GPIO_DATA_1_PIN|GPIO_DATA_2_PIN|GPIO_DATA_3_PIN|GPIO_DATA_4_PIN|GPIO_DATA_5_PIN|GPIO_DATA_6_PIN|GPIO_DATA_7_PIN; //  DB8~DB15
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MʱÖÓËÙ¶È
     GPIO_Init(GPIO_DATA_7, &GPIO_InitStructure);

} 

void Gpio_data(unsigned char x)  //¶Ë¿ÚÖÃÈëÊý¾Ý
{  
GPIO_ResetBits(GPIO_DATA_0, GPIO_DATA_0_PIN);  //DB0
GPIO_ResetBits(GPIO_DATA_0, GPIO_DATA_1_PIN);  //DB1
GPIO_ResetBits(GPIO_DATA_0, GPIO_DATA_2_PIN);  //DB2
GPIO_ResetBits(GPIO_DATA_0, GPIO_DATA_3_PIN);  //DB3
GPIO_ResetBits(GPIO_DATA_0, GPIO_DATA_4_PIN);  //DB4
GPIO_ResetBits(GPIO_DATA_0, GPIO_DATA_5_PIN);  //DB5
GPIO_ResetBits(GPIO_DATA_0, GPIO_DATA_6_PIN);  //DB6
GPIO_ResetBits(GPIO_DATA_0, GPIO_DATA_7_PIN);  //DB7
if(x&0X01)GPIO_SetBits(GPIO_DATA_0, GPIO_DATA_0_PIN);//DB0
if(x&0X02)GPIO_SetBits(GPIO_DATA_0, GPIO_DATA_1_PIN);//DB1
if(x&0X04)GPIO_SetBits(GPIO_DATA_0, GPIO_DATA_2_PIN);//DB2
if(x&0X08)GPIO_SetBits(GPIO_DATA_0, GPIO_DATA_3_PIN);//DB3
if(x&0X10)GPIO_SetBits(GPIO_DATA_0, GPIO_DATA_4_PIN);//DB4
if(x&0X20)GPIO_SetBits(GPIO_DATA_0, GPIO_DATA_5_PIN);//DB5
if(x&0X40)GPIO_SetBits(GPIO_DATA_0, GPIO_DATA_6_PIN);//DB6
if(x&0X80)GPIO_SetBits(GPIO_DATA_0, GPIO_DATA_7_PIN);//DB7
}


//ÏòÒº¾§ÀïÃæдÈëÖ¸Áî  Ê±Ðò£ºRS=L,RW=L,Data0-Data7=Ö¸ÁîÂ룬E=¸ßÂö³å
void Lcd_Write_Command(unsigned char x,char Busy) 
{ 
    if(Busy) Lcd_Busy();
    //delay_us(1);   //ÑÓʱ10us
	CLE_RS;  //RS = 0 
    //delay_us(1);   //ÑÓʱ10us
	CLE_RW;  //RW = 0 
    //delay_us(4);   //ÑÓʱ40us
    Gpio_data(x);  //¶Ë¿ÚÖÃÈëÊý¾Ý
    //delay_us(4);   //ÑÓʱ40us
	Lcd_En_Toggle();  //·¢Ê¹ÄÜÂö³å
    //delay_us(1);   //ÑÓʱ100us
	Lcd_Busy(); //²âæ

}
//ÏòÒº¾§ÀïÃæдÈëÊý¾Ý  ʱÐò£ºRS=H,RW=L,Data0-Data7=Ö¸ÁîÂ룬E=¸ßÂö³å
void Lcd_Write_Data( unsigned char x) //ÏòÒº¾§ÀïÃæдÈëÊý¾Ý 
{ 
	Lcd_Busy(); //²âæ
    //delay_us(1);   //ÑÓʱ10us
	SET_RS;   //RS = 1 
    //delay_us(1);   //ÑÓʱ10us
    CLE_RW;   //RW = 0
    //delay_us(4);   //ÑÓʱ40us
    Gpio_data(x);
    //delay_us(4);   //ÑÓʱ40us
	Lcd_En_Toggle();  //·¢Ê¹ÄÜÂö³å
    //delay_us(1);   //ÑÓʱ100us
	Lcd_Busy(); //²âæ

} 



void Lcd_SetXY(unsigned char x,unsigned char y)   //×Ö·û³õʼλÖÃÉ趨£¬x±íʾÁУ¬y±íʾÐÐ 
{ 
     unsigned char addr; 
     if(y==0) 
          addr=0x80+x; 
     else if(y==1)
          addr=0xC0+x; 
     Lcd_Write_Command(addr,1) ; 
} 
/******************************************************/

void Lcd_Puts(unsigned char x,unsigned char y, unsigned char *string) //Ïò1602дһ¸ö×Ö·û´® 
{ 
   //unsigned char i=0;
   Lcd_SetXY(x,y); 
	while(*string) 
	  { 
	   Lcd_Write_Data(*string); 
       string++; 
      } 
}

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).