找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5149|回復(fù): 1
收起左側(cè)

ds1302時(shí)鐘顯示程序1602液晶

[復(fù)制鏈接]
ID:82008 發(fā)表于 2015-6-5 00:23 | 顯示全部樓層 |閱讀模式
psb1.png
  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. //查忙函數(shù)
  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. // SP=0x50;
  118. delay(10);
  119. init();
  120. wc51com(0x80);
  121. for(i=0;i<5;i++) wc51ddr(datechar [i]);
  122. wc51com(0xc0);
  123. for(i=0;i<5;i++) wc51ddr(timechar [i]);
  124. v_W1302(0x8e,0);
  125. v_W1302(0x8c,0x13);
  126. v_W1302(0x8a,0x06);
  127. v_W1302(0x88,0x12);
  128. v_W1302(0x86,0x21);
  129. v_W1302(0x84,0x16);
  130. v_W1302(0x82,0x25);
  131. v_W1302(0x80,0x30);
  132. v_W1302(0x8e,0x80);
  133. while(1)
  134. {temp=
  135. uc_R1302(0x8d);
  136. datebuffer[2]=0x30+temp/16;datebuffer[3]=0x30+temp%16;
  137. temp=uc_R1302(0x8B);
  138. weekbuffer=0x30+temp;
  139. temp=
  140. uc_R1302(0x89);
  141. datebuffer[5]=0x30+temp/16;datebuffer[6]=0x30+temp%16;
  142. temp=
  143. uc_R1302(0x87);
  144. datebuffer[8]=0x30+temp/16;datebuffer[9]=0x30+temp%16;
  145. temp=
  146. uc_R1302(0x85);
  147. temp=temp&0x7f;
  148. timebuffer[0]=0x30+temp/16;timebuffer[1]=0x30+temp%16;
  149. temp=
  150. uc_R1302(0x83);
  151. timebuffer[3]=0x30+temp/16;timebuffer[4]=0x30+temp%16;
  152. temp=
  153. uc_R1302(0x81);
  154. temp=temp&0x7f;
  155. timebuffer[6]=0x30+temp/16;timebuffer[7]=0x30+temp%16;
  156. wc51com(0x85);
  157. for(i=0;i<8;i++)wc51ddr(datebuffer[i]);
  158. wc51com(0xc5);
  159. for(i=0;i<8;i++)wc51ddr(timebuffer[i]);
  160. wc51ddr(0x20);
  161. wc51ddr(weekbuffer);
  162. }
  163. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:99130 發(fā)表于 2017-2-27 21:49 | 顯示全部樓層
你這程序好簡(jiǎn)潔都沒(méi)有一句注釋。。。哈哈哈
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表