📄 万年历.lst
字号:
184 1 databuffer[7]=hour/10;
185 1 databuffer[8]=day%10;
186 1 databuffer[9]=day/10;
187 1 databuffer[10]=month%10;
188 1 databuffer[11]=month/10;
189 1 databuffer[12]=year%10;
190 1 databuffer[13]=year/10;
191 1 }
192 /**************************液晶数据显示**************************/
193 void disp() //显示程序
194 {
195 1 uchar j=0;
196 1 lcd_write_com(0x80+0x40); //设置指针地址为第二行
197 1 lcd_write_data(word[databuffer[7]]); //小时十位
198 1 lcd_write_data(word[databuffer[6]]); //小时个位
199 1 lcd_write_data(word[databuffer[5]]);
200 1 lcd_write_data(word[databuffer[4]]); //分十位
201 1 lcd_write_data(word[databuffer[3]]); //分个位
202 1 lcd_write_data(word[databuffer[2]]);
203 1 lcd_write_data(word[databuffer[1]]); //秒十位
204 1 lcd_write_data(word[databuffer[0]]); //秒个位
205 1 lcd_write_com(0x80+0x03); //设置指针地址为第一行
206 1 lcd_write_data(word[databuffer[13]]); //年十位
207 1 lcd_write_data(word[databuffer[12]]); //年个位
208 1 lcd_write_data(word[12]);
209 1 lcd_write_data(word[databuffer[11]]); //月十位
210 1 lcd_write_data(word[databuffer[10]]); //月个位
211 1 lcd_write_data(word[12]);
212 1 lcd_write_data(word[databuffer[9]]); //日十位
213 1 lcd_write_data(word[databuffer[8]]); //日个位
214 1 lcd_write_com(0x80+0x0c);
215 1 for(j=0;j<3;j++)
216 1 {
217 2 lcd_write_data( week[weekday-1][j]);
218 2 }
219 1 }
220 /******************************键盘扫描*****************************/
221 void keyboard()
222 {
223 1 if(key_1==0)
224 1 {
225 2 delay(10);
226 2 if(key_1==0)
227 2 {
228 3 count++; //按键计数,设置模式
229 3 while(!key_1);
230 3 flag=1;
231 3 flag1=0;
232 3 read_ds(0x0c);
233 3 while(!key_1);
234 3 if(count==1) //key_1键摁一次
235 3 {
236 4 lcd_write_com(0xc0+7); //设置光标为秒位置
237 4 lcd_write_com(0x0e);
238 4 }
239 3
240 3 if(count==2) //key_1键摁两次
C51 COMPILER V9.00 万年繽 06/09/2013 23:40:22 PAGE 5
241 3 {
242 4 lcd_write_com(0xc0+4); //设置光标为分位置
243 4 }
244 3 if(count==3) //key_1键摁三次
245 3 {
246 4 lcd_write_com(0xc0+1); //设置光标为时位置
247 4 }
248 3 if(count==4) //key_1键摁三次
249 3 {
250 4 lcd_write_com(0x80+0x09); //设置光标为日位置
251 4 }
252 3 if(count==5) //key_1键摁三次
253 3 {
254 4 lcd_write_com(0x80+0x06); //设置光标为月位置
255 4 }
256 3 if(count==6) //key_1键摁三次
257 3 {
258 4 lcd_write_com(0x80+0x03); //设置光标为年位置
259 4 }
260 3 if(count==7) //key_1键摁三次
261 3 {
262 4 lcd_write_com(0x80+0x01); //设置光标为年位置
263 4 }
264 3 if(count==8) //key_1键摁四次
265 3 {
266 4 count=0; //摁键次数清零
267 4 lcd_write_com(0x0f); //光标不显示
268 4 write_ds(0x00,second);
269 4 write_ds(0x02,min);
270 4 write_ds(0x04,hour);
271 4 write_ds(0x06,weekday);
272 4 write_ds(0x07,day);
273 4 write_ds(0x08,month);
274 4 write_ds(0x09,year);
275 4 flag=0;
276 4 delay(200);
277 4 }
278 3 }
279 2 }
280 1 if(count!=0) //key_1键摁后处理
281 1 {
282 2 if(key_2==0) //key_2键摁下处理
283 2 {
284 3 delay(10);
285 3 if(key_2==0)
286 3 {
287 4 while(!key_2);
288 4 if(count==1) //key_1键摁一次
289 4 {
290 5 second++; //秒加一
291 5 if(second==60)
292 5 second=0;
293 5 newbuf();
294 5 disp();
295 5 lcd_write_com(0xc0+7);
296 5
297 5
298 5 }
299 4 if(count==2) //key_1键摁两次
300 4 {
301 5 min++; //分加一
302 5 if(min==60)
C51 COMPILER V9.00 万年繽 06/09/2013 23:40:22 PAGE 6
303 5 min=0;
304 5 newbuf();
305 5 disp();
306 5 lcd_write_com(0xc0+4);
307 5 }
308 4 if(count==3) //key_1键摁三次
309 4 {
310 5 hour++; //时加一
311 5 if(hour==24)
312 5 hour=0;
313 5 newbuf();
314 5 disp();
315 5 lcd_write_com(0xc0+1);
316 5 }
317 4 if(count==4) //key_1键摁四次
318 4 {
319 5 day++; //日加一
320 5 if(day==32)
321 5 day=1;
322 5 newbuf();
323 5 disp();
324 5 lcd_write_com(0x80+0x09);
325 5 }
326 4 if(count==5) //key_1键摁五次
327 4 {
328 5 month++; //月加一
329 5 if(month==13)
330 5 month=1;
331 5 newbuf();
332 5 disp();
333 5 lcd_write_com(0x80+0x06);
334 5 }
335 4 if(count==6) //key_1键摁六次
336 4 {
337 5 year++; //年加一
338 5 if(year==100)
339 5 year=0;
340 5 newbuf();
341 5 disp();
342 5 lcd_write_com(0x80+0x03);
343 5 }
344 4 if(count==7) //key_1键摁六次
345 4 {
346 5 weekday++; //年加一
347 5 if(weekday==8)
348 5 weekday=1;
349 5 disp();
350 5 lcd_write_com(0x80+0x0c);
351 5 delay(200);
352 5 }
353 4 }
354 3 }
355 2 if(key_3==0) //key_3键摁下处理
356 2 {
357 3 delay(10);
358 3 if(key_3==0)
359 3 {
360 4 while(!key_3);
361 4 if(count==1) //key_1键摁一次
362 4 {
363 5 second--; //秒减一
364 5 if(second==-1)
C51 COMPILER V9.00 万年繽 06/09/2013 23:40:22 PAGE 7
365 5 second=59;
366 5 newbuf();
367 5 disp();
368 5 lcd_write_com(0xc0+7);
369 5 }
370 4 if(count==2) //key_1键摁两次
371 4 {
372 5 min--; //分减一
373 5 if(min==-1)
374 5 min=59;
375 5 newbuf();
376 5 disp();
377 5 lcd_write_com(0xc0+4);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -