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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3349|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機車型空調(diào)控制系統(tǒng)程序+萬年歷Proteus仿真

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:511094 發(fā)表于 2019-11-20 20:35 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機源程序如下:
  1. #include <at89x51.h>                                //頭文件
  2. #include "18b20.h"
  3. #include "1302.h"
  4. #include "12864.h"
  5. #include "zifu.h"
  6. #include "Time.h"
  7. #include "Delay.h"

  8. sbit People_KEY_ADD        = P1^0;                   //人數(shù)加按鍵
  9. sbit People_KEY_DEC        = P1^1;                   //人數(shù)減按鍵

  10. int People = 0;                   //人數(shù)值,默認為0





  11. uchar k,direction;
  12. bit flag;
  13. bit flag5=0;                           //flag5是外部中斷1的標志位 flag1是步進標志
  14. uchar p,dengji;               //定時次數(shù)
  15. bit flag1=0;
  16. systemtime realtime;
  17. bit first=1;                                   //中斷次數(shù)控制

  18. void Display_People(void);
  19. void KEY_People(void);

  20. /*=========================================
  21. //定時器中斷,
  22. =========================================*/
  23. void dingshi() interrupt 1  using 1  //定時程序.產(chǎn)生步進時間
  24. {
  25.    if(p--)
  26.    {
  27.     TL0=0;
  28.         TH0=0xa0;
  29.         flag1=0;
  30.    }
  31.    else
  32.    {
  33.      flag1=1;
  34.          TL0=0;
  35.          TH0=0x00;
  36.          p=20-(dengji>>1);
  37.    }
  38. }

  39. /*=========================================
  40. //中斷函數(shù) ,用于檢測時間調(diào)節(jié)按鍵
  41. =========================================*/
  42. void zhongduan() interrupt 0 using 0
  43.   {
  44.     uchar i=0;
  45.         if(first)               //FIRST=1;打開方向按鍵判斷標志
  46.         {
  47.         first=0;            
  48.         k=(P2>>6);           
  49.         k=k&0x03;                                
  50.         if(flag)
  51.           {
  52.             if(k==1)     direction=3;//左
  53.             if(k==2)         direction=1;//右
  54.              }
  55.           else
  56.            {
  57.             if(k==0)         direction=4;//上
  58.             if(k==3)         direction=2;//下
  59.              }
  60.         }
  61.   }
  62.                                  


  63. /*萬年歷子程序*/                                          
  64. void wannianli(void)
  65. {
  66.   uchar i;
  67.   uchar count1=0;
  68.   k=0;
  69.   choose12864(2);
  70.   init12864();
  71.   clear12864();
  72.   play8(0,0,0,shu2);                 //屏,列,頁,地址
  73.   play8(0,1,0,shu0);
  74.   play16(0,4,0,nian);
  75.   play16(1,0,0,yue);
  76.   play16(1,4,0,ri);
  77.   play16(0,2,1,shi);
  78.   play16(0,6,1,fen);
  79.   play16(1,2,1,miao);

  80.   play16(1,0,2,xing);
  81.   play16(1,2,2,qi);
  82.   vertical(3,63,127);
  83.   vertical(3,63,126);
  84.   vertical(3,63,122);
  85.   vertical(3,63,121);
  86.    for(i=0;i<7;i++)
  87.   {
  88.     dot(121+i,3);
  89.         dot(121+i,63);
  90.   }
  91.   for(i=0;i<12;i++)
  92.   {
  93.     dot(123,8+5*i);
  94.   }
  95.         play16(0,0,3,che);
  96.         play16(0,2,3,xiang);
  97.         play16(0,4,3,ren);
  98.         play16(0,6,3,shu);
  99. //  for(i=0;i<7;i++)
  100. //  {
  101. //    if(i<4)
  102. //        {
  103. //          play16(0,i<<1,3,yanyu+(i<<5));
  104. //        }
  105. //        if(i>=4)
  106. //        {
  107. //          play16(1,(i-4)<<1,3,yanyu+(i<<5));
  108. //        }
  109. //  }
  110.   init_ds1302();
  111.   init_time();
  112.   flag5=0;
  113.   do
  114.   {
  115.            KEY_People();
  116.           Display_People();
  117.      if(P3&0x04)
  118.      first=1;
  119.      init_ds1302();
  120.      gettime(&realtime);
  121.          play8(0,2,0,(shu0+(datastring[0]<<4)));
  122.          play8(0,3,0,(shu0+(datastring[1]<<4)));
  123.          play8(0,6,0,(shu0+(datastring[2]<<4)));
  124.          play8(0,7,0,(shu0+(datastring[3]<<4)));
  125.          play8(1,2,0,(shu0+(datastring[4]<<4)));
  126.          play8(1,3,0,(shu0+(datastring[5]<<4)));
  127.          play8(0,0,1,(shu0+(datastring[6]<<4)));
  128.          play8(0,1,1,(shu0+(datastring[7]<<4)));
  129.          play8(0,4,1,(shu0+(datastring[8]<<4)));
  130.          play8(0,5,1,(shu0+(datastring[9]<<4)));
  131.          play8(1,0,1,(shu0+(datastring[10]<<4)));
  132.          play8(1,1,1,(shu0+(datastring[11]<<4)));
  133.          play16(1,4,2,(yi+((datastring[12]-2)<<5)));
  134.          gettemperature();
  135.          if(flagg)
  136.          {
  137.            play8(0,0,2,fu);
  138.            play8(1,6,3,fu);
  139.          }
  140.          else
  141.           {
  142.             clear8(6,4,0);
  143.                 play8(1,6,3,zheng);
  144.           }
  145.          play8(0,4+flagg,2,dian);
  146.      play8(0,5+flagg,2,C);
  147.          play8(0,0+flagg,2,(shu0+(temp[0]<<4)));
  148.          play8(0,1+flagg,2,(shu0+(temp[1]<<4)));
  149.          play8(0,2+flagg,2,xiao);
  150.          play8(0,3+flagg,2,(shu0+(temp[2]<<4)));
  151.          play();
  152.          dot(124,3);
  153.          if((k==0x02)&&((P3&0x04)==0x04))
  154.          {
  155.            count1++;
  156.            if(count1==7)
  157.            count1=0;
  158.            switch (count1)
  159.            {
  160.              case 0:
  161.                         {
  162.                   play16(1,0,2,xing);
  163.                   play16(1,2,2,qi);
  164.                                   k=0;break;
  165.                                 }
  166.          
  167.              case 1:
  168.                         {
  169.                                   play16_fb(0,4,0);                        
  170.                                   k=0; break;
  171.                                 }
  172.                 case 2:
  173.                         {
  174.                   play16(0,4,0,nian);
  175.                   play16_fb(1,0,0);
  176.                                   k=0;break;                                 
  177.                                 }
  178.             case 3:
  179.                         {
  180.                                   play16(1,0,0,yue);
  181.                   play16_fb(1,4,0);
  182.                                   k=0;break;
  183.                                 }  
  184.                 case 4:
  185.                         {
  186.                                   play16(1,4,0,ri);
  187.                   play16_fb(0,2,1);
  188.                                   k=0;break;
  189.                                 }
  190.                 case 5:
  191.                         {
  192.                                   play16(0,2,1,shi);
  193.                   play16_fb(0,6,1);
  194.                                   k=0;break;
  195.                                 }
  196.                 case 6:
  197.                         {
  198.                                    play16(0,6,1,fen);
  199.                                    play16_fb(1,0,2);
  200.                    play16_fb(1,2,2);
  201.                                    k=0;break;
  202.                                 }
  203.                 default:k=0;break;
  204.            }
  205.          }
  206.          if((k==0x03)&&((P3&0x04)==0x04))
  207.          {
  208.            switch(count1)
  209.            {
  210.              case 1:
  211.                          {
  212.                                    setjia(ds1302_year);k=0;break;
  213.                                  }
  214.                  case 2:
  215.                                  {
  216.                                    setjia(ds1302_month);k=0;break;
  217.                                  }
  218.                  case 3:
  219.                                  {
  220.                                    setjia(ds1302_day);k=0;break;
  221.                                  }
  222.                     case 4:
  223.                                  {
  224.                                    setjia(ds1302_hour);k=0;break;
  225.                                  }
  226.                  case 5:
  227.                                  {
  228.                                    setjia(ds1302_minute);k=0;break;
  229.                                  }
  230.                  case 6:
  231.                                  {
  232.                                   setjia(ds1302_week);k=0;break;
  233.                                  }
  234.            }
  235.          }
  236.          if((k==0x01)&&((P3&0x04)==0x04))
  237.          {
  238.            switch(count1)
  239.            {
  240.              case 1:
  241.                          {
  242.                                    setjian(ds1302_year);k=0;break;
  243.                                  }
  244.                  case 2:
  245.                                  {
  246.                                    setjian(ds1302_month);k=0;break;
  247.                                  }
  248.                  case 3:
  249.                                  {
  250.                                    setjian(ds1302_day);k=0;break;
  251.                                  }
  252.                     case 4:
  253.                                  {
  254.                                    setjian(ds1302_hour);k=0;break;
  255.                                  }
  256.                  case 5:
  257.                                  {
  258.                                    setjian(ds1302_minute);k=0;break;
  259.                                  }
  260.                  case 6:
  261.                                  {
  262.                                    setjian(ds1302_week);k=0;break;
  263.                                  }
  264.            }
  265.         }
  266.   }        while(!flag5);
  267. }

  268. /*=========================================
  269. //人數(shù)調(diào)節(jié)按鍵函數(shù)
  270. =========================================*/
  271. void KEY_People( void )
  272. {
  273.         //人數(shù)加
  274.         if( People_KEY_ADD == 0 )                                //按鍵按下
  275.         {
  276.                 Delay_ms( 2 );                         //延時消抖
  277.                 if( People_KEY_ADD == 0 )                          //再次檢測
  278.                 {
  279.                         Delay_ms( 2 );                         //延時消抖
  280.                         while( !People_KEY_ADD );                        //松手檢測        
  281.                         People++;
  282.                         if( People >= 9999 )
  283.                         {
  284.                                 People = 9999;
  285.                         }
  286.                 }
  287.         }
  288.         //人數(shù)減
  289.         if( People_KEY_DEC == 0 )                                //按鍵按下
  290.         {
  291.                 Delay_ms( 2 );                         //延時消抖
  292.                 if( People_KEY_DEC == 0 )                          //再次檢測
  293.                 {
  294.                         Delay_ms( 2 );                         //延時消抖
  295.                         while( !People_KEY_DEC );                        //松手檢測        
  296.                         People--;
  297.                         if( People <= 0 )
  298.                         {
  299.                                 People = 0;
  300.                         }
  301.                 }
  302.         }
  303. }

  304. /*=========================================
  305. //人數(shù)調(diào)節(jié)按鍵函數(shù)
  306. =========================================*/
  307. void Display_People( void )
  308. {
  309.         //顯示千位
  310.         play8(1,0,3,maohao);
  311.         if( People/1000 == 0 )
  312.         {
  313.                 play8(1,1,3,shu0);        
  314.         }
  315.         if( People/1000 == 1 )
  316.         {
  317.                 play8(1,1,3,shu1);        
  318.         }
  319.         if( People/1000 == 2 )
  320.         {
  321.                 play8(1,1,3,shu2);        
  322.         }
  323.         if( People/1000 == 3 )
  324.         {
  325.                 play8(1,1,3,shu3);        
  326.         }
  327.         if( People/1000 == 4 )
  328.         {
  329.                 play8(1,1,3,shu4);        
  330.         }
  331.         if( People/1000 == 5 )
  332.         {
  333.                 play8(1,1,3,shu5);        
  334.         }
  335.         if( People/1000 == 6 )
  336.         {
  337.                 play8(1,1,3,shu6);        
  338.         }
  339.         if( People/1000 == 7 )
  340.         {
  341.                 play8(1,1,3,shu7);        
  342.         }
  343.         if( People/1000 == 8 )
  344.         {
  345.                 play8(1,1,3,shu8);        
  346.         }
  347.         if( People/1000 == 9 )
  348.         {
  349.                 play8(1,1,3,shu9);        
  350.         }

  351.         //顯示擺位
  352.         if( People%1000/100 == 0 )
  353.         {
  354.                 play8(1,2,3,shu0);        
  355.         }
  356.         if( People%1000/100 == 1 )
  357.         {
  358.                 play8(1,2,3,shu1);        
  359.         }
  360.         if( People%1000/100 == 2 )
  361.         {
  362.                 play8(1,2,3,shu2);        
  363.         }
  364.         if( People%1000/100 == 3 )
  365.         {
  366.                 play8(1,2,3,shu3);        
  367.         }
  368.         if( People%1000/100 == 4 )
  369.         {
  370.                 play8(1,2,3,shu4);        
  371.         }
  372.         if( People%1000/100 == 5 )
  373.         {
  374.                 play8(1,2,3,shu5);        
  375.         }
  376.         if( People%1000/100 == 6 )
  377.         {
  378.                 play8(1,2,3,shu6);        
  379.         }
  380.         if( People%1000/100 == 7 )
  381.         {
  382.                 play8(1,2,3,shu7);        
  383.         }
  384.         if( People%1000/100 == 8 )
  385.         {
  386.                 play8(1,2,3,shu8);        
  387.         }
  388.         if( People%1000/100 == 9 )
  389.         {
  390.                 play8(1,2,3,shu9);        
  391.         }

  392.         //顯示十位
  393.         if( People%100/10 == 0 )
  394.         {
  395.                 play8(1,3,3,shu0);        
  396.         }
  397.         if( People%100/10 == 1 )
  398.         {
  399.                 play8(1,3,3,shu1);        
  400.         }
  401.         if( People%100/10 == 2 )
  402.         {
  403.                 play8(1,3,3,shu2);        
  404.         }
  405.         if( People%100/10 == 3 )
  406.         {
  407.                 play8(1,3,3,shu3);        
  408.         }
  409.         if( People%100/10 == 4 )
  410.         {
  411.                 play8(1,3,3,shu4);        
  412.         }
  413.         if( People%100/10 == 5 )
  414.         {
  415.                 play8(1,3,3,shu5);        
  416.         }
  417.         if( People%100/10 == 6 )
  418.         {
  419.                 play8(1,3,3,shu6);        
  420.         }
  421.         if( People%100/10 == 7 )
  422.         {
  423.                 play8(1,3,3,shu7);        
  424.         }
  425.         if( People%100/10 == 8 )
  426.         {
  427.                 play8(1,3,3,shu8);        
  428.         }
  429.         if( People%100/10 == 9 )
  430.         {
  431.                 play8(1,3,3,shu9);        
  432.         }

  433.                 //顯示個位
  434.         if( People%10 == 0 )
  435.         {
  436.                 play8(1,4,3,shu0);        
  437.         }
  438.         if( People%10 == 1 )
  439.         {
  440.                 play8(1,4,3,shu1);        
  441.         }
  442.         if( People%10 == 2 )
  443.         {
  444.                 play8(1,4,3,shu2);        
  445.         }
  446.         if( People%10 == 3 )
  447.         {
  448.                 play8(1,4,3,shu3);        
  449.         }
  450.         if( People%100 == 4 )
  451.         {
  452.                 play8(1,4,3,shu4);        
  453.         }
  454.         if( People%10 == 5 )
  455.         {
  456.                 play8(1,4,3,shu5);        
  457.         }
  458.         if( People%10 == 6 )
  459.         {
  460.                 play8(1,4,3,shu6);        
  461.         }
  462.         if( People%10 == 7 )
  463.         {
  464.                 play8(1,4,3,shu7);        
  465.         }
  466.         if( People%10 == 8 )
  467.         {
  468.                 play8(1,4,3,shu8);        
  469.         }
  470.         if( People%10 == 9 )
  471.         {
  472.                 play8(1,4,3,shu9);        
  473.         }

  474. }

  475. /*=========================================
  476. //主函數(shù)
  477. =========================================*/
  478. void main(void)
  479. {
  480.         P2=0xff;
  481.         TIME_Init();
  482.         choose12864(2);
  483.         init12864();
  484.         clear12864();
  485.         
  486.         
  487.         play16(0,4,2,wnl);
  488.         play16(0,6,2,wnl+32);
  489.         play16(1,0,2,wnl+64);

  490.         while(1)
  491.         {
  492.                 play16(0,4,2,wnl);
  493.                 play16(0,6,2,wnl+32);
  494.                 play16(1,0,2,wnl+64);
  495.                 play16_fb(0,4,0);
  496.                 play16_fb(0,6,0);
  497.                 play16_fb(1,0,0);
  498.                
  499.                
  500.                 wannianli();
  501.                
  502.                  choose12864(2);
  503.                  init12864();
  504.                  clear12864();
  505.                
  506.                  play16(0,4,2,wnl);
  507.                  play16(0,6,2,wnl+32);
  508.                  play16(1,0,2,wnl+64);
  509.         }
  510. }


復制代碼
全部資料51hei下載地址:
DSP_萬年歷.zip (64.18 KB, 下載次數(shù): 42)


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本黄色一级片视频 | 国产精品一区二区av | 亚洲精品日韩在线观看 | 国产成人精品免高潮在线观看 | 国产精品久久久久久久久久软件 | 久久久久久中文字幕 | 日韩三级在线观看 | 亚洲字幕在线观看 | 天天爽网站 | 二区av | 欧美福利精品 | 在线欧美亚洲 | 男女羞羞的网站 | 在线一级片 | 亚洲综合在线播放 | 国产福利在线 | 看片天堂 | 在线观看免费国产 | 日韩精品久久 | 在线视频成人 | 久久av网 | 在线观看精品 | 精彩视频一区二区三区 | 国产视频二区在线观看 | 国产激情| 久久神马| 成人在线视频免费观看 | 欧美成人精品一区二区男人看 | 视频一区 亚洲 | 久久国产免费 | 水蜜桃久久夜色精品一区 | 国产精品九九视频 | 91精品一区 | 日韩中文字幕 | 国偷自产av一区二区三区 | 欧美成人精品激情在线观看 | 日韩二三区 | 国产良家自拍 | 久久久久国产精品 | 成人免费视频观看视频 | 亚洲五码在线 |