找回密码
 立即注册

QQ登录

只需一步,快速开始

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

使用proteus仿真数控恒流源的时候遇到real time simulation failed to start

[复制链接]
跳转到指定楼层
楼主
650黑币
求哪位大神帮帮小弟
我在使用proteus7.8仿真的时候遇到下图的错误
电路如下图
            
仿真源程序和程序在附件里            
程序如下
  1. #include<reg52.h>                        //52系列单片机头文件
  2. #include<math.h>
  3. #include <intrins.h>       
  4. #define uchar unsigned char                         //宏定义
  5. #define uint unsigned int

  6. sbit we1=P3^4;         
  7. sbit we2=P3^5;         
  8. sbit we3=P3^6;         
  9. sbit we4=P3^7;         
  10. sbit key1=P2^2;         //输入显示和采样显示切换
  11. sbit key2=P2^3;         //        电流输出使能
  12. sbit key3=P2^4;         //+100MA
  13. sbit key4=P2^5;         //+10MA
  14. sbit key5=P2^6;         //+1MA
  15. sbit key6=P2^7;         //-1MA

  16. sbit DAIN=P0^0;            //DAC  数据输出
  17. sbit DACS=P0^1;                //DAC  片选         
  18. sbit DAOUT=P0^2;        //DAC数据输入
  19. sbit CLK=P0^3;                //ADC DAC  CLK
  20. sbit ADOUT=P0^4;        //ADC        数据输入
  21. sbit BUSY=P0^5;                //ADC
  22. sbit CON=P0^6;                //ADC       
  23. sbit SPK=P2^1;                //speak       

  24. uchar fo1,fo2,fo3,fo4;                //显示值
  25. uint DATA1=0;
  26. uint T_Count=0;
  27. uint CYS=0;
  28. uint KA=0;
  29. uint DAT=0;

  30. uchar code table[]={                                   //数组定义
  31.                 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  32.             0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

  33. void delays(uint);                    //子函数申明
  34. void keys();                                //子函数申明
  35. void LED();                                        //子函数申明
  36. void adc();                                        //子函数申明
  37. void dac();                                        //子函数申明
  38. void speak();                                //子函数申明

  39. void main()
  40. {
  41.         TMOD = 0x00;
  42.         TH0  = (8192-3000)/32;
  43.         TL0  = (8192-3000)%32;
  44.         IE   = 0x82;
  45.         TR0  = 1;

  46.         key1=1;
  47.         key2=1;
  48.         key3=1;
  49.         key4=1;
  50.         key5=1;
  51.         key6=1;
  52.         fo1=0;
  53.         fo2=0;
  54.         fo3=0;
  55.         fo4=0;
  56.         while(1)
  57.         {         
  58.         keys(); //按键函数 返回值为KA变量       
  59.     dac(); //DAC函数         
  60.     adc();        //ADC采样   返回值为DATA1
  61.         LED();
  62.         delays(20);
  63.         speak();
  64.     }
  65. }
  66. /*---------主函数-----------------------------------------------*/
  67. void delays(uint ns)
  68. {
  69.         uint i,j;
  70.         for(i=ns;i>0;i--)
  71.         for(j=100;j>0;j--);
  72. }
  73. /*----------------延时程序-----------------------------------------------*/
  74. void keys()                           //按键函数
  75. {
  76.         if(key1==0)                 //kay1  +100MA
  77.         {         
  78.         delays(1);         //延时消抖
  79.         if(key1==0)
  80.         while(!key1);//等待松手       
  81.         if(KA>=2000)
  82.         KA=2000;       
  83.         else
  84.         KA=KA+100;
  85.         }
  86.         if(key2==0)                 //kay2  -100MA
  87.         {         
  88.         delays(1);         //延时消抖
  89.         if(key2==0)
  90.         while(!key2);//等待松手       
  91.         if(KA<=100)
  92.         KA=0;       
  93.         else
  94.         KA=KA-100;
  95.         }
  96.           if(key3==0)                 //kay3  +10MA
  97.         {         
  98.         delays(1);         //延时消抖
  99.         if(key3==0)
  100.         while(!key3);//等待松手       
  101.         if(KA>=2000)
  102.         KA=2000;       
  103.         else
  104.         KA=KA+10;
  105.         }
  106.         if(key4==0)                 //kay4  -10MA         
  107.         {
  108.         delays(1);         //延时消抖
  109.         if(key4==0)
  110.         while(!key4);//等待松手       
  111.         if(KA<=10)
  112.         KA=0;
  113.         else
  114.         KA=KA-10;
  115.         }
  116.         if(key5==0)                 //kay5  +1         
  117.         {
  118.         delays(1);         //延时消抖
  119.         if(key5==0)
  120.         while(!key5);//等待松手       
  121.         if(KA>=2000)
  122.         KA=2000;
  123.         else
  124.         KA=KA+1;
  125.         }
  126.         if(key6==0)                 //kay2  -1       
  127.         {
  128.         delays(1);         //延时消抖
  129.         if(key6==0)
  130.         while(!key6);//等待松手       
  131.         if(KA==0)
  132.         KA=0;
  133.         else
  134.         KA=KA-1;
  135.         }
  136. }
  137. /*----------------按键程序-----------------------------------------------*/

  138. /*----------------数码管显示程序-----------------------------------------------*/
  139. void LED()                                  
  140. {
  141.         DAT=KA;
  142.         fo1=(DAT/1000)%10;
  143.         fo2=(DAT/100)%10;
  144.         fo3=(DAT/10)%10;
  145.         fo4=DAT%10;       
  146.            we1=0;          
  147.         P1=table[fo1+10];
  148.         delays(2);
  149.         we1=1;
  150.         we2=0;
  151.         P1=table[fo2];
  152.         delays(2);
  153.         we2=1;                                                                                                  
  154.         we3=0;
  155.         P1=table[fo3];
  156.         delays(2);
  157.         we3=1;
  158.         we4=0;
  159.         P1=table[fo4];
  160.         delays(2);
  161.         we4=1;
  162. }
  163. /*----------------DAC输出程序-----------------------------------------------*/
  164. void dac()                  // DAC输出
  165. {
  166.         uchar data i;
  167.         uint data j ;
  168.         j=KA*1.3;         //1.2为系数          
  169.            CLK=0;
  170.         DACS=0;
  171.         for(i=0;i<16;i++)
  172.         {
  173.         DAIN=j&0x8000;
  174.         CLK=1;
  175.         CLK=0;
  176.         j=j<<1;
  177.         }
  178.         DACS=1;
  179.         DAIN=1;
  180.     CLK=1;
  181. }

  182. /*----------------ADC采样函数程序-----------------------------------------------*/
  183. void adc()                  
  184. {
  185.     uchar data r;
  186.         CON=1;_nop_();
  187.         CON=0;_nop_();
  188.         delays(1);
  189.         CON=1;_nop_();
  190.         while(BUSY!=0)
  191.         CLK=0;
  192.         for(r=0;r<16;r++)
  193.         {
  194.         CLK = 1; _nop_();
  195.         CLK = 0; _nop_();
  196.         DATA1=DATA1<<1|ADOUT;
  197.         }       
  198.         CLK=1;_nop_();
  199.         delays(3);
  200.         CON=0;
  201.         while(BUSY==0)
  202.         CON=1;
  203. }                       
  204. /*----------------蜂鸣器报警程序-----------------------------------------------*/
  205. void speak()
  206. {
  207.   if(DATA1>=5000)
  208.   SPK=0;
  209.   else
  210.   SPK=1;
  211. }                  
  212. /*----------------中断控制显示函数-----------------------------------------------*/
  213. void LED_Flash() interrupt 1
  214. {
  215.         TH0=(8192-5000)/32;                 //定时器中断初值修改1000可以对显示时间进行修改
  216.         TL0=(8192-5000)%32;
  217.         if(++T_Count==100)
  218.         {
  219.         CYS=DATA1/3;
  220.         T_Count=0;
  221.                 }
  222. }
复制代码


数控恒流源.zip

117.7 KB, 下载次数: 17

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

使用道具 举报

沙发
ID:462267 发表于 2022-5-18 14:45 | 只看该作者
删除其中电源输入器件即不报错
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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