找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2671|回复: 1
打印 上一主题 下一主题
收起左侧

lcd1602+单片机万年历程序 不过好像日期不显示

[复制链接]
跳转到指定楼层
楼主

  1. #include <reg51.h>
  2. #include<absacc.h>
  3. #include<intrins.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. sbit T_CLK=P1^3;
  7. sbit T_RST=P1^2;
  8. sbit T_IO=P1^4;
  9. sbit RS=P1^7;
  10. sbit RW=P1^6;
  11. sbit EN=P1^5;
  12. sbit ACC7=ACC^7;
  13. sbit ACC0=ACC^0;
  14. uchar datechar[]={"DATE:"};
  15. uchar timechar[]={"TIME:"};
  16. uchar datebuffer[10]={0x32,0x30,0,0,0x2d,0,0,0x2d,0,0};
  17. uchar timebuffer[8]= {0,0,0x3a,0,0,0x3a,0,0};
  18. uchar weekbuffer={0x30};
  19. void WriteB(uchar ucDa)
  20. {
  21. uchar i;
  22. ACC=ucDa;
  23. for(i=8;i>0;i--)
  24. {
  25. T_IO=ACC0;
  26. T_CLK=1;
  27. T_CLK=0;
  28. ACC=ACC>>1;
  29. }
  30. }
  31. uchar ReadB(void)
  32. {
  33. uchar i;
  34. for(i=8;i>0;i--)
  35. {
  36. ACC=ACC>>1;
  37. ACC7=T_IO;
  38. T_CLK=1;
  39. T_CLK=0;
  40. }
  41. return(ACC);
  42. }
  43. void v_W1302(uchar ucAddr,uchar ucDa)
  44. {
  45. T_RST=0;
  46. T_CLK=0;
  47. _nop_();_nop_();_nop_();
  48. T_RST=1;
  49. _nop_();_nop_();_nop_();
  50. WriteB(ucAddr);
  51. WriteB(ucDa);
  52. T_CLK=1;
  53. T_RST=0;
  54. }
  55. uchar uc_R1302(uchar ucAddr)
  56. {
  57. uchar ucDa=0;
  58. T_RST=0;T_CLK=0;
  59. T_RST=1;
  60. WriteB(ucAddr);
  61. ucDa=ReadB();
  62. T_RST=1;T_CLK=0;
  63. return(ucDa);
  64. }
  65. //查忙函数
  66. void wait()
  67. {
  68. P2=0xff;
  69. RS=0;
  70. RW=1;
  71. EN=1;
  72. EN=0;
  73. while(P2&0x80)
  74. {
  75. EN=0;
  76. EN=1;
  77. }
  78. }
  79. void wc51com(uchar j)
  80. {
  81. wait();
  82. EN=0;
  83. RS=0;
  84. RW=0;
  85. EN=1;
  86. P2=j;
  87. EN=0;
  88. }
  89. void wc51ddr(uchar j)
  90. {
  91. wait();
  92. EN=0;
  93. RS=1;
  94. RW=0;
  95. EN=1;
  96. P2=j;
  97. EN=0;
  98. }
  99. void init()
  100. {
  101. wc51com(0x01);
  102. wc51com(0x38);
  103. wc51com(0x0c);
  104. wc51com(0x06);
  105. }
  106. void delay(uint i)
  107. {
  108. uint y,j;
  109. for(j=0;j<i;j++){
  110. for(y=0;y<0xff;y--) {;}
  111. }
  112. }
  113. void main(void)
  114. {
  115. uchar i;
  116. uchar data temp;
  117. delay(10);
  118. init();
  119. wc51com(0x80);
  120. for(i=0;i<5;i++) wc51ddr(datechar );
  121. wc51com(0xc0);
  122. for(i=0;i<5;i++) wc51ddr(timechar );
  123. v_W1302(0x8e,0);
  124. v_W1302(0x8c,0x15);
  125. v_W1302(0x8a,0x06);
  126. v_W1302(0x88,0x06);
  127. v_W1302(0x86,0x13);
  128. v_W1302(0x84,0x10);
  129. v_W1302(0x82,0x49);
  130. v_W1302(0x80,0x30);
  131. v_W1302(0x8e,0x80);
  132. while(1)
  133. {temp=
  134. uc_R1302(0x8d);
  135. datebuffer[2]=0x30+temp/16;datebuffer[3]=0x30+temp%16;
  136. temp=uc_R1302(0x8b);
  137. weekbuffer=0x30+temp;
  138. temp=
  139. uc_R1302(0x89);
  140. datebuffer[5]=0x30+temp/16;datebuffer[6]=0x30+temp%16;
  141. temp=
  142. uc_R1302(0x87);
  143. datebuffer[8]=0x30+temp/16;datebuffer[9]=0x30+temp%16;
  144. temp=
  145. uc_R1302(0x85);
  146. temp=temp&0x7f;
  147. timebuffer[0]=0x30+temp/16;timebuffer[1]=0x30+temp%16;
  148. temp=
  149. uc_R1302(0x83);
  150. timebuffer[3]=0x30+temp/16;timebuffer[4]=0x30+temp%16;
  151. temp=
  152. uc_R1302(0x81);
  153. temp=temp&0x7f;
  154. timebuffer[6]=0x30+temp/16;timebuffer[7]=0x30+temp%16;
  155. wc51com(0x85);
  156. for(i=0;i<8;i++)wc51ddr(datebuffer);
  157. wc51com(0xc5);
  158. for(i=0;i<8;i++)wc51ddr(timebuffer);
  159. wc51ddr(0x20);
  160. wc51ddr(weekbuffer);
  161. }
  162. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:74784 发表于 2015-6-24 19:35 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表