单片机/MCU论坛
直播中

jijif

9年用户 3经验值
擅长:嵌入式技术
私信 关注
[文章]

ds12c887 时间不更新

  1. #include
  2. ***it lcden=P3^4;
  3. ***it lcdrs=P3^5;
  4. ***it dscs=P1^4;
  5. ***it dsas=P1^5;
  6. ***it dsrw=P1^6;
  7. ***it 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
已退回1积分

回帖(1)

段明明

2015-11-10 15:03:20
你调试下看看你读取回来的sec是个什么数,先确定错误出在哪里
举报

更多回帖

发帖
×
20
完善资料,
赚取积分