📄 text1.lst
字号:
238 void PCF8563_wr_time()
239 {
240 1 tim_wr_buffer[0] = 0x00; //second
241 1 tim_wr_buffer[1] = 0x11; //minute
C51 COMPILER V8.09 TEXT1 06/22/2011 21:07:37 PAGE 5
242 1 tim_wr_buffer[2] = 0x22; //hour
243 1
244 1 tim_wr_buffer[3] = 0x15; //day
245 1 tim_wr_buffer[4] = 0x03; //weekday
246 1 tim_wr_buffer[5] = 0x06; //month
247 1 tim_wr_buffer[6] = 0x10; //year
248 1
249 1
250 1 PCF8563_write_n_byte(1,2,tim_wr_buffer,8);
251 1 }
252
253 void PCF8563_rd_time()
254 {
255 1 uchar temp;
256 1
257 1 PCF8563_read_n_byte(1,2,9);
258 1
259 1 time.second = ((tim_rd_buffer[1]&0x70)>>4)*10 + (tim_rd_buffer[1]&0x0f); //second
260 1 time.minute = ((tim_rd_buffer[2]&0x70)>>4)*10 + (tim_rd_buffer[2]&0x0f); //minute
261 1 time.hour = ((tim_rd_buffer[3]&0x30)>>4)*10 + (tim_rd_buffer[3]&0x0f); //hour
262 1 time.day = ((tim_rd_buffer[4]&0x30)>>4)*10 + (tim_rd_buffer[4]&0x0f); //day
263 1 time.weekday = tim_rd_buffer[5]&0x07; //weekday
264 1 time.month = ((tim_rd_buffer[6]&0x10)>>4)*10 + (tim_rd_buffer[6]&0x0f); //month
265 1
266 1 temp = (tim_rd_buffer[4]&0x80)>>7;
267 1 time.year = (temp+19)*100+((tim_rd_buffer[7]&0x70)>>4)*10 + (tim_rd_buffer[7]&0x0f); //year
268 1
269 1 lcd16_1[0] = time.hour/10+0x30; //hour
270 1 lcd16_1[1] = time.hour%10+0x30;
271 1 lcd16_1[2] = '-';
272 1 lcd16_1[3] = time.minute/10+0x30; //minute
273 1 lcd16_1[4] = time.minute%10+0x30;
274 1 lcd16_1[5] = '-';
275 1 lcd16_1[6] = time.second/10+0x30; //second
276 1 lcd16_1[7] = time.second%10+0x30;
277 1
278 1 lcd16_2[0] = time.year/1000+0x30; //year
279 1 lcd16_2[1] = (time.year%1000)/100+0x30;
280 1 lcd16_2[2] = (time.year%100)/10+0x30;
281 1 lcd16_2[3] = time.year%10+0x30;
282 1 lcd16_2[4] = '-';
283 1 lcd16_2[5] = time.month/10+0x30; //mon
284 1 lcd16_2[6] = time.month%10+0x30;
285 1 lcd16_2[7] = '-';
286 1 lcd16_2[8] = time.day/10+0x30; //day
287 1 lcd16_2[9] = time.day%10+0x30;
288 1
289 1 lcd16_2[10] = ' ';
290 1 lcd16_2[11] = time.weekday+0x30;
291 1
292 1
293 1 }
294 void w_com(uchar com)
295 {
296 1 //buys();
297 1 RW=0;
298 1 RS=0;
299 1 E=1;
300 1 P0=com;
301 1 E=0;
302 1 }
303
C51 COMPILER V8.09 TEXT1 06/22/2011 21:07:37 PAGE 6
304
305 void w_date(uchar date)
306 {
307 1 //buys();
308 1 RW=0;
309 1 RS=1;
310 1 E=1;
311 1 P0=date;
312 1 E=0;
313 1 }
314
315
316 /*
317 LCD选屏函数
318 */
319 void select_screen(uchar screen)
320 {
321 1 switch(screen)
322 1 {
323 2 case 0: //选择全屏
324 2 CS1=0;
325 2 CS2=0;
326 2 break;
327 2 case 1: //选择左屏
328 2 CS1=0;
329 2 CS2=1;
330 2 break;
331 2
332 2 case 2: //选择右屏
333 2 CS1=1;
334 2 CS2=0;
335 2 break;
336 2 /* case 3: //选择右屏
337 2 CS1=1;
338 2 CS2=1;
339 2 break;
340 2 */
341 2 }
342 1
343 1 }
344
345 /*
346 LCDx向上滚屏显示
347 */
348
349 /*
350 LCD清屏函数:清屏从第一页的第一列开始,总共8页,64列
351 */
352 void clear_screen(screen)
353 {
354 1 int x,y;
355 1 select_screen(screen); //screen:0-选择全屏,1-选择左半屏,2-选择右半屏
356 1 for(x=0xb8;x<0xc0;x++) //从0xb8-0xbf,共8页
357 1 {
358 2 w_com(x);
359 2 w_com(0x40); //列的初始地址是0x40
360 2 for(y=0;y<64;y++)
361 2 {
362 3 w_date(0x00);
363 3
364 3 }
365 2 }
C51 COMPILER V8.09 TEXT1 06/22/2011 21:07:37 PAGE 7
366 1 }
367
368 /*
369 LCD显示汉字字库函数
370 */
371 void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun)
372 { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-3,mun:显示第几个汉字的参数
373 1 int a;
374 1 mun=mun*32;
375 1 select_screen(screen);
376 1 w_com(0xb8+(page*2));
377 1 w_com(0x40+(col*16));
378 1 for ( a=0;a<16;a++)
379 1 {
380 2 w_date(hanzi[mun++]);
381 2
382 2 }
383 1 w_com(0xb8+(page*2)+1);
384 1 w_com(0x40+(col*16));
385 1 for ( a=0;a<16;a++)
386 1 {
387 2 w_date(hanzi[mun++]);
388 2
389 2 }
390 1 }
391
392 void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun)
393 { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数
394 1 int a;
395 1 mun=mun*16;
396 1 select_screen(screen);
397 1 w_com(0xb8+(page*2));
398 1 w_com(0x40+(col*8));
399 1 for ( a=0;a<8;a++)
400 1 {
401 2 w_date(shuzi[mun++]);
402 2
403 2 }
404 1 w_com(0xb8+(page*2)+1);
405 1 w_com(0x40+(col*8));
406 1 for ( a=0;a<8;a++)
407 1 {
408 2 w_date(shuzi[mun++]);
409 2
410 2 }
411 1 }
412
413 /*
414 LCD初始化函数
415 */
416 void lcd_init()
417 {
418 1 w_com(0x3f); //LCD开显示
419 1 w_com(0xc0); //LCD行初始地址,共64行
420 1 w_com(0xb8); //LCD页初始地址,共8页
421 1 w_com(0x40); //LCD列初始地址,共64列
422 1
423 1 }
424
425 /*
426 LCD显示主函数
427 */
C51 COMPILER V8.09 TEXT1 06/22/2011 21:07:37 PAGE 8
428 void main()
429 {
430 1
431 1 lcd_init(); //LCD初始化
432 1 clear_screen(0); //LCD清屏幕
433 1 PCF8563_init();
434 1 PCF8563_wr_time();
435 1 while(1)
436 1 { PCF8563_rd_time();
437 2 lcd_display_shuzi(1,1,0,lcd16_2[0]);
438 2 lcd_display_shuzi(1,1,1,lcd16_2[1]);
439 2 lcd_display_shuzi(1,1,2,lcd16_2[2]);
440 2 lcd_display_shuzi(1,1,3,lcd16_2[3]);
441 2 lcd_display_hanzi(1,1,2,0); //LCD显示汉字
442 2 lcd_display_shuzi(1,1,6,lcd16_2[5]);
443 2 lcd_display_shuzi(1,1,7,lcd16_2[6]);
444 2 lcd_display_hanzi(2,1,0,1);
445 2 lcd_display_shuzi(2,1,2,lcd16_2[8]);
446 2 lcd_display_shuzi(2,1,3,lcd16_2[9]);
447 2 lcd_display_hanzi(2,1,2,2);
448 2 lcd_display_shuzi(1,2,0,lcd16_1[0]);
449 2 lcd_display_shuzi(1,2,1,lcd16_1[1]);
450 2 lcd_display_hanzi(1,2,1,3);
451 2 lcd_display_shuzi(1,2,4,lcd16_1[3]);
452 2 lcd_display_shuzi(1,2,5,lcd16_1[4]);
453 2 lcd_display_hanzi(1,2,3,4);
454 2 lcd_display_shuzi(2,2,0,lcd16_1[6]);
455 2 lcd_display_shuzi(2,2,1,lcd16_1[7]);
456 2 lcd_display_hanzi(2,2,1,5);
457 2
458 2
459 2 }
460 1
461 1 }
462
463
464
465
466
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1361 ----
CONSTANT SIZE = 512 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 72 19
IDATA SIZE = ---- ----
BIT SIZE = 2 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -