您的位置:首页 > 其它

单片机lcd改进版时钟

2017-02-07 12:41 330 查看
#include<reg52.h>

#include<intrins.h>

#define KeyPort P3//¶¨Òå°´¼ü¶Ë¿Ú

#define  _Nop()  _nop_()        //¶¨Òå¿ÕÖ¸Áî

#define RS_CLR RS=0 

#define RS_SET RS=1

#define RW_CLR RW=0 

#define RW_SET RW=1 

#define EN_CLR EN=0

#define EN_SET EN=1

#define DataPort P0

#define Led Port P1 //¶¨ÒåÊý¾Ý¶Ë¿Ú ³ÌÐòÖÐÓöµ½DataPort ÔòÓÃP0 Ìæ»»

sbit SPK=P2^2;

sbit SDA=P2^1;            //Ä£ÄâI2CÊý¾Ý´«ËÍλ

sbit SCL=P2^0;            //Ä£ÄâI2CʱÖÓ¿ØÖÆλ

sbit RS = P2^4;   //¶¨Òå¶Ë¿Ú 

sbit RW = P2^5;

sbit EN = P2^6;

bit ack;              //Ó¦´ð±ê־λ

unsigned char hour,minute,second;//¶¨Òåʱ·ÖÃë

unsigned int num ;

unsigned char flag1,flag2,flag3;

unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char TempData[8]; //´æ´¢ÏÔʾֵµÄÈ«¾Ö±äÁ¿

void LCD_Init(void);

 bit LCD_Check_Busy(void);

 void LCD_Write_Com(unsigned char com);

 void LCD_Write_Data(unsigned char Data);

  void LCD_Clear(void);

 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);

  void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data);

  

void DelayUs2x(unsigned char t);//us¼¶ÑÓʱº¯ÊýÉùÃ÷ 

void DelayMs(unsigned char t); //ms¼¶ÑÓʱ

void Display();//ÊýÂë¹ÜÏÔʾº¯Êý

unsigned char KeyScan(void);//¼üÅÌɨÃè

void Init_Timer0(void);//¶¨Ê±Æ÷³õʼ»¯

void ISR_Key(void) interrupt 0 using 1

{

 P1=~P1;     //½øÈëÖжϳÌÐòÖ´ÐгÌÐò£¬

//´Ëʱ¿ÉÒÔͨ¹ý EA=0Ö¸ÁîÔÝʱ¹ØµôÖÐ¶Ï    

}

void Start_I2c()

{

  SDA=1;   //·¢ËÍÆðʼÌõ¼þµÄÊý¾ÝÐźÅ

  _Nop();

  SCL=1;

  _Nop();    //ÆðʼÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4.7us,ÑÓʱ

  _Nop();

  _Nop();

  _Nop();

  _Nop();    

  SDA=0;     //·¢ËÍÆðʼÐźÅ

  _Nop();    //ÆðʼÌõ¼þËø¶¨Ê±¼ä´óÓÚ4¦Ì

  _Nop();

  _Nop();

  _Nop();

  _Nop();       

  SCL=0;    //ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý

  _Nop();

  _Nop();

}

/*------------------------------------------------

                    ½áÊø×ÜÏß

------------------------------------------------*/

void Stop_I2c()

{

  SDA=0;    //·¢ËͽáÊøÌõ¼þµÄÊý¾ÝÐźÅ

  _Nop();   //·¢ËͽáÊøÌõ¼þµÄʱÖÓÐźÅ

  SCL=1;    //½áÊøÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4¦Ì

  _Nop();

  _Nop();

  _Nop();

  _Nop();

  _Nop();

  SDA=1;    //·¢ËÍI2C×ÜÏß½áÊøÐźÅ

  _Nop();

  _Nop();

  _Nop();

  _Nop();

}

/*----------------------------------------------------------------

                 ×Ö½ÚÊý¾Ý´«Ëͺ¯Êý               

º¯ÊýÔ­ÐÍ: void  SendByte(unsigned char c);

¹¦ÄÜ:  ½«Êý¾Ýc·¢ËͳöÈ¥,¿ÉÒÔÊǵØÖ·,Ò²¿ÉÒÔÊÇÊý¾Ý,·¢ÍêºóµÈ´ýÓ¦´ð,²¢¶Ô

     ´Ë״̬λ½øÐвÙ×÷.(²»Ó¦´ð»ò·ÇÓ¦´ð¶¼Ê¹ack=0 ¼Ù)     

     ·¢ËÍÊý¾ÝÕý³££¬ack=1; ack=0±íʾ±»¿ØÆ÷ÎÞÓ¦´ð»òË𻵡£

------------------------------------------------------------------*/

void  SendByte(unsigned char c)

{

 unsigned char BitCnt;

 

 for(BitCnt=0;BitCnt<8;BitCnt++)  //Òª´«Ë͵ÄÊý¾Ý³¤¶ÈΪ8λ

    {

     if((c<<BitCnt)&0x80)SDA=1;   //ÅжϷ¢ËÍλ

       else  SDA=0;                

     _Nop();

     SCL=1;               //ÖÃʱÖÓÏßΪ¸ß£¬Í¨Öª±»¿ØÆ÷¿ªÊ¼½ÓÊÕÊý¾Ýλ

      _Nop(); 

      _Nop();             //±£Ö¤Ê±ÖӸߵçƽÖÜÆÚ´óÓÚ4¦Ì

      _Nop();

      _Nop();

      _Nop();         

     SCL=0; 

    }

    

    _Nop();

    _Nop();

    SDA=1;               //8λ·¢ËÍÍêºóÊÍ·ÅÊý¾ÝÏߣ¬×¼±¸½ÓÊÕÓ¦´ðλ

    _Nop();

    _Nop();   

    SCL=1;

    _Nop();

    _Nop();

    _Nop();

    if(SDA==1)ack=0;     

       else ack=1;        //ÅжÏÊÇ·ñ½ÓÊÕµ½Ó¦´ðÐźÅ

    SCL=0;

    _Nop();

    _Nop();

}

/*----------------------------------------------------------------

                 ×Ö½ÚÊý¾Ý´«Ëͺ¯Êý               

º¯ÊýÔ­ÐÍ: unsigned char  RcvByte();

¹¦ÄÜ:  ÓÃÀ´½ÓÊÕ´ÓÆ÷¼þ´«À´µÄÊý¾Ý,²¢ÅжÏ×ÜÏß´íÎó(²»·¢Ó¦´ðÐźÅ)£¬

     ·¢ÍêºóÇëÓÃÓ¦´ðº¯Êý¡£  

------------------------------------------------------------------*/

unsigned char  RcvByte()

{

  unsigned char retc;

  unsigned char BitCnt;

  

  retc=0; 

  SDA=1;             //ÖÃÊý¾ÝÏßΪÊäÈ뷽ʽ

  for(BitCnt=0;BitCnt<8;BitCnt++)

      {

        _Nop();           

        SCL=0;       //ÖÃʱÖÓÏßΪµÍ£¬×¼±¸½ÓÊÕÊý¾Ýλ

        _Nop();

        _Nop();      //ʱÖӵ͵çƽÖÜÆÚ´óÓÚ4.7us

        _Nop();

        _Nop();

        _Nop();

        SCL=1;       //ÖÃʱÖÓÏßΪ¸ßʹÊý¾ÝÏßÉÏÊý¾ÝÓÐЧ

        _Nop();

        _Nop();

        retc=retc<<1;

        if(SDA==1)retc=retc+1; //¶ÁÊý¾Ýλ,½ÓÊÕµÄÊý¾Ýλ·ÅÈëretcÖÐ

        _Nop();

        _Nop(); 

      }

  SCL=0;    

  _Nop();

  _Nop();

  return(retc);

}

/*----------------------------------------------------------------

                     Ó¦´ð×Óº¯Êý

Ô­ÐÍ:  void Ack_I2c(void);

 

----------------------------------------------------------------*/

void Ack_I2c(void)

{

  

  SDA=0;     

  _Nop();

  _Nop();

  _Nop();      

  SCL=1;

  _Nop();

  _Nop();              //ʱÖӵ͵çƽÖÜÆÚ´óÓÚ4¦Ì

  _Nop();

  _Nop();

  _Nop();  

  SCL=0;               //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ

  _Nop();

  _Nop();    

}

/*----------------------------------------------------------------

                     ·ÇÓ¦´ð×Óº¯Êý

Ô­ÐÍ:  void NoAck_I2c(void);

 

----------------------------------------------------------------*/

void NoAck_I2c(void)

{

  

  SDA=1;

  _Nop();

  _Nop();

  _Nop();      

  SCL=1;

  _Nop();

  _Nop();              //ʱÖӵ͵çƽÖÜÆÚ´óÓÚ4¦Ì

  _Nop();

  _Nop();

  _Nop();  

  SCL=0;                //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ

  _Nop();

  _Nop();    

}

/*----------------------------------------------------------------

                    ÏòÎÞ×ÓµØÖ·Æ÷¼þ·¢ËÍ×Ö½ÚÊý¾Ýº¯Êý               

º¯ÊýÔ­ÐÍ: bit  ISendByte(unsigned char sla,ucahr c);  

¹¦ÄÜ:     ´ÓÆô¶¯×ÜÏßµ½·¢Ë͵ØÖ·£¬Êý¾Ý£¬½áÊø×ÜÏßµÄÈ«¹ý³Ì,´ÓÆ÷¼þµØÖ·sla.

           Èç¹û·µ»Ø1±íʾ²Ù×÷³É¹¦£¬·ñÔò²Ù×÷ÓÐÎó¡£

×¢Ò⣺    Ê¹ÓÃÇ°±ØÐëÒѽáÊø×ÜÏß¡£

----------------------------------------------------------------*/

/*bit ISendByte(unsigned char sla,unsigned char c)

{

   Start_I2c();               //Æô¶¯×ÜÏß

   SendByte(sla);             //·¢ËÍÆ÷¼þµØÖ·

     if(ack==0)return(0);

   SendByte(c);               //·¢ËÍÊý¾Ý

     if(ack==0)return(0);

  Stop_I2c();                 //½áÊø×ÜÏß

  return(1);

}

*/

/*----------------------------------------------------------------

                    ÏòÓÐ×ÓµØÖ·Æ÷¼þ·¢ËͶà×Ö½ÚÊý¾Ýº¯Êý               

º¯ÊýÔ­ÐÍ: bit  ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);  

¹¦ÄÜ:     ´ÓÆô¶¯×ÜÏßµ½·¢Ë͵ØÖ·£¬×ÓµØÖ·,Êý¾Ý£¬½áÊø×ÜÏßµÄÈ«¹ý³Ì,´ÓÆ÷¼þ

          µØÖ·sla£¬×ÓµØÖ·suba£¬·¢ËÍÄÚÈÝÊÇsÖ¸ÏòµÄÄÚÈÝ£¬·¢ËÍno¸ö×Ö½Ú¡£

           Èç¹û·µ»Ø1±íʾ²Ù×÷³É¹¦£¬·ñÔò²Ù×÷ÓÐÎó¡£

×¢Ò⣺    Ê¹ÓÃÇ°±ØÐëÒѽáÊø×ÜÏß¡£

----------------------------------------------------------------*/

bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)

{

   unsigned char i;

   Start_I2c();               //Æô¶¯×ÜÏß

   SendByte(sla);             //·¢ËÍÆ÷¼þµØÖ·

     if(ack==0)return(0);

   SendByte(suba);            //·¢ËÍÆ÷¼þ×ÓµØÖ·

     if(ack==0)return(0);

   for(i=0;i<no;i++)

    {   

     SendByte(*s);            //·¢ËÍÊý¾Ý

     DelayMs(1);

       if(ack==0)return(0);

     s++;

    } 

 Stop_I2c();                  //½áÊø×ÜÏß

  return(1);

}

/*----------------------------------------------------------------

                    ÏòÎÞ×ÓµØÖ·Æ÷¼þ¶Á×Ö½ÚÊý¾Ýº¯Êý               

º¯ÊýÔ­ÐÍ: bit  IRcvByte(unsigned char sla,ucahr *c);  

¹¦ÄÜ:     ´ÓÆô¶¯×ÜÏßµ½·¢Ë͵ØÖ·£¬¶ÁÊý¾Ý£¬½áÊø×ÜÏßµÄÈ«¹ý³Ì,´ÓÆ÷¼þµØ

          Ö·sla£¬·µ»ØÖµÔÚc.

           Èç¹û·µ»Ø1±íʾ²Ù×÷³É¹¦£¬·ñÔò²Ù×÷ÓÐÎó¡£

×¢Ò⣺    Ê¹ÓÃÇ°±ØÐëÒѽáÊø×ÜÏß¡£

----------------------------------------------------------------*/

/*bit IRcvByte(unsigned char sla,unsigned char *c)

{

   Start_I2c();                //Æô¶¯×ÜÏß

   SendByte(sla+1);            //·¢ËÍÆ÷¼þµØÖ·

     if(ack==0)return(0);

   *c=RcvByte();               //¶ÁÈ¡Êý¾Ý

     NoAck_I2c();              //·¢ËͷǾʹðλ

     Stop_I2c();               //½áÊø×ÜÏß

  return(1);

}

*/

/*----------------------------------------------------------------

                    ÏòÓÐ×ÓµØÖ·Æ÷¼þ¶ÁÈ¡¶à×Ö½ÚÊý¾Ýº¯Êý               

º¯ÊýÔ­ÐÍ: bit  ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);  

¹¦ÄÜ:     ´ÓÆô¶¯×ÜÏßµ½·¢Ë͵ØÖ·£¬×ÓµØÖ·,¶ÁÊý¾Ý£¬½áÊø×ÜÏßµÄÈ«¹ý³Ì,´ÓÆ÷¼þ

          µØÖ·sla£¬×ÓµØÖ·suba£¬¶Á³öµÄÄÚÈÝ·ÅÈësÖ¸ÏòµÄ´æ´¢Çø£¬¶Áno¸ö×Ö½Ú¡£

           Èç¹û·µ»Ø1±íʾ²Ù×÷³É¹¦£¬·ñÔò²Ù×÷ÓÐÎó¡£

×¢Ò⣺    Ê¹ÓÃÇ°±ØÐëÒѽáÊø×ÜÏß¡£

----------------------------------------------------------------*/

bit IRcvStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)

{

   unsigned char i;

   Start_I2c();               //Æô¶¯×ÜÏß

   SendByte(sla);             //·¢ËÍÆ÷¼þµØÖ·

     if(ack==0)return(0);

   SendByte(suba);            //·¢ËÍÆ÷¼þ×ÓµØÖ·

     if(ack==0)return(0);

   Start_I2c();

   SendByte(sla+1);

      if(ack==0)return(0);

   for(i=0;i<no-1;i++)

    {   

     *s=RcvByte();              //·¢ËÍÊý¾Ý

      Ack_I2c();                //·¢Ë;ʹðλ 

     s++;

    } 

   *s=RcvByte();

    NoAck_I2c();                 //·¢ËÍ·ÇӦλ

   Stop_I2c();                    //½áÊø×ÜÏß

  return(1);

}

/*------------------------------------------------

                    Ö÷º¯Êý

------------------------------------------------*/

void main (void)

{

unsigned char num1;

unsigned char temp = 0;

unsigned char i,j = 0;                  

 LCD_Init(); 

LCD_Clear();

 LCD_Write_String(6,1,"clock");

 

while (1)         //Ö÷Ñ­»·

  {
if(flag2 == 1)
{
DelayMs(1);  
  SPK=!SPK;
Display();
flag2 = 0;
}

if(minute == 0&&second <= 10) 
{
if(second%2)
P1 = 0x55;
else
P1 = 0xaa;
}
else
P1 = 0xff;

while(flag1)
{

      if(num%2)  
 SPK=1;
 else
 SPK = 0;
 i++;
 if(i==200) {i=0;flag1++;break; }
 }

num1=KeyScan();

switch(num1)

  {

       case 1:hour++;if(hour==24)hour=0;     //Õý³£Ê±¼ä Сʱ ¼Ó1

             break;
case 2:hour--;if(hour==255)hour=23;   //Õý³£Ê±¼ä Сʱ¼õ1
        break;
case 3:minute++;if(minute==60)minute=0;     //·ÖÖÓ¼Ó1
        break;
case 4:minute--;if(minute==255)minute=59;   //·ÖÖÓ¼õ1
        break;
case 5:
{
Init_Timer0();
IRcvStr(0xae,4,&hour,1);
  IRcvStr(0xae,5,&minute,1);
  IRcvStr(0xae,6,&second,1);
  break;
  }
case 6:
{
if(temp%2 == 0)
EA = 1;
else
EA = 0;
temp++;
break;
}
case 7:
hour = 0;minute = 0;second = 0; break;
default:break;

  }

}

}

/*------------------------------------------------

 uSÑÓʱº¯Êý£¬º¬ÓÐÊäÈë²ÎÊý unsigned char t£¬ÎÞ·µ»ØÖµ

 unsigned char ÊǶ¨ÒåÎÞ·ûºÅ×Ö·û±äÁ¿£¬ÆäÖµµÄ·¶Î§ÊÇ

 0~255 ÕâÀïʹÓþ§Õñ12M£¬¾«È·ÑÓʱÇëʹÓûã±à,´óÖÂÑÓʱ

 ³¤¶ÈÈçÏ T=tx2+5 uS 

------------------------------------------------*/

void DelayUs2x(unsigned char t)

{   

 while(--t);

}

/*------------------------------------------------

 mSÑÓʱº¯Êý£¬º¬ÓÐÊäÈë²ÎÊý unsigned char t£¬ÎÞ·µ»ØÖµ

 unsigned char ÊǶ¨ÒåÎÞ·ûºÅ×Ö·û±äÁ¿£¬ÆäÖµµÄ·¶Î§ÊÇ

 0~255 ÕâÀïʹÓþ§Õñ12M£¬¾«È·ÑÓʱÇëʹÓûã±à

------------------------------------------------*/

void DelayMs(unsigned char t)

{

     

 while(t--)

 {

     //´óÖÂÑÓʱ1mS

     DelayUs2x(245);
DelayUs2x(245);

 }

}

/*------------------------------------------------

 ÏÔʾº¯Êý£¬ÓÃÓÚ¶¯Ì¬É¨ÃèÊýÂë¹Ü

 ÊäÈë²ÎÊý FirstBit ±íʾÐèÒªÏÔʾµÄµÚһ룬È縳ֵ2±íʾ´ÓµÚÈý¸öÊýÂë¹Ü¿ªÊ¼ÏÔʾ

 ÈçÊäÈë0±íʾ´ÓµÚÒ»¸öÏÔʾ¡£

 Num±íʾÐèÒªÏÔʾµÄλÊý£¬ÈçÐèÒªÏÔʾ99Á½Î»ÊýÖµÔò¸ÃÖµÊäÈë2

------------------------------------------------*/

void Display()

{

     
 unsigned char h0,h1, m0,m1 ,s0,s1;

 h0 = hour/10+48;
 h1 = hour%10+48;
 m0 = minute/10+48;
 m1 = minute%10+48;
 s0 = second/10+48;
 s1 = second%10+48;
  
 
 LCD_Write_Char(3,0,h0);
 LCD_Write_Char(4,0,h1);
 LCD_Write_Char(5,0,':');
 LCD_Write_Char(6,0,m0);
 LCD_Write_Char(7,0,m1);
 LCD_Write_Char(8,0,':');
 LCD_Write_Char(9,0,s0);
 LCD_Write_Char(10,0,s1);

     ISendStr(0xae,4,&hour,1);
 ISendStr(0xae,5,&minute,1);
 ISendStr(0xae,6,&second,1);

       
  

}

/*------------------------------------------------

                    ¶¨Ê±Æ÷³õʼ»¯×Ó³ÌÐò

------------------------------------------------*/

void Init_Timer0(void)

{

 TMOD |= 0x01;  //ʹÓÃģʽ1£¬16λ¶¨Ê±Æ÷£¬Ê¹ÓÃ"|"·ûºÅ¿ÉÒÔÔÚʹÓöà¸ö¶¨Ê±Æ÷ʱ²»ÊÜÓ°Ïì
    

 //TH0=0x00;      //¸ø¶¨³õÖµ

 //TL0=0x00;

 EA=1;            //×ÜÖжϴò¿ª

 ET0=1;           //¶¨Ê±Æ÷Öжϴò¿ª

 TR0=1;           //¶¨Ê±Æ÷¿ª¹Ø´ò¿ª

}

/*------------------------------------------------

                 ¶¨Ê±Æ÷ÖжÏ×Ó³ÌÐò

------------------------------------------------*/

void Timer0_isr(void) interrupt 1 

{

 TH0=(65536-2000)/256;//ÖØи³Öµ 2ms

 TL0=(65536-2000)%256;

 num++;

 

 if(num==500)        //´óÖÂ1s

   {

    num=0;
second++;
 flag2 = 1;
 

if(second==60)  //Ãëµ½60£¬·ÖÖÓ¼Ó1
{
 second=0;
 
 minute++;

 
 if(minute==60)//·ÖÖÓµ½60£¬Ð¡Ê±¼Ó1
   {
flag1 = 1;
minute=0;
hour++;
if(hour==24)//Сʱµ½24£¬»ØÁã
  hour=0;
}
}

   

  }

}

/*------------------------------------------------

°´¼üɨÃ躯Êý£¬·µ»ØɨÃè¼üÖµ

------------------------------------------------*/

unsigned char KeyScan(void)

{

 unsigned char keyvalue;

 if(KeyPort!=0xff)

   {

    DelayMs(10);

    if(KeyPort!=0xff)
  {
   keyvalue=KeyPort;
   while(KeyPort!=0xff);
switch(keyvalue)
{
case 0xfe:return 1;break;
case 0xfd:return 2;break;
case 0xfb:return 3;break;
case 0xf7:return 4;break;
case 0xef:return 5;break;
case 0xdf:return 6;break;
case 0xbf:return 7;break;
case 0x7f:return 8;break;
default:return 0;break;
}
 }

   }

   return 0;

}

  /*------------------------------------------------

              ÅÐ溯Êý

------------------------------------------------*/

 bit LCD_Check_Busy(void) 

 { 

 DataPort= 0xFF; 

 RS_CLR; 

 RW_SET; 

 EN_CLR; 

 _nop_(); 

 EN_SET;

 return (bit)(DataPort & 0x80);

 }

/*------------------------------------------------

              дÈëÃüÁÊý

------------------------------------------------*/

 void LCD_Write_Com(unsigned char com) 

 {  

// while(LCD_Check_Busy()); //æÔòµÈ´ý

 DelayMs(5);

 RS_CLR; 

 RW_CLR; 

 EN_SET; 

 DataPort= com; 

 _nop_(); 

 EN_CLR;

 }

/*------------------------------------------------

              дÈëÊý¾Ýº¯Êý

------------------------------------------------*/

 void LCD_Write_Data(unsigned char Data) 

 { 

 //while(LCD_Check_Busy()); //æÔòµÈ´ý

 DelayMs(5);

 RS_SET; 

 RW_CLR; 

 EN_SET; 

 DataPort= Data; 

 _nop_();

 EN_CLR;

 }

/*------------------------------------------------

                ÇåÆÁº¯Êý

------------------------------------------------*/

 void LCD_Clear(void) 

 { 

 LCD_Write_Com(0x01); 

 DelayMs(5);

 }

/*------------------------------------------------

              дÈë×Ö·û´®º¯Êý

------------------------------------------------*/

 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) 

 {     

 if (y == 0) 

  {     
LCD_Write_Com(0x80 + x);     //±íʾµÚÒ»ÐÐ

  }

 else 

  {      

  LCD_Write_Com(0xC0 + x);      //±íʾµÚ¶þÐÐ

  }        

 while (*s) 

  {     

 LCD_Write_Data( *s);     

 s ++;     

  }

 }

/*------------------------------------------------

              дÈë×Ö·ûº¯Êý

------------------------------------------------*/

 void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) 

 {     

 if (y == 0) 

  {     

  LCD_Write_Com(0x80 + x);     

  }    

 else 

  {     

  LCD_Write_Com(0xC0 + x);     

  }        

 LCD_Write_Data( Data);  

 }

/*------------------------------------------------

              ³õʼ»¯º¯Êý

------------------------------------------------*/

 void LCD_Init(void) 

 {

   LCD_Write_Com(0x38);    /*ÏÔʾģʽÉèÖÃ*/ 

   DelayMs(5); 

   LCD_Write_Com(0x38); 

   DelayMs(5); 

   LCD_Write_Com(0x38); 

   DelayMs(5); 

   LCD_Write_Com(0x38);  

   LCD_Write_Com(0x08);    /*ÏÔʾ¹Ø±Õ*/ 

   LCD_Write_Com(0x01);    /*ÏÔʾÇåÆÁ*/ 

   LCD_Write_Com(0x06);    /*ÏÔʾ¹â±êÒƶ¯ÉèÖÃ*/ 

   DelayMs(5); 

   LCD_Write_Com(0x0C);    /*ÏÔʾ¿ª¼°¹â±êÉèÖÃ*/

   }

   

/*------------------------------------------------

                    Ö÷º¯Êý

------------------------------------------------*/

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: