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

📄 数字钟.c

📁 自己做的单片机Proteus仿真实例
💻 C
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P2^6;
sbit lcden=P2^7;
sbit s1=P1^1;
sbit s2=P1^3;
sbit s3=P1^5;
sbit s4=P1^7;
uchar count,s1num;
signed char miao,shi,fen;
uchar code table[]="2012-12-12 MON";
void delay(uint z)
{
     uint x,y;
	 for(x=z;x>0;x--)  
	   for(y=110;y>0;y--);
}

void write_com(uchar com)
{
     lcdrs=0;
	 P0=com;
	 delay(5);
	 lcden=1;
	 lcden=0;
}
void write_data(uchar date)
{
     lcdrs=1;
	 P0=date;
	 delay(5);
	 lcden=1;
	 lcden=0;
}

void write_sfm(uchar add,uchar date)
{
     uchar shi,ge;
	 shi=date/10;
	 ge=date%10;
	 write_com(0x80+0x40+add);
	 write_data(0x30+shi);
	 write_data(0x30+ge);
}
void init()
{	
     uchar num;
	 lcden=0;
	 count=0;
	 s1num=0;
	 shi=23;
	 fen=59;
	 miao=58;
     write_com(0x38);
	 write_com(0x0c);
	 write_com(0x06);
     write_com(0x01); 
	 write_com(0x81);
	 for(num=0;num<15;num++) 
		 {
	         write_data(table[num]);
		     delay(5);
		 }
	 write_com(0x80+0x40+6);
	 write_data(':');
	 delay(5); 
	 write_com(0x80+0x40+9);
	 write_data(':');
	 delay(5);
	 write_sfm(10,miao);
	 write_sfm(7,fen);
	 write_sfm(4,shi);
	 TMOD=0x01;
	 TL0=(65536-50000)%256; 
	 TH0=(65536-50000)/256;
	 EA=1;
	 ET0=1;
	 TR0=1;

}
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)
				 { 	   
				       s1num=0;
				       write_com(0x0c);
					   TR0=1;
				  }
			}
	   }
	   if(s1num!=0)
	   {
	         if(s2==0);
			 {
			        delay(5);
					if(s2==0)
					{
					     while(!s2);
						 if(s1num==1)
						 {
						      miao++;
							  if(miao==60)
							        miao=0;
							  write_sfm(10,miao);
							  write_com(0x80+0x40+10);
						 }
						 if(s1num==2)
						 {
						      fen++;
							  if(fen==60)
							        fen=0;
							  write_sfm(7,fen);
							  write_com(0x80+0x40+7);
						 }	   	   
				 		 if(s1num==3)
						 {
						      shi++;
							  if(shi==24)
							        shi=0;
							  write_sfm(4,shi);
							  write_com(0x80+0x40+4);
						 }	 
				     }
				}	   
			 if(s3==0);
			 {
			        delay(5);
					if(s3==0)
					{
					     while(!s3);
						 if(s1num==1)
						 {
						      miao--;
							  if(miao==-1)
							       miao=59;
							  write_sfm(10,miao);
							  write_com(0x80+0x40+10);
						 }
						 if(s1num==2)
						 {
						      fen--;
							  if(fen==-1)
							       fen=59;
							  write_sfm(7,fen);
							  write_com(0x80+0x40+7);
						 }	   	   
				 		 if(s1num==3)
						 {
						      shi--;
							  if(shi==-1)
							       shi=23;
							  write_sfm(4,shi);
							  write_com(0x80+0x40+4);
						 }	 
				     }
				}	   

			   
        }

}
void main()
{
     init();
	 while(1)
	 {
	      keyscan();
	 }
}
void ser() interrupt 1
{
	 TL0=(65536-50000)%256; 
	 TH0=(65536-50000)/256;
	 count++;
	 if(count==20)
	 {
	      miao++;
		  if(miao==60)
		  {
		       miao=0;
			   fen++;
			   if(fen==60)
			   {
			        fen=0;
					shi++;
					if(shi==24)
					{
					     shi=0;
					}
					write_sfm(4,shi);
				}
		    	write_sfm(7,fen);
		   }
		   write_sfm(10,miao);
	   }
}	   	   				      















⌨️ 快捷键说明

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