📄 test_01.lst
字号:
251 1
252 1 delay5ms();
253 1 //delay5ms();
254 1 //delay5ms();
255 1 LCD_RW=0;
256 1 LCD_RS=0;
257 1 //delay(5);
258 1 LCD_E=1;
259 1 DATABUS=cmd;
260 1 //delay(5);
261 1 LCD_E=0;
262 1 //delay(5);
263 1
264 1 }
265
266 void LcdWriteData(uchar dataW)
267 {
268 1 delay5ms();
269 1 //delay5ms();
270 1 //delay5ms();
271 1 //delay5ms();
272 1 LCD_RW=0;
273 1 LCD_RS=1;
274 1 //delay(5);
275 1 LCD_E=1;
276 1 DATABUS=dataW;
277 1 //delay(5);
278 1 LCD_E=0;
279 1 //delay(5);
280 1 }
281 /*void display(uchar dd)
282 {
283 uchar i;
284 for(i=0;i<20;i++)
285 {
286 DispOneChar(i,1,dd++);
287 dd&=0x7f;
288 if(dd<32)dd=32;
289 }
290 }*/
291
292 void lcd_init()
293 {
294 1 //
295 1 LCD_E=0;
296 1 delay5ms();
297 1 delay5ms();
298 1 delay5ms();
299 1 delay5ms();
300 1 delay5ms();
301 1 delay5ms();
302 1 delay5ms();
C51 COMPILER V7.06 TEST_01 11/22/2007 09:09:04 PAGE 6
303 1 delay5ms();
304 1 delay5ms();
305 1 delay5ms();
306 1 delay5ms();
307 1
308 1 LcdWriteCommand(0x38);
309 1 Delay_us(100);
310 1
311 1 LcdWriteCommand(0x38);
312 1 delay5ms();
313 1 Delay_us(100);
314 1 LcdWriteCommand(0x0e);
315 1 Delay_us(100);
316 1
317 1 LcdWriteCommand(0x01);
318 1 delay5ms();
319 1
320 1
321 1 LcdWriteCommand(0x06);
322 1 Delay_us(100);
323 1
324 1 }
325
326
327
328
329 /*=======================================================
330 显示字符串
331 =======================================================*/
332 void ePutstr(uchar x,uchar y, uchar *ptr)
333 {
334 1 uchar i,l=0;
335 1 //LcdWriteCommand(0x01,1);
336 1 //Delay_us(1520);
337 1 while (ptr[l] >31)
338 1 {
339 2 l++;
340 2 };
341 1 for (i=0;i<l;i++)
342 1 {
343 2 DispOneChar(x++,y,ptr[i]);
344 2
345 2 if ( x == 20 )
346 2 {
347 3 x = 0;
348 3 if(y<3)
349 3 y=y+1;
350 3 else
351 3 y=0;
352 3 }
353 2 }
354 1 }
355
356 /*=======================================================
357 演示一行连续字符串,配合上位程序演示移动字串
358 =======================================================*/
359 void Display_1(uchar posx,uchar posy, uchar *tab)
360 {
361 1
362 1 uchar i;
363 1 for (i=0;i<20;i++)
364 1 {
C51 COMPILER V7.06 TEST_01 11/22/2007 09:09:04 PAGE 7
365 2 DispOneChar(posx++,posy,tab[i]);
366 2
367 2 tab[i] &= 0x7f;
368 2 if (tab[i]<32) tab[i]=32;
369 2 }
370 1 }
371
372
373 /*=======================================================
374 显示光标定位
375 =======================================================*/
376 void LocateXY( uchar posx,uchar posy)
377 {
378 1
379 1 uchar temp=0;
380 1
381 1 if(posy==0)
382 1 {temp=posx ;}//& 0x13;
383 1 // posy &= 0x03;
384 1
385 1 if(posy==1)
386 1 {temp=posx+0x40;}
387 1 if(posy==2)
388 1 {temp=posx+0x14;}
389 1 if(posy==3)
390 1 {temp=posx+0x54;}
391 1
392 1 temp|= 0x80;
393 1 //LcdWriteCommand(temp&0xf0,0);
394 1 LcdWriteCommand(temp);
395 1 Delay_us(37);
396 1 //LcdWriteCommand((temp&0x0f)<<4,0);
397 1
398 1
399 1 }
400
401 /*=======================================================
402 按指定位置显示数出一个字符
403 =======================================================*/
404 void DispOneChar(uchar x,uchar y,uchar Wdata)
405 {
406 1
407 1 LocateXY( x, y );
408 1 LcdWriteData(Wdata);
409 1 delay5ms();
410 1
411 1 }
412
413
414 void delay(unsigned int t)
415 {
416 1 unsigned int i;
417 1 for(i=0;i<t;i++);
418 1 }
419 void Delay_us(uint value)
420 {
421 1 for(value=value/4+1 ; value ; value--);
422 1 }
423
424
425
426 void time0_int(void) interrupt 1 using 1
C51 COMPILER V7.06 TEST_01 11/22/2007 09:09:04 PAGE 8
427 {
428 1 //TF2=0;
429 1 time0_temp=65536-time0*fosc/12;
430 1 //TL0=(65536-50000)%256; //50ms time
431 1 //TH0=(65536-50000)/256;
432 1 TL0=time0_temp%256;
433 1 TH0=time0_temp/256;
434 1
435 1 count++;
436 1 if(count==20)
437 1 {
438 2 count=0; //1s
439 2 if(disp_temp[17]!=0x20)
440 2 {disp_temp[17]=0x20;}
441 2 else
442 2 {disp_temp[17]=':';}
443 2 if(disp_temp[37]!=0x20)
444 2 {disp_temp[37]=0x20;}
445 2 else
446 2 {disp_temp[37]=':';}
447 2 sec_count++;
448 2 if(sec_count==60)
449 2 {
450 3 sec_count=0;
451 3 mint_count++;
452 3 if(mint_count==60)
453 3 {
454 4 mint_count=0;
455 4 hour_count++;
456 4 }
457 3 }
458 2 //dian_buf=0x3a; //: display per second
459 2 //delay_ms(40);
460 2 //dian_buf=0x20;
461 2
462 2 }
463 1 }
464
465
466 void changhextodec_mtime(void)
467 {
468 1 uchar i;
469 1 mtime_buf[0]=mint_count%10+0x30;
470 1 mtime_buf[1]=mint_count/10+0x30;
471 1 mtime_buf[4]=hour_count/100+0x30;
472 1 i=hour_count%100;
473 1 mtime_buf[2]=i%10+0x30;
474 1 mtime_buf[3]=i/10+0x30;
475 1 }
476
477
478
479
480
481
482
483
484
485
486
487
488
C51 COMPILER V7.06 TEST_01 11/22/2007 09:09:04 PAGE 9
489
490
491
492
493
494
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 669 ----
CONSTANT SIZE = 281 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 16
IDATA SIZE = 80 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -