📄 led2.lst
字号:
238 1
239 1 {
240 1 /*------------------------------------------------------------------------------
241 1 ; 源文件 / 文字: 镇
C51 COMPILER V8.05a LED2 09/21/2008 11:39:51 PAGE 5
242 1 ; 宽×高(像素) : 16×16
243 1 ------------------------------------------------------------------------------*/
244 1 0x10,0x20,0x10,0x24,0x13,0xFE,0x1C,0x20,0x21,0xFC,0x21,0x04,0x7D,0xFC,0x91,0x04,
245 1 0x11,0xFC,0xFD,0x04,0x11,0xFC,0x11,0x04,0x17,0xFE,0x18,0x88,0x11,0x06,0x02,0x02
246 1
247 1 },
248 1
249 1 {
250 1 /*------------------------------------------------------------------------------
251 1 ; 源文件 / 文字: 杰
252 1 ; 宽×高(像素) : 16×16
253 1 ------------------------------------------------------------------------------*/
254 1 0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x20,0x11,0x10,
255 1 0x21,0x0E,0xC1,0x04,0x01,0x00,0x00,0x00,0x24,0x90,0x22,0x48,0x22,0x44,0x40,0x04
256 1
257 1 },
258 1
259 1 {
260 1 /*------------------------------------------------------------------------------
261 1 ; 源文件 / 文字: .
262 1 ; 宽×高(像素) : 16×16
263 1 ------------------------------------------------------------------------------*/
264 1 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
265 1 0x00,0x00,0x00,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x00,0x00
266 1
267 1 }
268 1 };
269 1 register unsigned char i,j,k,l;
270 1 uchar ucAddr = 0x81;
271 1 SCON=0x00; //串口工作模式0:移位寄存器方式
272 1 TMOD=0x01; //定时器T0工作在试1:16位方式
273 1 TR0=1; //启动定时器
274 1 P1=0x3f; //P1口初值允许接收,锁存,显示
275 1 IE=0x82; //允许定时器T0中断
276 1 Set1302(inittime); //初始化
277 1 W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
278 1 W1302(0x90,0xa5); //打开充电二级管 一个二级管串联一个2K电阻
279 1 du1302(); //读取 秒 分 时 日 月 星期 年
280 1 while(1)
281 1 {
282 2 delay(2000); //延时2S
283 2 /*for(i=0;i<32;i++) //显示效果:卷帘出
284 2 {
285 2 dispram[i]=Bmp[1][i];
286 2
287 2 if(i%2)delay(100);
288 2 }
289 2 delay(100);*/
290 2
291 2
292 2 for(i=0;i<9;i++) //显示效果:左移
293 2 {
294 3 for(j=0;j<2;j++)
295 3 for(k=1;k<9;k++)
296 3 {
297 4 for(l=0;l<16;l++)
298 4 {
299 5 dispram[l*BLKN]=dispram[l*BLKN]
300 5 <<1|dispram[l*BLKN+1]>>7;
301 5 dispram[l*BLKN+1]=dispram[l*BLKN+1]
302 5 <<1|dispram0[l*BLKN]>>7;
303 5 dispram0[l*BLKN]=dispram0[l*BLKN]
C51 COMPILER V8.05a LED2 09/21/2008 11:39:51 PAGE 6
304 5 <<1|dispram0[l*BLKN+1]>>7;
305 5 dispram0[l*BLKN+1]=dispram0[l*BLKN+1]
306 5 <<1|Bmp[i][l*BLKN+j]>>(8-k);
307 5 }
308 4 delay(100);
309 4 }
310 3 }
311 2 delay(100);
312 2
313 2
314 2 du1302(); // 读时间
315 2 for(i=0;i<11;i++)
316 2 {
317 3 if(i==3)
318 3 {
319 4 showtime(Year);
320 4 }
321 3 if(i==4)
322 3 {
323 4 showtime(Month);
324 4 }
325 3 if(i==5)
326 3 {
327 4 showtime(Day);
328 4 }
329 3 if(i==6)
330 3 {
331 4 showtime(Hour);
332 4 }
333 3 if(i==7)
334 3 {
335 4 showtime(Cent);
336 4 }
337 3 if(i==8)
338 3 {
339 4 showtime(Sec);
340 4 }
341 3 if(i==10)
342 3 {
343 4 for(j=0;j<2;j++)
344 4 for(k=1;k<9;k++)
345 4 {
346 5 for(l=0;l<16;l++)
347 5 {
348 6 dispram[l*BLKN]=dispram[l*BLKN]
349 6 <<1|dispram[l*BLKN+1]>>7;
350 6 dispram[l*BLKN+1]=dispram[l*BLKN+1]
351 6 <<1|dispram0[l*BLKN]>>7;
352 6 dispram0[l*BLKN]=dispram0[l*BLKN]
353 6 <<1|dispram0[l*BLKN+1]>>7;
354 6 dispram0[l*BLKN+1]=dispram0[l*BLKN+1]
355 6 <<1|xinqi[Week%16][l*BLKN+j]>>(8-k);
356 6 }
357 5 delay(100);
358 5 }
359 4 }
360 3 for(j=0;j<2;j++)
361 3 for(k=1;k<9;k++)
362 3 {
363 4 for(l=0;l<16;l++)
364 4 {
365 5 dispram[l*BLKN]=dispram[l*BLKN]
C51 COMPILER V8.05a LED2 09/21/2008 11:39:51 PAGE 7
366 5 <<1|dispram[l*BLKN+1]>>7;
367 5 dispram[l*BLKN+1]=dispram[l*BLKN+1]
368 5 <<1|dispram0[l*BLKN]>>7;
369 5 dispram0[l*BLKN]=dispram0[l*BLKN]
370 5 <<1|dispram0[l*BLKN+1]>>7;
371 5 dispram0[l*BLKN+1]=dispram0[l*BLKN+1]
372 5 <<1|Timename[i][l*BLKN+j]>>(8-k);
373 5 }
374 4 delay(100);
375 4 }
376 3 }
377 2
378 2
379 2
380 2
381 2
382 2
383 2
384 2 for(i=0;i<32;i++) //显示效果:卷帘入
385 2 {
386 3 dispram[i]=0;
387 3 dispram0[i]=0;
388 3 if(i%2)delay(100);
389 3 }
390 2 }
391 1 }
392 /*-------------延时------------*/
393 void delay(unsigned int dt)
394 {
395 1 register unsigned char bt;
396 1 for(;dt;dt--)
397 1 for(bt=0;bt<225;bt++);
398 1 }
399 /*-------显示屏扫描(定时器T0中断)函数-------------*/
400 void leddisplay(void) interrupt 1 using 1
401 {
402 1 register unsigned char i,j=BLKN;
403 1 TH0=0xf8; //设定显示屏刷新率每秒62.5帧
404 1 TL0=0x30;
405 1 i=P1; //读出当前显示的行号
406 1 i=++i&0x0f; //行号加1屏蔽高四位
407 1 do
408 1 {
409 2 j--;
410 2 SBUF=~dispram0[i*BLKN+j]; //送显示数据
411 2 while (!TI);TI=0;
412 2 }
413 1 while(j); //完成一行数据传输
414 1 j=BLKN;
415 1 do
416 1 {j--;
417 2 SBUF=~dispram[i*BLKN+j];
418 2 while(!TI);TI=0;
419 2 }
420 1 while(j);
421 1 G=1; //消隐(关闭显示)
422 1 P1&=0xf0; //行号端清0
423 1 RCLK=1; //显示数据输出到锁存寄存器
424 1 P1 |=i; //写入行号
425 1 RCLK=0; //锁存器显示数据
426 1 G=0; //打开显示
427 1 }
C51 COMPILER V8.05a LED2 09/21/2008 11:39:51 PAGE 8
428
429 //********DS1302读写程序***************//
430 /********************************************************************
431 函 数 名:RTInputByte()
432 功 能:实时时钟写入一字节
433 说 明:往DS1302写入1Byte数据 (内部函数)
434 入口参数:d 写入的数据
435 返 回 值:无
436 ***********************************************************************/
437 void RTInputByte(uchar d)
438 {
439 1 uchar h;
440 1 ACC = d;
441 1 for(h=8; h>0; h--)
442 1 {
443 2 T_IO = ACC0; /*相当于汇编中的 RRC */
444 2 T_CLK = 1;
445 2 T_CLK = 0;
446 2 ACC = ACC >> 1;
447 2 }
448 1 }
449 /********************************************************************
450 函 数 名:RTOutputByte()
451 功 能:实时时钟读取一字节
452 说 明:从DS1302读取1Byte数据 (内部函数)
453 入口参数:无
454 返 回 值:ACC
455 设 计:zhaojunjie 日 期:2002-03-19
456 修 改: 日 期:
457 ***********************************************************************/
458 uchar RTOutputByte(void)
459 {
460 1 uchar h;
461 1 for(h=8; h>0; h--)
462 1 {
463 2 ACC = ACC >>1; /*相当于汇编中的 RRC */
464 2 ACC7 = T_IO;
465 2 T_CLK = 1;
466 2 T_CLK = 0;
467 2 }
468 1 return(ACC);
469 1 }
470 /********************************************************************
471 函 数 名:W1302()
472 功 能:往DS1302写入数据
473 说 明:先写地址,后写命令/数据 (内部函数)
474 调 用:RTInputByte() , RTOutputByte()
475 入口参数:ucAddr: DS1302地址, ucData: 要写的数据
476 返 回 值:无
477 ***********************************************************************/
478 void W1302(uchar ucAddr, uchar ucDa)
479 {
480 1 T_RST = 0;
481 1 T_CLK = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -