//design by Mr zhen
//date:2009-05-10
//采用4-4矩阵键盘中的三个作为按键
#include <reg52.h>
#include <stdio.h>
#include"ds1302.h"
#include"lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
uchar temp,num=0,s=0;
sbit key_set=P0^4; //功能设计键
sbit key_up=P0^5;//上调
sbit key_down=P0^6;//下调
uchar flag,flag_up,flag_down,id,flag_set,f1,f2,id1[1];//转换标志
uchar ucCurtime[7],times[10],date[12];
uchar inittime[7]={0x00,0x15,0x17,0x10,0x05,0x01,0x09};//初始化时间09年5月9日下午17点31分00秒
void change();
void disp_time(void);
void disp_set(void);
void set(void);
void main()
{
LCD_init();
v_setd1302(inittime);
delay(100);
while(1)
{
set();
disp_time();
}
}
void set (void) //功能设置程序
{
P0=0xf7;
//test(key_set); //检测按键1是否按下
if (key_set==0)
{
flag_set=1;
f1=1;
delay(10);
disp_set();
if(key_set==0)
{
flag_set=1; //真正按下则置标志1
while(key_set==0);
}
}
if(flag_set==1) //如果设置键1按下
{while(flag_set==1)//等待设置键1再次按下之前测试键2、3的功能选择
{//test(key_up);
if (key_up==0)
{
delay(10);
if(key_up==0)
{flag=1; //真正按下则置标志1
while(key_up==0);
}
}
flag_up=flag;
flag=0;
if(flag_up==1) //键2功能选择键的功能加1,转向下一功能设置
{id++;
delay(10);
flag_up=0;
if (id==5) //功能循环选择
{id=0;}
}
//test(key_down);
if (key_down==0)
{delay(10);
if(key_down==0)
{flag=1; //真正按下则置标志1
while(key_down==0);
}
}
flag_down=flag;
flag=0;
if(flag_down==1) //键3功能选择键的功能减1,转向上一功能设置
{id--;
delay(10);
flag_down=0;
if (id==0xff) //功能循环选择
{id=4;}
}
//test(key_set);
if (key_set==0)
{delay(10);
if(key_set==0)
{flag=1; //真正按下则置标志1
while(key_set==0);
}
}
flag_set=!flag; //键1再次按下则flag_set=!flag=0,退出该while循环
flag=0;
disp_set();
}
while(flag_set==0) //等待设置键1第三次按下之前测试键2、3进行各项数据的加减调整
{
switch(id)
{
case 0: //test(key_up); //调年加
if (key_up==0)
{delay(20);
if(key_up==0)
{flag=1; //真正按下则置标志1
while(key_up==0);
}
}
flag_up=flag;
flag=0;
if(flag_up==1)
{inittime[6]++;
if(inittime[6]==0x0a)
{inittime[6]=0x10;}
if(inittime[6]==0x1a)
{inittime[6]=0x20;}
if(inittime[6]==0x2a)
{inittime[6]=0x30;}
if(inittime[6]==0x3a)
{inittime[6]=0x40;}
if(inittime[6]==0x4a)
{inittime[6]=0x50;}
if(inittime[6]==0x5a)
{inittime[6]=0;}
}
// test(key_down); //调年减
if (key_down==0)
{delay(10);
if(key_down==0)
{flag=1; //真正按下则置标志1
while(key_down==0);
}
}
flag_down=flag;
flag=0;
if(flag_down==1)
{inittime[6]--;
if(inittime[6]==0x0f)
{inittime[6]=0x09;}
if(inittime[6]==0x1f)
{inittime[6]=0x19;}
if(inittime[6]==0x2f)
{inittime[6]=0x29;}
if(inittime[6]==0x3f)
{inittime[6]=0x39;}
if(inittime[6]==0x4f)
{inittime[6]=0x49;}
if(inittime[6]==0xff)
{inittime[6]=0x59;}
}
v_setd1302(inittime);
break;
case 1: //test(key_up); //调月份加
if (key_up==0)
{delay(10);
if(key_up==0)
{flag=1; //真正按下则置标志1
while(key_up==0);
}
}
flag_up=flag;
flag=0;
if(flag_up==1)
{ inittime[4]++;
if(inittime[4]==0x0a) //完成进制的转换
{inittime[4]=0x10;}
if(inittime[4]==0x13)
{inittime[4]=0x00;}
}
//test(key_down); //调月份减
if (key_down==0)
{delay(10);
if(key_down==0)
{flag=1; //真正按下则置标志1
while(key_down==0);
}
}
flag_down=flag;
flag=0;
if(flag_down==1)
{ inittime[4]--;
if(inittime[4]==0x0f) //完成进制的转换
{inittime[4]=0x09;}
if(inittime[4]==0xff)
{inittime[4]=0x12;}
}
v_setd1302(inittime);
break;
case 2: //test(key_up); //调日期加
if (key_up==0)
{delay(10);
if(key_up==0)
{flag=1; //真正按下则置标志1
while(key_up==0);
}
}
flag_up=flag;
flag=0;
if(flag_up==1)
{inittime[3]++;
if(inittime[3]==0x0a)
{inittime[3]=0x10;}
if(inittime[3]==0x1a)
{inittime[3]=0x20;}
if(inittime[3]==0x2a)
{inittime[3]=0x30;}
if(inittime[3]==0x32)
{inittime[3]=0x00;}
}
// test(key_down); //调日期减
if (key_down==0)
{delay(10);
if(key_down==0)
{flag=1; //真正按下则置标志1
while(key_down==0);
}
}
flag_down=flag;
flag=0;
if(flag_down==1)
{inittime[3]--;
if(inittime[3]==0x0f)
{inittime[3]=0x09;}
if(inittime[3]==0x1f)
{inittime[3]=0x19;}
if(inittime[3]==0x2f)
{inittime[3]=0x29;}
if(inittime[3]==0xff)
{inittime[3]=0x31;}
}
v_setd1302(inittime);
break;
case 3: //test(key_up); // 调时加
if (key_up==0)
{delay(10);
if(key_up==0)
{flag=1; //真正按下则置标志1
while(key_up==0);
}
}
flag_up=flag;
flag=0;
if(flag_up==1)
{ inittime[2]++;
if(inittime[2]==0x0a) //完成进制的转换
{inittime[2]=0x10;}
if(inittime[2]==0x1a)
{inittime[2]=0x20;}
if(inittime[2]==0x24)
{inittime[2]=0;}
}
//test(key_down); //调时减
if (key_down==0)
{delay(10);
if(key_down==0)
{flag=1; //真正按下则置标志1
while(key_down==0);
}
}
flag_down=flag;
flag=0;
if(flag_down==1)
{ inittime[2]--;
if(inittime[2]==0x0f) //完成进制的转换
{inittime[2]=0x09;}
if(inittime[2]==0x1f)
{inittime[2]=0x19;}
if(inittime[2]==0xff)
{inittime[2]=0x23;}
}
v_setd1302(inittime);
break;
case 4: //test(key_up); //调分加
if (key_up==0)
{delay(10);
if(key_up==0)
{flag=1; //真正按下则置标志1
while(key_up==0);
}
}
flag_up=flag;
flag=0;
if(flag_up==1)
{inittime[1]++;
if(inittime[1]==0x0a)
{inittime[1]=0x10;}
if(inittime[1]==0x1a)
{inittime[1]=0x20;}
if(inittime[1]==0x2a)
{inittime[1]=0x30;}
if(inittime[1]==0x3a)
{inittime[1]=0x40;}
if(inittime[1]==0x4a)
{inittime[1]=0x50;}
if(inittime[1]==0x5a)
{inittime[1]=0;}
}
// test(key_down); //调分减
if (key_down==0)
{delay(10);
if(key_down==0)
{flag=1; //真正按下则置标志1
while(key_down==0);
}
}
flag_down=flag;
flag=0;
clock_key4_4.rar_at89s52 clock
版权申诉
37 浏览量
2022-09-19
14:52:45
上传
评论
收藏 32KB RAR 举报
weixin_42651887
- 粉丝: 80
- 资源: 1万+
最新资源
- 基于flask,Navicat和爬虫的可视化岗位分析网站.zip
- 部署yolov10的ncnn模型到android源码+模型+项目说明.zip
- Go语言网络层脚手架代码资料项目间共用的网络层.zip
- 基于monaco-editor的sql编辑器,支持sql语法联想、高亮.zip
- 网络安全相关的RSS订阅列表资料.zip
- 用Vue.js开发微信app项目源代码资料.zip
- 基于YOLO-V4算法与Pytorch的视频多目标跟踪系统的开发.zip
- 雾霾分析的MATLAB GUI仿真程序.zip
- 基于react的618节日网页全屏祝福.zip
- 基于ggml+C++部署Vision-Transformer算法-无依赖+轻量化+4bit+8bit量化源码+项目说明.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0