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

📄 main.c

📁 set(key6) left(key5) right(key4) up(key3) down(key2) OK(key1) 功能一:时钟 时钟计时; 按下set(一次)键即可调时间
💻 C
字号:
#include <reg51.h>

extern void InitT0(void);
extern unsigned char DispBuf[6];
extern bit xTim,xKey;
sbit Voice=P2^4;
extern void KeyPro(void);
extern unsigned char KeySts;
extern unsigned char sec1,min1,hour1;
extern unsigned char Alarm;
extern unsigned char Alarmsec,Alarmmin,Alarmhour;
extern bit p1,p2;
unsigned char sec,min,hour;
unsigned char code table[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};	//显示	
		
void TimUpdate(void)     //时间走时函数
{
    if(++sec==60)
    {
        sec = 0;
        if(++min==60)
        {
            min = 0;
            if(++hour == 24) hour = 0;
        } 
    }
}
void DisplayTim()
{       
        
          DispBuf[0] = table[sec%10];
          DispBuf[1] = table[sec/10];
          DispBuf[2] = table[min%10]&0x7f;
          DispBuf[3] = table[min/10];

		  if((p1==0)||(hour<=12)||(p2==0)||(p2==1))  //按下DOWN或不按键时走24时制           
		  {
          DispBuf[4] = table[hour%10]&0x7f;
          DispBuf[5] = table[hour/10];
		  }
		  if((p1==1)&&(hour>12))                  //按下UP且时间大于12时走12时制
		  {
          DispBuf[4] = table[(hour-12)%10]&0x7f;
          DispBuf[5] = table[(hour-12)/10];
		  }
		  
}

void main(void)
{
    unsigned char i,x;
    x=1;
    for (i=0;i<6;i++) 
	DispBuf[i] = 0xFF;     //全灭
	p1=p2=0;
    Alarm=0;
    sec = 0;
    min = 0;
    hour = 0;
    InitT0();
    KeySts = 0;
    Alarmsec =0;    
    Alarmmin = 0;
    Alarmhour = 0;    // 初始状态
    while(1)
    {
	    
	    
        if(xTim==1)
        {
            if((KeySts>7)||(KeySts==0))  //设置闹钟时走时,设置时钟时不走时 
            {
            xTim = 0;
            TimUpdate();
            if(KeySts==0)
            {DisplayTim();
			P1 = ~x;                 //流水灯  与秒同步
            x <<= 1;
            if (x==0) x = 1;}
            if((sec<6)&&(min==0))      //整点报时(嘀嘀响6次)
               {
			    Voice=0;
			   }
            
            }
        }
        if(xKey)
        {
            xKey = 0;
            KeyPro();                  //调用按键
        }
        if(Alarm==1)                  //闹钟响铃(长响10秒)
        {
	      if((sec-sec1<10)&&(min==min1)&&(hour==hour1))
		  {
		    Voice=0;
		  }
        }
    }
}

⌨️ 快捷键说明

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