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

📄 clock.c

📁 可调电子时钟:时、分、秒 P3^3:调时按钮 P3^4:调分按钮 P3^5:开始按钮
💻 C
字号:
/*    名称: 时钟
      作者: 松彬
	  创建时间:07-2-19
*/
  
#include "reg51.h"
#include "math.h"

#define uchar unsigned char
#define uint unsigned int
//                     0    1    2    3    4    5    6    7    8    9
uchar code Dispnum[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//                   个位 十位 百位 千位
uchar code numwei[]={0xf7,0xfb,0xfd,0xfe};//显示的位数
sbit hourbutton=P3^3;//调时按钮
sbit minbutton=P3^4;//调分按钮
sbit bebutton=P3^5;//开始按钮
sbit point=P0^7;
bit secmark=0;
uchar DispBuf[4];
uchar sec=0,min=0,hour=0x0c;

void mDelay(uint Delay)       //毫秒延时
{
	uint i;
	for(;Delay>0;Delay--)
	{
		for(i=0;i<124;i++)
		{;}
	}
}

void Timer0() interrupt 1              //定时器0中断
{
    static uint num=0;
	num++;
	if(num>3600)         //1s时间到
	{
		num=0;
		sec++;
		secmark=~secmark;
		if(sec>59)//秒溢出
		{
			min++;
		    sec=0;
			if(min>59)//分溢出
			{
				hour++;
		        min=0;
				if(hour>23)//时溢出
					hour=0;
			}
		}
	}
}

void Init()         //初始化定时器0
{
	TMOD=0x02;
	TH0=0;
	TL0=0;
	ET0=1;
	EA=1;
    TR0=1;
}

void InitBuf()
{
		DispBuf[0]=min%10;
		DispBuf[1]=min/10;
		DispBuf[2]=hour%10;
		DispBuf[3]=hour/10;
}

void main()
{
    static uchar wei;
	while(1)
	{
		InitBuf();
		P2=0xff;
		P0=Dispnum[DispBuf[wei]];
		if(wei==2)
		    point=0;
		P2=numwei[wei];
		wei++;
		if(wei>3)
			wei=0;
		if(hourbutton==0)
		{
			mDelay(200);
			hour++;
			if(hour>23)
				hour=0;
			continue;
		}
		if(minbutton==0)
		{
			mDelay(200);
			min++;
            if(min>59)
				min=0;
			continue;
		}
		if(bebutton==0)
			break;
	}
	Init();
	while(1)
	{
        InitBuf();
		P2=0xff;		
		P0=Dispnum[DispBuf[wei]];
		if(secmark==1&&wei==2)
		    point=0;
		P2=numwei[wei];
		wei++;
		if(wei>3)
			wei=0;
	}
}




⌨️ 快捷键说明

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