普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 3352|回复: 3

数字温度计Proteus仿真问题

 关闭 [复制链接]

1

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2019-7-1 16:39:27 | 显示全部楼层 |阅读模式

请问各位大神们,我这Proteus仿真出错在哪,程序用的普中教程里面的程序但是仿真就一直这样

#include "reg52.h"
typedef unsigned int u16;   //¶ÔÊý¾ÝÀàÐͽøÐÐÉùÃ÷¶¨Òå
typedef unsigned char u8;
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
sbit DSPORT=P3^7;
void Delay1ms(uint );
uchar Ds18b20Init();
void Ds18b20WriteByte(uchar com);
uchar Ds18b20ReadByte();
void  Ds18b20ChangTemp();
void  Ds18b20ReadTempCom();
int Ds18b20ReadTemp();
#endif
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
char num=0;
u8 DisplayData[8];
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void Delay1ms(uint y)
{
uint x;
for( ; y>0; y--)
{
  for(x=110; x>0; x--);
}
}
uchar Ds18b20Init()
{
  uchar i;
DSPORT = 0;    //½«×ÜÏßÀ­µÍ480us~960us
i = 70;
while(i--);//ÑÓʱ642us
DSPORT = 1;   //È»ºóÀ­¸ß×ÜÏߣ¬Èç¹ûDS18B20×ö³ö·´Ó¦»á½«ÔÚ15us~60usºó×ÜÏßÀ­µÍ
i = 0;
while(DSPORT) //µÈ´ýDS18B20À­µÍ×ÜÏß
{
  Delay1ms(1);
  i++;
  if(i>5)//µÈ´ý>5MS
  {
   return 0;//³õʼ»¯Ê§°Ü
  }

}
return 1;//³õʼ»¯³É¹¦
}
void Ds18b20WriteByte(uchar dat)
{
uint i, j;
for(j=0; j<8; j++)
{
  DSPORT = 0;         //&Atilde;&iquest;&ETH;&acute;&Egrave;&euml;&Ograve;&raquo;&Icirc;&raquo;&Ecirc;&yacute;&frac34;&Yacute;&Ouml;&reg;&Ccedil;°&Iuml;&Egrave;°&Ntilde;×&Uuml;&Iuml;&szlig;&Agrave;&shy;&micro;&Iacute;1us
  i++;
  DSPORT = dat & 0x01;  //&Egrave;&raquo;&ordm;ó&ETH;&acute;&Egrave;&euml;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&frac34;&Yacute;&pound;&not;&acute;&Oacute;×&icirc;&micro;&Iacute;&Icirc;&raquo;&iquest;&ordf;&Ecirc;&frac14;
  i=6;
  while(i--); //&Ntilde;&Oacute;&Ecirc;±68us&pound;&not;&sup3;&Ouml;&ETH;&oslash;&Ecirc;±&frac14;&auml;×&icirc;&Eacute;&Ugrave;60us
  DSPORT = 1; //&Egrave;&raquo;&ordm;ó&Ecirc;&Iacute;·&Aring;×&Uuml;&Iuml;&szlig;&pound;&not;&Ouml;&Aacute;&Eacute;&Ugrave;1us&cedil;&oslash;×&Uuml;&Iuml;&szlig;&raquo;&Ouml;&cedil;&acute;&Ecirc;±&frac14;&auml;&sup2;&Aring;&Auml;&Uuml;&frac12;&Oacute;×&Aring;&ETH;&acute;&Egrave;&euml;&micro;&Uacute;&para;&thorn;&cedil;&ouml;&Ecirc;&yacute;&Ouml;&micro;
  dat >>= 1;
}
}
uchar Ds18b20ReadByte()
{
uchar byte, bi;
uint i, j;
for(j=8; j>0; j--)
{
  DSPORT = 0;//&Iuml;&Egrave;&frac12;&laquo;×&Uuml;&Iuml;&szlig;&Agrave;&shy;&micro;&Iacute;1us
  i++;
  DSPORT = 1;//&Egrave;&raquo;&ordm;ó&Ecirc;&Iacute;·&Aring;×&Uuml;&Iuml;&szlig;
  i++;
  i++;//&Ntilde;&Oacute;&Ecirc;±6us&micro;&Egrave;&acute;&yacute;&Ecirc;&yacute;&frac34;&Yacute;&Icirc;&Egrave;&para;¨
  bi = DSPORT;  //&para;&Aacute;&Egrave;&iexcl;&Ecirc;&yacute;&frac34;&Yacute;&pound;&not;&acute;&Oacute;×&icirc;&micro;&Iacute;&Icirc;&raquo;&iquest;&ordf;&Ecirc;&frac14;&para;&Aacute;&Egrave;&iexcl;
  /*&frac12;&laquo;byte×ó&Ograve;&AElig;&Ograve;&raquo;&Icirc;&raquo;&pound;&not;&Egrave;&raquo;&ordm;ó&Oacute;&euml;&Eacute;&Iuml;&Oacute;&Ograve;&Ograve;&AElig;7&Icirc;&raquo;&ordm;ó&micro;&Auml;bi&pound;&not;×&cent;&Ograve;&acirc;&Ograve;&AElig;&para;&macr;&Ouml;&reg;&ordm;ó&Ograve;&AElig;&micro;&ocirc;&Auml;&Ccedil;&Icirc;&raquo;&sup2;&sup1;0&iexcl;&pound;*/
  byte = (byte >> 1) | (bi << 7);        
  i = 4;  //&para;&Aacute;&Egrave;&iexcl;&Iacute;ê&Ouml;&reg;&ordm;ó&micro;&Egrave;&acute;&yacute;48us&Ocirc;&Ugrave;&frac12;&Oacute;×&Aring;&para;&Aacute;&Egrave;&iexcl;&Iuml;&Acirc;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;
  while(i--);
}   
return byte;
}
void  Ds18b20ChangTemp()
{
Ds18b20Init();
Delay1ms(1);
Ds18b20WriteByte(0xcc);  //&Igrave;&oslash;&sup1;&yacute;ROM&sup2;&Ugrave;×÷&Atilde;ü&Aacute;&icirc;   
Ds18b20WriteByte(0x44);     //&Icirc;&Acirc;&para;&Egrave;×&ordf;&raquo;&raquo;&Atilde;ü&Aacute;&icirc;
//Delay1ms(100); //&micro;&Egrave;&acute;&yacute;×&ordf;&raquo;&raquo;&sup3;&Eacute;&sup1;&brvbar;&pound;&not;&para;&oslash;&Egrave;&ccedil;&sup1;&ucirc;&Auml;&atilde;&Ecirc;&Ccedil;&Ograve;&raquo;&Ouml;±&Euml;&cent;×&Aring;&micro;&Auml;&raquo;°&pound;&not;&frac34;&Iacute;&sup2;&raquo;&Oacute;&Atilde;&Otilde;&acirc;&cedil;&ouml;&Ntilde;&Oacute;&Ecirc;±&Aacute;&Euml;
   
}
void  Ds18b20ReadTempCom()
{
Ds18b20Init();
Delay1ms(1);
Ds18b20WriteByte(0xcc);  //&Igrave;&oslash;&sup1;&yacute;ROM&sup2;&Ugrave;×÷&Atilde;ü&Aacute;&icirc;
Ds18b20WriteByte(0xbe);  //·&cent;&Euml;&Iacute;&para;&Aacute;&Egrave;&iexcl;&Icirc;&Acirc;&para;&Egrave;&Atilde;ü&Aacute;&icirc;
}
int Ds18b20ReadTemp()
{
int temp = 0;
uchar tmh, tml;
Ds18b20ChangTemp();     //&Iuml;&Egrave;&ETH;&acute;&Egrave;&euml;×&ordf;&raquo;&raquo;&Atilde;ü&Aacute;&icirc;
Ds18b20ReadTempCom();   //&Egrave;&raquo;&ordm;ó&micro;&Egrave;&acute;&yacute;×&ordf;&raquo;&raquo;&Iacute;ê&ordm;ó·&cent;&Euml;&Iacute;&para;&Aacute;&Egrave;&iexcl;&Icirc;&Acirc;&para;&Egrave;&Atilde;ü&Aacute;&icirc;
tml = Ds18b20ReadByte();  //&para;&Aacute;&Egrave;&iexcl;&Icirc;&Acirc;&para;&Egrave;&Ouml;&micro;&sup1;&sup2;16&Icirc;&raquo;&pound;&not;&Iuml;&Egrave;&para;&Aacute;&micro;&Iacute;×&Ouml;&frac12;&Uacute;
tmh = Ds18b20ReadByte();  //&Ocirc;&Ugrave;&para;&Aacute;&cedil;&szlig;×&Ouml;&frac12;&Uacute;
temp = tmh;
temp <<= 8;
temp |= tml;
return temp;
}
void delay(u16 i)
{
while(i--);
}
void datapros(int temp)   
{
    float tp;  
if(temp< 0)    //&micro;±&Icirc;&Acirc;&para;&Egrave;&Ouml;&micro;&Icirc;&ordf;&cedil;&ordm;&Ecirc;&yacute;
   {
  DisplayData[0] = 0x40;    //   -
  //&Ograve;ò&Icirc;&ordf;&para;&Aacute;&Egrave;&iexcl;&micro;&Auml;&Icirc;&Acirc;&para;&Egrave;&Ecirc;&Ccedil;&Ecirc;&micro;&frac14;&Ecirc;&Icirc;&Acirc;&para;&Egrave;&micro;&Auml;&sup2;&sup1;&Acirc;&euml;&pound;&not;&Euml;ù&Ograve;&Ocirc;&frac14;&otilde;1&pound;&not;&Ocirc;&Ugrave;&Egrave;&iexcl;·&acute;&Ccedil;ó&sup3;&ouml;&Ocirc;&shy;&Acirc;&euml;
  temp=temp-1;
  temp=~temp;
  tp=temp;
  temp=tp*0.0625*100+0.5;
  //&Aacute;&ocirc;&Aacute;&frac12;&cedil;&ouml;&ETH;&iexcl;&Ecirc;&yacute;&micro;&atilde;&frac34;&Iacute;*100&pound;&not;+0.5&Ecirc;&Ccedil;&Euml;&Auml;&Eacute;á&Icirc;&aring;&Egrave;&euml;&pound;&not;&Ograve;ò&Icirc;&ordf;C&Oacute;&iuml;&Ntilde;&Ocirc;&cedil;&iexcl;&micro;&atilde;&Ecirc;&yacute;×&ordf;&raquo;&raquo;&Icirc;&ordf;&Otilde;&ucirc;&ETH;&Iacute;&micro;&Auml;&Ecirc;±&ordm;ò°&Ntilde;&ETH;&iexcl;&Ecirc;&yacute;&micro;&atilde;
  //&ordm;ó&Atilde;&aelig;&micro;&Auml;&Ecirc;&yacute;×&Ocirc;&para;&macr;&Egrave;&yen;&micro;&ocirc;&pound;&not;&sup2;&raquo;&sup1;&Uuml;&Ecirc;&Ccedil;·&ntilde;&acute;ó&Oacute;&Uacute;0.5&pound;&not;&para;&oslash;+0.5&Ouml;&reg;&ordm;ó&acute;ó&Oacute;&Uacute;0.5&micro;&Auml;&frac34;&Iacute;&Ecirc;&Ccedil;&frac12;&oslash;1&Aacute;&Euml;&pound;&not;&ETH;&iexcl;&Oacute;&Uacute;0.5&micro;&Auml;&frac34;&Iacute;
  //&Euml;&atilde;&frac14;&Oacute;&Eacute;&Iuml;0.5&pound;&not;&raquo;&sup1;&Ecirc;&Ccedil;&Ocirc;&Uacute;&ETH;&iexcl;&Ecirc;&yacute;&micro;&atilde;&ordm;ó&Atilde;&aelig;&iexcl;&pound;

   }
  else
   {   
  DisplayData[0] = 0x00;
  tp=temp;//&Ograve;ò&Icirc;&ordf;&Ecirc;&yacute;&frac34;&Yacute;&acute;&brvbar;&Agrave;í&Oacute;&ETH;&ETH;&iexcl;&Ecirc;&yacute;&micro;&atilde;&Euml;ù&Ograve;&Ocirc;&frac12;&laquo;&Icirc;&Acirc;&para;&Egrave;&cedil;&sup3;&cedil;&oslash;&Ograve;&raquo;&cedil;&ouml;&cedil;&iexcl;&micro;&atilde;&ETH;&Iacute;±&auml;&Aacute;&iquest;
  //&Egrave;&ccedil;&sup1;&ucirc;&Icirc;&Acirc;&para;&Egrave;&Ecirc;&Ccedil;&Otilde;&yacute;&micro;&Auml;&Auml;&Ccedil;&Atilde;&acute;&pound;&not;&Auml;&Ccedil;&Atilde;&acute;&Otilde;&yacute;&Ecirc;&yacute;&micro;&Auml;&Ocirc;&shy;&Acirc;&euml;&frac34;&Iacute;&Ecirc;&Ccedil;&sup2;&sup1;&Acirc;&euml;&Euml;ü±&frac34;&Eacute;í
  temp=tp*0.0625*100+0.5;
  //&Aacute;&ocirc;&Aacute;&frac12;&cedil;&ouml;&ETH;&iexcl;&Ecirc;&yacute;&micro;&atilde;&frac34;&Iacute;*100&pound;&not;+0.5&Ecirc;&Ccedil;&Euml;&Auml;&Eacute;á&Icirc;&aring;&Egrave;&euml;&pound;&not;&Ograve;ò&Icirc;&ordf;C&Oacute;&iuml;&Ntilde;&Ocirc;&cedil;&iexcl;&micro;&atilde;&Ecirc;&yacute;×&ordf;&raquo;&raquo;&Icirc;&ordf;&Otilde;&ucirc;&ETH;&Iacute;&micro;&Auml;&Ecirc;±&ordm;ò°&Ntilde;&ETH;&iexcl;&Ecirc;&yacute;&micro;&atilde;
  //&ordm;ó&Atilde;&aelig;&micro;&Auml;&Ecirc;&yacute;×&Ocirc;&para;&macr;&Egrave;&yen;&micro;&ocirc;&pound;&not;&sup2;&raquo;&sup1;&Uuml;&Ecirc;&Ccedil;·&ntilde;&acute;ó&Oacute;&Uacute;0.5&pound;&not;&para;&oslash;+0.5&Ouml;&reg;&ordm;ó&acute;ó&Oacute;&Uacute;0.5&micro;&Auml;&frac34;&Iacute;&Ecirc;&Ccedil;&frac12;&oslash;1&Aacute;&Euml;&pound;&not;&ETH;&iexcl;&Oacute;&Uacute;0.5&micro;&Auml;&frac34;&Iacute;
  //&Euml;&atilde;&frac14;&Oacute;&Eacute;&Iuml;0.5&pound;&not;&raquo;&sup1;&Ecirc;&Ccedil;&Ocirc;&Uacute;&ETH;&iexcl;&Ecirc;&yacute;&micro;&atilde;&ordm;ó&Atilde;&aelig;&iexcl;&pound;
}
DisplayData[1] = smgduan[temp / 10000];
DisplayData[2] = smgduan[temp % 10000 / 1000];
DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80;
DisplayData[4] = smgduan[temp % 100 / 10];
DisplayData[5] = smgduan[temp % 10];
}
void DigDisplay()
{
u8 i;
for(i=0;i<6;i++)
{
  switch(i)  //&Icirc;&raquo;&Ntilde;&iexcl;&pound;&not;&Ntilde;&iexcl;&Ocirc;&ntilde;&micro;&atilde;&Aacute;&Aacute;&micro;&Auml;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&pound;&not;
  {
   case(0):
    LSA=0;LSB=0;LSC=0; break;//&Iuml;&Ocirc;&Ecirc;&frac34;&micro;&Uacute;0&Icirc;&raquo;
   case(1):
    LSA=1;LSB=0;LSC=0; break;//&Iuml;&Ocirc;&Ecirc;&frac34;&micro;&Uacute;1&Icirc;&raquo;
   case(2):
    LSA=0;LSB=1;LSC=0; break;//&Iuml;&Ocirc;&Ecirc;&frac34;&micro;&Uacute;2&Icirc;&raquo;
   case(3):
    LSA=1;LSB=1;LSC=0; break;//&Iuml;&Ocirc;&Ecirc;&frac34;&micro;&Uacute;3&Icirc;&raquo;
   case(4):
    LSA=0;LSB=0;LSC=1; break;//&Iuml;&Ocirc;&Ecirc;&frac34;&micro;&Uacute;4&Icirc;&raquo;
   case(5):
    LSA=1;LSB=0;LSC=1; break;//&Iuml;&Ocirc;&Ecirc;&frac34;&micro;&Uacute;5&Icirc;&raquo;
  }
  P0=DisplayData[5-i];//·&cent;&Euml;&Iacute;&Ecirc;&yacute;&frac34;&Yacute;
  delay(100); //&frac14;&auml;&cedil;&ocirc;&Ograve;&raquo;&para;&Icirc;&Ecirc;±&frac14;&auml;&Eacute;¨&Atilde;è
  P0=0x00;//&Iuml;&ucirc;&Ograve;&thorn;
}  
}
void main()
{
while(1)
{
  datapros(Ds18b20ReadTemp());  //&Ecirc;&yacute;&frac34;&Yacute;&acute;&brvbar;&Agrave;í&ordm;&macr;&Ecirc;&yacute;
  DigDisplay();//&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Iuml;&Ocirc;&Ecirc;&frac34;&ordm;&macr;&Ecirc;&yacute;  
}  
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

4

主题

156

帖子

516

积分

高级会员

Rank: 4

积分
516
发表于 2019-7-3 09:17:15 | 显示全部楼层
仿真毕竟只是仿真, 建议还是在开发板上实操学习
回复 支持 反对

使用道具 举报

5

主题

32

帖子

106

积分

注册会员

Rank: 2

积分
106
发表于 2019-7-18 22:25:11 | 显示全部楼层
YXUN 发表于 2019-7-3 09:17
仿真毕竟只是仿真, 建议还是在开发板上实操学习

我在想他这个能不能把独立按键加进去  然后解决我那个问题
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-14 22:24 , Processed in 0.102892 second(s), 32 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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