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

📄 1602 数字钟.txt

📁 单片机写的程序都含有Protues仿真结果
💻 TXT
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,b,c=0,num,count,sec=0,min=30,hour=12,s1num=0,ri=27,mon=5;
char year1=8,year2=20,week1;
uchar week[]="Mon Tur Wed Thu Fri Sat Sun";
sbit lcden=P3^4;
sbit rs=P3^5;
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;	
uchar table[]="2008-05-27 Tur";
uchar table1[]="   12:30:00  WMZ";
void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
 //*********************************************
void write_date(date)
  { rs=1;
    lcden=0;
    P0=date;
   	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
  }
 //*********************************************
void write_com(com)
  { rs=0;
    lcden=0;
    P0=com;
   	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
  }

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

void init()
{
  lcden=0;
  write_com(0x38);
  write_com(0x0c);
  write_com(0x01);
  write_com(0x06);
  write_com(0x80);
	for(num=0;num<16;num++)
	{
	write_date(table[num]);
	delay(5);
	}
	write_com(0x80+0x40);
		for(num=0;num<16;num++)
	{
	write_date(table1[num]);
	delay(5);
	TMOD=0x01;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	EA=1;
	ET0=1;
	TR0=1;

	}
}
 //*********************************************
void sfm(uchar add,uchar shu)
{  uchar shi,ge;
	shi=shu/10;
	ge=shu%10;
	write_com(0x80+0x40+add); // 选择地址
	write_date(0x30+shi);	  //显示的数的十位
	write_date(0x30+ge);
}
 //*********************************************

void yyr(uchar ad,uchar su)
{  uchar shi,ge;
	shi=su/10;
	ge=su%10;
	write_com(0x80+ad); // 选择地址
	write_date(0x30+shi);	  //显示的数的十位
	write_date(0x30+ge);
}
void keyscan()
{
if(s1==0)
  {
	delay(5);
	 if(s1==0)
	 {  
	 s1num++;
	 while(!s1);
	 
	 if(s1num==1)
	 { 	TR0=0;
	 write_com(0x80+0x40+10);
	   write_com(0x0f);
	 }
	  if(s1num==2)
	 { write_com(0x80+0x40+7);
	   }

	  if(s1num==3)
	 { write_com(0x80+0x40+4);
	   }
	    if(s1num==4)
	 { write_com(0x80+11);
	   }
	       if(s1num==5)
	 { write_com(0x80+8);
	   }
	       if(s1num==6)
	 { write_com(0x80+5);
	   }
	       if(s1num==7)
	 { write_com(0x80+2);
	   }
	   if(s1num==8)
	 { write_com(0x80+0);
	   }
       if(s1num==9)
	 { s1num=0;
	 write_com(0x0c);
	    TR0=1;
	   }
     }
  }

  	  if(s1num!=0)
	 { if(s2==0)
	  {
	   delay(5);
	   if(s2==0)
	   {  
	   while(!s2);
	   
	   if(s1num==1)
	   { sec++;
	   if(sec==60)
	     { sec=0;}
		 sfm(9,sec);
	     write_com(0x80+0x40+10);
	   }
	    if(s1num==2)
	   { min++;
	   if(min==60)
	     { min=0;}
		 sfm(6,min);
	     write_com(0x80+0x40+7);
	   }
	    if(s1num==3)
	   { hour++;
	   if(hour==24)
	     { hour=0;}
		 sfm(3,hour);
	     write_com(0x80+0x40+4);
	   }
		 //下行的哦

	    if(s1num==4)
	   { 
	    
	   if(week1==7)
	     { week1=0;}
		 write_com(0x80+10);
		 c=0;
		 b=week1*4;
		 a=b;
		 for(b;b<a+3;b++)
		 { 	c++;
		   write_com(0x80+10+c);
		   write_date(week[b]);
		   }  week1++;
		 

	   }

	   if(s1num==5)
	   { ri++;
	   if(ri==31)
	     {ri=0;}
		 yyr(8,ri);
	     write_com(0x80+9);
	   }
	   if(s1num==6)
	   { mon++;
	   if(mon==13)
	     {mon=0;}
		 yyr(5,mon);
	     write_com(0x80+6);
	   }
	   if(s1num==7)
	   { year1++;
	   if(year1==100)
	     {year1=0;}
		 yyr(2,year1);
	     write_com(0x80+3);
	   }
	   if(s1num==8)
	   { year2++;
	   if(year2==100)
	     {year2=0;}
		 yyr(0,year2);
	     write_com(0x80+1);
	   }







	   

	   }
	  }
	 }


	   	  if(s1num!=0)
	 { if(s3==0)
	  {
	   delay(5);
	   if(s3==0)
	   {  
	   while(!s3);
	   
	   if(s1num==1)
	   { sec--;
	   if(sec==0)
	     { sec=59;}
		 sfm(9,sec);
	     write_com(0x80+0x40+10);
	   }
	    if(s1num==2)
	   { min--;
	   if(min==0)
	     { min=59;}
		 sfm(6,min);
	     write_com(0x80+0x40+7);
	   }
	    if(s1num==3)
	   { hour--;
	   if(hour==0)
	     { hour=23;}
		 sfm(3,hour);
	     write_com(0x80+0x40+4);
	   }
	    //下行的哦


	   	if(s1num==4)
	  	{ 
	    if(week1==-1)
	     { week1=6;}
		 write_com(0x80+10);
		 c=0;
		 b=week1*4;
		 a=b;
		 for(b;b<a+3;b++)
		 { 	c++;
		   write_com(0x80+10+c);
		   write_date(week[b]);
		  }  
		  week1--;
		 

	   }
	   if(s1num==5)
	   { ri--;
	   if(ri==0)
	     {ri=31;}
		 yyr(8,ri);
	     write_com(0x80+9);
	   }
	   if(s1num==6)
	   { mon--;
	   if(mon==0)
	     {mon=12;}
		 yyr(5,mon);
	     write_com(0x80+6);
	   }
	   if(s1num==7)
	   { year1--;
	   if(year1==-1)
	     {year1=99;}
		 yyr(2,year1);
	     write_com(0x80+3);
	   }
	   if(s1num==8)
	   { year2--;
	   if(year2==-1)
	     {year2=99;}
		 yyr(0,year2);
	     write_com(0x80+1);
	   }
	   

	   }
	  }
	 }
 	
}

 //*********************************************
void main()
{
  init();
  while(1)
  keyscan();
}
 //*********************************************
void timer0() interrupt 1
{	 TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
    count++;
    if(count==15)
	{
		count=0;
		sec++;
	 if(sec==60)
	  {
	  	sec=0;
		min++;
		if(min==60)
		{
		  	min=0;
			hour++;
			if(hour==24)
			{
			  hour=0;
			}
			sfm(3,hour);
		}
		sfm(6,min);
	  }
	  sfm(9,sec);
	}
}

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

⌨️ 快捷键说明

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