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

📄 getkey.h

📁 128*64液晶显示月历模式万年历
💻 H
字号:
#include <reg51.h>
#include <absacc.h>
#include <intrins.h>
#include "LCD.h"

sbit yearUp = P0^7;
sbit yearDown = P0^6;
sbit monthUp = P0^5;
sbit monthDown = P0^4;
sbit dayUp = P0^3;
sbit dayDown = P0^2;

void GetCurrentDay()
{
  uchar a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};                 // 每月天数数组

  ReadSerial(dataBuf);
  currentYear = 2000 + ((dataBuf[6] & 0xf0) >> 4) * 10 + (dataBuf[6] & 0x0f);
  currentMonth = ((dataBuf[4] & 0xf0) >> 4) * 10 + (dataBuf[4] & 0x0f);
  currentDay = ((dataBuf[3] & 0xf0) >> 4) * 10 + (dataBuf[3] & 0x0f);
  n_currentMon = a[currentMonth];
  n_lastMon = a[currentMonth - 1];
}

void KeyDelay(uchar i)
{
	while(i--);
}

void KeyYearUp()
{
  currentYear++;
}

void KeyYearDown()
{
  currentYear--;
}

void KeyMonthUp()
{
  if (currentMonth == 12)
  {
    currentYear++;
    currentMonth = 1;
  }
  else
  {
    currentMonth++;
  }
}

void KeyMonthDown()
{
  if (currentMonth == 1)
  {
    currentYear--;
    currentMonth = 12;
  }
  else
  {
    currentMonth--;
  }
}

void KeyDayUp()
{
  if (currentDay == 1)
  {
    if (currentMonth == 1)                                    /*当前天数为1且当前月为1时:*/
    {                                                         /*变为上年最后一月最后一天*/
      currentYear--;
      currentMonth = 12;
      currentDay = 31;
    }
    else                                                      /*当前天数为1时:*/
    {                                                         /*变为上月最后一天*/
      currentMonth--;
      currentDay = n_lastMon;
    }
  }
  else
  {
    currentDay--;
  }
}

void KeyDayDown()
{
  if (currentDay == n_currentMon)
  {
    if (currentMonth == 12)                                   /*当前天数为本月最后一天且当前月为本年最后一月时:*/
    {                                                         /*变为下年第一月第一天*/
      currentYear++;
      currentMonth = 1;
      currentDay = 1;
    }                                                         /*当前天数为本月最后一天时:*/
    else                                                      /*变为下月第一天*/
    {
      currentMonth++;
      currentDay = 1;
    }
  }
  else
  {
    currentDay++;
  }
}

void GetKeyValue(void)
{
  EA = 0;
//  if ((!yearUp) || (!yearDown) || (!monthUp) || (!monthDown) || (!dayUp) || (!dayDown))
//  {
//    KeyDelay(2000);

    if (!yearUp)
    {
      while (!yearUp)
	  {
	    KeyDelay(1000);
	  }
    KeyYearUp();
    }

    else if (!yearDown)
    {
   	  while (!yearDown)
	  {
	    KeyDelay(1000);
	  }
    KeyYearDown(); 
    }

    else if (!monthUp)
    {
   	  while (!monthUp)
	  {
	    KeyDelay(1000);
	  }
    KeyMonthUp();
    }

    else if (!monthDown)
    {
   	  while (!monthDown)
	  { 
	    KeyDelay(1000);
	  }
    KeyMonthDown();
    }

    else if (!dayUp)
    {
   	  while (!dayUp)
	  {
	    KeyDelay(1000);
	  }
    KeyDayUp();
    }

    else if (!dayDown)
    {
   	  while (!dayDown)
	  {
	    KeyDelay(1000);
	  }
    KeyDayDown();
    }
// }
 EA = 1;
}

⌨️ 快捷键说明

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