找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5169|回复: 5
收起左侧

单片机控制1602液晶显示万年历----利用三个按键来调节时间---希望带给你帮助

[复制链接]
ID:70976 发表于 2014-12-27 00:27 | 显示全部楼层 |阅读模式
  1. #include<reg52.h>
  2. sbit dula=P2^6;
  3. sbit wela=P2^7;
  4. sbit lcdwr=P3^6;
  5. sbit lcdrs=P3^5;
  6. sbit lcden=P3^4;
  7. sbit key1=P3^0;
  8. sbit key2=P3^1;
  9. sbit key3=P3^2;
  10. #define uchar unsigned char
  11. #define uint unsigned int
  12. uchar code table0[]=" 2011-04-03 SUN";//16
  13. uchar code table1[]="    00:00:00";//12
  14. uchar code table2[]="MON";
  15. uchar code table3[]="TUE";
  16. uchar code table4[]="WED";
  17. uchar code table5[]="THU";
  18. uchar code table6[]="FRI";
  19. uchar code table7[]="SAT";
  20. uchar code table8[]="SUN";
  21. uchar num,aa,bb,cc,dd,flag,flag1,flag2;
  22. char shi,fen,miao,ee,ff,gg;
  23. void delay(uchar z)
  24. {
  25. uint x,y;
  26.   for(x=z;x>0;x--)
  27.    for(y=110;y>0;y--);
  28. }
  29. void write_com(uchar com)
  30. {
  31. lcdrs=0;
  32. delay(5);
  33. P0=com;
  34. delay(5);
  35. lcden=1;
  36. delay(5);
  37. lcden=0;
  38. }
  39. void write_data(uchar date)
  40. {
  41. lcdrs=1;
  42. delay(5);
  43. P0=date;
  44. delay(5);
  45. lcden=1;
  46. delay(5);
  47. lcden=0;
  48. }
  49. void init()
  50. {
  51. dula=0;
  52. wela=0;
  53. lcdwr=0;
  54. lcdrs=1;
  55. lcden=0;
  56. shi=00;
  57. fen=00;
  58. miao=00;
  59. bb=0;
  60. cc=0;
  61. dd=0;
  62. ee=03;
  63. ff=04;
  64. gg=11;
  65. write_com(0x38);
  66. write_com(0x0c);
  67. write_com(0x06);
  68. write_com(0x80);
  69. write_com(0x01);
  70. for(num=0;num<15;num++)
  71.   {
  72.    write_data(table0[num]);
  73.    delay(5);
  74.   }
  75. write_com(0x80+0x40);
  76. for(num=0;num<12;num++)
  77.   {
  78.    write_data(table1[num]);
  79.    delay(5);
  80.   }
  81. TMOD=0x01;
  82. TH0=(65536-50000)/256;
  83. TL0=(65536-50000)%256;
  84. EA=1;
  85. ET0=1;
  86. TR0=1;
  87. }
  88. void sfm_date(uchar add,uchar date1)
  89. {
  90. uchar shi,ge;
  91. shi=date1/10;
  92. ge=date1%10;
  93. write_com(0x80+0x40+add);
  94. write_data(0x30+shi);
  95. write_data(0x30+ge);
  96. }
  97. void nyr_date1(uchar add,uchar date1)
  98. {
  99. uchar shi,ge;
  100. shi=date1/10;
  101. ge=date1%10;
  102. write_com(0x80+add);
  103. write_data(0x30+shi);
  104. write_data(0x30+ge);
  105. }
  106. void main()
  107. {
  108. init();
  109. while(1)
  110. {
  111.    if(key1==0)
  112.   {
  113.    bb++;
  114.    delay(5);
  115.    if(key1==0)
  116.     {
  117.      if(bb==1)
  118.       {
  119.        while(!key1);
  120.        TR0=0;
  121.        write_com(0x80+0x40+10);
  122.        write_com(0x0f);
  123.       }
  124.      if(bb==2)
  125.       {
  126.        while(!key1);
  127.        write_com(0x80+0x40+7);
  128.       }
  129.      if(bb==3)
  130.       {
  131.        while(!key1);
  132.        write_com(0x80+0x40+4);
  133.       }
  134.      if(bb==4)
  135.       {
  136.        while(!key1);
  137.        write_com(0x80+12);
  138.       
  139.       }
  140.        if(bb==5)
  141.       {
  142.        while(!key1);
  143.        write_com(0x80+9);
  144.       }
  145.        if(bb==6)
  146.       {
  147.        while(!key1);
  148.        write_com(0x80+6);
  149.       }
  150.        if(bb==7)
  151.       {
  152.        while(!key1);
  153.        write_com(0x80+3);
  154.       }
  155.        if(bb==8)
  156.       {
  157.        bb=0;
  158.        while(!key1);
  159.        TR0=1;
  160.        write_com(0x0c);
  161.       }
  162.     }
  163.   }
  164.   if(bb==1)
  165.    {
  166.     if(key2==0)
  167.      {
  168.       delay(5);
  169.       while(!key2);
  170.       miao++;
  171.       if(miao==60)
  172.        {
  173.         miao=0;
  174.        }
  175.        sfm_date(10,miao);
  176.        write_com(0x80+0x40+10);
  177.      }
  178.     if(key3==0)
  179.      {
  180.       delay(5);
  181.       while(!key3);
  182.       miao--;
  183.       if(miao==-1)
  184.        {
  185.         miao=59;
  186.        }
  187.        sfm_date(10,miao);
  188.        write_com(0x80+0x40+10);
  189.      }
  190.    }
  191.   if(bb==2)
  192.    {
  193.     if(key2==0)
  194.       {
  195.       delay(5);
  196.       while(!key2);
  197.       fen++;
  198.       if(fen==60)
  199.        {
  200.         fen=0;
  201.        }
  202.        sfm_date(7,fen);
  203.        write_com(0x80+0x40+7);
  204.      }
  205.     if(key3==0)
  206.       {
  207.       delay(5);
  208.       while(!key3);
  209.       fen--;
  210.       if(fen==-1)
  211.        {
  212.         fen=59;
  213.        }
  214.        sfm_date(7,fen);
  215.        write_com(0x80+0x40+7);
  216.      }
  217.    }
  218.   if(bb==3)
  219.    {
  220.     if(key2==0)
  221.      {
  222.       delay(5);
  223.       while(!key2);
  224.       shi++;
  225.       if(shi==24)
  226.        {
  227.         shi=0;
  228.        }
  229.       sfm_date(4,shi);
  230.       write_com(0x80+0x40+4);
  231.      }
  232.     if(key3==0)
  233.      {
  234.       delay(5);
  235.       while(!key3);
  236.       shi--;
  237.       if(shi==-1)
  238.        {
  239.         shi=23;
  240.        }
  241.       sfm_date(4,shi);
  242.       write_com(0x80+0x40+4);
  243.      }
  244.    }
  245.   if(bb==4)
  246.    {
  247.     if(key2==0)
  248.      {
  249.       delay(5);
  250.       dd++;
  251.       while(!key2);
  252.       if(dd==1)
  253.        {
  254.         for(cc=0;cc<3;cc++)
  255.          {
  256.           write_data(table2[cc]);
  257.          }
  258.        }
  259.       write_com(0x80+12);
  260.       if(dd==2)
  261.        {
  262.         for(cc=0;cc<3;cc++)
  263.          {
  264.           write_data(table3[cc]);
  265.          }
  266.        }
  267.       write_com(0x80+12);
  268.       if(dd==3)
  269.        {
  270.         for(cc=0;cc<3;cc++)
  271.          {
  272.           write_data(table4[cc]);
  273.          }
  274.        }
  275.       write_com(0x80+12);
  276.       if(dd==4)
  277.        {
  278.         for(cc=0;cc<3;cc++)
  279.          {
  280.           write_data(table5[cc]);
  281.          }
  282.        }
  283.       write_com(0x80+12);
  284.       if(dd==5)
  285.        {
  286.         for(cc=0;cc<3;cc++)
  287.          {
  288.           write_data(table6[cc]);
  289.          }
  290.        }
  291.       write_com(0x80+12);
  292.       if(dd==6)
  293.        {
  294.         for(cc=0;cc<3;cc++)
  295.          {
  296.           write_data(table7[cc]);
  297.          }
  298.        }
  299.       write_com(0x80+12);
  300.       if(dd==7)
  301.        {
  302.         dd=0;
  303.         for(cc=0;cc<3;cc++)
  304.          {
  305.           write_data(table8[cc]);
  306.          }
  307.        }
  308.       write_com(0x80+12);
  309.      }
  310.     if(key3==0)
  311.      {
  312.       dd++;
  313.       delay(5);
  314.       while(!key3);
  315.       if(dd==1)
  316.        {
  317.         for(cc=0;cc<3;cc++)
  318.          {
  319.           write_data(table8[cc]);
  320.          }
  321.        }
  322.       write_com(0x80+12);
  323.       if(dd==2)
  324.        {
  325.         for(cc=0;cc<3;cc++)
  326.          {
  327.           write_data(table7[cc]);
  328.          }
  329.        }
  330.       write_com(0x80+12);
  331.       if(dd==3)
  332.        {
  333.         for(cc=0;cc<3;cc++)
  334.          {
  335.           write_data(table6[cc]);
  336.          }
  337.        }
  338.       write_com(0x80+12);
  339.       if(dd==4)
  340.        {
  341.         for(cc=0;cc<3;cc++)
  342.          {
  343.           write_data(table5[cc]);
  344.          }
  345.        }
  346.       write_com(0x80+12);
  347.       if(dd==5)
  348.        {
  349.         for(cc=0;cc<3;cc++)
  350.          {
  351.           write_data(table4[cc]);
  352.          }
  353.        }
  354.       write_com(0x80+12);
  355.       if(dd==6)
  356.        {
  357.         for(cc=0;cc<3;cc++)
  358.          {
  359.           write_data(table3[cc]);
  360.          }
  361.        }
  362.       write_com(0x80+12);
  363.       if(dd==7)
  364.        {
  365.         dd=0;
  366.         for(cc=0;cc<3;cc++)
  367.          {
  368.           write_data(table2[cc]);
  369.          }
  370.        }
  371.       write_com(0x80+12);
  372.      }
  373.    }
  374.   if(bb==5)
  375.    {
  376.     if(key2==0)
  377.      {
  378.       delay(5);
  379.       while(!key2);
  380.       ee++;
  381.       if(ee==32)
  382.        {
  383.         ee=1;
  384.        }
  385.       nyr_date1(9,ee);
  386.       write_com(0x80+9);
  387.      }
  388.     if(key3==0)
  389.      {
  390.       delay(5);
  391.       while(!key3);
  392.       ee--;
  393.       if(ee==0)
  394.        {
  395.         ee=31;
  396.        }
  397.       nyr_date1(9,ee);
  398.       write_com(0x80+9);
  399.      }
  400.    }
  401.    if(bb==6)
  402.    {
  403.     if(key2==0)
  404.      {
  405.       delay(5);
  406.       while(!key2);
  407.       ff++;
  408.       if(ff==13)
  409.        {
  410.         ff=1;
  411.        }
  412.       nyr_date1(6,ff);
  413.       write_com(0x80+6);
  414.      }
  415.     if(key3==0)
  416.      {
  417.       delay(5);
  418.       while(!key3);
  419.       ff--;
  420.       if(ff==0)
  421.        {
  422.         ff=12;
  423.        }
  424.       nyr_date1(6,ff);
  425.       write_com(0x80+6);
  426.      }
  427.    }
  428.    if(bb==7)
  429.    {
  430.     if(key2==0)
  431.      {
  432.       delay(5);
  433.       while(!key2);
  434.       gg++;
  435.       if(gg==41)
  436.        {
  437.         gg=11;
  438.        }
  439.       nyr_date1(3,gg);
  440.       write_com(0x80+3);
  441.      }
  442.     if(key3==0)
  443.      {
  444.       delay(5);
  445.       while(!key3);
  446.       gg--;
  447.       if(gg==10)
  448.        {
  449.         gg=41;
  450.        }
  451.       nyr_date1(3,gg);
  452.       write_com(0x80+3);
  453.      }
  454.    }
  455.   if(aa==20)
  456.   {
  457.    aa=0;
  458.    miao++;
  459.    if(miao==60)
  460.    {
  461.     miao=0;
  462.     fen++;
  463.     if(fen==60)
  464.     {
  465.      fen=0;
  466.      shi++;
  467.      if(shi==24)
  468.      {
  469.       shi=0;
  470.       flag=1;
  471.      }
  472.      sfm_date(4,shi);
  473.     }
  474.     sfm_date(7,fen);
  475.    }
  476.   sfm_date(10,miao);
  477.   }
  478. if(flag==1)
  479.   {
  480.    flag=0;
  481.    ee++;
  482.    if(ee==32)
  483.     {
  484.      ee=1;
  485.      flag1=1;
  486.     }
  487.    nyr_date1(9,ee);
  488.    //write_com(0x80+9);
  489.    dd++;
  490.    if(dd==8)
  491.     {
  492.      dd=0;
  493.     }
  494.               if(dd==1)
  495.        {
  496.         write_com(0x80+12);
  497.         for(cc=0;cc<3;cc++)
  498.          {
  499.           write_data(table2[cc]);
  500.          }
  501.        }
  502.       write_com(0x80+12);
  503.       if(dd==2)
  504.        {
  505.         write_com(0x80+12);
  506.         for(cc=0;cc<3;cc++)
  507.          {
  508.           write_data(table3[cc]);
  509.          }
  510.        }
  511.       //write_com(0x80+12);
  512.       if(dd==3)
  513.        {
  514.         write_com(0x80+12);
  515.         for(cc=0;cc<3;cc++)
  516.          {
  517.           write_data(table4[cc]);
  518.          }
  519.        }
  520.       //write_com(0x80+12);
  521.       if(dd==4)
  522.        {
  523.         write_com(0x80+12);
  524.         for(cc=0;cc<3;cc++)
  525.          {
  526.           write_data(table5[cc]);
  527.          }
  528.        }
  529.       //write_com(0x80+12);
  530.       if(dd==5)
  531.        {
  532.         write_com(0x80+12);
  533.         for(cc=0;cc<3;cc++)
  534.          {
  535.           write_data(table6[cc]);
  536.          }
  537.        }
  538.       //write_com(0x80+12);
  539.       if(dd==6)
  540.        {
  541.         write_com(0x80+12);
  542.         for(cc=0;cc<3;cc++)
  543.          {
  544.           write_data(table7[cc]);
  545.          }
  546.        }
  547.       //write_com(0x80+12);
  548.       if(dd==7)
  549.        {
  550.         dd=0;
  551.         write_com(0x80+12);
  552.         for(cc=0;cc<3;cc++)
  553.          {
  554.           write_data(table8[cc]);
  555.          }
  556.        }
  557.      // write_com(0x80+12);
  558.   }
  559. if(flag1==1)
  560.   {
  561.    flag1=0;
  562.    ff++;
  563.    if(ff==13)
  564.     {
  565.      ff=1;
  566.      flag2=1;
  567.     }
  568.    nyr_date1(6,ff);
  569.    write_com(0x80+6);
  570.   }
  571. if(flag2==1)
  572.   {
  573.    flag2=0;
  574.    gg++;
  575.    if(gg==41)
  576.     {
  577.      gg=11;
  578.     }
  579.    nyr_date1(3,gg);
  580.    write_com(0x80+3);
  581.    
  582.   }
  583. }
  584. }
  585. void timer0() interrupt 1
  586. {
  587. TH0=(65536-50000)/256;
  588. TL0=(65536-50000)%256;
  589. aa++;
  590. }
复制代码

回复

使用道具 举报

ID:43559 发表于 2015-2-28 08:09 | 显示全部楼层
不是用1602做显示吗?设置
sbit dula=P2^6;
sbit wela=P2^7;
是为什么?


回复

使用道具 举报

ID:72611 发表于 2015-4-4 22:33 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:269228 发表于 2017-12-30 17:43 | 显示全部楼层
有图片吗?怎么用,为什么我烧录了没反应
回复

使用道具 举报

ID:554150 发表于 2019-6-3 21:59 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

ID:659828 发表于 2019-12-12 23:49 来自手机 | 显示全部楼层
没有农历显示
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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