找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 819|回复: 4
收起左侧

温度报警器仿真,温度显示错误

[复制链接]
ID:1060653 发表于 2023-1-8 13:04 | 显示全部楼层 |阅读模式
求教请教,写得程序在单片机的板子上可以运行,但是在proteus上仿真就有问题了。那个LCD一直显示温度是-0.006,蜂鸣器还一直响。请问大佬怎么回事呀。我在网上查了查说是DS18B20的关于延时的地方错误了。我把这一段程序粘贴在下面,如果不是那里的错,我也把这一整个的程序代码写在附件了。
#include <REGX52.H>

//引脚定义
sbit OneWire_DQ=P3^7;

/**
  * @brief  单总线初始化
  * @param  无
  * @retval 从机响应位,0为响应,1为未响应
  */
unsigned char OneWire_Init(void)
{
        unsigned char i;
        unsigned char AckBit;
        EA=0;
        OneWire_DQ=1;
        OneWire_DQ=0;
        i = 247;while (--i);                //Delay 500us
        OneWire_DQ=1;
        i = 32;while (--i);                        //Delay 70us
        AckBit=OneWire_DQ;
        i = 247;while (--i);                //Delay 500us
        EA=1;
        return AckBit;
}

/**
  * @brief  单总线发送一位
  * @param  Bit 要发送的位
  * @retval 无
  */
void OneWire_SendBit(unsigned char Bit)
{
        unsigned char i;
        EA=0;
        OneWire_DQ=0;
        i = 4;while (--i);                        //Delay 10us
        OneWire_DQ=Bit;
        i = 24;while (--i);                        //Delay 50us
        OneWire_DQ=1;
        EA=1;
}

/**
  * @brief  单总线接收一位
  * @param  无
  * @retval 读取的位
  */
unsigned char OneWire_ReceiveBit(void)
{
        unsigned char i;
        unsigned char Bit;
        EA=0;
        OneWire_DQ=0;
        i = 2;while (--i);                        //Delay 5us
        OneWire_DQ=1;
        i = 2;while (--i);                        //Delay 5us
        Bit=OneWire_DQ;
        i = 24;while (--i);                        //Delay 50us
        EA=1;
        return Bit;
}

/**
  * @brief  单总线发送一个字节
  * @param  Byte 要发送的字节
  * @retval 无
  */
void OneWire_SendByte(unsigned char Byte)
{
        unsigned char i;
        for(i=0;i<8;i++)
        {
                OneWire_SendBit(Byte&(0x01<<i));
        }
}

/**
  * @brief  单总线接收一个字节
  * @param  无
  * @retval 接收的一个字节
  */
unsigned char OneWire_ReceiveByte(void)
{
        unsigned char i;
        unsigned char Byte=0x00;
        for(i=0;i<8;i++)
        {
                if(OneWire_ReceiveBit()){Byte|=(0x01<<i);}
        }
        return Byte;
}


温度报警器开.png

13-2 DS18B20温度报警器.rar

88.28 KB, 下载次数: 18

回复

使用道具 举报

ID:883242 发表于 2023-1-8 16:13 | 显示全部楼层
既然实物可以运行,你搭理仿真这个破烂东西干什么?
回复

使用道具 举报

ID:1060653 发表于 2023-1-9 09:16 | 显示全部楼层
是呀,但任务要求说还得有仿真,呜呜呜
回复

使用道具 举报

ID:161164 发表于 2023-1-9 11:31 | 显示全部楼层
附件项目有问题
2023-01-09_095439.png 2023-01-09_095233.png 2023-01-09_095610.png



写之前拉高
2023-01-09_112734.png

读之后也要拉高
2023-01-09_112748.png

回复

使用道具 举报

ID:1060653 发表于 2023-1-9 13:17 | 显示全部楼层
哦哦抱歉,下面这个附件是对的

温度报警器.rar

75.8 KB, 下载次数: 11

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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