找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4455|回复: 6
打印 上一主题 下一主题
收起左侧

蓝桥杯单片机智能灌溉系统Proteus仿真+源程序 求帮助

  [复制链接]
跳转到指定楼层
楼主
这是师傅叫我们做的蓝桥杯的题,用的是Proteus8和keil5;
单片机进阶
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include "supend.h"
  2. #include "Nixie_tube.h"
  3. #include "pcf8591.h"
  4. #include "ds1320.h"
  5. #include "key_bord.h"
  6. #include "at24c02.h"
  7. void Time_out();
  8. void Decide();
  9. void LED_A_M() ;
  10. //------------------------------------------------------------------------------------------------------
  11. u8 time[8];                                                       //临时存储,时间,湿度值等                                                       //手动/自动切换标志位
  12. u8 V;                                                             //用于存储湿度值
  13. bit K7,flag,K6,K4,K5,H,K;                                         //标志位,H自动下蜂鸣器叫
  14. bit set=0,Z;                                                      //set自动和手动切换,Z标志位
  15. u8 X=50,Y;                                                        //X存储自动设定下的湿度值,Y蜂鸣器和继电器
  16. //---------------------------------------定时器0中断服务函数---------------------------------------------
  17. void Service1_function() interrupt 1
  18. {
  19.         TR0=0;
  20.         TH0=(65536-500)/256;
  21.         TL0=(65536-500)%256;                                                    //数码管显示函数
  22.   keyscan();                                                      //按键扫描函数
  23.          switch(Trg)                                                    //选择第几页
  24.                 {
  25.                   case 0x01:{K7=~K7;};break;                                      //S7
  26.                          case 0x02:{K6=~K6;};break;                                      //S6
  27.                   case 0x04:{K5=~K5;K=1;};break;                                  //S5
  28.                         case 0x08:{K4=~K4;K=0;};break;                                  //S4
  29.                 }
  30.         V=Pcf8591ReadByte();                                                    //湿度测量函数
  31.   V=(V*100)/254;                                                          //湿度处理函数
  32.         Time_out();                                                       //时间/湿度处理
  33.         Decide();                                                         //
  34.         display();
  35.         LED_A_M() ;
  36.   TR0=1;
  37. }

  38. //---------------------------------------时间/湿度处理---------------------------------------------------------

  39. void Time_out()
  40. {
  41.         if(flag==0)
  42.         {
  43.                  WriteSet1302(0x82,0x30);//分
  44.            WriteSet1302(0x84,0x08);//时
  45.                   X=EEP_ReadChar(0x01);
  46.                 flag=1;
  47.         }
  48.         if(set==0)
  49. {
  50.                 time[0]=ReadSet1302(0x85)>>4;
  51.                 time[1]=ReadSet1302(0x85)&0x0f;
  52.                 time[2]=10;
  53.                 time[3]=ReadSet1302(0x83)>>4;
  54.                 time[4]=ReadSet1302(0x83)&0x0f;
  55.                 time[5]=11;
  56.                 time[6]=V/10;
  57.                 time[7]=V%10;
  58.         }
  59.         if(set==1)
  60.         {
  61.                 time[0]=10;
  62.                 time[1]=10;
  63.                 time[2]=11;
  64.                 time[3]=11;
  65.                 time[4]=11;
  66.                 time[5]=11;
  67.                 time[6]=X/10;
  68.                 time[7]=X%10;
  69.         }
  70.                
  71. }
  72. //----------------------------------------判断蜂鸣器开关/存储X到at24c02-------------------------------------------------
  73. void Decide()
  74. {
  75.         if(K7==0)
  76.         {
  77.                 if(K6==1) set=1;
  78.                 if(K5==1)        {K5=0;X++;Z=1;}
  79.                 if(K4==1)        {K4=0;X--;Z=1;}
  80.                 if(K6==0) set=0;
  81.                 if(Z==1)  {Z=0;EEP_WriteChar(0x01,X);}
  82.         }
  83.   if(V>=X){H=0;}
  84.         if(V<X){H=1;}
  85. }
  86. //--------------------------------------led闪亮/继电器-------------------------------------------------------------------------
  87. void LED_A_M()                                                    //手动/自动模式切换灯函数
  88. {
  89.         if(K7==0)                                                       //自动
  90.         {
  91.                 LED=0xfe;
  92.                 if(H==1) BUZZER=0x50;
  93.           if(H==0) BUZZER=0x00;
  94.         }
  95.         if(K7==1)                                                        //手动
  96.   {
  97.     LED=0xfd;

  98.                
  99.                         if(K6==1)Y=Y|0x40;
  100.                         if(K6==0)Y=Y&0xbf;
  101.       if(K==1){ Y=Y|0x10;}
  102.                   if(K==0) {Y=Y&0xef;}
  103.                         BUZZER=Y;
  104. }
  105. }
复制代码

仿真无法运行,求帮助:
智能灌溉.7z (226.12 KB, 下载次数: 180)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:390650 发表于 2019-11-7 15:19 | 只看该作者
好样的 好好努力拿大奖
回复

使用道具 举报

板凳
ID:425325 发表于 2019-12-9 21:33 | 只看该作者
为什么我用8.0的打不开,
回复

使用道具 举报

地板
ID:665331 发表于 2019-12-18 00:10 来自手机 | 只看该作者
不错,谢谢分享
回复

使用道具 举报

5#
ID:735193 发表于 2020-4-27 20:53 | 只看该作者
不适用Proteus打开吗
回复

使用道具 举报

6#
ID:500348 发表于 2020-5-30 18:39 | 只看该作者
940135 发表于 2019-12-18 00:10
不错,谢谢分享

你好,图看不清,能分开截图清楚点吗
回复

使用道具 举报

7#
ID:911276 发表于 2021-4-25 14:22 | 只看该作者
打不开呀
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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