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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機仿真寵物投食系統程序 Proteus工程

[復制鏈接]
跳轉到指定樓層
樓主
包括C語言程序和proteus仿真
具有顯示時間 檢測溫度 重量檢測 聲光報警 以及電機控制等功能

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機源程序如下:
  1. #include "reg52.h"               
  2. #include "ds1302.h"       
  3. #include "lcd.h"
  4. #include "temp.h"
  5. #include "intrins.h"
  6. /*對數據類型進行聲明定義*/
  7. typedef unsigned int u16;          
  8. typedef unsigned char u8;
  9. #define ulong unsigned long
  10. #define GPIO_MOTOR P1

  11. /****I/O口定義****/
  12. sbit KEY1 = P3^0;
  13. sbit KEY2 = P3^1;
  14. sbit KEY3 = P3^2;

  15. sbit BEEP = P2^7;
  16. sbit LED1  = P3^3;


  17. sbit DOUT=P3^4;        //定義2543數據讀取口
  18. sbit DIN =P3^5;        //定義2543數據寫入口
  19. sbit CS  =P3^6;        //定義2543片選信號口
  20. sbit CLK =P3^7;        //定義時鐘信號口

  21. /****變量定義****/
  22. bit adjust;//調節標志位  0-1
  23. u8 num;//鬧鐘調節位
  24. u8 hour_shi, hour_ge, minute_shi, minute_ge;//鬧鐘調節
  25. ulong Volt;//測量的電壓值
  26. ulong AD_Volt;//測量的電壓值
  27. ulong quality;//檢測重量
  28. ulong quality_set=2000;//設置的重量閾值200克

  29. unsigned char code FFW_X[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //X反轉順序

  30. unsigned char code FFZ_X[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //X正轉順序

  31. unsigned char Direction,stop=0;

  32. void delay30ms(void)   //誤差 0us
  33. {
  34.     unsigned char a,b;
  35.     for(b=101;b>0;b--)
  36.         for(a=147;a>0;a--);
  37. }

  38. void Delay(unsigned int t)
  39. {
  40. unsigned int k;
  41. while(t--)
  42. {
  43. for(k=0; k<80; k++)
  44. { }
  45. }
  46. }



  47. void Motor()
  48. {
  49.         unsigned char a=30;
  50. unsigned char i;
  51. for(i=0;i<8;i++)
  52. {

  53.   if(Direction==1&&stop==0)                 //正轉電機&電機沒按下停止

  54. GPIO_MOTOR = FFW_X[i]&0x0F;//取數據

  55. if(Direction==2&&stop==0)                 //反轉&X電機&電機沒按下停止

  56. GPIO_MOTOR = FFZ_X[i]&0x0F;

  57.   Delay(a);
  58.   }
  59. }

  60. void Read2543(uchar addr)
  61. {
  62.         uint ad=0;
  63.         uchar i;
  64.         CLK=0;
  65.         CS=0;//片選段,啟動2543
  66.         addr<<=4;//對地址位預處理
  67.         for(i=0;i<12;i++) //12個時鐘走完,完成一次讀取測量
  68.         {
  69.                 if(DOUT==1)
  70.                         ad=ad|0x01;//單片機讀取ad數據
  71.                 DIN=addr&0x80;//2543讀取測量地址位
  72.                 CLK=1;
  73.                 ;;;//很短的延時
  74.                 CLK=0;//產生下降沿,產生時鐘信號
  75.                 ;;;
  76.                 addr<<=1;
  77.                 ad<<=1;//將數據移位準備下一位的讀寫
  78.         }
  79.         CS=1;//關2543
  80.         ad>>=1;
  81.         Volt=ad;//取走轉換結果
  82.         //Volt=Volt*1221;//例子的滿量程為5V,轉換分辯率為12位(2的12次方=4096) 。即最大值是255,5/4096=1221mV,即例子中的1V代表實際1221mV
  83.   
  84.         Volt=Volt*5000/4095;
  85.         quality=(Volt/5.12+40)*10/4;//計算壓力
  86.         //Pressure=(Volt/5.41+40)*10/4;
  87.                
  88. }



  89. void KEY_Control()//按鍵調節
  90. {
  91.         if(KEY1==0)
  92.         {
  93.                 delay30ms();
  94.                 if(KEY1==0)
  95.                 {
  96.                   stop=0;
  97.                          Direction=1;       
  98.                 }
  99.         }
  100.         if(KEY2==0)
  101.         {
  102.                 delay30ms();
  103.                 if(KEY2==0)
  104.                 {
  105.                 stop=0;
  106.                          Direction=2;       
  107.                 }
  108.         }
  109.         if(KEY3==0)
  110.         {
  111.                 delay30ms();
  112.                 if(KEY3==0)
  113.                 {
  114.                
  115.                  stop=1;       
  116.                 }
  117.         }
  118.        
  119. }

  120. void show_quality(void)//顯示重量
  121. {
  122.         quality=quality-30;
  123.                 DisplayOneChar(11,0,(char)(quality/1000+'0'));
  124.           DisplayOneChar(12,0,(char)(quality%1000/100+'0'));
  125.           DisplayOneChar(13,0,(char)((quality%100)/10+'0'));
  126.        
  127.         if( quality <= quality_set )
  128.         {
  129.                 stop=0;
  130.                 Direction=1;
  131.                 BEEP=0;
  132.                 LED1=0;
  133.                 Delay(200);
  134.                 BEEP=1;
  135.                 LED1=1;
  136.                 Delay(300);
  137.         }
  138.        
  139.         if( quality > quality_set )
  140.         {
  141.                 stop=1;
  142.                
  143.                 BEEP=1;
  144.                 LED1=1;
  145.                
  146.         }
  147. }



  148. void main()//主函數
  149. {       
  150.        
  151.         LcdInit();

  152.         DisplayOneChar(0,0,'2'); DisplayOneChar(1,0,'0'); DisplayOneChar(4,0,'-'); DisplayOneChar(7,0,'-');//2022-05-05  6
  153.         DisplayOneChar(2,1,':'); DisplayOneChar(5,1,':'); DisplayOneChar(2,1,':');//13:39:40       
  154.         DisplayListChar(9,1,"T:"); DisplayOneChar(13,1,'.'); DisplayOneChar(15,1,'C');//T:23.5C
  155.         DisplayOneChar(15,0,'g');
  156.         while(1)
  157.         {
  158.                
  159.                 KEY_Control();//按鍵控制
  160.                 Motor();//步進電機控制
  161.                        
  162.                 Read2543(0);//檢測重量
  163.                 show_quality();//顯示重量
  164.                
  165.                
  166.                
  167.                 ReadTemperature();//讀取溫度       
  168.                 DisplayTemp();//顯示溫度
  169.                
  170.                        
  171.                 Ds1302ReadTime();//讀取時間
  172.                 DisplayTime();//顯示時間
  173.                        
  174.                
  175.         }
  176. }
復制代碼

Keil代碼與Proteus8.8仿真下載:
寵物投食系統.zip (201 KB, 下載次數: 88)



評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:1057463 發表于 2022-12-13 23:38 | 只看該作者
附件里面沒有dsn文件嗎
回復

使用道具 舉報

板凳
ID:262 發表于 2022-12-13 23:42 | 只看該作者
mhwgo555 發表于 2022-12-13 23:38
附件里面沒有dsn文件嗎

作者說了是Proteus8.8的仿真,要安裝Proteus8.8才能打開.pdsprj工程的
dsn都是7.5很老的版本了,現在很少有人使用Proteus7.5了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久亚洲调教 | 91精品91久久久 | av网站免费 | 国产中文字幕在线 | 一级做a爰片性色毛片 | 亚洲精品久久久久中文字幕二区 | 亚洲色图插插插 | 亚洲成人在线视频播放 | 国产亚洲成av人在线观看导航 | 亚洲精品一区二区在线观看 | 天堂视频中文在线 | 欧美另类视频 | 精品国产乱码久久久久久88av | 岛国在线免费观看 | 国产视频中文字幕 | 国产精品久久影院 | 国产视频中文字幕 | 天堂av中文| 成人h动漫亚洲一区二区 | 一级黄色大片 | 成人精品国产免费网站 | 日韩欧美一级 | 精品欧美乱码久久久久久1区2区 | 日韩精品一区二区三区中文在线 | 欧美日韩国产精品激情在线播放 | 波多野结衣一区二区三区在线观看 | 欧美一区二区成人 | 亚洲国产精品va在线看黑人 | 国产精品三级 | 成年无码av片在线 | 国产一区二区三区精品久久久 | 国产一区在线免费观看 | 久久综合久久久 | 精品国产乱码久久久久久老虎 | 一级黄色片免费 | 中文字幕日本一区二区 | 亚洲一区在线播放 | 亚洲欧美中文字幕在线观看 | 91成人午夜性a一级毛片 | 久久久久久看片 | 欧美二级|