找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19775|回复: 45
收起左侧

Proteus仿真STM32实现--DS18B20和LCD1602显示

  [复制链接]
ID:484657 发表于 2019-5-16 00:27 | 显示全部楼层 |阅读模式
proteus仿真stm32103r6,实现18B20温度值在1602上显示,可测量正负温度。程序及仿真工程已上传附件,利用proteus仿真18b20温度为0和-0.1时返回值均为零,新手上路,请多指教。使用proteus8.8版本进行仿真。

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

原理图

原理图

时序

时序

原理图

原理图



单片机部分程序如下:
#include "stm32f10x.h"
#include "bsp-lcd1602.h"
#include "delay.h"
#include "sys.h"

#include "ds18b20.h"
#include <stdio.h>
#include "math.h"


short tem,tem1;
u8 a,b,c,t;
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif


void Delay_DS18B20(int num)
{
        while(num--) ;
}


int main(void)
        
{

        SystemCoreClockUpdate ();
         LCD1602_Init();
        LCD1602_ShowStr(2,0,"tempe=000.0C",13);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        GPIO_InitTypeDef g;
        g.GPIO_Mode = GPIO_Mode_Out_PP;
        g.GPIO_Speed = GPIO_Speed_10MHz;
        g.GPIO_Pin = GPIO_Pin_8  ;
        GPIO_Init(GPIOB,&g);
         GPIO_SetBits(GPIOB,GPIO_Pin_8);    //输出1

   t=DS18B20_DQ_IN;
while(t){
                DS18B20_IO_OUT();         //SET PG11 OUTPUT

    DS18B20_DQ_OUT=0;         //拉低DQ
          Delay_DS18B20(750);             //拉低750us
    DS18B20_DQ_OUT=1;         //DQ=1
          Delay_DS18B20(15);             //15US
                DS18B20_IO_IN();        //SET PG11 INPUT         
    Delay_DS18B20(100);
                t=DS18B20_DQ_IN;
//                 LCD_ShowNum(13,0,t);
}
tem=DS18B20_Get_Temp();
                Delay_DS18B20(1000000);

while(1)
        {        
    tem=DS18B20_Get_Temp();
                if(        tem>0)
                {        a=tem/100;
                b=tem%100/10;
                c=tem%10;
                LCD_ShowChar(8,0,'+');
        LCD_ShowNum(9,0,a);        
        LCD_ShowNum(10,0,b);
        LCD_ShowNum(12,0,c);
                          
                }
        else
        {        
//                tem1=(int)tem;
//                tem1=abs(tem1);
                tem1=-(tem);
                tem1=tem1+1;
                a=tem1/100;
                b=tem1%100/10;
                c=tem1%10;
        LCD_ShowChar(8,0,'-');
        LCD_ShowNum(9,0,a);        
        LCD_ShowNum(10,0,b);
        LCD_ShowNum(12,0,c);
               
        }
        Delay_DS18B20(100000);
  }

全部资料51hei下载地址:
STM32+1602+18B20.7z (327.43 KB, 下载次数: 1710)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:496408 发表于 2019-6-9 00:12 | 显示全部楼层
下载了这个工程,是可以像截图一样运行,但是我寻思着没有接热源,这温度传感器是测谁的温度呢?应该少了一部分东西吧,心疼我仅有的黑币
回复

使用道具 举报

ID:438506 发表于 2019-6-12 08:39 | 显示全部楼层
justablackcat 发表于 2019-6-9 00:12
下载了这个工程,是可以像截图一样运行,但是我寻思着没有接热源,这温度传感器是测谁的温度呢?应该少了一 ...

没用过protues? 可以设置啊
回复

使用道具 举报

ID:484657 发表于 2019-6-18 20:45 | 显示全部楼层
justablackcat 发表于 2019-6-9 00:12
下载了这个工程,是可以像截图一样运行,但是我寻思着没有接热源,这温度传感器是测谁的温度呢?应该少了一 ...

双击18B20就可以 设置大当前温度计调整温度
回复

使用道具 举报

ID:484657 发表于 2019-6-18 20:46 | 显示全部楼层
justablackcat 发表于 2019-6-9 00:12
下载了这个工程,是可以像截图一样运行,但是我寻思着没有接热源,这温度传感器是测谁的温度呢?应该少了一 ...

双击18B20就可以
设置当前温度计调整温度
回复

使用道具 举报

ID:603234 发表于 2019-8-25 15:41 | 显示全部楼层
点18B20温度传感器的加或减号 就可以实时显示设定值
回复

使用道具 举报

ID:603234 发表于 2019-8-25 15:48 | 显示全部楼层
很好的仿真运行资料 谢谢分享
回复

使用道具 举报

ID:248705 发表于 2019-9-27 20:37 | 显示全部楼层
楼主,有没有遇到32仿真速度慢的情况,甚至不如51快,同8.8
回复

使用道具 举报

ID:617305 发表于 2019-9-28 14:02 | 显示全部楼层
这个真心不错,要支持下
回复

使用道具 举报

ID:617594 发表于 2019-9-28 15:07 | 显示全部楼层
没有黑币来学习一下,感谢分享!
回复

使用道具 举报

ID:140706 发表于 2019-10-15 17:31 | 显示全部楼层
有了porteus学stm32更方便了
回复

使用道具 举报

ID:671136 发表于 2019-12-30 11:41 | 显示全部楼层
是什么通信啊,植入系统了么
回复

使用道具 举报

ID:689546 发表于 2020-2-13 16:04 | 显示全部楼层
我学的不知道为啥没显示
回复

使用道具 举报

ID:689546 发表于 2020-2-14 15:48 | 显示全部楼层
为啥我仿真没显示出东西
回复

使用道具 举报

ID:16031 发表于 2020-2-14 18:10 | 显示全部楼层
下载这个工程,学习学习
回复

使用道具 举报

ID:16031 发表于 2020-2-14 18:12 | 显示全部楼层
没有黑币了
回复

使用道具 举报

ID:693219 发表于 2020-3-10 12:36 | 显示全部楼层
想请问%这个符号报错是什么原因呢 要添加什么文件吗
回复

使用道具 举报

ID:650508 发表于 2020-3-17 12:34 | 显示全部楼层
下载这个工程,学习学习,软件自带的仿真工程不方便
回复

使用道具 举报

ID:249826 发表于 2020-3-24 16:05 | 显示全部楼层
运行起来为什么调整温度比较快时就会卡死
回复

使用道具 举报

ID:130743 发表于 2020-5-1 15:26 | 显示全部楼层
为什么我一调节温度就会卡死,然后软件闪退
回复

使用道具 举报

ID:742667 发表于 2020-5-2 15:52 | 显示全部楼层
//输出1   像这种//后面有汉字的是解说吗?还是也是程序的一部分的?
回复

使用道具 举报

ID:497375 发表于 2020-5-3 22:03 | 显示全部楼层
8.6版本同样的图无法仿真?
回复

使用道具 举报

ID:547542 发表于 2020-5-10 09:48 | 显示全部楼层
感谢
回复

使用道具 举报

ID:646541 发表于 2020-5-14 10:27 | 显示全部楼层
白七 发表于 2020-2-14 15:48
为啥我仿真没显示出东西

不能用吗?
回复

使用道具 举报

ID:647558 发表于 2020-5-25 22:53 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

ID:773622 发表于 2020-6-11 08:45 | 显示全部楼层
sunshiner_pl 发表于 2020-3-24 16:05
运行起来为什么调整温度比较快时就会卡死

我也是 问题解决了吗
回复

使用道具 举报

ID:773622 发表于 2020-6-14 22:16 | 显示全部楼层
楼主能留个联系方式 有点问题想请教一下
回复

使用道具 举报

ID:130743 发表于 2020-6-16 15:50 | 显示全部楼层
justablackcat 发表于 2019-6-9 00:12
下载了这个工程,是可以像截图一样运行,但是我寻思着没有接热源,这温度传感器是测谁的温度呢?应该少了一 ...

你不懂仿真啊
回复

使用道具 举报

ID:87715 发表于 2020-6-25 10:50 | 显示全部楼层
有问题,跑着跑着就挂死了。主频才8M
回复

使用道具 举报

ID:790012 发表于 2020-6-26 10:25 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:470702 发表于 2020-6-28 19:05 | 显示全部楼层
justablackcat 发表于 2019-6-9 00:12
下载了这个工程,是可以像截图一样运行,但是我寻思着没有接热源,这温度传感器是测谁的温度呢?应该少了一 ...

DS18B20有三个引脚,在仿真的时候有两个按钮,可以调节温度的大小,这个按钮实际上就是模拟实际DS18B20所测到的温度的
回复

使用道具 举报

ID:774190 发表于 2020-7-3 15:47 | 显示全部楼层
请问最后获取温度的数值的是哪个参数呢
回复

使用道具 举报

ID:541606 发表于 2020-7-21 11:16 | 显示全部楼层
感谢楼主哇,学习一下ds18b20
回复

使用道具 举报

ID:92810 发表于 2020-8-14 09:54 | 显示全部楼层
我下载进去根本不得
回复

使用道具 举报

ID:833504 发表于 2020-10-29 16:33 | 显示全部楼层
这个是protues哪个版本的呀。我用8.6怎么打不开呢?
回复

使用道具 举报

ID:304785 发表于 2020-12-26 20:11 | 显示全部楼层
为啥我什么都看不到呢
回复

使用道具 举报

ID:194861 发表于 2021-4-20 11:12 | 显示全部楼层
DS18B20的STM32显示,非常需要,感谢作者的分享
回复

使用道具 举报

ID:949049 发表于 2021-7-4 16:50 来自手机 | 显示全部楼层
有STM32的配置吗
回复

使用道具 举报

ID:387687 发表于 2021-11-22 18:33 | 显示全部楼层
有了porteus学stm32更方便了
回复

使用道具 举报

ID:440028 发表于 2021-12-30 10:27 | 显示全部楼层
发现在实验板上不能正常使用,proteus上面是可以的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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