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

📄 main.c

📁 这是我以前做过的51单片机实验代码
💻 C
字号:
#include<reg51.h>
#include<1602lcd.h>
#include<stdio.h>
sbit p17=P1^7;
sbit p16=P1^6;
sbit p15=P1^5;
sbit p14=P1^4;
sbit p13=P1^3;
int t=0,s=0,min=0,hour=0,day=18,mon=4,year=2008,temp=0;//时间初值
int set=0;     //设置变量
void timer() interrupt 1
{
IT1=0;
TH0=0X4C;
TL0=0X00;
t++;
IT1=1;
}

void zd()interrupt 2
{
	EX1 = 0;
	hour++;
	EX1 = 1;
}

void delayms(int t)
{
 int i;
 while(t--)
 {
  /* 对于11.0592M时钟,约延时1ms */
  for (i=0;i<125;i++)
  {}
 }
}

void main()
{
Init_LCD();
EA=0;
TMOD=0X01;
TH0=0X4C;
TL0=0X00;
	EX1 = 1;
	IT0 = 1;
ET0=1;
EA=1;
TR0=1;
while(1)
  {
	if(t==20) 
	{
	   t=0;
	   s++;
	   temp=!temp;
     }
	 PutNumXY_LCD(7,1,s,2); //输出秒
	 if(s==60) //秒判断
	 {
	  s=0;
	  min++;
	  
	 }
	 PutNumXY_LCD(4,1,min,2); //输出分钟
	 if(min==60) //时判断
	 {
	 min=0;
	 hour++;
	 
	 }
	 PutNumXY_LCD(1,1,hour,2);//输出小时
	 if(hour==24) //分判断
	 {
	 hour=0;
	 day++;
	 }
	 PutNumXY_LCD(9,0,day,2);
	 PutStrXY_LCD(3,1,":");	 //静态点
	 if(temp==0)			 //动态点
	 PutStrXY_LCD(6,1,":");
	 else
	 PutStrXY_LCD(6,1," ");
	 if(mon<=12)
	 {
	 	switch(mon)		 //输出月份
	 	{
	 	case 1 :
	 	case 3 :
	 	case 5 :
	 	case 7 :
	 	case 8 :
	 	case 10 :
	 	case 12 :	if(day==31) {day=1;mon++;} PutNumXY_LCD(6,0,mon,2);break;
	 	case 2 :	if (year%4==0 && year%100!=0 || year%400==0)
	 				{ if(day==29) day=1;mon++;} 
					else {if(day==28) day=1;mon++;}
					PutNumXY_LCD(6,0,mon,2);break;	
	 	case 4 :															
		case 6 :
	 	case 9 :
	 	case 11: if(day==30){day=1;mon++;}PutNumXY_LCD(6,0,mon,2);break;	
	 	}
	 }
	 else {mon=1;year++;}
	 PutNumXY_LCD(1,0,year,4);//输出年
	 PutStrXY_LCD(5,0," ");
	 PutStrXY_LCD(8,0," ");
	 PutStrXY_LCD(11,0," ");
	 PutStrXY_LCD(9,1," ");
	 PutStrXY_LCD(15,1," ");
 
	if(p17==0)	//停止计时
	{
	TR0=0;
	p17=1;
	}
	if(p16==0) //开始计时
	{
	TR0=1;
	p16=1;
  	}
	if(TR0==0) PutStrXY_LCD(13,0,"P");	//暂停显示
	else PutStrXY_LCD(13,0," ");
	if(p15==0) //设置选择
	{
	 delayms(100);
	 if(p15==0)
	 set++;
	 printf("haha\n");	
 	 }
	 if(set==6) set=0 ;	//自动清零
	 if(set==1)			//设置输出
	 {
	 	PutStrXY_LCD(10,1,"S");
		PutStrXY_LCD(11,1,"E");
		PutStrXY_LCD(12,1,"T");
		PutStrXY_LCD(13,1,":");
		PutStrXY_LCD(14,1,"m");
	 }
	 	 if(set==2)			
	 {
	 	PutStrXY_LCD(10,1,"S");
		PutStrXY_LCD(11,1,"E");
		PutStrXY_LCD(12,1,"T");
		PutStrXY_LCD(13,1,":");
		PutStrXY_LCD(14,1,"h");
	 }
	 	 if(set==3)			
	 {
	 	PutStrXY_LCD(10,1,"S");
		PutStrXY_LCD(11,1,"E");
		PutStrXY_LCD(12,1,"T");
		PutStrXY_LCD(13,1,":");
		PutStrXY_LCD(14,1,"d");
	 }
	 	 if(set==4)			
	 {
	 	PutStrXY_LCD(10,1,"S");
		PutStrXY_LCD(11,1,"E");
		PutStrXY_LCD(12,1,"T");
		PutStrXY_LCD(13,1,":");
		PutStrXY_LCD(14,1,"M");
	 }
	 	 if(set==5)			
	 {
	 	PutStrXY_LCD(10,1,"S");
		PutStrXY_LCD(11,1,"E");
		PutStrXY_LCD(12,1,"T");
		PutStrXY_LCD(13,1,":");
		PutStrXY_LCD(14,1,"y");
	 }
	 
	 if(set==0) 
	 {
	 	PutStrXY_LCD(10,1,"H");
		PutStrXY_LCD(11,1,"e");
		PutStrXY_LCD(12,1,"l");
		PutStrXY_LCD(13,1,"l");	
	    PutStrXY_LCD(14,1,"o");
	 }

	 if(set==1)	    //设置分钟
	 	{	 
		if(p14==0) 
		{
		delayms(100);
		if(p14==0)
		min++;
		}
		}
	 if(set==2)		 //设置小时
	   {
	    if(p14==0) 
		{
		delayms(100);
		if(p14==0)
		hour++;
	    }
	   } 		    	 //设置天
	 if(set==3)
		{
		if(p14==0) 
		{
		delayms(100);
		if(p14==0)
		day++;
		}
		}
	 if(set==4)			 //设置月
		 {
		if(p14==0) 
		{
		delayms(100);
		if(p14==0)
		mon++;
		 }
		 }
		  if(set==5)	//设置年
		 {
		if(p14==0) 
		{
		delayms(100);
		if(p14==0)
		year++;
		 }
		 }
  }

 }

⌨️ 快捷键说明

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