找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STC15系列单片机18B20调试(1T)

[复制链接]
跳转到指定楼层
楼主
ID:247604 发表于 2017-11-9 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在用STC89单片机的代码一直到STC15系列的单片机的时候,出先调试得不出正确温度的问题,后来才执拗89S52 是12T的 15系列的是1T的 单片机的时钟周期存在区别,新手初学,不喜勿喷啊,下边吧整理的源码粘在下边,亲测,可用!!

DS18B20.C文件

#include <\stc\stc15f2k60s2.h>
#include "userdef.h"
#include"ds18b20.h"

/****************************************************************************
**STCμ¥Ƭ»úËù¶è±è8051Ëù¶è¿ì£¬êôóú1¸öê±Öó/»úÆ÷ÖüÆú¸ßËùμ¥Ƭ»ú¡£Ëù¶è¿ìêÇÆäóÅμã**
*******μ«êǶÔóúòaòÆÖ2′«í3μÄ80513ìDò¶øÑÔ£¬DèòaDT¸Äê±Dò¡£à′êμÏÖÄ31|Äü**********
***òÔÏÂ3ìDòêÇDS18B20¼òμ¥μÄÇy¶ˉ3ìDò£¬ÔúSTC12C5A60S2ÖDμ÷êÔí¨1y£¬×îÖÕ·μ»Øò»¸ö***
***unsigned int,μí12λ¾íêÇζèêy¾Y¡£ÔúÖ÷3ìDòàïÔËDDÔËËã¼′¿éμÃμ½êμ¼êμÄζèÖμ***
****************************************************************************/
/***********ds18b20×ó3ìDò*************************/
/***********ds18b20Ñóê±oˉêy(¾§Õñ11.0592MHz )*******/
void delay_18B20(unsigned int i)
{
while(i--);
}
/**********ds18b203õê¼»ˉoˉêy**********************/
void Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1;           //DQ¸′λ
delay_18B20(80);  //éÔ×÷Ñóê±
DQ = 0;           //μ¥Ƭ»ú½«DQà-μí
delay_18B20(800); //¾«è·Ñóê± ′óóú 480us
DQ = 1;           //à-¸ß×üÏß
delay_18B20(140);
x=DQ;   
delay_18B20(200);
}
/***********ds18b20¶áò»¸ö×Ö½ú**************/
unsigned char ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
    DQ = 0; // ¸øÂö3åDÅoÅ
    dat>>=1;
    DQ = 1; // ¸øÂö3åDÅoÅ
    if(DQ)
    dat|=0x80;
    delay_18B20(40);     //40
}
   return(dat);
}
/*************ds18b20D′ò»¸ö×Ö½ú****************/
void WriteOneChar(uchar dat)
{
   unsigned char i=0;
   for (i=8; i>0; i--)
   {
    DQ = 0;
    DQ = dat&0x01;
    delay_18B20(50); //50
    DQ = 1;
    dat>>=1;
         }
}
/**************¶áè¡ds18b20μ±Ç°Î¶è************/
unsigned int ReadTemp(void)
{
       
unsigned char a=0;
unsigned char b=0;
unsigned int temp_value=0;
Init_DS18B20();
WriteOneChar(0xCC);     
WriteOneChar(0x44);  
delay_18B20(1000);      
Init_DS18B20();
WriteOneChar(0xCC);  
WriteOneChar(0xBE);  
delay_18B20(1000);
a=ReadOneChar();    //¶áè¡Î¶èÖμμíλ
b=ReadOneChar();    //¶áè¡Î¶èÖμ¸ßλ
temp_value = b<<8;
temp_value |= a;
return temp_value;

       
          
}

DS18B20.H文件

#ifndef __DS18B20_H_
#define __DS18B20_H_


//--¶¨òåê1óÃμÄIO¿ú--//
sbit DQ=P1^2;

//--éùÃ÷諾Öoˉêy--//

void Init_DS18B20(void) ;
void delay_18B20(unsigned int i);
unsigned char ReadOneChar(void);
void WriteOneChar(uchar dat);
unsigned int ReadTemp(void);

#endif



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

使用道具 举报

沙发
ID:1 发表于 2017-11-10 01:55 | 只看该作者
有乱码  能分享个压缩包吗?
回复

使用道具 举报

板凳
ID:256970 发表于 2020-7-18 21:34 | 只看该作者
admin 发表于 2017-11-10 01:55
有乱码  能分享个压缩包吗?

乱码部分是注释,不影响程序,最近正需要这个东西,测试没有问题,非常感谢楼主分享!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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