?? 萬年歷.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 + -