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

📄 clc.c

📁 数字时钟--51单片机 可以用KEY调整时间
💻 C
字号:
#include <reg51.h>
#include "seg_trd.c"

#define uchar unsigned char
#define uint unsigned int

sbit bell = P1^1;

uchar num;
char sec,min,hor;

void delay(uchar t)
{
	unsigned char i, j;
	for(i=255; i>0; i--)
		for(j=t; j>0; j--);
}
uchar key_press(void)//返回1,则有按键按下
{
	uchar i;
	i = P3;
	i&=0X3C;
	if(i==0X3C)
	{
	  return 0;
	}
	else
	{
	 return 1;
	}
}
uchar key_scan(void)
{
	uchar key;
	TR0 = 0;
	delay(1);
if(key_press())//判断按键是否真的按下
	{
	key=P3;
	key&=0X3C;
	switch(key)
	{
	   case 0X38: 
	      min++;
		  if(min==60)min=0;

		   break;
	   case 0X34:
		  min--;if(min<0)min=59;

		   break;
	   	 case 0X2C: 
		  hor++;if(hor==24)hor=0;

		   break;
	   case 0X1C:
		  hor--;if(hor<0)hor=23;

		   break; 
		default:	
	       break;
	}
	  while(key_press());//等待按键松开
	}
	TR0 = 1;
}
void timer0_ovf_isr(void) interrupt 1
{
	TH0 = 0X4C;//4C00
	TL0 = 0X0C;
	num++;
	if(num==20)
	{
	 num = 0;
	 sec++;
		if(sec==60)
		{
		 sec=0;
		 min++;
			if(min==60)
				{	
				 min=0;
				 hor++;
				 if(hor==24)
					{
					 hor=0;
					}
				}	
		}
	}
}
void main()
{
	EA = 1;
	TMOD = 0X01;//T0 方式1
	TH0 = 0X4C;
	TL0 = 0X0C;//初值
	ET0 = 1;//溢出使能
	TR0 = 1;//开始计时
	while(1)
	{
	 if(key_press())//判断是否有按键按下
	  {
	     key_scan();
	   }	
	 display_sec(sec);
	 display_min(min);
	 display_hor(hor);
	}
}

⌨️ 快捷键说明

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