找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2808|回复: 0
收起左侧

单片机可调电子时钟设计(含源代码和仿真图)

[复制链接]
ID:363782 发表于 2020-6-14 22:18 | 显示全部楼层 |阅读模式
单片机电子时钟设计(含源代码和仿真图)
51hei.png

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<CZJ_FUN.h>
  3. /*********************************************
  4. clock写入
  5. **********************************************/                                                                  
  6. void write_clock(uchar address,uchar date)
  7. {
  8. uchar s,g;
  9. s=date/10;
  10. g=date%10;
  11. write_com(0x80+address);
  12. write_data(0x30+s);
  13. write_data(0x30+g);
  14. }
  15. /***********************************************
  16. 显示时钟
  17. ***********************************************/
  18.   void display_clock()
  19. {

  20.         int j;
  21.         write_com(0x01);
  22.         write_com(0x06);
  23.         write_com(0x80+0x03);
  24.         for(j=0;j<11;j++)
  25.         {
  26.           write_data(table2[j]);
  27.         }
  28.                 write_com(0x80+0x45);
  29.         for(j=0;j<8;j++)
  30.         {
  31.           write_data(table3[j]);
  32.           }
  33.    TMOD=0x01;
  34.    TH0=(65536-50000)/256;
  35.    TL0=(65536-50000)%256;
  36.    EA=1;
  37.    ET0=1;
  38.    TR0=1;
  39.      
  40.    }
  41. /***********************************************
  42. 中断加时间
  43. ************************************************/
  44. void time0() interrupt 1
  45. {
  46.   TH0=(65536-50000)/256;
  47.   TL1=(65536-50000)%256;
  48.    count++;
  49.   if(count==20)
  50.      {
  51.       count=0;
  52.       miao++;
  53.         if(miao==60)
  54.        {
  55.          miao=0;
  56.          fen++;
  57.   
  58.           if(fen==60)
  59.            {
  60.              fen=0;
  61.              shi++;
  62.               if(shi==24)
  63.                {
  64.                  shi=0;
  65.                                  day++;
  66.                                  if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)
  67.                                  {
  68.                                  temp=1;
  69.                                  }
  70.                                  if(mon==4||mon==6||mon==9||mon==11)
  71.                                  {
  72.                                  temp=0;
  73.                                  }
  74.                        
  75.                                          if(mon==2)
  76.                                    {
  77.                                     if(y==0)
  78.                                          {
  79.                                          if(day==30)
  80.                                       {
  81.                                       day=1;
  82.                                          mon++ ;
  83.                                       }
  84.                                        write_clock(0x0B,day);
  85.                                            write_clock(0x08,mon);
  86.                                           }
  87.                                          else
  88.                                          {
  89.                                            {
  90.                                             if(day==29)
  91.                                        {
  92.                                          day=1;
  93.                                             mon++ ;
  94.                                         }
  95.                                         write_clock(0x0B,day);
  96.                                                 write_clock(0x08,mon);
  97.                                            }
  98.                                            }
  99.                                          }  
  100.                                          
  101.                                  
  102.                                  if(day==32&&temp==1)
  103.                                  {
  104.                                       day=1;
  105.                                          mon++ ;
  106.                                          if(mon==13)
  107.                                          {
  108.                                           mon=1;
  109.                                           year1++;
  110.                                            if(year1==100)
  111.                                            {
  112.                                                   year1=0;
  113.                                                    year2++;
  114.                                                    write_clock(0x03,year1);
  115.                                
  116.                                            }
  117.                                            write_clock(0x05,year1);
  118.                                          }
  119.                                          write_clock(0x08,mon);
  120.                                  }
  121.                                  write_clock(0x0B,day);


  122.                                   if(day==31&&temp==0)
  123.                                  {
  124.                                       day=1;
  125.                                          mon++ ;
  126.                                          if(mon==13)
  127.                                          {
  128.                                           mon=1;
  129.                                           year1++;
  130.                                            if(year1==100)
  131.                                            {
  132.                                                   year1=0;
  133.                                                    year2++;
  134.                                                    write_clock(0x03,year1);
  135.                                
  136.                                            }
  137.                                            write_clock(0x05,year1);
  138.                                          }
  139.                                          write_clock(0x08,mon);
  140.                                  }
  141.                                  write_clock(0x0B,day);



  142.                }
  143.               write_clock(0x45,shi);
  144.                }
  145.        write_clock(0x48,fen);
  146.     }
  147.    write_clock(0x4B,miao);
  148.   }
  149.   }
  150. /**********************************************************
  151. clock 修改
  152. **********************************************************/
  153. void keyscan()
  154. {
  155.    
  156.         if(s1==0)       
  157.         {
  158.                 delayx(5);
  159.                 if(s1==0)
  160.                 {       
  161.           num1++;
  162.                   while(!s1);
  163.                 if(num1==1)
  164.                {
  165.                                 TR0=0;
  166.                                 write_com(0x80+0x40+11);
  167.                                 write_com(0x0f);         
  168.                 }
  169.                 if(num1==2)
  170.                 {
  171.                 write_com(0x80+0x40+8);
  172.                     write_com(0x0f);
  173.                 }
  174.                if(num1==3)
  175.                 {
  176.                write_com(0x80+0x40+5);
  177.                    write_com(0x0f);
  178.                 }
  179.                                 if(num1==4)
  180.                 {
  181.                write_com(0x80+0x0B);
  182.                    write_com(0x0f);
  183.                 }
  184.                                 if(num1==5)
  185.                 {
  186.                write_com(0x80+0x08);
  187.                    write_com(0x0f);
  188.                 }
  189.                                 if(num1==6)
  190.                 {
  191.                write_com(0x80+0x03);
  192.                    write_com(0x0f);
  193.                 }
  194.                if(num1==7)
  195.                 {
  196.                 TR0=1;
  197.                 num1=0;
  198.                 write_com(0x0C);  
  199.                 }                 
  200.              }
  201.      }
  202.   if(s2==0)
  203.   {
  204.     delayx(5);
  205.       if(s2==0)
  206.         {
  207.           while(!s2);
  208.                 if(num1==1)
  209.                    {
  210.                     miao++;
  211.                       if(miao==60)
  212.                          {
  213.                           miao=0;
  214.                          }
  215.                     write_clock(0x4B,miao);
  216.                     write_com(0x80+0x40+11);                    
  217.                    }
  218.                 if(num1==2)
  219.                    {     
  220.                     fen++;
  221.                       if(fen==60)
  222.                          {
  223.                           fen=0;
  224.                          }
  225.                     write_clock(0x48,fen);
  226.                     write_com(0x80+0x40+8);
  227.                    }
  228.                 if(num1==3)
  229.                     {
  230.                      shi++;
  231.                        if(shi==24)
  232.                          {
  233.                           shi=0;
  234.                          }
  235.                      write_clock(0x45,shi);
  236.                      write_com(0x80+0x40+5);
  237.                     }  
  238.                                  if(num1==4)
  239.                                  {
  240.                                  if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)
  241.                                      {
  242.                                       temp=0;
  243.                                      }
  244.                                    if(mon==4||mon==6||mon==9||mon==11)
  245.                                      {
  246.                                      temp=1;
  247.                                      }
  248.                    if(mon==2)
  249.                                     {
  250.                                     if(y==0)
  251.                                      {
  252.                                    temp=3;
  253.                                      }
  254.                                      else
  255.                                     {
  256.                                     temp=4;
  257.                                     }
  258.                                     }
  259.                   if(temp==0)
  260.                                   {
  261.                                       day++;
  262.                        if(day==32)
  263.                          {
  264.                           day=1;
  265.                          }
  266.                      write_clock(0x0B,day);
  267.                      write_com(0x80+0x0B);
  268.                                   }
  269.                                   if(temp==1)
  270.                                     {
  271.                                           day++;
  272.                        if(day==31)
  273.                          {
  274.                           day=1;
  275.                          }
  276.                      write_clock(0x0B,day);
  277.                      write_com(0x80+0x0B);
  278.                                         }
  279.                                   if(temp==3)
  280.                                   {
  281.                                     day++;
  282.                        if(day==30)
  283.                          {
  284.                           day=1;
  285.                          }
  286.                      write_clock(0x0B,day);
  287.                      write_com(0x80+0x0B);
  288.                                   }
  289.                                   if(temp==4)
  290.                                   {
  291.                                      day++;
  292.                        if(day==29)
  293.                          {
  294.                           day=1;
  295.                          }
  296.                      write_clock(0x0B,day);
  297.                      write_com(0x80+0x0B);
  298.                                   }
  299.                                              
  300.                                   }

  301.                        if(num1==5)
  302.                     {
  303.                      mon++;
  304.                        if(mon==13)
  305.                          {
  306.                           mon=1;
  307.                          }
  308.                                          write_clock(0x08,mon);
  309.                      write_com(0x80+0x08);
  310.                         
  311.                                  }
  312.                                  if(num1==6)
  313.                     {
  314.                      year1++;
  315.                        if(year1==100)
  316.                          {
  317.                           year1=1;
  318.                                                   year2++;
  319.                          }
  320.                                          write_clock(0x05,year1);
  321.                                          write_clock(0x03,year2);
  322.                      write_com(0x80+0x03);
  323.                         
  324.                                  }
  325.                           
  326.                                           
  327.          }
  328.   }

  329. if(s3==0)
  330.   {
  331.     delayx(5);
  332.       if(s3==0)
  333.         {
  334.           while(!s3);
  335.                 if(num1==1)
  336.                    {
  337.                     miao--;
  338.                       if(miao==-1)
  339.                          {
  340.                           miao=59;
  341.                          }
  342.                     write_clock(0x4B,miao);
  343.                     write_com(0x80+0x40+11);                    
  344.                    }
  345.                 if(num1==2)
  346.                    {     
  347.                     fen--;
  348.                       if(fen==-1)
  349.                          {
  350.                           fen=59;
  351.                          }
  352.                     write_clock(0x48,fen);
  353.                     write_com(0x80+0x40+8);
  354.                    }
  355.                 if(num1==3)
  356.                     {
  357.                      shi--;
  358.                        if(shi==-1)
  359.                          {
  360.                           shi=23;
  361.                          }
  362.                      write_clock(0x45,shi);
  363.                      write_com(0x80+0x40+5);
  364.                     }

  365.                                         if(num1==4)
  366.                                      {
  367.                                      if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)
  368.                                      {
  369.                                       temp=0;
  370.                                      }
  371.                                    if(mon==4||mon==6||mon==9||mon==11)
  372.                                      {
  373.                                      temp=1;
  374.                                      }
  375.                    if(mon==2)
  376.                                     {
  377.                                     if(y==0)
  378.                                      {
  379.                                    temp=3;
  380.                                      }
  381.                                      else
  382.                                     {
  383.                                     temp=4;
  384.                                     }
  385.                                     }
  386.                   if(temp==0)
  387.                                   {
  388.                                       day--;
  389.                        if(day==0)
  390.                          {
  391.                           day=31;
  392.                          }
  393.                      write_clock(0x0B,day);
  394.                      write_com(0x80+0x0B);
  395.                                   }
  396.                                   if(temp==1)
  397.                                     {
  398.                                           day--;
  399.                        if(day==0)
  400.                          {
  401.                           day=30;
  402.                          }
  403.                      write_clock(0x0B,day);
  404.                      write_com(0x80+0x0B);
  405.                                         }
  406.                                   if(temp==3)
  407.                                   {
  408.                                     day--;
  409.                        if(day==0)
  410.                          {
  411.                           day=29;
  412.                          }
  413.                      write_clock(0x0B,day);
  414.                      write_com(0x80+0x0B);
  415.                                   }
  416.                                   if(temp==4)
  417.                                   {
  418.                                      day--;
  419.                        if(day==0)
  420.                          {
  421.                           day=28;
  422.                          }
  423.                      write_clock(0x0B,day);
  424.                      write_com(0x80+0x0B);
  425.                                   }
  426.                                              
  427.                                   }

  428.                        if(num1==5)
  429.                     {
  430.                      mon--;
  431.                        if(mon==0)
  432.                          {
  433.                           mon=12;
  434.                          }
  435.                                          write_clock(0x08,mon);
  436.                      write_com(0x80+0x08);
  437.                         
  438.                                  }
  439.                                  if(num1==6)
  440.                     {
  441.                      year1--;
  442.                        if(year1==-1)
  443.                          {
  444.                           year1=99;
  445.                                                   year2--;
  446.                          }
  447.                                          write_clock(0x05,year1);
  448.                                          write_clock(0x03,year2);
  449.                      write_com(0x80+0x03);
  450. ……………………

  451. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


所有资料51hei提供下载:
单片机电子时钟51hei设计(含源代码和仿真图).rar (58.75 KB, 下载次数: 32)
51hei.png

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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