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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4275|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的寵物自動(dòng)喂食系統(tǒng)程序與Proteus仿真圖

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
(1)、使用單片機(jī)匯編語言或C語言;
(2)、程序功能要求:通過小鍵盤給定,實(shí)現(xiàn)自動(dòng)/手動(dòng)喂食模式切換,自動(dòng)模式下,可設(shè)置喂食時(shí)間和當(dāng)前時(shí)間,步進(jìn)電機(jī)正轉(zhuǎn)模擬投食,投食結(jié)束后電機(jī)反轉(zhuǎn);手動(dòng)模式下,按鍵手動(dòng)喂食開,手動(dòng)喂食關(guān);數(shù)碼管(或液晶)顯示每次喂食時(shí)間和當(dāng)前時(shí)間。
(3)、上位機(jī)監(jiān)控功能要求:通過串口或USB口實(shí)現(xiàn)上/下位機(jī)通信,能夠顯示步進(jìn)電機(jī)當(dāng)前狀態(tài),能夠從上位機(jī)控制下位機(jī)之步進(jìn)電機(jī)工作。

寵物自動(dòng)喂食系統(tǒng)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)寵物自動(dòng)喂食源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. uchar ms,miao,fen,shi,shi_n=0,fen_n=1,miao_n;
  5. uchar mos;
  6. uchar mm,mm_d;
  7. uchar shu,g;
  8. bit aa,zi_d,shijian;
  9. sbit rs = P2^0;
  10. sbit rw = P2^1;
  11. sbit e  = P2^2;
  12. sbit led=P3^7;
  13. sbit k1=P2^3;
  14. sbit k2=P2^4;
  15. sbit k3=P2^5;
  16. sbit k4=P2^6;
  17. sbit k5=P2^7;
  18. sbit T_CLK = P3^6; /*實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 */
  19. sbit T_IO = P3^7; /*實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 */
  20. sbit T_RST = P3^5; /*實(shí)時(shí)時(shí)鐘復(fù)位線引腳 */
  21. sbit ACC0=ACC^0;
  22. sbit ACC1=ACC^1;
  23. sbit ACC2=ACC^2;
  24. sbit ACC3=ACC^3;
  25. sbit ACC4=ACC^4;
  26. sbit ACC5=ACC^5;
  27. sbit ACC6=ACC^6;
  28. sbit ACC7=ACC^7;

  29. uchar code FFW[]=
  30. {
  31. 0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
  32. };

  33. uchar code REV[]=
  34. {
  35.         0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01
  36. };

  37. void delay(uchar m)
  38.   {      
  39.          uchar i;
  40.          while(m--)
  41.          {
  42.                   for(i = 0 ; i<250;i++) ;
  43.          }
  44.   }

  45. void xiezhilin(uchar zhilin)
  46.   {      
  47.       
  48.         rs = 0 ;
  49.           rw = 0 ;
  50.           e = 0 ;
  51.           P0 = zhilin ;
  52.     delay(1);
  53.           e = 1 ;
  54.         delay(1);
  55.           e = 0 ;
  56.   }
  57. void xiesu(uchar suzi)
  58. {      
  59.       
  60.         rs = 1 ;
  61.           rw = 0 ;
  62.           e = 0 ;
  63.           P0 = suzi ;
  64.         delay(1);
  65.           e = 1 ;
  66.         delay(1);
  67.           e = 0 ;
  68. }

  69. void xianshi(uchar dizhi, uchar suzi)
  70.   {
  71.    xiezhilin(dizhi);
  72.    xiesu(suzi);
  73.   }
  74. void xian()
  75.        {
  76.                                 if(zi_d==0)
  77.                                 {
  78.          xianshi(0x80+0x40+1,'Z');
  79.         }
  80.         else
  81.         {
  82.          xianshi(0x80+0x40+1,'S');
  83.         }


  84.              if((mos==1)&&(aa==1))
  85.                          {
  86.                            xianshi(0x80+4,' ');
  87.                            xianshi(0x80+5,' ');
  88.                          }
  89.                         else
  90.                          {
  91.                               xianshi(0x80+4,0x30+shi_n%100/10);
  92.                            xianshi(0x80+5,0x30+shi_n%10);
  93.                         }
  94.                     xianshi(0x80+6,':');
  95.                     if((mos==2)&&(aa==1))
  96.                          {
  97.                           xianshi(0x80+7,' ');
  98.                           xianshi(0x80+8,' ');
  99.                          }
  100.                         else
  101.                          {
  102.                              xianshi(0x80+7,0x30+fen_n%100/10);
  103.                           xianshi(0x80+8,0x30+fen_n%10);
  104.                         }
  105.           
  106.                     xianshi(0x80+9,':');
  107.                          if((mos==3)&&(aa==1))
  108.                          {
  109.                           xianshi(0x80+10,' ');
  110.                           xianshi(0x80+11,' ');
  111.                          }
  112.                         else
  113.                          {
  114.                              xianshi(0x80+10,0x30+miao_n%100/10);
  115.                           xianshi(0x80+11,0x30+miao_n%10);
  116.                         }

  117.                          if((mos==4)&&(aa==1))
  118.                          {
  119.                           xianshi(0x80+0x40+4,' ');
  120.                           xianshi(0x80+0x40+5,' ');
  121.                          }
  122.                         else
  123.                          {
  124.                             xianshi(0x80+0x40+4,0x30+shi%100/10);
  125.                           xianshi(0x80+0x40+5,0x30+shi%10);
  126.                         }
  127.                
  128.                     xianshi(0x80+0x40+6,':');
  129.                            if((mos==5)&&(aa==1))
  130.                          {
  131.                                   xianshi(0x80+0x40+7,' ');
  132.                             xianshi(0x80+0x40+8,' ');
  133.                          }
  134.                         else
  135.                          {
  136.                              xianshi(0x80+0x40+7,0x30+fen%100/10);
  137.                             xianshi(0x80+0x40+8,0x30+fen%10);
  138.                         }
  139.                
  140.                     xianshi(0x80+0x40+9,':');
  141.                         xianshi(0x80+0x40+10,0x30+miao%100/10);
  142.                         xianshi(0x80+0x40+11,0x30+miao%10);
  143.            }
  144. /*------------------------------------------------
  145.                     發(fā)送一個(gè)字節(jié)
  146. ------------------------------------------------*/
  147. void SendByte(unsigned char dat)
  148. {
  149. SBUF = dat;
  150. while(!TI);
  151.       TI = 0;
  152. }
  153. void z_zhuan()
  154.       {

  155.                                 xianshi(0x80+0x40+15,'Z');
  156.                                 SendByte('Z');
  157.        
  158.                                 for(mm_d=0;mm_d<24;mm_d++)
  159.                                 {
  160.         P1=FFW[mm];
  161.                                 delay(20);
  162.                                 mm++;
  163.                                 if(mm>7) {mm=0;}
  164.                                 }
  165.                    P1=0x09;
  166.                         xianshi(0x80+0x40+15,' ');
  167.       }                 
  168. void f_zhuan()
  169.       {
  170.                        
  171.                                 xianshi(0x80+0x40+15,'F');
  172.                                 SendByte('F');
  173.                
  174.                                 for(mm_d=0;mm_d<24;mm_d++)
  175.                                 {
  176.         P1=REV[mm];
  177.                                 delay(20);
  178.                                 mm++;
  179.                                 if(mm>7) {mm=0;}
  180.                                 }
  181.               P1=0x09;
  182.                           xianshi(0x80+0x40+15,' ');
  183.       }       



  184. void v_RTInputByte(uchar ucDa)
  185.    {
  186.       uchar i;
  187.       ACC = ucDa;
  188.       for(i=8; i>0; i--)
  189.        {
  190.           T_IO = ACC0;
  191.           T_CLK = 1;
  192.           T_CLK = 0;
  193.           ACC = ACC >> 1;
  194.        }
  195.    }
  196. uchar uc_RTOutputByte(void)
  197.    {
  198.      uchar i;
  199.        for(i=8; i>0; i--)
  200.          {
  201.            ACC = ACC >>1;
  202.            ACC7 = T_IO;
  203.            T_CLK = 1;
  204.            T_CLK = 0;
  205.          }
  206.        return(ACC);
  207.    }
  208. void v_W1302(uchar ucAddr, uchar ucDa)
  209.    {
  210.      T_RST = 0;
  211.      T_CLK = 0;
  212.      T_RST = 1;
  213.      v_RTInputByte(ucAddr); /* 地址,命令 */
  214.      v_RTInputByte(ucDa); /* 寫1Byte數(shù)據(jù)*/
  215.      T_CLK = 1;
  216.      T_RST =0;
  217.    }
  218. uchar uc_R1302(uchar ucAddr)
  219.    {
  220.      uchar ucDa;
  221.      T_RST = 0;
  222.      T_CLK = 0;
  223.      T_RST = 1;
  224.      v_RTInputByte(ucAddr); /* 地址,命令 */
  225.      ucDa = uc_RTOutputByte(); /* 讀1Byte數(shù)據(jù) */
  226.      T_CLK = 1;
  227.      T_RST =0;
  228.      return(ucDa);
  229.    }                       
  230. void dushi(void)
  231.       {
  232.            g=uc_R1302(0x81);
  233.            miao=g&0x70;
  234.            miao=miao>>4;
  235.            miao=(miao*10)+(g&0x0f);
  236.      
  237.            g=uc_R1302(0x83);
  238.            fen=g&0x70;
  239.            fen=fen>>4;
  240.            fen=(fen*10)+(g&0x0f);
  241.    
  242.            g=uc_R1302(0x85);
  243.            shi=g&0x70;
  244.            shi=shi>>4;
  245.            shi=(shi*10)+(g&0x0f);
  246.          }         

  247. void xieshi(void)
  248.       {
  249.           v_W1302(0x8E,0x00);//打開寄存器
  250.                             g=miao%100/10;
  251.           g=g<<4;
  252.           shu=g|(miao%10);
  253.           v_W1302(0x80,shu);
  254.                     
  255.           g=fen%100/10;
  256.                                         g=g<<4;
  257.                                         shu=g|(fen%10);
  258.                                         v_W1302(0x82,shu);
  259.                                        
  260.                                         g=shi%100/10;
  261.                                         g=g<<4;
  262.                                         shu=g|(shi%10);
  263.                                         v_W1302(0x84,shu);
  264.                                         v_W1302(0x8E,0x80);  //guan

  265.       }         

  266. void key()
  267.      {
  268.      if(k1==0)
  269.             {
  270.                   delay(5);
  271.                   if(k1==0)
  272.                    {
  273.         zi_d=0;
  274.                                 ES = 1;
  275.                          while(!k1);
  276.                          }
  277.                  }
  278.                  if(k2==0)
  279.             {
  280.                   delay(5);
  281.                   if(k2==0)
  282.                    {
  283.         zi_d=1;
  284.                          while(!k2);
  285.                          }
  286.                  }
  287.                  if(zi_d==0)
  288.                  {
  289.            if(k3==0)
  290.             {
  291.                   delay(5);
  292.                   if(k3==0)
  293.                    {
  294.                          mos++;if(mos==6) mos=0;
  295.                          while(!k3);
  296.                         }
  297.                  }
  298.           if(mos!=0)
  299.             {
  300.                   if(k4==0)
  301.                     {
  302.                          delay(5);
  303.                          if(k4==0)
  304.                            {
  305.                             if(mos==1){shi_n++;if(shi_n==24)shi_n=0;}
  306.                                  if(mos==2){fen_n++;if(fen_n==60)fen_n=0;}
  307.                                  if(mos==3){miao_n++;if(miao_n==60)miao_n=0;}
  308.                                  if(mos==4){shi++;if(shi==24)shi=0;}
  309.                                  if(mos==5){fen++;if(fen==60)fen=0;}
  310.                                  xieshi();
  311.                                  while(!k4);
  312.                            }
  313.                         }
  314.                  if(k5==0)
  315.                     {
  316.                          delay(5);
  317.                          if(k5==0)
  318.                            {
  319.                             if(mos==1){if(shi_n==0)shi_n=24; shi_n--;}
  320.                                  if(mos==2){if(fen_n==0)fen_n=60; fen_n--;}
  321.                                  if(mos==3){if(miao_n==0)miao_n=60; miao_n--;}
  322.                                  if(mos==4){if(shi==0)shi=24; shi--;}
  323.                                  if(mos==5){if(fen==0)fen=60; fen--;}
  324.                                  xieshi();
  325.                                  while(!k5);
  326.                            }
  327.                         }
  328.                 }
  329.           }
  330.                 else
  331.                  {
  332.         if(k4==0)
  333.                     {
  334.                          delay(5);
  335.                          if(k4==0)
  336.                            {
  337.                                  z_zhuan();                                 
  338.                                  while(!k4);
  339.                            }
  340.                           }
  341.                          if(k5==0)
  342.                     {
  343.                          delay(5);
  344.                          if(k5==0)
  345.                            {
  346.                                  f_zhuan();       
  347.                                  while(!k5);
  348.                            }
  349.                         }       
  350.      }
  351.          }
  352.                        
  353. void main()
  354.       {
  355.                   xiezhilin(0x01);    //顯示清屏
  356.             xiezhilin(0x38);   //顯示模式設(shè)置
  357.       xiezhilin(0x0c);     //光標(biāo)設(shè)置
  358. ……………………

  359. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

Keil代碼與Proteus8.8仿真下載:
51自動(dòng)喂食器.zip (191.94 KB, 下載次數(shù): 142)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:672792 發(fā)表于 2022-5-3 09:59 | 只看該作者
很實(shí)用的資料,感謝共享
回復(fù)

使用道具 舉報(bào)

板凳
ID:1030163 發(fā)表于 2022-6-4 11:44 | 只看該作者
為什么自己編譯之后時(shí)鐘那里顯示的是858585
回復(fù)

使用道具 舉報(bào)

地板
ID:536683 發(fā)表于 2022-6-13 16:31 | 只看該作者
感謝分享,請教仿真文件的版本是多少?
回復(fù)

使用道具 舉報(bào)

5#
ID:1024126 發(fā)表于 2023-5-18 20:23 | 只看該作者
歐卡卡 發(fā)表于 2022-6-4 11:44
為什么自己編譯之后時(shí)鐘那里顯示的是858585

我也是
回復(fù)

使用道具 舉報(bào)

6#
ID:262 發(fā)表于 2023-5-19 01:09 | 只看該作者

你的Proteus版本不行吧,我用的8.13打開是這樣的

51hei.gif (342.49 KB, 下載次數(shù): 91)

51hei.gif
回復(fù)

使用道具 舉報(bào)

7#
ID:1024126 發(fā)表于 2023-5-19 12:42 | 只看該作者
heicad 發(fā)表于 2023-5-19 01:09
你的Proteus版本不行吧,我用的8.13打開是這樣的

你用keil5編譯一下,在仿真,就會(huì)顯示858585
回復(fù)

使用道具 舉報(bào)

8#
ID:1147096 發(fā)表于 2025-4-4 16:44 | 只看該作者
有報(bào)告嗎
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩毛片在线免费观看 | 久久久不卡网国产精品一区 | 全免一级毛片 | 日本久久精品视频 | 亚洲欧美国产精品久久 | 欧美在线国产精品 | 一级免费a| 亚洲国产69 | 四虎影视在线 | 午夜一区二区三区 | 国产精品伦理一区 | 一区观看 | 九九久久久 | 成人久草 | 国产日韩欧美一区 | 国产一级片久久久 | 日韩欧美在线观看 | 免费久 | 成人一区二区视频 | 欧美视频精品 | 国产精品入口麻豆www | 一区二区三区精品视频 | h视频免费看| 能免费看的av | 久久久久国产一区二区三区 | 成人久草 | 日韩精品中文字幕一区二区三区 | 国产精品亚洲一区二区三区在线 | 国产欧美精品一区二区 | 日韩一级电影免费观看 | 中文字幕 欧美 日韩 | 亚洲欧美在线免费观看 | 国产精品久久久久久久久久 | 欧美激情视频一区二区三区在线播放 | 亚洲欧美日韩国产综合 | 午夜一级做a爰片久久毛片 精品综合 | 久www| 亚洲欧美bt | 欧美乱码精品一区二区三区 | 国产精品一区二区在线播放 | 精品视频在线播放 |