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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2463|回復: 3
打印 上一主題 下一主題
收起左側

液晶萬年歷 四個按鍵 光標

[復制鏈接]
跳轉到指定樓層
樓主
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit w=P2^5;  
  5. sbit s=P2^6;
  6. sbit e=P2^7;
  7. sbit key1=P3^0;      //功能鍵
  8. sbit key2=P3^1;      //增加建
  9. sbit key3=P3^2;      //減小鍵
  10. sbit key4=P3^3;      //走動鍵
  11. uchar count,key1num,tianmax;
  12. long int miao=20,fen=59,shi=23,tian=27,yue=2,nian=2018;
  13. void delayms(uint xms)
  14. {
  15.    uint i,j;                    
  16.    for(i=xms;i>0;i--)
  17.       for(j=110;j>0;j--);
  18. }
  19. void write_com(uchar com)//命令
  20. {
  21.    s=0;
  22.    w=0;
  23.    e=0;
  24.    P0=com;
  25.    delayms(5);
  26.    e=1;
  27.    delayms(5);
  28.    e=0;
  29. }
  30. void write_date(uchar date)//數據  
  31. {
  32.     s=1;
  33.     w=0;
  34.     e=0;
  35.     P0=date;
  36.     delayms(5);
  37.     e=1;
  38.     delayms(5);
  39.     e=0;
  40. }
  41. void write_sfm(uchar add,uchar date) //寫時分秒函數   add位置  date輸入數據
  42. {                                                   
  43.     uchar shi,ge;
  44.     shi=date/10;
  45.     ge=date%10;                                                                  
  46.     write_com(0xc0+add);
  47.     write_date(0x30+shi);
  48.     write_date(0x30+ge);
  49. }
  50. void write_ry(uchar add,uchar date) //寫日月函數   add位置  date輸入數據
  51. {                                                   
  52.     uchar shi,ge;
  53.     shi=date/10;
  54.     ge=date%10;                                                                  
  55.     write_com(0x80+add);
  56.     write_date(0x30+shi);
  57.     write_date(0x30+ge);
  58. }
  59. void write_nian1()//寫年函數
  60. {   
  61.    uchar ge,shi,bai,qian;
  62.     qian=nian/1000%10;
  63.     bai=nian/100%10;
  64.     shi=nian/10%10;
  65.     ge=nian%10;
  66.     write_com(0x80+4);
  67.     write_date(0x30+qian);
  68.     write_date(0x30+bai);
  69.     write_date(0x30+shi);
  70.     write_date(0x30+ge);

  71. }
  72. void init()//初始化函數
  73. {
  74.     count=0;
  75.     key1num=0;
  76.     write_com(0x38);
  77.     write_com(0x08);
  78.     write_com(0x01);   
  79.     write_com(0x06);
  80.     write_com(0x0c);

  81. write_com(0xc0+6);
  82. write_date(':');
  83. delayms(1);
  84. write_com(0xc0+9);
  85. write_date(':');            
  86. delayms(1);

  87. write_com(0x80+11);
  88. write_date('-');
  89. delayms(1);
  90. write_com(0x80+8);
  91. write_date('-');
  92. delayms(1);

  93. write_sfm(10,miao);
  94. write_sfm(7,fen);
  95. write_sfm(4,shi);            

  96. write_ry(12,tian);
  97. write_ry(9,yue);
  98. write_nian1();

  99.     TMOD=0x01;
  100.     TH0=(65536-50000)/256;
  101.     TL0=(65536-50000)%256;
  102.     EA=1;
  103.     ET0=1;
  104.     TR0=1;
  105. }
  106. void keyscan()
  107. {
  108.    if(key1==0)
  109.    {
  110.      delayms(5);
  111.      if(key1==0)
  112.      {
  113.         key1num++;
  114.         while(!key1);
  115.       switch(key1num)
  116.       {
  117.         case 1:
  118.         TR0=0;
  119.         write_com(0xc0+10);                   //秒
  120.         write_com(0x0f);            //光標開始閃爍
  121.         break;

  122.         case 2:
  123.         write_com(0xc0+7);                  //分
  124.         break;

  125.         case 3:                               //時
  126.         write_com(0xc0+4);
  127.         break;

  128.         case 4:
  129.         write_com(0x80+12);                   //天
  130.         break;

  131.         case 5:
  132.         write_com(0x80+9);                   //月
  133.         break;

  134.         case 6:
  135.         write_com(0x80+4);                    //年
  136.         break;

  137.         case 7:
  138.         key1num=0;
  139.         write_com(0x0c);//取消光標閃爍
  140.         TR0=1;


  141.       }
  142.      }
  143.    }
  144.    if(key1num!=0)
  145.    {
  146.    if(key2==0)
  147.    {
  148.      delayms(5);
  149.      if(key2==0)
  150.      {
  151.          while(!key2);
  152.         if(key1num==1)
  153.         {
  154.            miao++;
  155.            if(miao==60)
  156.             miao=0;
  157.             write_sfm(10,miao);
  158.           }
  159.           if(key1num==2)
  160.           {
  161.             fen++;
  162.             if(fen==60)
  163.             fen=0;
  164.             write_sfm(7,fen);
  165.           }
  166.           if(key1num==3)
  167.           {
  168.             shi++;
  169.             if(shi==24)
  170.             shi=0;
  171.             write_sfm(4,shi);
  172.           }
  173.            if(key1num==4)
  174.           {
  175.             tian++;
  176.             if(tian==tianmax)
  177.             tian=1;
  178.             write_ry(12,tian);
  179.           }
  180.            if(key1num==5)
  181.           {
  182.             yue++;
  183.             if(yue==13)
  184.             yue=1;
  185.             write_ry(9,yue);
  186.           }
  187.           if(key1num==6)
  188.           {
  189.             nian++;
  190.             write_nian1();
  191.           }

  192.      }
  193.    }
  194.     if(key3==0)
  195.    {
  196.      delayms(5);
  197.      if(key3==0)
  198.      {
  199.          while(!key3);
  200.         if(key1num==1)
  201.         {
  202.            miao--;
  203.            if(miao==-1)
  204.             miao=59;
  205.             write_sfm(10,miao);
  206.           }
  207.           if(key1num==2)
  208.           {
  209.             fen--;
  210.             if(fen==-1)
  211.             fen=59;
  212.             write_sfm(7,fen);
  213.           }
  214.           if(key1num==3)
  215.           {
  216.             shi--;
  217.             if(shi==-1)
  218.             shi=23;
  219.             write_sfm(4,shi);
  220.           }
  221.            if(key1num==4)
  222.           {
  223.             tian--;
  224.             tianmax=tianmax-1;
  225.             if(tian==0)
  226.             tian=tianmax;
  227.             write_ry(12,tian);
  228.           }
  229.            if(key1num==5)
  230.           {
  231.             yue--;
  232.             if(yue==0)
  233.             yue=12;
  234.             write_ry(9,yue);
  235.           }
  236.           if(key1num==6)
  237.           {
  238.             nian--;
  239.             write_nian1();
  240.           }
  241.         }
  242.       }
  243. if(key4==0)     //走動
  244. {
  245.    delayms(5);
  246.    if(key4==0)
  247.    {
  248.      key1num=0;
  249.         write_com(0x0c);//取消光標閃爍
  250.         TR0=1;
  251.    }
  252.    while(!key3);
  253. }
  254.    }
  255. }
  256. void T0_time()interrupt 1
  257. {
  258.    
  259.   TH0=(65536-57000)/256;
  260.   TL0=(65536-57000)%256;
  261.   count++;
  262.   if(count==20)
  263.   {
  264.       count=0;
  265.       miao++;
  266.       if(miao==60)
  267.       {
  268.           miao=0;
  269.         fen++;
  270.         if(fen==60)
  271.         {
  272.             fen=0;
  273.           shi++;
  274.             if(shi==24)
  275.             {
  276.                shi=0;
  277.              tian++;
  278.               if(tian==tianmax)
  279.               {
  280.                  tian=1;
  281.                 yue++;
  282.                   if(yue==13)
  283.                   {
  284.                      yue=1;
  285.                     nian++;
  286.                      if(nian==9999)
  287.                      {
  288.                        nian=0;
  289.                      }
  290.                       write_nian1();
  291.                    }
  292.                  write_ry(9,yue);
  293.                 }
  294.                write_ry(12,tian);
  295.               }
  296.               write_sfm(4,shi);
  297.             }
  298.             write_sfm(7,fen);
  299.             }
  300.            write_sfm(10,miao);
  301.    }
  302. }
  303. void daymax()//最大天數
  304. {
  305. switch(yue)
  306. {
  307.   case 1:
  308.   case 3:
  309.   case 5:
  310.   case 7:
  311.   case 8:
  312.   case 10:
  313.   case 12:
  314.   tianmax=32;
  315.   break;

  316.   case 4:
  317.   case 6:
  318.   case 9:
  319.   case 11:
  320.   tianmax=31;
  321.   break;

  322.   case 2:
  323.   if((nian%400==0)||(nian%4==0&&nian%100!=0))//判斷潤平年
  324.    {
  325.      tianmax=30;
  326.    }
  327.      else
  328.      tianmax=29;
  329.      break;
  330. }
  331. }
  332. void main()
  333. {
  334.     init();
  335.     while(1)
  336.     {
  337.     daymax();
  338.       keyscan();
  339.     }
  340. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-12-16 21:40 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

板凳
ID:430571 發表于 2018-12-16 21:58 | 只看該作者
admin 發表于 2018-12-16 21:40
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣

附件中有詳解

液晶萬年歷實踐論文.doc

660 KB, 下載次數: 10, 下載積分: 黑幣 -5

含原理圖

評分

參與人數 1黑幣 +90 收起 理由
admin + 90 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:430571 發表于 2018-12-16 22:05 | 只看該作者
admin 發表于 2018-12-16 21:40
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣

原理圖

萬年歷(創新周).png (628.76 KB, 下載次數: 19)

萬年歷(創新周).png
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美在线视频 | 久久久久亚洲精品国产 | 91成人精品 | 亚洲一区二区三区在线免费 | 国产亚洲欧美日韩精品一区二区三区 | 在线观看中文字幕 | 国产精品欧美精品日韩精品 | 国产精品久久二区 | 玖玖在线免费视频 | 91资源在线播放 | 国产在线视频一区二区董小宛性色 | 精品久久久久久久久久 | 极品粉嫩国产48尤物在线播放 | 综合精品 | 亚洲巨乳自拍在线视频 | 久久久久免费精品国产 | 刘亦菲国产毛片bd | 视频一区二区国产 | 久草成人 | h视频免费在线观看 | 国产激情亚洲 | 涩色视频在线观看 | 久久久精品一区 | 久久免费国产 | 99re6在线 | 精品久久久av | 日韩毛片在线免费观看 | 亚洲国产精品一区二区第一页 | 好姑娘影视在线观看高清 | 欧美精品综合在线 | 亚洲网站在线观看 | 99精品视频在线 | 午夜精品久久久久久久星辰影院 | 热99视频| 亚洲成人动漫在线观看 | 人人爽人人爽 | 一区二区精品在线 | 在线免费小视频 | 精品中文在线 | 国产成人一区二区三区 | 亚洲成人免费观看 |