标题: ds12c887 时间不更新 [打印本页]

作者: jijif    时间: 2015-11-2 12:42
标题: ds12c887 时间不更新
  1. #include<reg52.h>
  2. sbit lcden=P3^4;
  3. sbit lcdrs=P3^5;
  4. sbit dscs=P1^4;
  5. sbit dsas=P1^5;
  6. sbit dsrw=P1^6;
  7. sbit dsds=P1^7;
  8. char filine[14]="2015-10-18 MON";
  9. char seline[10]=" 00:00:00 ";
  10. char sec,min,hor;
  11. int m,n;
  12. int num;
  13. void delay(int m)
  14. {
  15.         int n;
  16.         for(;m>=0;m--)
  17.         for(n=110;n>=0;n--);
  18. }

  19. void write_command(char com)
  20. {//液晶命令
  21.         lcdrs=0;
  22.         lcden=0;
  23.         P0=com;
  24.         delay(5);
  25.         lcden=1;
  26.         delay(5);
  27.         lcden=0;
  28. }
  29. void write_date(char date)
  30. {//液晶数据
  31.         lcdrs=1;
  32.         lcden=0;
  33.         P0=date;
  34.         delay(5);
  35.         lcden=1;
  36.         delay(5);
  37.         lcden=0;
  38. }
  39. /*void write_ds(char address,char date)
  40. {
  41.         dscs=0;
  42.         dsas=1;
  43.         dsds=1;
  44.         dsrw=0;
  45.         P0=address;
  46.         dsas=0;
  47.         dsrw=0;
  48.         P0=date;
  49.         dsrw=1;
  50.         dsas=1;
  51.         dscs=1;
  52.        
  53. }*/
  54. char read_ds(char address)
  55. {
  56.         char ds_date;
  57.         dsas=1;
  58.         dsds=1;
  59.         dsrw=1;
  60.         dscs=0;
  61.         P0=address;
  62.         dsas=0;
  63.         dsds=0;
  64.         P0=0xff;
  65.         ds_date=P0;
  66.         dsds=1;
  67.         dsas=1;
  68.         dscs=1;
  69.         return ds_date;       
  70. }

  71. void init()
  72. {
  73.         write_command(0x38);
  74.         write_command(0x0c);
  75.         write_command(0x06);
  76.         write_command(0x01);
  77.         write_command(0x80);

  78.         for(m=0;m<14;m++)
  79.         write_date(filine[m]);
  80.         write_command(0x80+0x40);
  81.         for(m=0;m<10;m++)
  82.         write_date(seline[m]);
  83. }
  84. void display_number(char address,char number)
  85. {
  86.         char ge,shi;
  87.         shi=number/10;
  88.         ge=number%10;
  89.         write_command(0x80+0x40+address);
  90.         write_date(0x30+shi);
  91.         write_date(0x30+ge);
  92. }


  93. void main()
  94. {
  95.         num=0;
  96.         init();
  97.         delay(50);
  98.         while(1)
  99.         {
  100.                 sec=read_ds(0);
  101.                 display_number(7,sec);
  102.                
  103.                        
  104.         }
  105. }
复制代码
郭天祥的板子。秒针不更新一直显示/0,配套的代码却可以更新,谁给分析分析,谢谢。

QQ截图20151102113448.jpg (507.92 KB, 下载次数: 107)

QQ截图20151102113448.jpg

作者: gaozhaohong    时间: 2015-11-2 20:46
应该是程序有问题。
作者: wc86110    时间: 2015-11-22 15:52
确定这个程序与DS12C877木有半毛钱关系,只会纹丝不动的显示液晶屏上的那些信息。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1