📄 14-2.lst
字号:
280 1 EN=0;
281 1 RS=0;
282 1 RW=0;
283 1 _nop_();
284 1 EN=1;
285 1 P0=c;
286 1 EN=0;
287 1 }
288
289 void WriteData(unsigned char c)
290 {
291 1 DelayS();
292 1 EN=0;
293 1 RS=1;
294 1 RW=0;
295 1 _nop_();
296 1 EN=1;
297 1 P0=c;
298 1 EN=0;
C51 COMPILER V6.20c 14_2 09/02/2001 15:14:51 PAGE 6
299 1 RS=0;
300 1 }
301
302 void ShowChar(unsigned char pos,unsigned char c)
303 {
304 1 unsigned char p;
305 1 if(pos>=0x10)
306 1 p=pos+0xB0;
307 1 else
308 1 p=pos+0x80;
309 1 WriteCommand(p);
310 1 WriteData(c);
311 1 }
312
313 void ShowString(unsigned char line,char *ptr)
314 {
315 1 unsigned char l,i;
316 1 l=line<<4;
317 1 for(i=0;i<16;i++)
318 1 ShowChar(l++,*(ptr+i));
319 1 }
320
321 void InitLcd()
322 {
323 1 DelayL();
324 1 WriteCommand(0x38);
325 1 WriteCommand(0x38);
326 1 WriteCommand(0x06);
327 1 WriteCommand(0x0C);
328 1 WriteCommand(0x01);
329 1 WriteCommand(0x80);
330 1 }
331 /*---------------------------------------------键盘子程序-------------------------------------------------
-*/
332 unsigned char GetKey()
333 {
334 1 unsigned k,t,i,j;
335 1 k=P1;
336 1 k=k&0xF0;
337 1 i=0;
338 1 while((k&0x10)&&i<4)
339 1 {
340 2 i++;
341 2 k=k>>1;
342 2 }
343 1 k=0x01;
344 1 j=0;
345 1 while(j<4)
346 1 {
347 2 P1=0xFF^k;
348 2 _nop_();
349 2 t=P1;
350 2 t=t^0xFF;
351 2 t=t&0xF0;
352 2 if(t)
353 2 break;
354 2 j++;
355 2 k=k<<1;
356 2 }
357 1 k=j*4+i;
358 1 return k;
359 1 }
C51 COMPILER V6.20c 14_2 09/02/2001 15:14:51 PAGE 7
360 /*-----------------------------------------数字温度计驱动子程序--------------------------------------*/
361 void ChangePos(bit sel,unsigned char pos1,unsigned char pos2)
362 { unsigned char i;
363 1 RST=0;
364 1 DQ=0;
365 1 CLK=0;
366 1 RST=1;
367 1 DQ=sel;
368 1 _nop_();
369 1 CLK=1;
370 1 _nop_();
371 1 CLK=0;
372 1 for(i=0;i<8;i++)
373 1 {
374 2 if(pos1&0x80)
375 2 DQ=1;
376 2 else
377 2 DQ=0;
378 2 _nop_();
379 2 CLK=1;
380 2 _nop_();
381 2 CLK=0;
382 2 pos1=pos1<<1;
383 2 }
384 1 for(i=0;i<8;i++)
385 1 {
386 2 if(pos2&0x80)
387 2 DQ=1;
388 2 else
389 2 DQ=0;
390 2 _nop_();
391 2 CLK=1;
392 2 _nop_();
393 2 CLK=0;
394 2 pos2=pos2<<1;
395 2 }
396 1 RST=0;
397 1 }
398
399 /*------------------------------------------温度传感器子程序-------------------------------------------*/
400 void Delay100ms() //延时100ms
401 {
402 1 unsigned char i,j,k;
403 1 for(i=0;i<8;i++)
404 1 for(j=0;j<25;j++)
405 1 for(k=0;k<250;k++);
406 1 }
407
408 void Delay15() //延时15us
409 {
410 1 unsigned char i;
411 1 for(i=0;i<8;i++);
412 1 }
413
414 void Delay60() //延时60us
415 {
416 1 unsigned char i;
417 1 for(i=0;i<30;i++);
418 1 }
419
420 void Write0TS() //写bit 0
421 {
C51 COMPILER V6.20c 14_2 09/02/2001 15:14:51 PAGE 8
422 1 TSOR=1;
423 1 TSOR=0;
424 1 Delay15();
425 1 Delay15();
426 1 Delay15();
427 1 Delay15();
428 1 TSOR=1;
429 1 _nop_();
430 1 _nop_();
431 1 }
432
433 void Write1TS() //写bit 1
434 {
435 1 TSOR=1;
436 1 TSOR=0;
437 1 _nop_();
438 1 _nop_();
439 1 _nop_();
440 1 _nop_();
441 1 _nop_();
442 1 _nop_();
443 1 _nop_();
444 1 TSOR=1;
445 1 _nop_();
446 1 _nop_();
447 1 _nop_();
448 1 _nop_();
449 1 _nop_();
450 1 _nop_();
451 1 _nop_();
452 1 Delay15();
453 1 Delay15();
454 1 Delay15();
455 1 }
456
457 bit ReadTS()
458 {
459 1 bit b;
460 1 TSOR=1;
461 1 TSOR=0;
462 1 _nop_();
463 1 _nop_();
464 1 _nop_();
465 1 _nop_();
466 1 TSOR=1;
467 1 _nop_();
468 1 _nop_();
469 1 _nop_();
470 1 _nop_();
471 1 _nop_();
472 1 b=TSOR;
473 1 Delay15();
474 1 Delay15();
475 1 Delay15();
476 1 _nop_();
477 1 _nop_();
478 1 return b;
479 1 }
480
481 void ResetTS() //复位
482 {unsigned char i;
483 1
C51 COMPILER V6.20c 14_2 09/02/2001 15:14:51 PAGE 9
484 1 TSOR=1;
485 1 TSOR=0;
486 1 for(i=0;i<8;i++)
487 1 Delay60();
488 1 TSOR=1;
489 1 while(TSOR);
490 1 for(i=0;i<8;i++)
491 1 Delay60();
492 1 }
493
494 void WriteByteTS(unsigned char byte) //写一个字节(byte)
495 {unsigned char i;
496 1 for(i=0;i<8;i++)
497 1 {
498 2 if(byte&0x01)
499 2 Write1TS();
500 2 else
501 2 Write0TS();
502 2 byte=byte>>1;
503 2 }
504 1 }
505
506 unsigned char ReadByteTS() //读一个字节(byte)
507 {
508 1 unsigned char i,j;
509 1 bit b;
510 1 j=0;
511 1 for(i=0;i<8;i++)
512 1 {
513 2 b=ReadTS();
514 2 if(b)
515 2 j+=1;
516 2 j=_cror_(j,1);
517 2 }
518 1 return j;
519 1 }
520
521 void InitTS() //初始化温度转换
522 {
523 1 ResetTS();
524 1 WriteByteTS(0xCC);
525 1 WriteByteTS(0x4E);
526 1 WriteByteTS(0x64);
527 1 WriteByteTS(0x8A);
528 1 WriteByteTS(0x1F);
529 1 }
530
531 void GetTempTS() //获取温度
532 {
533 1 ResetTS();
534 1 WriteByteTS(0xCC);
535 1 WriteByteTS(0x44);
536 1 Delay100ms();
537 1 ResetTS();
538 1 WriteByteTS(0xCC);
539 1 WriteByteTS(0xBE);
540 1
541 1 temp2=ReadByteTS();
542 1 temp1=ReadByteTS();
543 1 ReadByteTS();
544 1 ReadByteTS();
545 1 ReadByteTS();
C51 COMPILER V6.20c 14_2 09/02/2001 15:14:51 PAGE 10
546 1 ReadByteTS();
547 1 ReadByteTS();
548 1 ReadByteTS();
549 1 ReadByteTS();
550 1 temp1=temp1<<4;
551 1 temp1+=(temp2&0xF0)>>4;
552 1 temp2=(temp2&0x0F)?5:0;
553 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1355 ----
CONSTANT SIZE = 40 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 44 14
IDATA SIZE = ---- ----
BIT SIZE = 2 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -