📄 memory clockί
字号:
C51 COMPILER V9.00 KEY 10/29/2012 15:18:33 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN Key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>//包含52单片机头文件
2 #include "24c02.h"
3 #include "MacroAndConst.h"
4 #include "Key.h"
5 #include "Lcd.h"
6 #include "Beep.h"
7 #include "main.h"
8 #include "Assistance.h"
9 #include "TimersInit.h"
10
11 char shi1,ge1;
12
13 void monthjudge()
14 {
15 1 if( (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month == 12) && day==32 )
16 1 {
17 2 day=1;
18 2 }
19 1 if( (month==4 || month==6 || month==9 || month==11) && day==31 )
20 1 {
21 2 day=1;
22 2 }
23 1 if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) && day==30 )
24 1 {
25 2 day=1;
26 2 }
27 1 if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) == 0 && day==29)
28 1 {
29 2 day=1;
30 2 }
31 1 }
32
33 void monthjudge1()
34 {
35 1 if( (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month == 12) && day==0 )
36 1 {
37 2 day=31;
38 2 }
39 1 if( (month==4 || month==6 || month==9 || month==11) && day==0 )
40 1 {
41 2 day=30;
42 2 }
43 1 if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) && day==0 )
44 1 {
45 2 day=29;
46 2 }
47 1 if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) == 0 && day==0)
48 1 {
49 2 day=28;
50 2 }
51 1 }
52
53 void keyscan()//按键扫描函数
54 {
55 1 shi1=miao/10;//分解一个2位数的十位和个位
C51 COMPILER V9.00 KEY 10/29/2012 15:18:33 PAGE 2
56 1 ge1=miao%10;
57 1 if(s1==0)
58 1 {
59 2 delay(5);
60 2 if(s1==0)//确认功能键被按下
61 2 { s1num++;//功能键按下次数记录
62 3 while(!s1);//释放确认
63 3 di();//每当有按键释放蜂鸣器发出滴声
64 3 if(s1num==1)//第一次被按下时
65 3 {
66 4 TR0=0; //关闭定时器
67 4 write_com(0x80+0x40+11);//光标定位到秒位置
68 4 write_com(0x0f); //光标开始闪烁
69 4 }
70 3 if(s1num==2)//第一次被按下时
71 3 {
72 4 write_com(0x80+0x40+10);//光标定位到秒位置
73 4 write_com(0x0f); //光标开始闪烁
74 4 }
75 3 if(s1num==3)//第二次按下光标闪烁定位到分钟位置
76 3 {
77 4 write_com(0x80+0x40+7);
78 4 }
79 3 if(s1num==4)//第三次按下光标闪烁定位到小时位置
80 3 {
81 4 write_com(0x80+0x40+4);
82 4 }
83 3 if(s1num==5)//第三次按下光标闪烁定位到星期位置
84 3 {
85 4 write_com(0x80+13);
86 4 }
87 3 if(s1num==6)//第三次按下光标闪烁定位到日期位置
88 3 {
89 4 write_com(0x80+10);
90 4 }
91 3 if(s1num==7)//第三次按下光标闪烁定位到月份位置
92 3 {
93 4 write_com(0x80+7);
94 4 }
95 3 if(s1num==8)//第三次按下光标闪烁定位到年位置
96 3 {
97 4 write_com(0x80+4);
98 4 }
99 3 if(s1num==9)
100 3 {
101 4 write_com(0x80+2);
102 4 }
103 3 if(s1num==10)//第四次按下
104 3 {
105 4 s1num=0;//记录按键数清零
106 4 write_com(0x0c);//取消光标闪烁
107 4 TR0=1; //启动定时器使时钟开始走
108 4 }
109 3 }
110 2 }
111 1 if(s1num!=0)//只有功能键被按下后,增加和减小键才有效
112 1 {
113 2 if(s2==0)
114 2 {
115 3 delay(5);
116 3 if(s2==0)//增加键确认被按下
117 3 {
C51 COMPILER V9.00 KEY 10/29/2012 15:18:33 PAGE 3
118 4 while(!s2);//按键释放
119 4 di();//每当有按键释放蜂鸣器发出滴声
120 4 if(s1num==1)//若功能键第一次按下
121 4 {
122 5
123 5 ge1++; //则调整秒加1
124 5 if(ge1==10)
125 5 {
126 6 ge1=0;
127 6 }
128 5 miao=shi1*10+ge1;
129 5 if(miao==60)//若满60后将清零
130 5 miao=0;
131 5 write_sfm1(11,ge1);//每调节一次送液晶显示一下
132 5 write_com(0x80+0x40+11);//显示位置重新回到调节处
133 5 write_addbyte(1,miao); //数据改变立即存入24C02
134 5 }
135 4 if(s1num==2)//若功能键第一次按下
136 4 {
137 5 shi1++; //则调整秒加10
138 5 if(shi1==6)
139 5 {
140 6 shi1=0;
141 6 }
142 5 miao=shi1*10+ge1;
143 5 if(miao==60)//若满60后将清零
144 5 miao=0;
145 5 write_sfm2(10,shi1);//每调节一次送液晶显示一下
146 5 write_com(0x80+0x40+10);//显示位置重新回到调节处
147 5 write_addbyte(1,miao); //数据改变立即存入24C02
148 5 }
149 4 if(s1num==3)//若功能键第二次按下
150 4 {
151 5 fen++;//则调整分钟加1
152 5 if(fen==60)//若满60后将清零
153 5 fen=0;
154 5 write_sfm(7,fen);//每调节一次送液晶显示一下
155 5 write_com(0x80+0x40+7);//显示位置重新回到调节处
156 5 write_addbyte(2,fen);//数据改变立即存入24C02
157 5 }
158 4 if(s1num==4)//若功能键第三次按下
159 4 {
160 5 shi++;//则调整小时加1
161 5 if(shi==24)//若满24后将清零
162 5 shi=0;
163 5 write_sfm(4,shi);;//每调节一次送液晶显示一下
164 5 write_com(0x80+0x40+4);//显示位置重新回到调节处
165 5 write_addbyte(3,shi);//数据改变立即存入24C02
166 5 }
167 4 if(s1num==5)//若功能键第4次按下
168 4 {
169 5 weekDay++;//则调整星期加1
170 5 if(weekDay==7)//若满6后将清零
171 5 weekDay=0;
172 5 write_weekDay(13,weekDay);
173 5 write_com(0x80+13);//显示位置重新回到调节处
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -