找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机电子时钟程序加原理图

[复制链接]
跳转到指定楼层
楼主
电子时钟的主程序加原理图
  1.   if(s1num==8)
  2. {
  3.   s1num=0;
  4.   write_com(0x0c);
  5.   TR0=1;
  6. }

  7. }
  8.   if(s1num!=0)
  9. {
  10.   if(s2==0)
  11. {
  12.   delay(5);
  13.   if(s2==0)
  14.   while(!s2);
  15.   if(s1num==1)
  16. {
  17.   miao++;
  18.   if(miao==60)
  19.   miao=0;
  20.   write_sfm(10,miao);
  21.   write_com(0x80+0x40+10);
  22. }
  23.   if(s1num==2)
  24. {
  25.   fen++;
  26.   if(fen==60)
  27.   fen=0;
  28.   write_sfm(7,fen);
  29.   write_com(0x80+0x40+7);
  30. }
  31. if(s1num==3)
  32. {
  33. shi++;
  34. if(shi==24)
  35. shi=0;
  36. write_sfm(4,shi);
  37. write_com(0x80+0x40+4);
  38. }
  39.                     if(s1num==4)
  40. {
  41. xingqi++;
  42. if(xingqi==8)
  43. xingqi=1;
  44. write_com(0x80+14);
  45. write_sf(14,xingqi);

  46. }
  47.                       if(s1num==5)
  48. {
  49. tian++;
  50. if(tian==32)
  51. tian=1;
  52. write_sf(9,tian);
  53. write_com(0x80+9);
  54. }
  55.                      if(s1num==6)
  56. {
  57. yue++;
  58. if(yue==13)
  59. yue=1;
  60. write_sf(6,yue);
  61. write_com(0x80+6);
  62. }
  63.                                          if(s1num==7)
  64. {
  65. nian++;
  66.    if(nian==100)
  67. nian=00;
  68. write_sf(3,nian);
  69. write_com(0x80+3);
  70. }
  71.                                        
  72. }
  73. }
  74. if(s3==0)
  75. {
  76. delay(5);
  77. if(s3==0)
  78. {
  79. while(!s3);
  80. if(s1num==1)
  81. {
  82. miao--;
  83. if(miao==-1)
  84. miao=59;
  85. write_sfm(10,miao);
  86. write_com(0x80+0x40+10);
  87. }
  88. if(s1num==2)
  89. {
  90. fen--;
  91. if(fen==-1)
  92. fen=59;
  93. write_sfm(7,fen);
  94. write_com(0x80+0x40+7);
  95. }
  96. if(s1num==3)
  97. {
  98. shi--;
  99. if(shi==-1)
  100. shi=23;
  101. write_sfm(4,shi);
  102. write_com(0x80+0x40+4);
  103. }
  104.                     if(s1num==4)
  105. {
  106. xingqi--;
  107. if(xingqi==0)
  108. xingqi=7;
  109. write_sf(14,xingqi);
  110. write_com(0x80+14);
  111. }
  112.                     if(s1num==5)
  113. {
  114. tian--;
  115. if(tian==0)
  116. tian=31;
  117. write_com(0x80+9);
  118. }
  119.                      if(s1num==6)
  120. {
  121. yue--;
  122. if(yue==0)
  123. yue=12;
  124. write_sf(6,yue);
  125. write_com(0x80+6);
  126. }
  127.                       if(s1num==7)
  128. {
  129. nian--;
  130. if(nian==0)
  131. nian=99;
  132. write_sf(3,nian);
  133. write_com(0x80+3);
  134. }
  135.                                        
  136. }
  137. }
  138. }
  139.   if(s4==0)
  140. {
  141.   delay(5);
  142.   if(s4==0)
  143. {
  144.   s1num=0;
  145.   TR0=1;
  146. }
  147.   while(!s4);
  148.   delay(5);
  149. }
  150. }


  151. void main()
  152. {
  153.   init();
  154.   while(1)
  155.   {
  156.   keyscan();
  157.   
  158.   if(fen==0)
  159. { s5=1;}
  160. else
  161. {s5=0;}
  162. }
  163. }
  164. uchar leap(uchar nian)     //判断是否闰年并返回二月份的天数
  165.           {          //闰年返回29,平年返回28
  166.      nian+=2000;
  167.            if(nian%4==0)
  168.              {if(nian%100==0)
  169.                 {if(nian%400==0)
  170.                       return 29;
  171.                  else return 28;
  172.                 }
  173.               else return 29;
  174.              }
  175.            else return 28;
  176.           }

  177. uchar mon(uchar yue)           //计算并返回每个月的天数
  178.          {
  179.           switch(yue)
  180.                 {
  181.         case 1:
  182.                  case 3:
  183.                 case 5:
  184.                  case 7:
  185.                  case 8:
  186.                  case 10:
  187.                  case 12:return 31;break;      //1,3,5,7,8,10,12月每月31天
  188.                  case 4:
  189.                  case 6:
  190.                  case 9:
  191.                  case 11:return 30;break;   //4,6,9,11月每月30天
  192.                  case 2: return leap(nian);break;//返回二月份的天数
  193.                  default:break;
  194.                 }
  195.          }
  196. void time0() interrupt 1
  197. {
  198. TH0=(65536-46083)/256;
  199. TL0=(65536-46083)%256;
  200. count++;
  201.     if(count==20)
  202.   {
  203.     count=0;
  204. miao++;
  205. if(miao==60)
  206. {
  207.   miao=0;
  208.   fen++;
  209.   if(fen==60)
  210.    {
  211.      fen=0;
  212. shi++;
  213. if(shi==24)
  214.   {
  215.   shi=0;
  216.   n=mon(yue);
  217.                                tian++;
  218.                                xingqi++;
  219.                             if(++tian>n)
  220.                                {
  221.                                   tian=01;
  222.                                        yue++;
  223.                                        if(yue==13)
  224.                                        {
  225.                                          yue=0;
  226.                                              nian++;
  227.                                          }
  228.                                          write_sf(3,nian);
  229.          write_com(0x80+3);
  230.                                     }
  231.                                     write_sf(6,yue);
  232.     write_com(0x80+6);
  233.       }
  234.                               write_sf(14,xingqi);
  235.       write_com(0x80+14);
  236.                               write_sf(9,tian);
  237.       write_com(0x80+9);
  238.                           }
  239.   write_sfm(4,shi);
  240.                           write_com(0x80+0x40+4);
  241.    }
  242. write_sfm(7,fen);
  243.                    write_com(0x80+0x40+7);
  244. }
  245. write_sfm(10,miao);
  246.                  write_com(0x80+0x40+10);
  247. }
复制代码


51hei图片20200611104814.png (20.96 KB, 下载次数: 37)

51hei图片20200611104814.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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