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

📄 timer.c

📁 定时设计一个单片机控制的简易定时报警器。要求根据设定的初始值(59-1秒)进行倒计时
💻 C
字号:
/********************************************************************/
/**                                                                **/
/**             用单片机控制的简易定时器报警器                     **/
/**             初始值为59-1S,进行倒计时。                         **/
/**				一共有s1,s2,s3,s4三个按键                          **/
/**             s1:设定键                                         **/
/**				s2:确定键                                         **/
/**				s3:递增键                                         **/
/**				s4:递减键                                         **/                                    
/**                                                                **/
/**             当计时到00时,数码管闪烁00,以1Hz进行闪烁          **/
/**             P1口接彩灯                                         **/
/**作  者: 窦颖艳         2008年11月1日于冶金学院实训楼1           **/				  
/**                                                                **/
/********************************************************************/

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9段选
uchar code tab1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位选

sbit s1=P3^0;
sbit s2=P3^1;
sbit s3=P3^2;
sbit s4=P3^3;

char temp;
uchar aa,num,s1num;

void delay(uint z);
void display(uchar temp);
void flash(uchar cnt);
void init();
void keyscan();

void delay(uint z)
{
	uint x,y;
	for(x=z;x--;x>0)
	for(y=110;y--;y>0)
	{;}		
}
void display(uchar temp)
{
	uchar shi,ge;
	shi=temp/10;
	ge=temp%10;
	
	P0=tab[shi];
	P2=0xff;
	P2=tab1[6];
	delay(5);
	
	P0=tab[ge];
	P2=tab1[7];
	delay(5);
}
void flash(uchar cnt)
{
	uchar a;
	for(a=1;a<=cnt;a++)
	{
	  P2=0xff;
	  delay(1000);
	  P2=0xfc;
	  delay(1000);
	}
}

void timer0() interrupt 1
{
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	aa++;
	if(aa==20)
		{
			aa=0;
			temp--;
			if(temp==-1)
			{	
			 temp=0;
			 TR0=0;
			 flash(80); 
			}
			 
		}		
}

void init()
{
	TMOD=0x01;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	EA=1;
	ET0=1;
	TR0=1;
	num=0;
	temp=59;

}

void keyscan()
{
	if(s1==0)
	{
		delay(20);
		if(s1==0)
		{
			s1num++;
			while(!s1);
			if(s1num==1)
				{
					TR0=0;						
				}
		}

	}
	    if(s1num!=0)
		{
			if(s3==0)
			{
			    delay(20);
				{
				   if(s3==0)
					{
						while(!s3);
						if(s1num==1)
						temp++;
						
					}
				}
			
			}
		    if(s4==0)
			{
			    delay(20);
				if(s4==0)
				{
					while(!s4);
					if(s1num==1)
					temp--;
				}
			}


		}
	
			if(s2==0)
			{
				delay(20);
				if(s2==0)
				{
					while(!s2);
					TR0=1;						
				}
			}
}	

void main()
{	
	init();
	while(1)
	{
	keyscan();	
	display(temp);	
	}
		

}
   

⌨️ 快捷键说明

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