久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+DS1302顯示年月日加星期程序與Proteus仿真圖

[復(fù)制鏈接]
ID:1030423 發(fā)表于 2022-5-28 15:13 | 顯示全部樓層 |閱讀模式
萌新程序,如果有錯誤望見諒。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit rs=P1^0;
  6. sbit rw=P1^1;
  7. sbit e=P1^2;
  8. sbit RST=P1^6;
  9. sbit SCK=P1^4;
  10. sbit IO=P1^5;
  11. sbit set=P3^2;
  12. sbit add=P3^3;
  13. sbit dec=P3^4;
  14. uint m,f,h,t,a,mode,c;
  15. uchar shu1[8]={6,5,4,3,2,7,1};
  16. uchar shu2[8];
  17. void delay_LCD(uint z)
  18. {
  19. uint x,y;
  20. for(x=z;x>0;x--)
  21. for(y=110;y>0;y--);
  22. }

  23. void com(uchar com)
  24. {
  25. rs=0;
  26. e=0;
  27. rw=0;
  28. P0=com;
  29. delay_LCD(1);
  30. e=1;
  31. delay_LCD(1);
  32. e=0;
  33. }
  34. void shu(uchar shu)
  35. {
  36. rs=1;
  37. e=0;
  38. rw=0;
  39. P0=shu;
  40. delay_LCD(1);
  41. e=1;
  42. delay_LCD(1);
  43. e=0;
  44. }
  45. void chu( )       
  46. {
  47. com(0x38);
  48. com(0x0c);
  49. com(0x01);
  50. com(0x06);
  51. }
  52. ds1302_read(uchar add)
  53. {
  54. uint i,m1,m;
  55. RST=0;   _nop_();
  56. SCK=0;   _nop_();
  57. RST=1;
  58. for(i=0;i<8;i++)
  59. {
  60. IO=add&0x01;
  61. add=add>>1;
  62. SCK=1;_nop_();
  63. SCK=0;_nop_();
  64. }
  65. for(i=0;i<8;i++)
  66. {
  67. m1=IO;
  68. m=(m>>1)|(m1<<7);
  69. SCK=1;_nop_();
  70. SCK=0;_nop_();
  71. }
  72. RST=0;_nop_();
  73. SCK=1;
  74. _nop_();IO = 0;
  75. _nop_();IO = 1;
  76. _nop_();
  77. return m;
  78. }
  79. void ds1302_write(uchar add,uchar m)
  80. {
  81. uchar i;
  82. RST=0;
  83. _nop_();
  84. SCK=0;
  85. _nop_();
  86. RST=1;
  87. for(i=0;i<8;i++)
  88. {
  89. IO=add&0x01;
  90. add=add>>1;
  91. SCK=1;
  92. _nop_();
  93. SCK=0;
  94. _nop_();
  95. }
  96. for(i=0;i<8;i++)
  97. {
  98. IO=m&0x01;
  99. m=m>>1;
  100. SCK=1;
  101. _nop_();
  102. SCK=0;
  103. _nop_();
  104. }
  105. RST=0;
  106. _nop_();
  107. }

  108. read_ds1302()
  109. {       
  110. uchar i;
  111. shu1[6]=ds1302_read(0x81)&0x7f;
  112. shu1[5]=ds1302_read(0x83);
  113. shu1[4]=ds1302_read(0x85);
  114. shu1[3]=ds1302_read(0x87);
  115. shu1[2]=ds1302_read(0x89);
  116. shu1[7]=ds1302_read(0x8b);
  117. shu1[1]=ds1302_read(0x8d);
  118. for(i=1;i<8;i++)
  119. {
  120. shu2[i]=(shu1[i]>>4)*10+(shu1[i]&0x0f);
  121. }
  122. }
  123. void ds1302_init()
  124. {
  125. uint b;
  126. RST=0;
  127. SCK=0;
  128. ds1302_write(0x8e,shu1[b]);
  129. ds1302_write(0x80,shu1[b]);
  130. ds1302_write(0x82,shu1[b]);
  131. ds1302_write(0x84,shu1[b]);
  132. ds1302_write(0x8a,shu1[b]);
  133. ds1302_write(0x86,shu1[b]);
  134. ds1302_write(0x88,shu1[b]);
  135. ds1302_write(0x8c,shu1[b]);
  136. ds1302_write(0x8e,shu1[b]);
  137. }
  138. uchar code Data_table[7][3]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
  139. code uchar table_week[12]=(0,3,3,6,1,4,6,2,5,0,3,5);
  140. uchar Conver_week(uchar year,uchar month,uchar day)
  141. {
  142. uchar p1,p2,week;
  143. year+=0x64;
  144. p1=year/0x4;
  145. p2=year+p1;
  146. p2=p2%0x7;
  147. p2=p2+day+table_week[month-1];
  148. if(year%0x4==0&&month<3)p2-=1;
  149. week=p2%0x7;
  150. return week;
  151. }
  152. void main()
  153. {
  154. uchar xq,num;
  155. chu();


  156. while(1)
  157. {
  158. read_ds1302();
  159. com(0x82);
  160. shu(shu2[1]/10+0x30);
  161. shu(shu2[0]%10+0x30);
  162. shu(shu2[1]/10+0x30);
  163. shu(shu2[1]%10+0x30);
  164. shu('-');
  165. shu(shu2[2]/10+0x30);
  166. shu(shu2[2]%10+0x30);
  167. shu('-');
  168. shu(shu2[3]/10+0x30);
  169. shu(shu2[3]%10+0x30);
  170. com(0xc2);
  171. shu(shu2[4]/10+0x30);
  172. shu(shu2[4]%10+0x30);
  173. shu(':');
  174. shu(shu2[5]/10+0x30);
  175. shu(shu2[5]%10+0x30);
  176. shu(':');
  177. shu(shu2[6]/10+0x30);
  178. shu(shu2[6]%10+0x30);
  179. xq=Conver_week(shu2[1],shu2[2],shu2[3]);
  180.    com(0x80+13);
  181.    for(num=0;num<3;num++)
  182.    { shu(Data_table[xq][num]);
  183. }
  184. }
  185. }
復(fù)制代碼

Keil代碼與Proteus8.8仿真下載:
顯示年月日.zip (109.18 KB, 下載次數(shù): 45)

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:278457 發(fā)表于 2022-6-1 17:16 | 顯示全部樓層
為什么不用模塊化編程
回復(fù)

使用道具 舉報

ID:589800 發(fā)表于 2022-6-6 09:11 | 顯示全部樓層
怎么設(shè)置
回復(fù)

使用道具 舉報

ID:1039671 發(fā)表于 2022-11-22 11:51 | 顯示全部樓層
怎么感覺代碼不完整
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩一区二区三区四区 | 黄色三级免费网站 | 日韩成人免费视频 | 国产日韩久久 | 精品国产精品三级精品av网址 | 免费在线观看av网址 | 成人欧美一区二区 | 国产a区 | 羞羞视频网站免费看 | 免费一区 | 久久99久久98精品免观看软件 | 精品91久久 | 亚洲精品白浆高清久久久久久 | 在线免费观看黄视频 | 日日艹夜夜艹 | 精品国产精品一区二区夜夜嗨 | 欧美在线观看一区 | 国产黄色免费网站 | 国产精品久久久久久久久图文区 | 亚洲成人午夜在线 | 国产线视频精品免费观看视频 | 一区| 国产精品99999 | 亚洲精品一区av在线播放 | 女同久久另类99精品国产 | 天天爽夜夜爽精品视频婷婷 | 国产精品美女一区二区三区 | 国产欧美日韩在线一区 | 亚洲精品久久久蜜桃网站 | 国产精品久久久久一区二区三区 | 精品亚洲永久免费精品 | 中文字幕亚洲区一区二 | 日韩成人高清 | 久久久免费 | 亚洲国产一区二区视频 | www.亚洲成人网| 亚洲欧美激情国产综合久久久 | 亚洲精品区 | 91精品91久久久 | 日韩乱码一二三 | 激情av|