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

📄 led.c

📁 电子时钟
💻 C
字号:
#include <reg51.h>
#include <init.h>

void LCDInit(void);
void LCD_Write(unsigned char cmd);	 
	
void LCD_Write_Com(unsigned char com) ;
void LCD_Write_Dat(unsigned char dat) ;	  
unsigned char LCD_Read_Dat(unsigned char com);	
extern void Delay(unsigned char i);
extern unsigned char Key_Scan(void);

extern unsigned char wc,wd2,wd1,wd0;


/************LCD初始化***********************/
void LCDInit(void)
{
  E=1;
  LCD_Write_Com(0x38);//8位数据总线,2行,5*7点阵
  LCD_Write_Com(0x08);//关显示
  Delay(2000);
  LCD_Write_Com(0x0c);//开显示,关光标,不闪烁
  LCD_Write_Com(0x01);//清屏
  Delay(2000);
  LCD_Write_Com(0x80);//
}

/*****************写的操作**************************/
void LCD_Write(unsigned char cmd)
{
  unsigned char i;
  for(i=0;i<13;i++);   //>40us
  LCD=cmd;
  E=1;
  for(i=0;i<3;i++);
  E=0;
  for(i=0;i<20;i++);   //>40us
}

/********************读数据的操作****************************/
unsigned char LCD_Read_Dat(unsigned char com)
{
  unsigned char i,j; 
  LCD_Write_Com(com);
  RS=1;
  RW=1;
  for(i=0;i<13;i++); 
  E=1;
  LCD=0xff;    ////////////////////////////////读前先置1
  j=LCD;
  for(i=0;i<13;i++);
  return j;
} 
/***************读地址的操作************************/
unsigned char LCD_Read_Com(void)	
{
  unsigned char i,j;
  RW=1;
  RS=0;
  for(i=0;i<13;i++);
  E=1;
  LCD=0xff;
  j=LCD;
  j=j|0x80;
  for(i=0;i<13;i++);
  return j;
}

/********************写指令****************************/
void LCD_Write_Com(unsigned char com)
{
  RS=0;
  RW=0;
  LCD_Write(com);
}
/**********************写数据****************************/
void LCD_Write_Dat(unsigned char dat) 
{
  	RS=1;
    RW=0;
    LCD_Write(dat);
}
void LCD_Write_Dat_Nmov(unsigned char dat)
{
  unsigned char j;
  LCD_Write_Dat(dat);
  j=LCD_Read_Com();
  LCD_Write_Com(--j);
}

/*********************开机显示****************************/
void LCD_Show1(void)
{
  unsigned char i;
  unsigned char ch1[]="****welcome!****";
  unsigned char ch2[]="2000-01-01";
  unsigned char ch3[]="00:00:00";
  for(i=0;i<16;i++)
     {
	   LCD_Write_Dat(ch1[i]);
	 } 
  Delay(250);
  Delay(250);
  Delay(250);
  Delay(250);
  Delay(250);
  Delay(250);
  LCDInit();
  LCD_Write_Com(0x83);//DDRAM地址0x03
  for(i=0;i<10;i++)
     {
	   LCD_Write_Dat(ch2[i]); //LCD显示
	 }
  LCD_Write_Com(0xc4);//DDRAM地址0x44
  for(i=0;i<8;i++)
     {
	    LCD_Write_Dat(ch3[i]); //LCD显示
	 } 
  LCD_Write_Com(0x83);//DDRAM地址0x03
  LCD_Write_Com(0x0f);//开显示,开光标,闪烁
  
}

/*******************秒表函数****************************/
void Watch(void)
{
   unsigned char i,j,m,n,a;	
   unsigned char ch3[]="00:00:00.00";
   j=0xff;
   a=0xff;
   LCDInit();
   LCD_Write_Com(0x80);
   LCD_Write_Dat('W');
   LCD_Write_Com(0xc4);
   for(i=0;i<11;i++)
      LCD_Write_Dat(ch3[i]);
   while(1)
    {	 
	  wc=0;wd2=0;wd1=0;wd0=0;    
      j=Key_Scan();
      if(j=='7')    	//开始
        { 
	      TR1=1;
	      ET1=1;	  //打开定时器0中断
          EA=1;		  //开总中断
	      m=wc;
	      while(1)
	       {
	         n=wc;
		     if(m!=n)
		      {
			   	LCD_Write_Com(0xc4);     
	         	LCD_Write_Dat(wd0/10+'0');
	        	LCD_Write_Com(0xc5);
	        	LCD_Write_Dat(wd0%10+'0');
	        	LCD_Write_Com(0xc7);
	        	LCD_Write_Dat(wd1/10+'0');
		        LCD_Write_Com(0xc8);
		        LCD_Write_Dat(wd1%10+'0');
		        LCD_Write_Com(0xca);
		        LCD_Write_Dat(wd2/10+'0');
		        LCD_Write_Com(0xcb);
		        LCD_Write_Dat(wd2%10+'0');
				LCD_Write_Com(0xcd);
				LCD_Write_Dat(wc*5/10+'0');
				LCD_Write_Com(0xce);
				LCD_Write_Dat(wc*5%10+'0');
	            m=n;
			  }

		     a=Key_Scan();
		     if(a=='8')	//暂停
		     { 
			   TR1=0;
			   ET1=0;
			  }
			 if(a=='7')
			    {
				  TR1=1;
				  ET1=1;
				}
			 if(a=='9')
			    {
				  TR1=0;
			      ET1=0;
				  wc=0;wd2=0;wd1=0;wd0=0; 
				}
			 if(a=='B')
			    {
				  TR1=0;
				  ET1=0;
				  LCDInit();
				  break;
				} 
	    } 
	 if(a=='B')
	    {
		  break;
		} 
	 }
   if(j=='B') 
     {
	   LCDInit();
	   break;
	 }
   }
}

⌨️ 快捷键说明

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